intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

CÂU LỆNH IF

Chia sẻ: Lotus_0 Lotus_0 | Ngày: | Loại File: PDF | Số trang:22

182
lượt xem
20
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cú pháp, lưu đồ và ý nghĩa: Cú pháp : IF Ðiềukiện THEN LệnhP ; Ð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 .

Chủ đề:
Lưu

Nội dung Text: CÂU LỆNH IF

  1. CÂU LỆNH IF 8.1.1. Câu lệnh IF dạng 1: 8.1.1.1. Cú pháp, lưu đồ và ý nghĩa: Cú pháp : IF Ðiềukiện THEN LệnhP ; Ð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 . Ý 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
  2. kế 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. 8.1.1.2. Các ví dụ : Ví dụ 8.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ố đó. Ta dùng một biến phụ đặt tên là Max để chứa gía 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 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 :
  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 làm gì nữa. Chương trình cụ thể như sau: PROGRAM VIDU81; { 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);
  4. Readln; End. Chạy Chép file nguồn 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. Ðầ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 }
  5. If 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
  6. DTB: Real; Loai: String[6]; Begin Write(‘ Nhap ho va ten :’); Readln(Ho_ten); Write(‘ Nhap điem trung binh :’); Readln(DTB); { phân loại theo DTB } If DTB< 5 then Loai:=‘Kem’; If (DTB>= 5) and (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;
  7. End. Chạy Chép file nguồn Ví dụ 8.3: 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 = B2 - 4AC Sau đó biện luận theo Delta: Nếu Delta 0: phương trình có hai nghiệm :
  8. Chương trình cụ thể như sau: PROGRAM VIDU83; { Giải phương trình bậc 2 } Var A, B, C, Delta, X1, X2 : Real; Begin Repeat Write( ‘ Nhap he so A khac khong :’); Readln(A); Until A0; Write( ‘ Nhap cac he so B, C: ‘); Readln(B, C); Delta:=B*B - 4*A* C;
  9. If Delta < 0 then Writeln( ‘ Ptrinh vô nghiệm! ‘); If Delta = 0 then begin X1:=-B/(2*A); Writeln(‘ Có ng. kép X1=X2= ‘ , X1:8:2); end; If Delta > 0 then begin X1 := (-B+ Sqrt(Delta) ) / (2*A); X2 := (-B - Sqrt(Delta) ) / (2*A); Writeln(‘ Có hai nghiệm : ’); Writeln(‘X1= ‘ , X1:8:2); Writeln(‘X2= ‘ , X2:8:2); end;
  10. Readln; End. Chạy Chép file nguồn 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: X1:=-B/(2*A); Writeln(‘ Có ng. kép X1=X2= ‘ , X1:8:2); nên hai lệnh này phải được đặt giữa hai từ khóa begin và end để tạo thành một câu lệnh ghép. Tương tự, khi Delta>0 thì phải làm năm lệnh, và do đó cả năm lệnh cũng phải để trong khối begin và end. Chương trình có sử dụng lệnh Repeat ... Until (sẽ trình bày ở phần sau) để buộc người dùng phải nhập hệ số A 0, nếu nhập A=0 thì phải nhập lại cho đế n k hi A 0 mới cho làm tiếp các lệnh ở phía dưới. 8.1.2. Câu lệnh IF dạng 2:
  11. 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. Ý nghĩa của lệnh: 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.
  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
  13. Readln(a,b); If a < b then begin Max:= b; Min:= a; end 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;
  14. End. Chạy Chép file nguồn 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 : IF Ðiềukiện1 THEN If Ðiềukiện2 then LệnhP else LệnhQ ELSE LệnhR ;
  15. Ví 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à: Tien = 50*5= 250đ. Nếu chiso2=1150 thì Ldtt = 1150-1020=130, do lượng điện tiêu thụ vượt qúa 60 kw nhưng chưa vượt qúa 160 kw nên tiền điện được tính là: Tien=60*5 + (130-60) *8 = 860 đ. 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 đ.
  16. Chương trình được viết như sau: PROGRAM VIDU85; { 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; If Ldtt
  17. if Ldtt 0, ta có:
  18. Vậy : Chương trình như sau: PROGRAM VIDU86; { Tinh can bac ba cua x } Var x, y : Real; Begin Write(‘ Nhap x :’); Readln(x); { tinh y }
  19. If x= 0 then y:=0 else If x> 0 then y:=Exp( 1/3*ln(x) ) else y:= - Exp( 1/3*ln(-x) ); Writeln(‘ gia tri y= ‘ , y:8:4); Readln; End. Chạy Chép file nguồn 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}
  20. Var T1, T2, T3 : String[8]; Begin Write( ‘Nhập tên thứ nhất: ‘); Readln(T1); Write( ‘Nhập tên thứ hai: ‘); Readln(T2); Write( ‘Nhập tên thứ ba: ‘); Readln(T3); Writeln(‘ Các tên được sắp thứ tự là:’); IF T1
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2