5. CCââuu llệệnnhh IIFF
11,, CCââuu llệệnnhh IIFF ddạạnngg 11::
Cú pháp:
IF Ðiềukiện THEN Lệnh P ;
-Điềukiện: là một biểu thức lôgic cho kết qủa TRUE
(đúng) hay FALSE (sai).
- LệnhP: có thể là một lệnh đơn giản hoặc một lệnh
có cấu trúc.
-Nếu lệnhP: là một lệnh ghép, tức là gồm nhiều lệnh,
thì nhớ là các lệnh này phải được đặt trong khối: begin
và end .
7. CCââuu llệệnnhh IIFF
11,, CCââuu llệệnnhh IIFF ddạạnngg 11::
Ví dụ 1.1: Nhập vào hai số a và b, tìm và in lên màn
hình số lớn nhất của hai số đó.
8. CCââuu llệệnnhh IIFF
11,, CCââuu llệệnnhh IIFF ddạạnngg 11::
Ta dùng một biến phụ đặt tên là Max để chứa giá trị
lớn nhất phải tìm. Thuật toán gồm hai bước:
Bước 1: Gán số thứ nhất vào Max, tức là:
Max:=a;
Bước 2: Kiểm tra nếu Max nhỏ hơn số thứ hai thì gán
số thứ hai vào Max:
If Max < b then Max:=b;
Bước 3: In giá trị Max lên màn hình.
9. CCââuu llệệnnhh IIFF
11,, CCââuu llệệnnhh IIFF ddạạnngg 11::
Giải thích: Sau bước 1, biến Max có gía trị bằng a. Sang
bước 2, có thể xảy ra hai tình huống :
* Hoặc là Max < b , tức b là số lớn nhất, khi đó giá
trị lớn nhất b được gởi vào biến Max
* Hoặc là Max >= b, tức gía trị của Max là lớn nhất
rồi nên không phải làm gì nữa.
10. CCââuu llệệnnhh IIFF
11,, CCââuu llệệnnhh IIFF ddạạnngg 11::
Chương trình cụ thể như sau:
PROGRAM MaxHaiSo;
{ Tim Max của hai so }
Var
a, b, max : Real;
Begin
Write(‘ Nhap a va b :’);
Readln(a,b);
Max :=a ;
If Max < b then Max:=b ;
Writeln(‘ So lon nhat la: ‘ , Max:6:2);
Readln;
End.
11. CCââuu llệệnnhh IIFF
11,, CCââuu llệệnnhh IIFF ddạạnngg 11::
Nhận xét:
- Việc tìm số nhỏ nhất của hai số a, b cũng tương tự, ta dùng
biến phụ Min chứa gía trị nhỏ nhất, và thực hiện các lệnh sau:
Min:=a;
If Min > b then Min:=b;
- Có thể mở rộng thuật toán trên để tìm số lớn nhất trong ba số
hoặc nhiều hơn. Dưới đây là các lệnh chính để tìm số lớn nhất
trong ba số a, b, c :
Max:=a;
If Max < b then Max:=b; { Max là số lớn nhất của a và b}
If Max < c then Max:=c; { Max là số lớn nhất của a, b và c }
12. CCââuu llệệnnhh IIFF
22,, CCââuu llệệnnhh IIFF ddạạnngg 22::
Cú pháp:
IF Ðiềukiện THEN LệnhP
ELSE
LệnhQ ;
Chú ý :
- Trước từ khóa ELSE không có dấu chấm phẩy.
- LệnhP và LệnhQ có thể là một lệnh ghép, tức là gồm
nhiều lệnh được đặt trong khối begin và end.
13. CCââuu llệệnnhh IIFF
22,, CCââuu llệệnnhh IIFF ddạạnngg 22::
Ý nghĩa :
- Tùy theo Ðiềukiện là đúng hay sai mà quyết định làm
một trong hai lệnh: LệnhP hoặc LệnhQ .
- Nếu Ðiềukiện là đúng thì làm LệnhP, không làm
LệnhQ, mà chuyển ngay sang thực hiện lệnh kế tiếp ở sau
LệnhQ.
- Ngược lại, nếu Ðiềukiện là sai thì không làm LệnhP mà
làm LệnhQ rồi chuyển sang lệnh kế tiếp ở sau LệnhQ.
15. CCââuu llệệnnhh IIFF
22,, CCââuu llệệnnhh IIFF ddạạnngg 22::
Ví dụ 1.2: Ðể tìm số lớn nhất của hai số a và b, dùng
lệnh:
If a<b then Max:=b else Max:=a;
16. II,, CCââuu llệệnnhh IIFF
22,, CCââuu llệệnnhh IIFF ddạạnngg 22::
Chương trình cụ thể như sau:
PROGRAM Vidu12;
{Tim so lon nhat va so nho nhat của hai so }
Var
a, b, Max, Min : Real;
Begin
Write(‘ Nhap a va b :’);
Readln(a,b);
If a < b then
begin
Max:= b;
Min:= a;
end
17. CCââuu llệệnnhh IIFF
22,, CCââuu llệệnnhh IIFF ddạạnngg 22::
Chương trình cụ thể như sau:
else { trước else không có dấu ; }
begin
Max:= a;
Min:= b;
end;
Writeln(‘ So lon nhat la: ‘ ,
Max:6:2);
Writeln(‘ So nho nhat la: ‘ ,
Min:6:2);
Readln;
End.
18. CCââuu llệệnnhh IIFF
33,, CCââuu llệệnnhh IIFF llồồnngg nnhhaauu::
Cú pháp:
IF Ðiềukiện1 THEN
If Ðiềukiện2 then LệnhP
ELSE
LệnhQ
ELSE
LệnhR ;
*Chú ý: Trong câu lệnh IF lồng nhau, cách xác định từ khóa
ELSE nào đi với từ khóa IF nào làm như sau: xét ngược từ
dưới lên, ELSE luôn đi với IF gần nhất ở phía trên nó mà
chưa có ELSE để bắt cặp.
19. CCââuu llệệnnhh IIFF
33,, CCââuu llệệnnhh IIFF llồồnngg nnhhaauu::
Ví dụ 1.3: Nhập vào họ tên một chủ hộ, chỉ số điện
kế tháng trước (chiso1) và chỉ số điện kế tháng này
(chiso2), tính tiền điện tháng này cho hộ, biết rằng :
- Mỗi kw trong 60 kw đầu tiên có đơn giá là 5đ,
- Từ kw thứ 61 đến kw thứ 160 có đơn giá 8đ,
- Từ kw thứ 161 trở lên có đơn gía 10đ.
20. CCââuu llệệnnhh IIFF
33,, CCââuu llệệnnhh IIFF llồồnngg nnhhaauu::
Thí dụ, ông A có chỉ số điện tháng trước là chiso1 = 1020
và chỉ số điện tháng này là chiso2=1070, lượng điện tiêu
thụ tính ra là Ldtt = 1070 - 1020 = 50, do lượng điện tiêu
thụ < 60 nên số tiền sẽ là:
Tien = 50×5= 250đ.
Nếu chiso2 = 1150 thì Ldtt = 1150 - 1020 =130, do lượng
điện tiêu thụ vượt quá 60 kw nhưng chưa vượt quá 160 kw
nên tiền điện được tính là:
Tien = 60×5 + (130 - 60) × 8 = 860 đ.
21. CCââuu llệệnnhh IIFF
33,, CCââuu llệệnnhh IIFF llồồnngg nnhhaauu::
Nếu chiso2 = 1234, thì Ldtt = 1234 - 1020 = 214, do lượng
điện tiêu thụ vượt qúa 160 kw nên tiền điện sẽ là:
Tien = 60×5 + 100×8 + (214 - 160)×10= 300 + 800 +
54×10 = 1640 đ.
22. CCââuu llệệnnhh IIFF
33,, CCââuu llệệnnhh IIFF llồồnngg nnhhaauu::
Chương trình cụ thể như sau:
PROGRAM VIDU13;
{ Tính tiền điện }
Var
Ho_ten: String[18];
chiso1, chiso2, Ldtt, Tien : Real;
Begin
Write(‘ Nhap ho va ten :’);
Readln(Ho_ten);
Write(‘ Nhap chỉ số tháng trước, chỉ số
tháng này: ‘);
Readln( chiso1, chiso2);
Ldtt:=chiso2 - chiso1;
23. CCââuu llệệnnhh IIFF
33,, CCââuu llệệnnhh IIFF llồồnngg nnhhaauu::
If Ldtt<= 60 then Tien:=Ldtt*5
else
if Ldtt <=160 then Tien:=60*5+(Ldtt - 60)*8
else
Tien:=60*5 + 100*8 + (Ldtt - 160) * 10;
Writeln(‘ Họ và tên là ‘, Ho_ten);
Writeln(‘ Tiền phải trả là ‘ , Tien:10:2);
Readln;
End.
24. BBààii ttậậpp vvềề nnhhàà
Vidu1.4: Nhập vào họ tên và điểm trung bình (DTB) của một
sinh viên. Hãy phân loại sinh viên theo DTB như sau:
Loại là Kém nếu DTB<5,
là Tbình nếu 5 <= DTB<7,
là Khá nếu 7 <= DTB<9,
là Giỏi nếu DTB >= 9.
In họ tên, điểm trung bình và phân loại sinh viên.
25. BBààii ttậậpp vvềề nnhhàà
Ví dụ 1.5: Nhập vào ba hệ số A, B, C, (A ? 0) rồi giải và biện
luận phương trình bậc hai:
Ax2 + Bx + C = 0
Việc đầu tiên là phải tính Delta :
Delta = B×2 – 4×A×C
Sau đó biện luận theo Delta:
Nếu Delta < 0 : phương trình vô nghiệm
Nếu Delta = 0 : phương trình có nghiệm kép :
Nếu Delta > 0: phương trình có hai nghiệm :