- Cấu trúc rẽ nhánh và lặp trong lập trình
- Cách thực hiện các câu lệnh rẽ nhánh và lặp của pascal.
tin học lớp 11
Tiết 11
Bài 9
1. RÏ nh¸nh
Mêi c¸c b¹n cïng
xem vµ t×m
hiÓu c¸c t×nh
huèng sau nhÐ!
à! Nếu ngày
mai ma thì tớ
Nếu ngày
nghỉ, nếu
mai ừm,
ma
không ma thì
thì tớ
tớ đến nhàđể tớ
nghỉ.
nghĩ
cậu học nhé.
đã.
Này, ngày
mai cậu có
đi học
nhóm
không?
Nếu ...
thì
Nếu
thì, nếu
không thì
Cấu
Cấu trúc
trúc dùng
dùng để
để mô
mô tả
tả các
các mệnh
mệnh đề
đề có
có dạng
dạng nh
nh trên
trên
gọi
gọi là
là
Ví dụ: Giải phơng trình bậc hai ax2+bx+c=0 (a 0)
Hãy nêu các
bớc giải ph
ơng trình
bậc hai?
-
Nhập hệ số a,b,c
Tính Delta=b2 - 4ac
Nếu Delta âm thì thông
báo PT vô nghiệm, ngợc lại
tính và đa ra nghiệm.
Các em hãy vẽ
sơ đồ thuật
toán giải phơng
trình bậc 2 (với
a 0).
Mời 1 em lên
bảng vẽ
Nhập a, b, c
Tính Delta = b2 4ac
Sai
Kiểm tra
Đúng
Delta < 0
Sau khi tính Delta,
tuỳ thuộc vào giá trị
Delta, một trong hai
thao tác sẽ thực hiện.
Tính và
đa ra
nghiệm
Thông
báo vô
nghiệm
Kết thúc
2. C©u lÖnh IF - THEN
a. D¹ng thiÕu
IF <§iÒu kiÖn> THEN <C©u lÖnh>;
Trong ®ã: - §iÒu kiÖn lµ biÓu thøc quan hÖ hoÆc biÓu thøc
l«gic.
- C©u lÖnh lµ mét lÖnh cña TP.
§óng
§iÒu kiÖn
C©u lÖnh
Sai
NÕu <®iÒu kiÖn> ®óng th× <c©u lÖnh> ®îc thùc hiÖn,
VÝ
IF a mod
2=0
THEN
a la so chan’);
sai
lÖnh>Writeln(‘
bÞ bá qua.
dô:
b. D¹ng ®ñ
IF <§iÒu kiÖn> THEN <C©u lÖnh 1> ELSE <C©u lÖnh 2>;
Sai
§óng
§iÒu kiÖn
C©u lÖnh 2
VÝ
dô:
C©u lÖnh 1
NÕu <®iÒu kiÖn> ®óng th× <c©u lÖnh1> ®îc thùc hiÖn,
IF a ng
mod
THEN
la so chan’)
îc l¹i 2=0
th×
lÖnhWriteln(‘a
2> ®îc thùc hiÖn.
ELSE
Writeln(‘a la so le’);
H·y dïng c©u
lÖnh IF – THEN
viÕt lÖnh ®Ó
xÐt c¸c trêng
hîp cña DELTA
IF Delta<0 THEN Writeln(‘Ph¬ng tr×nh v«
nghiÖm’)
ELSE
X1:= (-B + SQRT(Delta))/(2*A);
X2:= (-B - SQRT(Delta))/(2*A);
Writeln(‘ Nghiem X1= ’, X1:5:1);
Writeln(‘ Nghiem X2= ’, X2:5:1);
3. C©u lÖnh ghÐp
Trong TP cho phÐp gép nhiÒu c©u lÖnh thµnh mét
c©u lÖnh gäi lµ c©u lÖnh ghÐp, cã d¹ng:
BEGIN
BEGIN
<
< C¸c
C¸c c©u
c©u lÖnh>;
lÖnh>;
END;
END;
VÝ dô:
IF Delta<0 THEN Writeln(‘Phuong trinh vo
nghiem’)
ELSE
BEGIN
X1:= (-B + SQRT(Delta))/(2*A);
X2:= (-B - SQRT(Delta))/(2*A);
Writeln(‘ Nghiem X1= ’, X1:5:1);
Writeln(‘ Nghiem X2= ’, X2:5:1);
END;
4. Mét sè vÝ dô
VÝ dô 1:
Tìm nghiệm thực của phương trình bậc hai: ax2 + bx + c = 0, với a
≠0
Program GPTB2;
Uses crt;
Var . . . ;
BEGIN
...
Ho¹t ®éng nhãm 2
ngêi (5phót) hoµn
thiÖn ch¬ng tr×nh
gi¶i ph¬ng tr×nh bËc
NhËp
3 +hÖ
2: vµo
ax2 + bx
c = sè
0 (a≠a,b,c
0)
theo dµn ý sau:
.. .
Delta :=. . .;
NÕu Delta<0 th× Writeln(‘PTVN’)
ngîc l¹i TÝnh vµ in nghiÖm;
Readln;
END.
Chạy chương trình
Ví dụ 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 4 nhng không
chia hết cho 100.
Hãy xác
định Input
và Output
của bài?
Input: Nhập N từ bàn phím.
Output: Đa số ngày của năm N ra màn
hình.
Nếu N chia hết cho 400 hoặc N chia
hết cho 4 nhng không chia hết cho
100
thì
In ra số ngày của năm nhuận là
366,
ngợc lại In ra số ngày là 365
Nhập
vào số
NĂM
cầncủa
tính
số nhuận,
lợng
Viếtnhận
thì
điều
kiện:
ngày
năm
Em
hãy khai báo biến cho bài toán
ngày
Nếu
ng
N
chia
nhận
hết
số cho
ngày400
củahoặc
năm th
chia
In ợc
ra lại
kết
quả?
trên?
hết cho 4 nhng không chia hết cho
ờng.
100
Chy chng trỡnh
Ví dụ 3: Cho một số nguyên dơng N. Xét xem N có phải
là số chính phơng hay không?
Hãy xác
định Input
và Output
của bài?
Input: Nhập N từ bàn phím.
Output: N là số chính phơng hoặc N
không phải là số chính phơng.
Hớng dẫn: Sử dụng hàm làm tròn
round(x), hàm bình phơng sqr(x)
và hàm căn bậc 2 sqrt(x)
Chy chng trỡnh
Hãy nhớ
IF <điều kiện> THEN
<Câu lệnh>;
IF <điều kiện> THEN
lệnh 1>
lệnh2>;
Cấu trúc mô tả các mệnh
đề:
Nếu thì
Nếu thì ngợc lại
gọi là cấu trúc rẽ nhánh.
Lệnh rẽ nhánh dạng thiếu
Lệnh rẽ nhánh dạng đủ
ELSE
Câu lệnh ghép
BEGIN
<Các câu lệnh>;
END;