1 Operator logika meliputi: and, or, not, xor
Operator jenis ini menerima nilai boolean sebagai parameter, hasil operasinya juga berupa nilai boolean;
Jika kedua operand bernilai bilangan bulat, maka and/or/not/xor akan berubah menjadi operator bitwise dan menghasilkan bilangan bulat.
2 Operator relasi (perbandingan): =, <>, >, <, <=, >=.
Jika Anda sudah mengenal bahasa keluarga C, perhatikan perbedaan penting berikut:
Pascal hanya menggunakan satu tanda sama untuk pengecekan kesamaan yaitu A = B (bahasa C menggunakan A == B);
Operator penugasan khusus milik Pascal adalah simbol :=.
Operator logika / bitwise memiliki prioritas operasi yang lebih tinggi dibanding operator relasi.
Untuk mengatur urutan perhitungan, sebagian ekspresi harus dibungkus tanda kurung; jika tidak akan terjadi kesalahan logika bahkan gagal dikompilasi.
Contoh salah (muncul error kompilasi)
var
A, B: Integer;
begin
if A = 0 and B <> 0 then ... // Penulisan yang salahCode language: JavaScript (javascript)
Penyebab gagal kompilasi:
Aturan prioritas kompiler akan menjalankan operasi bitwise AND di tengah 0 and B terlebih dahulu (menghasilkan bilangan bulat);
Kemudian eksekusi A = (0 and B) untuk mendapatkan nilai boolean;
Akhirnya program mencoba melakukan operasi antara nilai boolean dan bilangan bulat 0, sehingga memicu kesalahan ketidakcocokan tipe (type mismatch).
Cara penulisan yang benar
var
A, B: Integer;
begin
if (A = 0) and (B <> 0) then ...Code language: HTML, XML (xml)
Aturan evaluasi hubungan pendek (Short-circuit evaluation)
Gunakan ekspresi if MyFunction(X) and MyOtherFunction(Y) then... sebagai contoh, aturannya sebagai berikut:
- Operasi
and: jalankan sisi kiriMyFunction(X)terlebih dahulu- Jika sisi kiri mengembalikan
false, hasil seluruh ekspresi pasti bernilaifalse, fungsi di sisi kananMyOtherFunction(Y)tidak akan dijalankan sama sekali.
- Jika sisi kiri mengembalikan
- Operasi
orberlaku hal yang sama:- Jika sisi kiri sudah mengembalikan
true, hasil keseluruhan adalah benar dan kode di sisi kanan tidak dijalankan.
- Jika sisi kiri sudah mengembalikan
Fitur ini sangat berguna saat pengecekan pointer kosong:
if (A <> nil) and A.IsValid then...Code language: HTML, XML (xml)
Kode tidak akan crash meskipun A adalah pointer kosong nil. Kata kunci nil mewakili pointer kosong, secara numerik setara dengan 0 dan sesuai dengan null di bahasa pemrograman lain.
Klasifikasi operator
Operator relasi (mengembalikan tipe Boolean)
| Pascal | Makna | Padanan di C |
|---|---|---|
= | Sama dengan | == |
<> | Tidak sama dengan | != |
> | Lebih besar dari | > |
< | Lebih kecil dari | < |
>= | Lebih besar atau sama dengan | >= |
<= | Lebih kecil atau sama dengan | <= |
Operator logika / bitwise
not: NOT logika / invers bitwise and: AND logika / AND bitwise or: OR logika / OR bitwise xor: XOR logika / XOR bitwise
not (NOT)
| a | not a |
|---|---|
| true | false |
| false | true |
and (AND, hanya benar jika kedua operand bernilai benar)
| a | b | a and b |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
or (OR, benar jika salah satu operand bernilai benar)
| a | b | a or b |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
xor (XOR, hanya benar jika nilai kedua operand berbeda)
| a | b | a xor b |
|---|---|---|
| true | true | false |
| true | false | true |
| false | true | true |
| false | false | false |
Contoh
Aturan penentuan tahun kabisat
- Habis dibagi 4 tetapi tidak habis dibagi 100 → tahun kabisat
- Habis dibagi 400 → tahun kabisat, sisanya adalah tahun biasa
{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program LeapYearCheck;
// Fungsi pengecekan tahun kabisat, input tahun dan kembalikan nilai boolean
function IsLeapYear(year: Integer): Boolean;
begin
Result := ((year mod 4 = 0) and (year mod 100 <> 0)) or (year mod 400 = 0);
end;
var
y: Integer;
begin
Write('Masukkan tahun: ');
ReadLn(y);
if IsLeapYear(y) then
Writeln(y, ' adalah tahun kabisat')
else
Writeln(y, ' adalah tahun biasa');
ReadLn;
end.Code language: JavaScript (javascript)

modoperator sisa bagi, tulisanyear mod 4 = 0berarti tahun habis dibagi 4- Ekspresi wajib pakai tanda kurung: operator
andprioritasnya lebih tinggi dari operator perbandingan - Fitur evaluasi pendek: jika syarat habis dibagi 400 di depan
orterpenuhi, syarat 4/100 tidak akan diperiksa
Operator logika, relasi dan bitwise