Ý nghĩa: Tùy theo Ðiềukiện là đúng hay sai mà quyết định có làm LệnhP hay không.. Nếu Ðiềukiện là đúng thì làm LệnhP rồi chuyển sang lệnh... Nếu Ðiềukiện là sai thì không làm LệnhP mà c
Trang 1
Ý nghĩa: Tùy theo Ðiềukiện là đúng hay sai mà quyết định có làm
LệnhP hay không Nếu Ðiềukiện là đúng thì làm LệnhP rồi chuyển sang lệnh
Trang 2kế tiếp ở phía dưới Nếu Ðiềukiện là sai thì không làm LệnhP mà chuyển ngay sang lệnh kế tiếp Sơ đồ?cú pháp của lệnh IF được vẽ trong hình 8.1
If Max < b then Max:=b;
Bước 3: In gía trị Max lên màn hình
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 :
Trang 3* Hoặc là Max < b , tức b là số lớn nhất, khi đó gía 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
If Max < b then Max:=b ;
Writeln(‘ So lon nhat la: ‘ , Max:6:2);
Trang 4If 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 Ðầu tiên ta tìm số lớn nhất của hai số a và b, ký hiệu là Max, sau đó tìm
số lớn nhất của hai số Max và c, cũng vẫn ký hiệu là Max 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 }
Trang 5If Max < c then Max:=c; { Max là số lớn nhất của a, b và c }
Ví dụ 8.2: 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
Trong chương trình, ta dùng một biến phụ đặt tên là Loai để lưu trữ phân
loại của sinh viên Vì có năm loại cầ? lưu trữ là các chuỗi ‘Kem’, ‘Tbinh’,
‘Kha’, ‘Gioi’, nên biến Loai phải có kiểu dữ liệu là kiểu chuỗi
PROGRAM VIDU82;
{ Phân loại sinh viên }
Var
Ho_ten: String[18];
Trang 6If (DTB>= 5) and (DTB<7) then Loai:=‘Tbinh’;
If (DTB >= 7) and (DTB< 9) then Loai:=‘Kha’;
If DTB >= 9 then Loai:=‘Gioi’;
Writeln(Ho_ten, #32 , DTB:4:1 , #32 , Loai); { #32 là ký tự trắng }
Readln;
Trang 7Sau đó 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 :
Trang 9If Delta < 0 then Writeln( ‘ Ptrinh vô nghiệm! ‘);
Trang 10Readln;
End
Chạy<VD83.EXE>
Chép file nguồn <VD83.PAS>
Trong chương trình có ba lệnh IF xét riêng từng trường hợp Delta âm, bằng không hoặc dương Chú ý rằng khi Delta=0 thì phải làm hai lệnh:
8.1.2 Câu lệnh IF dạng 2:
Trang 12
Ví dụ 8.4: Ðể 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;
Chương trình dưới đây sẽ nhập vào hai số a và b, tìm và in số nhỏ nhất và
Trang 13Writeln(‘ So lon nhat la: ‘ , Max:6:2);
Writeln(‘ So nho nhat la: ‘ , Min:6:2);
Readln;
Trang 14End
Chạy<VD84.EXE>
Chép file nguồn <VD83.PAS>
8.1.3 Câu lệnh IF lồng nhau :
Trong câu lệnh IF, nếu LệnhP hoặc LệnhQ, hoặc cả hai, lại là câu lệnh
IF thì ta có cấu trúc IF lồng nhau Chẳng hạn dưới đây là hai câu lệnh IF ELSE lồng nhau :
Trang 15Ví dụ 8.5: 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 gía 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đ
Ví 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à:
Trang 16Chương trình được viết như sau:
Write(‘ Nhap chỉ số tháng trước, chỉ số tháng này: ‘);
Readln( chiso1, chiso2);
Ldtt:=chiso2- chiso1;
If Ldtt<= 60 then Tien:=Ldtt*5
else
Trang 17if 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);
Trong Turbo Pascal không có hàm tính căn bậc ba của x Ðể tính
ta phải dùng hai hàm Exp(x) và Ln(x)
Áp dụng công thức toán học: x = e lnx với x>0, ta có:
Trang 19Chép file nguồn <VD86.PAS>
Ví dụ 8.7: Nhập tên của ba sinh viên, in các tên đó lên màn hình theo
thứ tự đã sắp xếp theo vần A, B, C, Ví dụ, nhập ba tên là MAI, TUAN, BINH, thì in ra là BINH, MAI, TUAN
PROGRAM VIDU87;
{ Sắp xếp ba tên}
Trang 21Chép file nguồn <VD87.PAS>
Lệnh IF trong chương trình trên lồng nhau nhiều cấp nên rất phức tạp Khi học cấu trúc mảng ta sẽ giải bài toán này gọn hơn
Trang 22Chú y?/strong>: 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à 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