CẤU TRÚC RẼ NHÁNHRẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ 1... CẤU TRÚC RẼ NHÁNHRẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ 2.. Nếu điều kiện đúng câu lệnh 1 được th
Trang 1Để thực hiện chương trình được viết bằng một ngôn ngữ lập trình
ta cần phải làm gì?
KIỂM TRA BÀI CŨ:
1 Soạn thảo :Viết chương trình, nhập chương trình vào máy.
2 Dịch (Alt+F9): Phát hiện và thông báo lỗi cú pháp, NLT sửa lỗi.
3 Thực hiện chương trình (Ctrl+F9).
4 Nhập vào các giá trị chạy thử - Nhấn Enter.
Trang 2chương 2: cấu trúc rẽ nhánh và lặp
CẤU TRÚC RẼ NHÁNH
Nội dung:
1 Rẽ Nhánh
2 Câu Lệnh If-Then
3 Câu Lệnh Ghép
4 Một Số Ví Dụ
Tháng 10 năm học 2008
Trang 3CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
1 RẼ NHÁNH
TRƯỜNG HỌC 1
HÃY ĐƯA RA MỆNH ĐỀ NẾU- THÌ THEO HÌNH VẼ 2 ?
HS B
HS A
HÌNH VẼ 2
Nếu bạn A học trường 1 Thì rẽ bên trái Nếu bạn B học trường 2 Thì rẽ bên phải Nếu bạn A không học trường 2 Thì rẽ bên trái
HÃY ĐƯA RA MỆNH ĐỀ NẾU- KHÔNG THÌ THEO HÌNH VẼ 2 ?
HÌNH VẼ 1
TRƯỜNG HỌC 2
Trang 4CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
Nhập a,b,c
D b 2 -4ac
D≥0?
Thơng báo vơ Nghiệm, KT
Tính và đưa ra Nghiệm, KT
Đ S
Sơ đồ thể hiện sự rẽ nhánh
1 RẼ NHÁNH
Trang 5CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
Nhập a,b,c
D b 2 -4ac
D<0?
Thơng báo Nghiệm kép, KT
PT vơ Nghiệm, KT
Đ S
Sơ đồ thể hiện sự rẽ nhánh
1 RẼ NHÁNH
D=0?
Đ
Thơng báo 2
Nghiệm, KT S
Trang 6CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
2 CÂU LỆNH IF-THEN
Điều kiện Đ
S
Câu lệnh
Điều kiện Đ
S
Câu lệnh 1 Câu lệnh 2
IF <Điều kiện> Then
<Câu lệnh>;
a Dạng thiếu
IF <Điều kiện> Then <Câu lệnh 1>
ELSE <Câu lệnh 2>;
b Dạng đủ
Nếu điều kiện đúng câu lệnh
được thực hiện, ngược lại câu
lệnh sẽ bị bỏ qua
Nếu điều kiện đúng câu lệnh 1 được thực hiện, ngược lại câu lệnh 2 sẽ được thực hiện
Sau mỗi câu lệnh được kết thúc bằng dấu ;
nhưng câu lệnh trước ELSE không có dấu ;
? Có nhận xét gì về câu lệnh trước ELSE
ELSE
Tên dành riêng (từ khĩa)
Điều kiện :
Là biểu thức quan hệ hoặc biểu thức logic
Điều kiện :
Là câu lệnh đơn
Câu lệnh 1 Câu lệnh 2 :
Câu lệnh
Hãy so sánh hai cấu trúc trên?
Chú ý: Dạng đủ cĩ thể lồng nhau, khi đĩ Else
sẽ gắn với If gần nhất.
Trang 7CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
If a mod 2=0 then
Write( ‘ a la so chan ’);
If (a>0) and (b>0) and (c>0) and
(a+b>c) and (b+c>a) and (a+c>b)
then
Write(‘a, b, c la ba canh tam
giac’)
Else
Write(‘ khong la ba canh tam
giac’);
2 CÂU LỆNH IF-THEN
Ví dụ 1: Viết thơng báo nếu số nguyên
a chia hết cho 2 thì a là số chẳn
Ví dụ 2: Kiểm tra xem 3 số nguyên
a,b,c cĩ phải 3 cạnh của tam giác
khơng?
a mod 2=0
Nhập a
Đ
a là số chẳn
S
a>0,b>0, c>0,a+b>c, b+c>a, a+c>b
Nhập a,b,c
Đ
a,b,c là 3 cạnh tam giác
S
a,b,c kgơng là 3 cạnh
tam giác
Trang 8CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
3 CÂU LỆNH GHÉP
Sau Then, Else nếu thực hiện nhiều hơn một câu lệnh thì phải
được đặt giữa BEGIN END <Các câu lệnh> (câu lệnh ghép)
If <Điều kiện> then
Begin
<Câu lệnh 1>;
<Câu lệnh 2>;
<Câu lệnh n>;
End
Else
Begin
<Câu lệnh 1>;
<Câu lệnh 2>;
<Câu lệnh n>;
End;
Ví du: ï Đổi chổ 2 số a, b sao cho số bé đứng trước, số lớn đứng sau.
a=8;
b=2;
If a>b then {doi cho b cho a} BEGIN
tg:=a;
a:=b;
b:=tg;
Write(‘doi cho b cho a, ket qua la’, a,b);
END Else Write(‘khong doi cho’);
Câu lệnh ghép
8
tg
2
a
8 b
Trang 9CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
4 MỘT SỐ VÍ DỤ
PROGRAM SOCHAN;
Var a: word;
BEGIN
Write(‘Nhap vao so nguyen a’);
Read(a);
If a mod 2=0 then
Write( ‘ a la so chan ’)
Readln
END.
Program kiemtra;
Uses Crt;
Var a,b,c: integer;
BEGIN Clrscr;
Write(‘ Nhap vao 3 so nguyen a,b,c);
Readln(a,b,c);
If (a>0) and (b>0) and (c>0) and (a+b>c) and (b+c>a) and (a+c>b) then
Write(‘a, b, c la ba canh tam giac’) Else
Write(‘ khong la ba canh tam giac’);
Readln END.
VD2: Viết chương trình kiểm tra xem 3 số nguyên a, b, c nhập vào từ bàn phím có phải là 3 cạnh của tam giác không?
VD1: Viết chương trình thông báo số
nguyên a nhập vào từ bàn phím là số
chẳn?
Trang 10CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
Program doicho;
Var a,b,tg: Integer;
BEGIN
Write(‘ Nhap vao 2 so a,b’);
readln(a,b);
If a>b then {doi cho b cho a}
Begin
tg:=a;
a:=b;
b:=tg;
Write(‘ Ket qua tim duoc la:’, a,b);
End
Else
Write(‘khong doi cho’, a,b);
END.
VD3: Viết chương trình nhập 2 số a,
b bất kỳ từ bàn phím, đổi chổ 2 số sao
cho số bé đứng trước, số lớn đứng sau
VD4: Tìm số lớn nhất trong 4 số nguyên a,b,c,d
max:=a;
If b>max then max:=b
else
if c>max then max:=c else max :=d
Trang 11CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
CỦNG CỐ
1 Cấu trúc câu lệnh IF-THEN cĩ 2 dạng:
• Dạng thiếu: IF <ĐiềuKiện> Then <Câu lệnh>;
• Dạng đủ: IF <ĐiềuKiện> Then <Câu lệnh1>
Else < <Câu lệnh2>;
<Điều kiện> là biểu thức quan hệ hoặc biểu thức logic
Dạng đủ cĩ thể lồng nhau, khi đĩ Else sẽ gắn với If gần
nhất.
VD: max:=a;
If b>max then max:=b else if c>max then max:=c else max :=d
2 Câu lệnh ghép
Sau Then, Else có nhiều hơn một < câu lệnh> thì phải được đặt giữa BEGIN END.
Trang 12CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
BÀI TẬP
1 Viết chương trình kiểm tra xem số nguyên a nhập vào cĩ phải là tháng trong năm khơng?
2 Viết chương trình giải phương trình bậc 2: ax2+b+c=0 (a≠0)
HD:(xét các trường hợp của delta (delta <0, delta =0, delta >0))
3 Viết chương trình giải phương trình bậc nhất: ax+b=0
ngược lại xét : b=0,
ngược lại xét: b ≠ 0
Trang 13CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
Program Giảipt_bac2;
Var a,b, c,d: Integer;
x,x1,x2: Real;
BEGIN
Write(‘ Nhap vao 3 so a,b,c’); readln(a,b,c);
D:=sqr(b)-4*a*c
If D<0 then Writeln(‘Phuong trinh vo nghiem’) Else
If D=0 Then Writeln(‘ Phuong trinh co nghiem kep x= ‘, -b/(2*a)) Else
Begin
x1:=(-b+sqrt(d))/(2*a); x2:=(-b+sqrt(d))/2*a;
Writeln(‘ phuong trinh co 2 nghiem la:’, ‘x1=‘,x1,’x2=‘,x2);
End;
END.
VD4: Viết chương trình giải phương trình bậc 2: ax2+b+c=0 (a≠0)
Trang 14CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ
2 CÂU LỆNH GHÉP
Sau Then, Else nếu thực hiện nhiều hơn một câu lệnh thì phải
được đặt giữa BEGIN END (câu lệnh ghép)
Ví du: ï Nhập 2 số nguyên a,b Đổi
chổ 2 số sao cho số bé đứng trước,
số lớn đứng sau.
<Các câu lệnh>
If a>b then {doi cho b cho a}
BEGIN
tg:=a;
a:=b;
b:=tg;
Write(‘doi cho b cho a, ket qua la’,
a,b);
END
Else Write(‘khong doi cho’);
Câu lệnh ghép
Nhập a,b
a>b
S
Kết quả là
a,b tg a; a b; b tg
Kết quả là
a,b
Đ
a=8;
b=2;
Trang 15CẤU TRÚC RẼ NHÁNH
RẼ NHÁNH CÂU LỆNH IF-THEN CÂU LỆNH GHÉP MỘT SỐ VÍ DỤ