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.. Dạng đủ Nếu điều kiện đúng câu lệnh
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
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: Kiểm tra xem số nguyên
a cĩ phải là số chẳn khơng.
Ví dụ 2: Kiểm tra xem 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: ï Nhập 2 số nguyên a,b Đổi chổ 2 số sao cho số
bé đứng trước, số lớn đứng sau.
a=8;
b=2;
8 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.
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 kiểm tra xem
số nguyên a nhập vào từ bàn phím có
phải là số chẳn không?
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
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Ụ
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 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Ụ
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 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Ụ
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
Đ
8 2
a=8;
b=2;
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Ụ