[r]
Trang 1CÊu tróc rÏ nh¸nh vµ lÆp
§ 9 CÊu tróc rÏ nh¸nh
Trang 2Đ9 Cấu trúc rẽ nhánh
1 Rẽ nhánh
Bài toán: Lập trình nhập vào hai số thực a, b từ bàn phím
Tính th ơng a/b và in ra màn hình th ơng đó
Phân tích bài toán:
Input:
a, b: real;
Output:
Th ơng a/b
Trang 3CÊu tróc rÏ nh¸nh
1 RÏ nh¸nh
ThuËt to¸n: (LiÖt kª tõng b íc)
B íc 1: NhËp a, b;
B íc 2: NÕu b<>0 th× t:=a/b, chuyÓn tíi b íc 4;
B íc 3: Kh«ng tinh ® îc;
B íc 4: In th ¬ng ra mµn h×nh, råi kÕt thóc;
Sai
T:= a/b
Kh«ng tÝnh ® îc
Trang 41 Rẽ nhánh
Trong thực tế nhiều công việc chỉ đ ợc thực hiện khi một
điều kiện nào đó đ ợc thoả mãn
Ta có thể diễn đạt lại bằng câu nh sau:
Nếu … thì … hoặc
Nếu … thì … nếu không thì …
Ta thấy rằng 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 của các b ớc tr ớc
đó nó đ ợc thể hiện qua sơ đồ nh sau:
Trang 5Cấu trúc rẽ nhánh
2 Câu lệnh If - then
a)Dạng thiếu:
If <điều kiện> then <câu lệnh>;
b) Dạng đầy đủ:
If <điều kiện> then <câu lệnh1> else <câu lệnh 2>;
Trong đó:
If, then, else: từ khoá
điều kiện: là 1 biểu thức logic (True, False) câu lệnh, câu lệnh 1, câu lệnh 2: là một câu lệnh trong Pascal (câu lệnh có thể là câu lệnh đơn hoặc câu lệnh ghép)
Điều kiện
Đúng
Công việc Sai
Điều kiện
Đúng
Công việc 1 Công việc 2
Sai
Điều kiện
Đúng
Câu lệnh Sai
Điều kiện
Đúng
Câu lệnh 1 Câu lệnh 2
Sai
Trang 62 Câu lệnh If - then
Ví dụ:
Dạng đầy đủ
If b<>0 then t:=a/b else write(‘khong tinh duoc’);
Dạng thiếu
If b<>0 then t := a/b;
If b=0 then write(‘khong tinh duoc’);
If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
Điều kiện
Đúng
Câu lệnh 1 Câu lệnh 2
Sai
If a > b then max := a else max := b;
B<>0
Đúng
T:=a/b
Khong tinh đ ợc
Sai
B<>0
Đúng
T:= a/b Sai
Trang 7CÊu tróc rÏ nh¸nh
3 Mét sè vÝ dô
VÝ dô 1: T×m nghiÖm cña ph ¬ng tr×nh
ax + b = 0 (a, b lµ hÖ sè, x lµ Èn) Input: a, b : real;
Output: x tho¶ m·n ax+b=0 hoÆc “PT v« nghiÖm”
§iÒu kiÖn
§óng
C©u lÖnh Sai
§iÒu kiÖn
§óng
C©u lÖnh 1 C©u lÖnh 2
Sai
Tr×nh bµy thuËt to¸n?
ViÕt ch ¬ng tr×nh?
Trang 8NhËp a, b
Sai
In ra x = -b/a, kÕt thóc
Sai
In raPTVSN, kÕt thóc
In raPTVN, kÕt thóc
ThuËt to¸n
If a<>0 then write( x = ,-b/a)’ ’
else If b= 0 then write( PT VSN )’ ’
else write( PT VN );’ ’
If a<>0 then write( x = ,-b/a);’ ’
If a=0 then
If b= 0 then write( PT VSN )’ ’
else write( PT VN );’ ’
Trang 9Program bac1;
Uses crt;
Var a,b,x:real;
Begin
Clrscr;
Write(‘nhap cac he so: ’); readln(a,b);
If a<>0 then writeln(‘nghiem la:’, -b/a) else
if b=0 then write(‘ phuong trinh vo so nghiem’) else write(‘phuong trinh vo nghiem’);
Readln
End
Trang 10Bài tập:
Bài 1: Hoán đổi giá trị của hai biến a1 và a2 nếu a1 > a2.
Bài 2: Tính giá trị biểu thức:
Điều kiện
Đúng
Câu lệnh Sai
If <điều kiện then <câu lệnh>; If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
Điều kiện
Đúng
Câu lệnh 1 Câu lệnh 2
Sai
2 3
x f(x)
2
B f(x)
x+3 với x<1