1. Lý thuyết tin học bài 9: Cấu trúc phân nhánh
1.1 Phân nhánh
Ví dụ 1: Để giải phương trình bậc hai: ax² + bx + c = 0 (với a ≠ 0), ta cần tính Delta = b² - 4ac
Nếu Delta < 0 thì phương trình không có nghiệm.
Nếu Delta ≥ 0 thì phương trình có ít nhất một nghiệm.
Nói cách khác: Nếu Delta < 0 thì phương trình không có nghiệm, còn nếu Delta ≥ 0 thì phương trình có nghiệm.
Chúng ta có mệnh đề như sau:
Nếu ... thì ... (Dạng còn thiếu)
Nếu ... thì ... hoặc nếu không thì ... (Dạng đầy đủ)
1.2. Câu lệnh if-then
Cấu trúc này được gọi là cấu trúc rẽ nhánh đầy đủ và thiếu.
Để diễn tả cấu trúc rẽ nhánh, Pascal sử dụng câu lệnh if-then. Tương ứng với hai dạng mệnh đề đầy đủ và thiếu như đã nêu, Pascal cung cấp hai dạng câu lệnh if-then:
a. Dạng thiếu
Cú pháp: If <Điều kiện> then
Trong đó:
Điều kiện: Là một biểu thức quan hệ hoặc logic.
Câu lệnh: Là một câu lệnh trong Pascal.
Hình 1. Sơ đồ cấu trúc rẽ nhánh dạng thiếu
Ý nghĩa: Điều kiện sẽ được kiểm tra và đánh giá. Nếu điều kiện đúng, câu lệnh sẽ được thực thi, còn nếu điều kiện sai, câu lệnh sẽ bị bỏ qua.
Ví dụ 2:
if Delta < 0 then writeln('Phương trình vô nghiệm.');
b. Dạng đủ
Cú pháp:
Nếu < Điều kiện > thì < Câu lệnh 1 >
ngược lại thì < Câu lệnh 2 >;
Trong đó:
Điều kiện: Là một biểu thức quan hệ hoặc logic.
Câu lệnh 1 và câu lệnh 2: Đều là các câu lệnh trong Pascal.
Sơ đồ:
Hình 2. Sơ đồ cấu trúc rẽ nhánh kiểu đầy đủ
Ý nghĩa: Điều kiện sẽ được đánh giá và kiểm tra. Nếu điều kiện đúng, câu lệnh 1 sẽ được thực thi; nếu không, câu lệnh 2 sẽ được thực hiện.
Lưu ý: Không đặt dấu chấm phẩy (;) trước từ khóa Else.
Ví dụ 3:
if a mod 3 = 0 then write('a chia hết cho 3')
else write('a không chia hết cho 3');
1.3. Câu lệnh kết hợp
Trong Pascal, câu lệnh ghép có cú pháp như sau:
Begin < Các câu lệnh >; End;
Lưu ý: Phải có dấu chấm phẩy (;) sau từ khóa END.
2. Bài tập luyện tập Bài 9 Tin học 11: Cấu trúc rẽ nhánh
Sau khi hoàn thành Bài 9: Cấu trúc rẽ nhánh, các em cần nắm chắc những nội dung chính:
- Cấu trúc rẽ nhánh;
- Câu lệnh If - then: Dạng thiếu: If < Điều kiện > then < Câu lệnh >;
- Dạng đầy đủ: If < Điều kiện > then < Câu lệnh 1 > else < Câu lệnh 2 >;
- Câu lệnh ghép: Có thể kết hợp nhiều câu lệnh thành một câu lệnh ghép.
Bài tập 1: Khám phá cấu trúc rẽ nhánh và câu lệnh if-then-else
1. Cấu trúc nào dưới đây được gọi là 'cấu trúc rẽ nhánh thiếu'?
A. if-then-else
B. if-then
2. Để áp dụng cấu trúc rẽ nhánh đầy đủ, cú pháp nào là chính xác?
A. if-then-else
B. if-then
3. Trong Pascal, điều kiện của câu lệnh if-then-else phải thuộc loại nào?
A. Chỉ là một số nguyên.
B. Là biểu thức quan hệ hoặc logic.
4. Khi điều kiện trong câu lệnh if-then đúng, điều gì sẽ được thực hiện?
A. Câu lệnh sẽ không được thực hiện.
B. Câu lệnh sẽ được thực thi.
5. Dạng câu lệnh nào cho phép xử lý hai tình huống: khi điều kiện đúng thì thực hiện một câu lệnh, còn khi điều kiện sai thì thực hiện câu lệnh khác?
A. if-then-else
B. if-then
6. Trong câu lệnh if-then-else, sau từ khóa 'Else' phải sử dụng dấu gì?
A. Dấu chấm phẩy (;)
B. Dấu chấm (.)
Bài tập 2: Cấu trúc rẽ nhánh
1. Câu lệnh if-then trong Pascal dùng để thực hiện các hành động dựa trên điều kiện đúng hoặc sai. Đây thuộc loại cấu trúc nào?
A. Loại thiếu
B. Loại đầy đủ
C. Loại so sánh
D. Loại vòng lặp
2. Trong cấu trúc if-then-else, khi điều kiện đúng, câu lệnh nào sẽ được thực thi?
A. Câu lệnh nằm trước từ khóa 'if'
B. Câu lệnh nằm sau từ khóa 'if'
C. Câu lệnh nằm sau từ khóa 'else'
D. Cả hai câu lệnh trước và sau từ khóa 'if'
3. Trong Pascal, cú pháp của câu lệnh if-then-else được viết như thế nào?
A. If <điều kiện> then
B. If <điều kiện> then
C. If <điều kiện> else
D. If <điều kiện> else
4. Trong Pascal, câu lệnh ghép được bắt đầu và kết thúc bằng từ khóa nào?
A. Bắt đầu và Khác
B. Sau và Kết thúc
C. Khởi đầu và Hoàn thành
D. Khởi động và Dừng lại
5. Trong một câu lệnh if-then-else, khi điều kiện không đúng, câu lệnh nào sẽ được thực thi?
A. Lệnh đứng trước từ khóa 'if'
B. Lệnh đứng sau từ khóa 'if'
C. Lệnh đứng sau từ khóa 'else'
D. Cả lệnh trước và lệnh sau từ khóa 'if'
Bài tập 3: Cấu trúc phân nhánh
1. Mục đích của cấu trúc phân nhánh trong lập trình là gì?
A. Tạo chuỗi ký tự
B. Quản lý các biến
C. Thực thi các lệnh dựa trên điều kiện
D. Thực hiện phép toán số học
2. Trong câu lệnh if-then của Pascal, điều kiện được kiểm tra ở đâu?
A. Trong phần then
B. Trong phần else
C. Trước từ khóa then
D. Trước từ khóa else
3. Câu lệnh if-then-else trong Pascal bao gồm bao nhiêu phần?
A. 1
B. 2
C. 3
D. 4
4. Trong câu lệnh if-then-else, lệnh nào được thực thi khi điều kiện là đúng?
A. Lệnh trước từ khóa then
B. Lệnh sau từ khóa then
C. Cả hai lệnh
D. Không lệnh nào được thực hiện
5. Câu lệnh if-then-else trong Pascal thường được dùng để làm gì?
A. Thực hiện phép cộng hai số
B. Hiển thị thông báo trên màn hình
C. Thực hiện một lệnh khi điều kiện đúng và một lệnh khác khi điều kiện sai
D. Vẽ hình ảnh trên màn hình
6. Cấu trúc if-then-else thuộc loại cấu trúc rẽ nhánh nào?
A. Cấu trúc rẽ nhánh không đầy đủ
B. Cấu trúc rẽ nhánh đầy đủ
C. Cả hai loại
D. Không phải cấu trúc rẽ nhánh
7. Trong cấu trúc if-then-else, câu lệnh nào sẽ được thực hiện nếu điều kiện không đúng?
A. Câu lệnh trước từ khóa then
B. Câu lệnh ngay sau từ khóa then
C. Câu lệnh trước từ khóa else
D. Câu lệnh ngay sau từ khóa else
8. Mục đích của câu lệnh ghép trong Pascal là gì?
A. Đặt tên cho các biến
B. Nhận dữ liệu từ người dùng
C. Gom nhóm nhiều câu lệnh để thực hiện liên tiếp
D. Thực hiện các phép toán
9. Trong câu lệnh ghép của Pascal, câu lệnh nào sẽ được thực thi trước tiên?
A. Câu lệnh đầu tiên trong chuỗi
B. Câu lệnh cuối cùng trong chuỗi
C. Câu lệnh nằm ở giữa
D. Các câu lệnh đều được thực hiện đồng thời
10. Trong cấu trúc if-then-else, số lượng câu lệnh else có thể là:
A. 1
B. Hơn 1
C. 0 (không có)
D. Luôn có 2 câu lệnh
3. Bài tập ứng dụng
Câu 1: Lệnh if-then trong Pascal được dùng để làm gì?
A. Lặp lại một câu lệnh khi điều kiện đúng.
B. Thực hiện câu lệnh nếu điều kiện đúng và bỏ qua khi điều kiện sai.
C. Lặp lại câu lệnh cho đến khi điều kiện trở thành đúng.
D. Thực hiện câu lệnh mà không cần kiểm tra điều kiện.
Câu 2: Khi nào câu lệnh if-then-else được áp dụng trong Pascal?
A. Để lặp lại câu lệnh khi điều kiện đúng.
B. Để kiểm tra nhiều điều kiện cùng một lúc.
C. Để thực hiện một câu lệnh khi điều kiện đúng và một lệnh khác khi điều kiện sai.
D. Để kiểm tra điều kiện và thực hiện lệnh khi điều kiện không đúng.
Câu 3: Điều kiện trong lệnh if-then-else của Pascal là gì?
A. Một chuỗi ký tự.
B. Một biểu thức logic hoặc quan hệ.
C. Một số nguyên.
D. Một mảng các số thực.
Câu 4: Câu lệnh if-then-else được gọi là gì?
A. Cấu trúc lặp.
B. Cấu trúc rẽ nhánh đầy đủ.
C. Cấu trúc lặp không có điểm dừng.
D. Cấu trúc vòng lặp.
Câu 5: Khi điều kiện trong cấu trúc if-then-else không đúng, thì phần nào sẽ được thực hiện?
A. Câu lệnh sau từ khóa then sẽ được thực hiện.
B. Câu lệnh sau từ khóa else sẽ được thực hiện.
C. Không có câu lệnh nào được thực hiện.
D. Cả hai câu lệnh sau từ khóa then và else đều sẽ được thực hiện.
Câu 6: Chọn phương án phù hợp 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 sử 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 logic;
B. Biểu thức số học;
C. Biểu thức quan hệ;
D. Một câu lệnh duy nhất;