Bài 9. Cấu trúc rẽ nhánh

Chia sẻ bởi Nguyễn Xuân Khoa | Ngày 10/05/2019 | 323

Chia sẻ tài liệu: Bài 9. Cấu trúc rẽ nhánh thuộc Tin học 11

Nội dung tài liệu:

CấU TRúC Rẽ NHáNH Và LặP
Cấu trúc rẽ nhánh và lặp trong lập trình
Các câu lệnh thực hiện rẽ nhánh và lặp của Pascal
1. Rẽ nhánh
Thường ngày, 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 thoả mãn.
?Chiều mai trời không mưa An sẽ đi xem đá bóng.?
Cấu trúc diễn đạt dạng thiếu: Nếu ... Thì ...
? đội tuyển bóng đá Việt Nam thắng đội Indonesia sẽ được đá tiếp tranh huy chương vàng với Thái Lan, thắng Indonesia Việt Nam sẽ tranh huy chương đồng với Mianmar.?
Cấu trúc diễn đạt dạng đủ: Nếu ... thì ... nếu không ... thì ...
nếu
thì
Nếu
thì
nếu không
thì
Cấu trúc dùng để mô tả các mệnh đề có dạng như trên được gọi là cấu trúc rẽ nhánh thiếu và đủ.
Ví dụ: Giải phương trình bậc 2: ax2 + bx + c =0 (a?0)
D = b2 ? 4ac
Nếu D không âm, ta sẽ đưa ra các nghiệm. Trong trường hợp ngược lại, ta phải thông báo phương trình vô nghiệm.
Sơ đồ khối thể hiện
cấu trúc rẽ nhánh
1. Rẽ nhánh
Mọi ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh.
a) Dạng thiếu
If <điều kiện> then ;
? ở dạng thiếu: <điều kiện> sẽ được tính và kiểm tra. Nếu <điều kiện> đúng (có giá trị True) thì câu lệnh sẽ được thực hiện, ngược lại thì câu lệnh sẽ bị bỏ qua.
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:
Ví dụ:
If D<0 then writeln(?phương trình vô nghiệm?);
Điều kiện là biểu thức cho giá trị logic
Nếu D<0 đúng thì thực hiện câu lệnh, ngược lại bỏ qua lệnh.
? ở 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ẽ được thực hiện, ngược lại thì câu lệnh 2 sẽ được thực hiện.
b) Dạng đủ
If <điều kiện> then else ;
2. Câu lệnh if - then
Ví dụ :
If a mod 2 = 0 then writeln(a,? là số chẵn?)
else writeln(a,?là số lẻ?);
Điều kiện là biểu thức cho giá trị logic
1 câu lệnh Pascal
1 câu lệnh Pascal
Chú ý: câu lệnh trước else không có dấu chấm phẩy ?;?

2. Câu lệnh if - then
? If ? then ? else lồng nhau
Ví dụ: Giải phương trình bậc hai: ax2 + bx + c = 0.
D = b*b ? 4*a*c; xảy ra 3 trường hợp:
Nếu D < 0 : Thì phương trình vô nghiệm
Nếu D = 0 : Thì phương trình có nghiệm kép
Nếu D > 0 : Thì Phương trình có 2 nghiệm phân biệt

if D < 0 then writeln(?Phuong trinh vo nghiem?)
else
iF D = 0 then writeln(?Phuong trinh co nghiem kep: ?,-b/2*a)
else ...
3. Câu lệnh ghép
Theo cú pháp, sau từ khoá then hoặc else phải là một câu lệnh. Nhưng có nhiều trường hợp các thao tác sau then hoặc else không phải chỉ một mà là nhiều câu lệnh được dùng để mô tả thao tác.
Trong các trường hợp như vậy, ngôn ngữ lập trình cho phép gộp một dãy câu lệnh thành một câu lệnh ghép.
?Câu lệnh ghép của Pascal có dạng:
begin
;
end;
?Nếu ai > ai+1 đúng thì tráo đổi ai và ai+1
if a[i] > a[i+1] then
begin
tg:=a[i];
a[i]:=a[i+1];
a[i+1]:=tg;
end;
3. Câu lệnh ghép
Ví dụ1: về một thao tác có nhiều lệnh để thể hiện thao tác ấy. Đặt các lệnh trong cặp từ khoá begin ... end; Tạo thành câu lệnh ghép.

3. Câu lệnh ghép
Ví dụ 2:
Cho dãy số nguyên AN = {a1,a2, ?, aN}. Đếm có bao nhiêu số dương và tính tổng các số dương đó?
if a[i] > 0 then
begin
dem:=dem+1;
S:=S+a[i];
end;
4. Một số ví dụ
if a[i] > 0 then begin
s:= s+a[i];
dem:= dem + 1;
End;
if a[i] > 0 then
s:= s+a[i];
dem:= dem + 1;

Nếu a[i] > 0 thì tính các lệnh trong cặp từ khoá begin ? end;
Nếu a[i] <= 0 thì bỏ qua các lệnh trong begin ? end;
Nếu a[i] > 0 thì tính s:= s + a[i]
rồi tính dem:= dem + 1
Nếu a[i] <= 0 thì bỏ qua lệnh
s:= s+ a[i]; rồi tính dem:= dem + 1;
3. Câu lệnh ghép
D<0
Phương trình vô
nghiệm rồi kết thúc
D=0
x1 = -b/a
Phương trình có
nghiệm kép x1,
kết thúc
Phương trình có
2 nghiệm phân biệt x1,x2
kết thúc

if D < 0 then writeln(?Phuong trinh vo nghiem?)
else
iF D = 0 then writeln(?Phuong trinh co nghiem kep: ?,-b/2*a)
else
begin
x1:= (-b - sqrt(D))/(2*a);
x2:= (-b + sqrt(D))/(2*a);
writeln(?x1=?,x1:6:2,?x2=?,x2:6:2);
end;

Câu lệnh ghép
(câu lệnh hợp thành)
Dạng thiếu
Dạng đủ
Nếu điểm trung bình (ĐTB):
ĐTB >= 8.0 : thì xếp loại giỏi
6.5 <= ĐTB < 8.0 : khá
5.0 <= ĐTB < 6.5 : trung bình
3.5 <= ĐTB < 5 .0 : yếu
ĐTB < 3.5 : kém
If ? then ? else lồng nhau
Bài toán cổ về việc sinh sản của các cặp thỏ. Bài toán được đặt ra như sau:
Các con thỏ không bao giờ chết
Hai tháng sau khi ra đời một cặp thỏ mới sẻ sinh ra một cặp thỏ con (một đực, một cái)
Khi đã ra đời rồi thì cứ mỗi tháng tiếp theo chúng lại sinh ra một cặp con mới
Giả sử bắt đầu từ một cặp mới ra đời thì đến tháng thứ n sẻ có bao nhiêu cặp thỏ?


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:
a) Dạng thiếu
If <điều kiện> then ;
b) Dạng đủ
If <điều kiện> then else ;
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.
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Xuân Khoa
Dung lượng: | Lượt tài: 20
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)