MỤC LỤC
Nội dung
Trang
Mục lục
1
Giới thiệu
2
Phần 1: Đặt vấn đề.
3
Phần 2: Nội dung.
4
1.
Rẽ nhánh
4
2.
Câu lệnh if - then
5
3.
Câu lệnh ghép
6
4.
Bài tập
7
5.
Bài tập tự làm ở nhà
12
Phần 3: Kết luận và kiến nghị
Page 1
13
GIỚI THIỆU
Tác giả chuyên đề
Chức vụ
Đơn vị công tác
Cấu trúc rẽ nhánh
Tên chuyên đề
Và
Sử dụng câu lệnh if – then để lập trình giải bài toán
Đối tượng học sinh bồi dưỡng
Lớp 11
Số tiết dự kiến bồi dưỡng
03 tiết
Page 2
Phần 1: ĐẶT VẤN ĐỀ
Trong lập trình Pascal, phần kiến thức về Cấu trúc rẽ nhánh là phần kiến thức chương trình đơn
giản bắt đầu chuyển sang các chương trình có cấu trúc phức tạp.
Để chuẩn bị cho tư duy lập trình của các em bắt nhịp được tốt hơn khi chuyển sang phần kiến
thức về Cấu trúc rẽ nhánh nên tôi viết chuyên đề này để giúp các em luyện tập và sử dụng Câu
lệnh if – then một cách thành thạo và hiệu quả khi lập trình giải bài toán.
Do sự hạn chế về thời gian và kiến thức nên chuyên đề này không tránh khỏi thiếu sót, mong quí
thầy cô và các em học sinh có ý kiến đóng góp về số điện thoại 0367 127 411. Xin trân trọng cảm
ơn!
Page 3
Phần 2: NỘI DUNG
Chuyên đề:
Cấu trúc rẽ nhánh
Và
Sử dụng câu lệnh if – then để lập trình giải bài toán
1. Rẽ nhánh
- Trong thực tế, có rất nhiều việc chỉ được thực hiện khi một điều kiện cụ thể nào đó được thỏa
mãn.
- Ví dụ cho hai lời thoại ở hai thời điểm khác nhau của hai bạn Châu và Ngọc thường cùng nhau
chuẩn bị các bài thực hành môn Tin học như sau:
“Chiều mai nếu trời không mưa thì Châu sẽ đến nhà Ngọc”
Và
“Chiều mai nếu trời không mưa thì Ngọc sẽ đến nhà Châu, nếu mưa thì sẽ gọi điện cho
Châu để trao đổi”
- Lời thoại thứ nhất thuộc dạng thiếu:
Nếu…thì…
- Lời thoại thứ hai thuộc dạng đủ:
Nếu…thì…, nếu không thì…
- Trong nhiều thuật toán, các thao tác tiếp theo sẽ phụ thuộc vào kết quả nhận được từ các bước
trước đó. Tương tự ta có cấu trúc rẽ nhánh thiếu và đủ.
- ví dụ, để giải phương trình bậc hai:
ax2 + bx + c = 0, (a≠0)
o Trước tiên, ta tính biệt số Delta D = b2 – 4ac.
o Kiểm tra, Nếu D < 0 thì đưa ra thông báo phương trình vô nghiệm rồi kết thúc
Ngược lại thì tính và đưa ra nghiệm thực rồi kết thúc
- Sơ đồ thuật toán:
Nhập a, b, c
D
b2 – 4ac
Đúng
Sai
Tính và đưa ra nghiệm thực rồi kết thúc
Page 4
D < 0?
Thông báo phương trình vô nghiệm rồi kết thúc
2. Câu lệnh if - then
Sai
Dạng thiếu.
Đúng
- Cú pháp:
if <điều kiện> then <câu lệnh>;
- Sơ đồ thuật toán:
điều kiện
câu lệnh
Dạng đủ.
- Cú pháp:
if <điều kiện> then <câu lệnh 1>
else <câu lệnh 2>;
- Sơ đồ thuật toán:
Đúng
Sai
câu lệnh 2
điều kiện
câu lệnh 1
- Trong đó:
+ Điều kiện là biểu thức logic.
+ Câu lệnh; câu lệnh 1; câu lệnh 2 là một câu lệnh của Pascal.
- Ví dụ 1:
if N > 0 then write(N, ' la so duong');
- Ví dụ 2:
if N mod 2 = 0 then write(N, ' la so chan')
else write(N, ' la so le');
Page 5
3. Câu lệnh ghép
- Trong trường hợp sau then hoặc sau else có nhiều thao tác cần dùng tới nhiều câu lệnh để mô tả
khi đó ta cần ghép dãy câu lệnh đó thành câu lệnh ghép.
- Cú pháp:
begin
<các câu lệnh>;
end;
- Ví dụ: Kiểm tra giá trị Delta trong giải phương trình bậc hai như sau:
if D < 0 then write('Phuong trinh vo nghiem')
else
begin
x1:= (-b-sqrt(D)/(2*a);
x2:= (-b+sqrt(D)/(2*a);
writeln('x1 = ', x1:4:2);
writeln('x2 = ', x2:4:2);
end;
Page 6
4. Bài tập
ØBài tập 1: Nhập vào từ bàn phím hai số nguyên a, b. Đưa ra màn hình giá trị lớn nhất trong hai
số nguyên đó.
- Ví dụ:
Dữ liệu nhập vào từ bàn phím Dữ liệu in ra màn hình
62
6
- Xác định bài toán:
• Input: Hai số nguyên a, b.
• Output: Giá trị lớn nhất của hai số
- Ý tưởng:
Cách 1: Sử dụng thêm biến Max
Kiểm tra nếu a > b thì Max a
Ngược lại thì Max b;
Sơ đồ thuật toán:
Sử dụng câu lệnh if – then dạng đủ:
nhập a, b
đúng
sai
Maxb
a>b?
Maxa
if a > b then Max: = a
else Max:= b;
Thông báo giá trị Max rồi kết thúc
Cách 2: Sử dụng thêm biến Max
Max a;
Kiểm tra nếu b > a thì Max b;
Sơ đồ thuật toán:
Sử dụng câu lệnh if – then dạng thiếu:
Max: = a;
if b > a then Max:= b;
Page 7
nhập a, b
Maxa
đúng
b>a?
Maxb
sai
Thông báo giá trị Max rồi kết thúc
Cách 3: Không sử dụng thêm biến thứ ba (Max).
Kiểm tra nếu a > b thì thông báo giá trị a rồi kết thúc
Ngược lại thì thông báo giá trị b rồi kết thúc;
Sơ đồ thuật toán:
Sử dụng câu lệnh if – then dạng đủ:
if a > b then Write(a)
else Write(b);
nhập a, b
đúng
sai
a>b?
Thông báo giá trị b rồi kết thúc
- Chương trình mẫu:
Page 8
Thông báo giá trị a rồi kết thúc
Program TimMax;
var a, b: integer;
begin
write('Nhap a, b: '); readln(a, b);
if a>b then write(a)
else write(b);
readln;
end.
Page 9
ØBài tập 2: Nhập vào từ bàn phím hai số nguyên a, b. Đưa ra màn hình theo yêu sau:
- Dòng thứ nhất in ra giá trị lớn nhất của hai số.
- Dòng thứ hai in ra hai giá trị cách nhau bởi một ký tự trống theo thứ tự số nhỏ trước, số lớn sau.
- Ví dụ:
Dữ liệu nhập vào từ bàn phím Dữ liệu in ra màn hình
62
6
26
- Xác định bài toán:
• Input: Hai số nguyên a, b.
• Output: In ra hai dòng
o Dòng thứ nhất: Giá trị lớn nhất của hai số.
o Dòng thứ hai: Hai giá trị theo thứ tự số nhỏ trước, số lớn sau.
- Ý tưởng: Dựa trên ý tưởng cách 3 của bài tập 1, sử dụng câu lệnh if-then chứa câu lệnh ghép.
Kiểm tra nếu a > b thì
- Dòng thứ nhất in ra giá trị a.
- Dòng thứ hai in ra hai giá trị lần lượt là b a
Ngược lại thì
- Dòng thứ nhất in ra giá trị b.
- Dòng thứ hai in ra hai giá trị lần lượt là a b
Sơ đồ thuật toán:
- Thông báo giá trị b.
- Thông báo hai giá trị a b.
nhập a, b
- Rồi kết thúc
đúng
sai
a>b?
- Thông báo giá trị b.
- Thông báo hai giá trị a b.
- Rồi kết thúc
Sử dụng câu lệnh if – then dạng đủ chứa câu lệnh ghép:
if a > b then
Page 10
begin
writeln(a);
writeln(b, ' ' ,a);
end
else
begin
writeln(b);
writeln(a, ' ' , b);
end;
- Chương trình mẫu:
Program TimMax2;
var a, b: integer;
begin
write('Nhap a, b: '); readln(a, b);
if a>b then
begin
writeln(a);
writeln(b, ' ' ,a);
end
else
begin
writeln(b);
writeln(a, ' ' , b);
end;
readln;
end.
ØBài tập 3: Nhập vào từ bàn phím một điểm số là số nguyên dương N (0 ≤ N ≤ 10). Đưa ra màn
hình:
- Hoặc thông báo: N là điểm chưa đạt - nếu giá trị N .
- Hoặc thông báo: N là điểm đạt - nếu giá trị N .
- Hoặc thông báo: N là điểm xuất sắc - nếu giá trị N .
- Ví dụ:
Dữ liệu nhập vào từ bàn phím
4
6
10
- Xác định bài toán:
• Input: Số nguyên dương N.
• Output: Đưa ra thông báo.
Page 11
Dữ liệu in ra màn hình
4 la diem chua dat
6 la diem dat
10 la diem xuat sac
o Hoặc N là điểm chưa đạt
o Hoặc N là điểm đạt
o Hoặc N là điểm xuất sắc
- Ý tưởng: Sử dụng cấu trúc rẽ nhánh lồng nhau.
Kiểm tra nếu N > 8 thì
thông báo N là điểm xuất sắc rồi kết thúc
Ngược lại
Nếu N > 4 thì thông báo N là điểm đạt rồi kết thúc
Ngược lại thì thông báo N là điểm chưa đạt rồi kết thúc.
Sơ đồ thuật toán:
nhập N
đúng
N>8?
Thông báo N là điểm xuất sắ
sai
đúng
N>4?
Thông báo N là điểm đạt r
sai
Thông báo N là điểm chưa đạt rồi kết thúc
Sử dụng câu lệnh if – then lồng nhau:
if N > 8 then Write(N, ' la diem xuat sac')
else
if N > 4 then Write(N, ' la diem dat');
else write(N, ' la diem chua dat');
- Chương trình mẫu:
Program Danhgia;
var N: byte;
begin
write('Nhap diem thi: '); readln(N);
if N > 8 then write(N, ' la diem xuat sac')
else
if N > 4 then write(N, ' la diem dat')
else write(N, ' la diem chua dat');
readln;
Page 12
end.
5. Bài tập tự làm ở nhà.
ØBài tập 4: Nhập vào từ bàn phím Số nguyên dương N. Đưa ra màn hình số nguyên dương K
nhỏ nhất mà K ≥ N và K chia hết cho 10.
- Ví dụ:
Dữ liệu nhập vào từ bàn phím
53
60
Dữ liệu in ra màn hình
60
60
- Xác định bài toán:
• Input: Số nguyên dương N.
• Output: Số nguyên dương K nhỏ nhất mà K ≥ N và K chia hết cho 10.
- Hướng dẫn : Sử dụng phép chia div – chia lấy nguyên hoặc phép chia mod – chia lấy dư để tính
giá trị K.
ØBài tập 5: Viết chương trình giải và biện luận phương trình bậc nhất ax + b = 0.
Với a, b là hai số nguyên nhập vào từ bàn phím.
(* Lưu ý: biện luận cả trường hợp với a = 0.)
- Ví dụ:
Dữ liệu nhập vào từ bàn phím
-2 4
03
00
Dữ liệu in ra màn hình
Nghiem x = 2
Phuong trinh vo nghiem
Phuong trinh co vo so nghiem
- Xác định bài toán:
• Input: Hai số nguyên a, b.
• Output:
o Hoặc đưa ra nghiệm phương trình
o Hoặc thông báo phương trình có vô số nghiệm
o Hoặc thông báo phương trình vô nghiệm
- Hướng dẫn: Sử dụng cấu trúc rẽ nhánh lồng nhau.
Xét điều kiện nếu a ≠ 0 thì
- Tính nghiệm x
- Đưa ra giá trị nghiệm x;
Ngược lại thì
Nếu b = 0 thì thông báo phương trình có vô số nghiệm
Ngược lại thì thông báo phương trình vô nghiệm.
Phần 3: KẾT LUẬN VÀ KIẾN NGHỊ
Page 13
Qua chuyên đề này tôi đã giúp các em học sinh được tìm hiểu sâu hơn, chi tiết hơn về cách
thức sử dụng câu lệnh if – then dạng đủ; câu lệnh if – then dạng thiếu; câu lệnh if – then lồng
nhau vào lập trình giải một số bài toán.
Kết luận:
Học sinh biết cách mô tả thuật toán.
Học sinh có kỹ năng viết chương trình đơn giản.
Học sinh nắm được cú pháp về:
Câu lệnh if – then dạng đủ;
Câu lệnh if – then dạng thiếu;
Câu lệnh ghép.
Từ đó đưa ra hướng lập trình tối ưu cho bài toán.
Page 14