Tin học 11 Bài 9: Cấu trúc rẽ nhánh
Mời các em cùng tham khảo nội dung của bài học cấu trúc rẽ nhánh được eLib biên soạn và tổng hợp dưới đây với nội dung tóm tắt lý thuyết đi kèm các dạng bài tập thường gặp có hướng dẫn giải đầy đủ, rõ ràng. Chúng tôi hy vọng đây sẽ là tài liệu tham khảo hữu ích cho các em học sinh lớp 11.
Mục lục nội dung
1. Tóm tắt lý thuyết
1.1.Rẽ nhánh
- Cấu trúc rẽ nhánh:Cấu trúc dùng để diễn đạt một việc sẽ được thực hiện khi một điều kiện cụ thể được thỏa mãn.
- Rẽ nhánh bao gồm 2 loại:
+ Dạng thiếu: Nếu … thì
Ví dụ: Nếu mai mưa thì tôi ở nhà học tiếng Anh.
Vậy nếu mai nắng thì tôi làm gì còn chưa biết.
+ Dạng đủ: Nếu … thì …, nếu không thì.
Ví dụ: Nếu mai mưa thì tôi ở nhà học tiếng Anh, nếu không thì tôi sẽ đi dã ngoại.
Vậy nếu trời nắng thì tôi sẽ đi dã ngoại
1.2. Câu lệnh if - then
Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh if-then. Tương ứng với hai dạng thiếu và đủ nói ở trên, Pascal có hai câu lệnh if-then.
a) Dạng thiếu
if <điều kiện> then
b) Dạng đủ
if <điều kiện> then
Trong đó
- Điều kiện: biểu thức quan hệ hoặc lôgic.
- Câu lệnh, câu lệnh 1, câu lệnh 2 là một câu lệnh của Pascal.
* Ở dạng thiếu: điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh sẽ được thực hiện, ngược lại thì câu lệnh sẽ bị bỏ qua.
* Ở dạng đủ: điều kiện cũng được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh 1 sẽ thực hiện, ngược lại thì câu lệnh 2 sẽ được thực hiện
Ví dụ:
If d<=0 writeln(‘day la so duong’);
If a mod 3=0 then writeln(‘a chia het cho 3’)
Else writeln(‘a khong chia het cho 3’);
1.3. Câu lệnh ghép
Trong nhiều trường hợp ,sau một số từ khóa (như then hoặc else ) phải là một lệnh đơn. Nhưng trong nhiều trường hợp các thao tác sau những tên dành riêng đòi hỏi không chỉ một mà là nhiều câu lệnh để mô tả. Trong trường hợp như vậy, ngôn ngữ lập trình cho phép gộp một dãy các câu lệnh thành một câu lệnh ghép.
Trong Pascal câu lệnh ghép có dạng:
Begin
End;
Thuật ngữ câu lệnh, câu lệnh 1, câu lệnh 2 trong các câu lệnh if-then ở mục trên có thể là câu lệnh ghép.
Ví dụ:
If D<0 then writeln(‘Phuong trinh vo nghiem ’)
Else
Begin
X1:=(-b-sqrt(b*b-4*a*c))/(2*a);
X2:=-b/a-x1;
End;
Việc thực hiện một câu lệnh ghép là thực hiện lần lượt các câu lệnh thành phần trong dãy. Một câu lệnh ghép có thể chứa một câu lệnh ghép khác như một thành phần của nó.
2. Bài tập minh họa
Bài 1: Tìm nghiệm thực của phương trình bậc hai: ax2 + bx + c = 0 , với a ≠ 0.
Hướng dẫn giải
Xây dựng ý tưởng:
- Nhập 3 số a,b,c.
- Tính: delta= b*b-4*a*c.
- Nếu delta <0 thì pt vô nghiêm, ngược lại thì phương trình có nghiệm.
- Dùng câu lệnh if-then dạng đủ.
Xác định bài toán:
- Input: Các hệ số a, b, c nhập từ bàn phím.
- Output: Đưa ra màn hình các nghiệm thực hoặc thông báo "Phuong trinh vo nghiem".
Program gptb2;
Uses crt;
Var a,b,c:real;
D,X1,X2:real;
Begin
Clrscr;
Write(‘a,b,c:’);
Readln(a,b,c);
D:=b*b-4*a*c;
If D<0 then writeln(‘Phuong trinh vo nghiem ’)
Else
Begin
X1:=(-b-sqrt(D))/(2*a);
X2:=-b/a-X1;
Writeln(‘X1=’,X1:8:3,’ X2=’,X2:8:3);
End;
Readln;
End.
Bài 2: Tìm số ngày của năm N, biết rằng 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. Ví dụ, các năm 2000, 2004 là năm nhuận và có số ngày là 366, các năm 1900, 1945 không phải là năm nhuận và có số ngày là 365.
Hướng dẫn giải
- Trong biểu thức điều kiện ta sử dụng các phép toán logic như là or, and để gộp các điều kiện lại với nhau.
- Dùng cấu trúc dạng đủ để lập trình cho bài toán trên.
- Biểu thức điều kiện: ((N mod 400 = 0) or (N mod 4 = 0) and (N mod 100<>0))
Xác định bài toán:
- Input: N nhập từ bàn phím.
- Output: Đưa số ngày của năm N ra màn hình.
program Nam_nhuan;
uses crt;
var N, SN: integer;
begin
clrscr;
write('Nam: '); readln(N);
if (N mod 400 = 0)or((N mod 4 = 0)and( N mod 100 <> 0))
then SN:= 366 else SN:= 365;
writeln(' So ngay cua nam ', N,' la ', SN);
readln;
end.
3. Luyện tập
3.1. Bài tập tự luận
Câu 1. Trong ngôn ngữ lập trình Pascal, muốn kiểm tra đồng thời cả ba giá trị của A. B. C có cùng lớn hơn 0 hay không ta viết câu lệnh If thế nào cho đúng ?
Câu 2. Cho đoạn chương trình:
x:=2;
y:=3;
IF x > y THEN F:= 2*x – y ELSE
IF x=y THEN F:= 2*x ELSE F:= x*x + y*y ;
Sau khi thực hiện đoạn chương trình trên, giá trị F là?
3.2. Bài tập trắc nghiệm
Câu 1. Hãy chọn phương án ghép đúng nhất . Để mô tả cấu trúc rẽ nhánh trong thuật toán, nhiều ngôn ngữ lập trình bậc cao dùng câu lệnh IF – THEN, sau IF là <điều kiện>. Điều kiện là
A. biểu thức lôgic;
B. biểu thức số học;
C. biểu thức quan hệ;
D. một câu lệnh;
Câu 2. Hãy chọn phương án ghép đúng . Với cấu trúc rẽ nhánh IF <điều kiện> THEN
A. điều kiện được tính toán xong;
B. điều kiện được tính toán và cho giá trị đúng;
C. điều kiện không tính được;
D. điều kiện được tính toán và cho giá trị sai;
Câu 3. Hãy chọn phương án ghép đúng . Với cấu trúc rẽ nhánh IF <điều kiện> THEN <câu lệnh 1> ELSE <câu lệnh 2>, câu lệnh 2 được thực hiện khi
A. biểu thức điều kiện đúng và câu lệnh 1 thực hiện xong;
B. câu lệnh 1 được thực hiện;
C. biểu thức điều kiện sai;
D. biểu thức điều kiện đúng;
Câu 4. Hãy chọn cách dùng sai . Muốn dùng biến X lưu giá trị nhỏ nhất trong các giá trị của hai biến A. B có thể dùng cấu trúc rẽ nhánh như sau :
A. if A <= B then X := A else X := B;
B. if A < B then X := A;
C. X := B; if A < B then X := A;
D. if A < B then X := A else X := B;
Câu 5. Phát biểu nào sau đây có thể lấy làm biểu thức điều kiện trong cấu trúc rẽ nhánh ?
A. A + B
B. A > B
C. N mod 100
D. “A nho hon B”
3.3. Trắc nghiệm Online
Các em hãy luyện tập bài trắc nghiệm Cấu trúc rẽ nhánh Tin học 11 sau để nắm rõ thêm kiến thức bài học.
4. Kết luận
Sau khi học xong bài 9 Tin học 10, các em nắm vững các ý chính sau đây:
- Nhắc lại cấu trúc chung của cấu trúc rẽ nhánh.
- Câu lệnh if-then, sơ đồ thực hiện cấu trúc if-then.
- Câu lệnh ghép.
- Hiểu nhu cầu của cấu trúc rẽ nhánh trong biểu diễn thuật toán.
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Hiểu câu lệnh ghép.
- Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản.