Kiểu boolean chỉ có hai giá trị là TRUE (đúng) và FALSE (sai), không phân biệt chữ hoa hay chữ thường. Về quan hệ thứ tự thì FALSE< TRUE. Mỗi giá trị boolean chiếm một byte bộ nhớ.
Các phép toán lôgic gồm có: NOT, AND, OR và XOR. Nếu A và B là hai đại lượng lôgic thì NOT A, A and B, A or B và A xor B cũng là những đại lượng lôgic có kết quả được cho ở bảng 3.5.
A NotA B A and B A or B A xor B
True False True True True False
True False False False True True
False True True False True True
False True False False False False
Bảng 3.6
Thứ tự thực hiện các phép toán lôgic là như sau: NOT tính trước, kế đến AND, sau cùng là OR, XOR.
Ví dụ, sau khi thực hiện lệnh:
A:=Not(2*3=5) or (‘A’<‘B’) and not(4/2=2) xor (Sqrt(2) >1); thì giá trị của A= FALSE, thật vậy:
Not(2*3=5) or (‘A’<‘B’) and not(4/2=2) xor (Sqrt(2) >1) = TRUE or TRUE and FALSE xor TRUE
= TRUE or FALSE xor TRUE = TRUE xor TRUE
= FALSE
Biến chỉ nhận giá trị là TRUE hoặc FALSE gọi là biến kiểu lôgic. Khi khai báo biến kiểu lôgic ta dùng từ khóa Boolean, ví dụ:
Var A, B: Boolean;
Trong chương trình ta có thể gán: A:= true;
B:=2*2 < 3;
Giá trị của biến B sẽ là False vì biểu thức 2*2< 3 là sai.
Về thứ tự tính toán, các phép so sánh thì ngang cấp nhau và được tính sau tất cả các phép toán khác. Ví dụ tính biểu thức:
5+7 div 2 < -7 mod 3 + 5*2 = = 5 + 3 < -1 + 10
= 8< 9 = TRUE
Do đó, khi trong một biểu thức mà có các phép toán lôgic xen kẽ với các biểu thức so sánh thì các biểu thức so sánh phải để trong ngoặc đơn.
Chẳng hạn, biểu thức sau là sai quy cách: N > 0 and N<10
Cần sửa đúng thành: (N > 0) and (N<10)
Ví dụ: Nhập vào độ dài ba cạnh a,b,c của một tam giác, nếu a, b, c không phải là ba cạnh của tam giác thì in lên màn hình câu " không phải ba cạnh của tam giác", ngược lại, nếu đúng là ba cạnh của một tam giác thì tính chu vi và diện tích tam giác đó theo công thức Hêrông:
, với p là nửa chu vi:
Ta biết, điều kiện để a,b,c là ba cạnh của một tam giác là mỗi cạnh phải dương và tổng hai cạnh thì lớn hơn cạnh còn lại.
Dưới đây là chương trình cụ thể:
PROGRAM VIDU3_5; {Tính diện tích và chu vi tam giác theo 3 cạnh} Var a, b, c, P, S: Real; Tgiac: Boolean;
Begin
Readln(a, b, c);
Tgiac:= (a>0) and (b>0) and (c>0) and(a+b>c) and (a+c>b) and (b+c>a); If Tgiac= FALSE then Writeln(‘ Khong phai ba canh cua tam giac !’) else
begin
P:=(a+b+c)/2;
S:= Sqrt(P*(P-a)*(P-b)*(P-c) ); Writeln(‘ chu vi = ‘ , 2*P:10:2); Writeln(‘ dien tich S= ‘ , S:10:2); end;
Readln End.