1. Trang chủ
  2. » Giáo án - Bài giảng

Bồi dưỡng hsg k10

11 144 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 108,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÀI TẬP Bài tập 1: Số chẵn lẻ Viết chương trình nhập vào số nguyên N và kiểm tra xem số đó là số chẵn hay số lẻ?. Nhận xét: Hãy giải bài toán trên với cách sử dụng if…then…else Chú ý trư

Trang 1

CHUYÊN ĐỀ 1: CẤU TRÚC RẼ NHÁNH

I TÓM TẮT LÝ THUYẾT

I CÂU LỆNH RẼ NHÁNH

1.1 Câu lệnh nếu….thì IF

* Cú pháp:

(1) IF <Biểu thức logic> THEN <việc 1>;

(2) IF <Biểu thức logic> THEN <việc 1> ELSE <việc 2>;

* Sơ đồ thực hiện:

* Ý nghĩa:

- Đối với dạng (1): Nếu <biểu thức logic> có giá trị đúng thì máy sẽ thực hiện <việc 1>, ngược lại thì kết thúc (tức không làm gì cả)

- Đối với dạng (2): Nếu <biểu thức logic> có giá trị đúng thì máy sẽ thực hiện <việc 1>, ngược lại thì đi thực hiện <việc 2>

Chú ý: Khi sử dụng câu lệnh IF thì đứng trước từ khoá ELSE không được có dấu chấm phẩy (;).

1.2 Câu lệnh lựa chọn CASE… OF…

- Câu lệnh IF chỉ thực hiện rẽ hai nhánh tương ứng với hai giá trị của biểu thức logic Do đó để thực hiện

rẽ nhiều nhánh chúng ta sử dụng câu lệnh case…of như sau:

* Cú pháp:

CASE <biểu thức> OF

giá trị 1: <việc 1>;

giá trị 2: <việc 2>;

giá trị n: <việc n>;

END;

CASE <biểu thức> OF

giá trị 1: <việc 1>;

giá trị 2: <việc 2>;

giá trị n: <việc n>;

ELSE <việc n+1>;

END;

Trong đó:

 B: Biểu thức kiểu vô hướng đếm được như kiểu nguyên, kiểu logic, kiểu ký tự, kiểu liệt kê (KHÔNG ĐƯỢC KIỂU SỐ THỰC)

 Giá trị 1,2…n : có thể là một giá trị hằng (số học, kí tự), hoặc các đoạn hằng (dùng hai dấu chấm

để phân cách giữa giá trị đầu và giá trị cuối)

 Giá trị của <biểu thức> và <giá trị 1,2…n> có cùng kiểu

* Ý nghĩa: Khi gặp lệnh CASE, chương trình sẽ kiểm tra:

Trang 2

- Nếu giá trị của <biểu thức> nằm trong <giá trị i> thì máy sẽ thực hiện lệnh thứ i tương ứng (i=1 n)

- Ngược lại:

+ Đối với dạng 1: Không làm gì cả

+ Đối với dạng 2: thực hiện lệnh thứ n+1 (Trường hợp ngoại lệ)

II VÍ DỤ

Ví dụ 1: Viết chương trình in ra số lớn hơn trong hai số nguyên (được nhập từ bàn phím).

a Thuật giải

- Nhập hai số vào hai biến a, b

- Nếu a > b thì in a

- Nếu a <= b thì in b (Nếu a > b thì in a, ngược lại thì in b.)

b Mã chương trình:

Program SO_SANH1;

uses crt;

var a,b: integer;

begin

clrscr;

write('nhap so thu nhat: '); readln(a);

write('nhap so thu hai: '); readln(b);

if a> b then writeln(' So lon la:',a);

if a<= b then writeln(' So lon la:',b);

readln

end

Hoặc:

Program SO_SANH2;

uses crt;

var a,b: integer;

begin

clrscr;

write('nhap so thu nhat: '); readln(a);

write('nhap so thu hai: '); readln(b);

if a> b then writeln(' So lon la:',a)

else writeln(' So lon la:',b);

readln

end

Ví dụ 2: Viết chương trình nhập vào tuổi của một người và cho biết người đó là thiếu niên, thanh niên,

trung niên hay lão niên Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ 18 đến 39 là thanh niên, từ 40 đến

60 là trung niên và lớn hơn 60 là lão niên

a Thuật giải

- Nhập vào số tuổi

- Sử dụng cấu trúc lựa chọn:

+ Nếu tuổi từ 1 18 thì thông báo là thiếu niên

+ Nếu tuổi từ 19 39 thì thông báo là thanh niên

+ Nếu tuổi từ 40 60 thì thông báo là trung niên

+ Còn lại thì thông báo là lão niên (trường hợp ngoại lệ)

b Mã chương trình:

program DoTuoi;

Trang 3

uses crt;

var tuoi:integer;

begin

clrscr;

write('Moi ban nhap tuoi cua minh: ');

readln(tuoi);

case tuoi of

1 18: writeln('Ban la thieu nien');

19 39: writeln('Ban la thanh nien');

40 60: writeln('Ban la trung nien');

else write('Ban da la lao nien roi!');

end;

readln

end

III BÀI TẬP

Bài tập 1: Số chẵn lẻ

Viết chương trình nhập vào số nguyên N và kiểm tra xem số đó là số chẵn hay số lẻ?

a Thuật giải

- Nhập vào số nguyên N

- Nếu N chia hết cho 2 là số chẵn và ngược lại là số lẻ

b Mã chương trình:

program Chanle;

uses crt;

var N:integer;

begin

clrscr;

write('Nhap vao so nguyen N: '); readln(N);

if N mod 2 =0 then writeln(N,' la so chan')

else writeln(N,' la so le');

readln

end

c Nhận xét:

Bài tập 2: Số chính phương

Số chính phương là một số mà tự nó là căn bậc hai của một số tự nhiên khác Viết chương trình nhập vào một số và kiểm tra xem nó có phải là số chính phương hay không?

a Thuật giải

- Nhập vào số nguyên N

- Tính căn bậc hai của số N (x=sprt(N))

- Bình phương phần nguyên của X, nếu kết quả bằng với N thì N là số chính phương

b Mã chương trình:

program ChinhPhuong;

uses crt;

var N:integer;

x:real;

begin

clrscr;

Trang 4

write('Nhap vao so nguyen N: '); readln(N);

x:=sqrt(N);

if N=sqr(trunc(x)) then writeln(N,' la so chinh phuong') else

writeln(N,' khong phai la so chinh phuong.');

readln

end.

c Nhận xét:

- Hàm TRUNC(x) cho ta một số nguyên là phần nguyên của x, tức là cắt bỏ đi phần lẻ thập phân của x.

Vd: Trunc(3.14)=3

Bài tập 3: Viết chương trình tìm số lớn nhất trong 4 số được nhập từ bàn phím.

a Thuật giải

- Nhập vào bốn số a, b, c, d

- Nếu số a lớn hơn cả ba số a,b, c thì a là số lớn nhất (tương tự với các số còn lại)

- Hiển thị kết quả

b Mã chương trình:

Program So_Lon_Nhat;

Uses crt;

Var a,b,c,d: real;

Begin

Clrscr;

Write('Nhap so thu nhat:');readln(a);

Write('Nhap so thu hai:');readln(b);

Write('Nhap so thu ba:');readln(c);

Write('Nhap so thu tu:');readln(d);

if (a>=b) and (a>=c) and (a>= d) then writeln('So lon nhat la:',a:10:2);

if (b>=a) and (b>=c) and (b>= d) then writeln('So lon nhat la:',b:10:2);

if (c>=a) and (c>=b) and (c>= d) then writeln('So lon nhat la:',c:10:2);

if (d>=a) and (d>=b) and (d>= c) then writeln('So lon nhat la:',d:10:2);

readln

end

c Nhận xét:

- Nếu bài toán trên sử dụng cấu trúc if…then…else thì rất phức tạp

- Mở rộng bài toán trên với cách chỉ sử dụng 2 biến (Sử dụng kỹ thuật lính canh)

+ Nhập vào số đầu tiên và chọn số đầu tiên là số lớn nhất

+ Nhập số thứ 2 và so sánh với max (nếu lớn hơn max thì cho max là số vừa nhập) (tương tự cho số thứ 3,4)

- Đưa kết quả ra màn hình

Bài tập 4: Viết chương trình giải phương trình bậc nhất ax+b=0

a Thuật giải

- Nhập vào 2 hệ số a,b

- Nếu a <> 0 thì phương trình có nghiệm x=-b/a

- Nếu a = 0 và b =0 thì phương trình có vô số nghiệm

- Nếu a = 0 và b<>0 thì phương trình vô nghiệm

b Mã chương trình:

Program Phuong_trinh;

uses crt;

var a,b:real;

Trang 5

clrscr;

Writeln(' CHUONG TRINH GIAI PT ax + b = 0');

Write('Nhap he so a = ');readln(a);

Write('Nhap he so b = ');readln(b);

if (a<>0) then writeln('phuong trinh',a:10:2,'x + ',b:10:2,'= 0',' co nghiem x

=;',-b/a:10:2)

else if (b=0) then writeln('Phuong trinh co vo so nghiem')

else writeln('Phuong trinh vo nghiem');

readln

end

c Nhận xét: Hãy giải bài toán trên với cách sử dụng if…then…else (Chú ý trước else không được dùng

dấu chấm phẩy)

Bài tập 5: Viết chương trình giải phương trình bậc hai ax2+bx+c=0 (a#0)

a Thuật giải

- Nhập vào 2 hệ số a,b,c

- Tính delta

- Nếu delta<0 thì thông báo phương trình vô nghiệm

- Nếu delta=0 thì tính nghiệm kép và thông báo nghiệm kép

- Nếu delta>0 thì tính hai nghiệm phân biệt và thông báo hai nghiệm

b Mã chương trình:

c Nhận xét: Hãy giải bài toán trên với cách sử dụng if…then…else (Chú ý trước else không được dùng

dấu chấm phẩy)

Bài tập 6: Viết chương trình nhập vào một ngày trong tuần và sau đó chuyển ngày đó sang tiếng anh.

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

a Thuật giải

- Nhập một ngày trong tuần

- Xét ngày nhập vào:

• Trường hợp a = 2: Monday

• Trường hợp a = 3: Thursday

• Trường hợp a = 8: Sunday

• Ngoài ra thì thông báo không có ngày này trong tuần

b Mã chương trình:

Program dich;

uses crt;

Var thu:byte;

begin

clrscr;

write('nhap thu can dich: '); readln(thu);

case thu of

2: Write(' > Monday');

3: Write(' > Tuesday');

4: Write(' > Wednesday');

Trang 6

5: Write(' > Thursday');

6: Write(' > Friday');

7: Write(' > Saturday');

8: Write(' > Sunday');

else

Write(' Khong co thu nay');

end;

readln

end

Bài tập 7: Viết chương trình cho phép tính diện tích các hình: Hình vuông; Hình chữ nhật; Hình tròn;

Tam giác; Hình thang Người dùng chọn hình cần tính diện tích từ bảng chọn, sau đó khai báo các thông

số liên quan và nhận được diện tích của hình:

MOI BAN CHON HINH CAN TINH DIEN TICH

1 Hinh vuong

2 Hinh chu nhat

3 Hinh tron

4 Tam giac (Biet 3 canh)

5 Hinh thang

a Thuật toán

- Dùng cấu trúc lựa chọn Case… of để gọi chương trình cần tính (Xét biến Chon)

+ Nếu là 1 thì gọi chương trình tính diện tích hình vuông

+ Nếu là 2 thì gọi chương trình tính diện tích hình vuông

+ Nếu là 3 thì gọi chương trình tính diện tích hình vuông

+ Nếu là 4 thì gọi chương trình tính diện tích hình vuông

+ Nếu là 5 thì gọi chương trình tính diện tích hình vuông

- Xuất kết quả ra màn hình

b Mã chương trình:

Program Dien_Tich_cac_hinh;

uses crt;

var chon: byte;

a,b,c,S: real;

Begin

clrscr;

writeln('CHUONG TRINH TINH DIEN TICH CAC HINH');

Writeln(' -');

writeln('1 DIEN TICH HINH TAM GIAC');

writeln('2 DIEN TICH HINH VUONG');

writeln('3 DIEN TICH HINH CHU NHAT');

writeln('4 DIEN TICH HINH THANG');

writeln('5 DIEN TICH HINH TRON');

write('Moi ban chon hinh can tinh dien tich: ');readln(chon);

case chon of

1 : Begin

Write('Cho biet canh day: '); readln(a);

Write('Cho biet chieu cao: '); readln(b);

S:=(a*b)/2;

end;

Trang 7

2:Begin

Write('Cho biet chieu dai canh: '); readln(a);

S:=a*a;

end;

3:Begin

Write('Cho biet chieu dai: '); readln(a);

Write('Cho biet chieu rong: '); readln(b);

S:=a*b;

end;

4:Begin

Write('Cho biet day lon: '); readln(a);

Write('Cho biet day nho: '); readln(b);

Write('Cho biet chieu cao: '); readln(c);

S:=(a+b)*c/2;

End;

5:Begin

Write('Cho biet ban kinh: '); readln(a);

S:=a*a*pi;

End;

else

Writeln('Chon sai roi!!!');

end;

Writeln('Dien tich cua hinh la: ',S:8:2);

readln

end

c Nhận xét: Với mỗi trường hợp thỏa Case biến chọn of thực hiện một lệnh Vì thế, muốn thực hiện

nhiều lệnh ta cần ghép nhiều lệnh thành một lệnh ghép

Bài tập 8: Viết chương trình nhập vào 3 cạnh của tam giác Hãy cho biết tam giác đó là tam giác gì?Tam

giác cân, tam giác vuông, tam giác đều, tam giác thường hay không phải là tam giác

a Thuật giải.

- Nhập vào 3 cạnh của tam giác

- Nếu 3 cạnh của tam giác thỏa mãn: tổng hai cạnh bất kỳ lớn hơn cạnh còn lại thì thực hiện + Nếu 3 cạnh bằng nhau là tam giác đều

Ngược lại:

+ Nếu có hai cạnh bằng nhau là tam giác cân Ngược lại:

+ Nếu có bình phương một cạnh bằng tổng hai cạnh còn lại là tam giác vuông Ngược lại: tam giác thường

Ngược lại thông báo không là tam giác

b Mã chương trình:

c Nhận xét:

Bài tập 9: Tính tiền điện của một hộ gia đình khi cho biết chỉ số điện kế tháng này và chỉ số điện kế

tháng trước Từ đó tính ra KW tiêu thụ Tiền điện được tính như sau:

Từ KW số <=60: 1000đ/kW, từ 61-120:1200đ/KW, từ số 121-300:2000đ/KW, >300:4000đ/kW

Ví dụ:

Trang 8

Nhap chi so dien ke thang nay: 750

Nhap chi so dien ke thang truong: 300

So tien la: 60*1000+60*1200+180*2000+150*4000=1092000

a Thuật toán:

- Nhập chỉ số điện mới và cũ

- Tính số kí điện tiêu thụ (TT)

- Nếu TT <=60 thì số tiền là: TT*1000

- Nếu 61<=TT và TT<=120 thì số tiền là: 60*1000+(TT-60)*1200

- Nếu 121<=TT và TT<=300 thì số tiền là: 60*1000+60*1200+(TT-120)*2000

- Nếu TT>300 thì số tiền là: 60*1000+60*1200+180*2000+(TT-300)*4000

b Chương trình:

c Nhận xét

- Chỉnh sửa bài này sử dụng if then else hoặc case of

Bài tập 10: Hãy nhập vào giờ, phút, giây Sau đó nhập thêm một số giây, hãy in kết quả ra giờ, phút,

giây

a Thuật giải

- Nhập vào giờ phút giây

- Nhập thêm giây và cộng số giây vừa nhập vào giây ban đầu (giay=gic+gim)

- Nếu số giây >=60 thì:

+ Phut:=Phut + giay div 60

+ giay:=giay mod 60

- Nếu số phút >=60 thì:

+ Gio:=Gio + phut div 60

+ phut:=phut mod 60

b Mã chương trình:

c Nhận xét:

Bài tập 11: Nhập vào tháng, năm rồi tính số ngày của tháng Biết năm nhuận là năm chia hết cho 400

hoặc chia hết cho 4 nhưng không chia hết cho 100

a Thuật toán:

- Nhập vào tháng, năm

- Dùng case of để tính số ngày trong tháng

+ Tháng 1,3,5,7,8,10,12 có số ngày là 31

+ Tháng 4,6,9,11 có số ngày là 30

+ Tháng 2, nếu là năm nhuận thì số ngày là 29, ngược lại là 28

- In kết quả số ngày ra màn hình

b Chương trình:

Bài tập 12: Viết chương trình nhập vào ngày, tháng, năm Máy sẽ hiện lên ngày, tháng, năm hôm sau.

a Thuật giải:

- Nhập vào ngày, tháng, năm

- Tăng ngày lên 1 đơn vị

- Xét tháng nhập vào:

Trang 9

• Nếu là tháng 2 thì kiểm tra xem là năm nhuận thì nếu là ngày 29 thì ngày hôm sau là ngày đầu tháng và tháng tăng lên 1, ngược lại nếu là ngày 28 thì ngày hôm sau là ngày đầu tháng và tháng tăng lên 1

• Nếu là ngày cuối tháng 1,3,5,7,8,10,12 (ngày 31)thì ngày hôm sau là ngày đầu tháng và tháng tăng lên 1

• Nếu là ngày cuối tháng 2,4,6,9,11 (ngày 30) thì ngày hôm sau là ngày đầu tháng và tháng tăng lên 1

- Nếu tháng =13 thì tăng năm lên 1 và tháng =1

- Xuất kết quả ngày hôm sau

b Chương trình:

Program NgayHomSau;

Uses crt;

Var ngay, thang, nam: integer;

Begin

Clrscr;

Write('Nhap vao ngay:');readln(ngay);

Write('Nhap vao thang:');readln(thang);

Write('Nhap vao nam:');readln(nam);

ngay:=ngay+1;

case thang of

2: if (nam mod 400=0) or ((nam mod 4=0) and (nam mod 100<>0)) then

begin

if ngay>29 then

begin

thang:=thang+1;

ngay:=1;

end;

end

else if ngay>28 then

begin

thang:=thang+1;

ngay:=1;

end;

1,3,5,7,8,10,12:

if ngay>31 then

begin

thang:=thang+1;

ngay:=1;

end;

4,6,9,11:

if ngay>30 then

begin

thang:=thang+1;

ngay:=1;

end

end;

if thang=13 then

begin

nam:=nam+1;

thang:=1;

end;

writeln('Ngay hom sau la: ',ngay,'/',thang,'/',nam);

readln

Trang 10

c Nhận xét:

Bài tập 13: (HSG lớp 8 -TP Huế 2006-2007)

Ba bạn An, Bình và Cường cùng tham gia trò chơi oẵn tù tì Chỉ sử dụng bàn tay úp hoặc mở.Theo hiệu lệnh, cả ba bạn cùng oẵn tù tì Nếu cả ba cùng sấp hoặc cùng ngửa thì chưa phát hiện người thua cuộc (hòa nhau) Nếu một bạn có trạng thái khác với hai bạn kia (nghĩa là bàn tay của bạn ấy sấp còn hai người kia ngửa và ngược lại bàn tay của bạn ấy ngửa thì hai người kia sấp) thì bạn đó thắng cuộc Hãy viết chương trình mô phỏng trò chơi trên

a Thuật toán:

- Nhập vào trạng thái của 3 người chơi

- Xét tám trường hợp xảy ra

+ Cả 3 đều sấp  Hòa

+ Cả 3 đều ngửa  Hòa

+ A là ngửa và hai bạn còn lại sấp  A thắng

+ A là sấp và hai bạn còn lại ngửa  A thắng

+ B là ngửa và hai bạn còn lại sấp  B thắng

+ B là ngửa và hai bạn còn lại sấp  B thắng

+ C là ngửa và hai bạn còn lại sấp  C thắng

+ C là ngửa và hai bạn còn lại sấp  C thắng

Ví du:

Nhap vao trang thai cua ban An: N

Nhap vao trang thai cua ban Binh: N

Nhap vao trang thai cua ban Cuong: S

Vay ban Cuong la nguoi thang cuoc

b Chương trình:

Program Sap_ngua;

uses crt;

Var A, B, C: Char;

Begin

clrscr;

writeln(‘Nhap trang thai cua ban An:’); readln(A);

writeln(‘Nhap trang thai cua ban Binh:’); readln(B);

writeln(‘Nhap trang thai cua ban Cuong:’); readln(C);

if (A=’N’) and (B=’N’) and (C=’N’) then Write(' Hoa');

if (A=’S’) and (B=’S’) and (C=’S’) then Write(' Hoa');

if (A=’N’) and (B=’S’) and (C=’S’) then Write(' Vay ban An la nguoi thang cuoc');

if (A=’S’) and (B=’N’) and (C=’N’) then Write(' Vay ban An la nguoi thang cuoc');

if (A=’N’) and (B=’S’) and (C=’N’) then Write(' Vay ban Binh la nguoi thang cuoc');

if (A=’S’) and (B=’N’) and (C=’S’) then Write(' Vay ban Binh la nguoi thang cuoc');

if (A=’S’) and (B=’S’) and (C=’N’) then Write(' Vay ban Cuong la nguoi thang cuoc');

if (A=’N’) and (B=’N’) and (C=’S’) then Write(' Vay ban Cuong la nguoi thang cuoc');

readln

end

Ngày đăng: 29/09/2017, 21:40

HÌNH ẢNH LIÊN QUAN

- Đưa kết quả ra màn hình. - Bồi dưỡng hsg k10
a kết quả ra màn hình (Trang 4)
Bài tập 7: Viết chương trình cho phép tính diện tích các hình: Hình vuông; Hình chữ nhật; Hình tròn; Tam giác; Hình thang - Bồi dưỡng hsg k10
i tập 7: Viết chương trình cho phép tính diện tích các hình: Hình vuông; Hình chữ nhật; Hình tròn; Tam giác; Hình thang (Trang 6)

TỪ KHÓA LIÊN QUAN

w