Dari sekian banyak operator di dalam bahasa pemrograman Pascal, Pascal memiliki aturan operator mana yang akan didahulukan, atau dikenal juga dengan urutan prioritas operator. Dalam tutorial ini akan kita bahas dengan lebih detail.
Urutan Prioritas Operator dalam Pascal
Sebagai contoh kasus, silahkan anda tebak apa hasil akhir dari kode program dibawah ini:
program prioritas_operator; uses crt; var  hasil1:integer;  hasil2:boolean; begin  clrscr;  hasil1:= 12 + 6 * 3 - 4;  writeln('hasil1 :',hasil1);  hasil2:= 12 + 6 > 6 * 4;  writeln('hasil2 :',hasil2);  readln; end.
Apakah isi dari variabel hasil1 dan hasil2?
Untuk variabel hasil1 mungkin bisa kita tebak, yakni 26. Seperti yang kita pelajari dalam matematika, oparator perkalian lebih kuat daripada penambahan dan pengurangan. Sehingga yang akan dijalankan adalah: 12 + (6 * 3) – 4 = 12 + 18 – 4 = 30 – 4 = 26.
Bagaimana dengan hasil2? Apakah hasilnya berupa angka (integer) atau boolean? Inilah peran dari prioritas operator. Hasilnya adalah boolean FALSE. Operator perbandingan lebih besar dari ">" memiliki tingkat prioritas yang lebih rendah daripada operator aritmatika. Oleh karena itu yang akan dijalankan Pascal adalah: (12 + 6) > (6 * 4), menjadi 18 > 24 = false.
Berikut tabel urutan prioritas di dalam bahasa pemrograman Pascal:
Operator | Tingkat Prioritas |
~, not, | Paling Tinggi |
*, /, div, mod, and, & | |
|, !, +, -, or, | |
=, <>, <, <=, >, >=, in | |
or else, and then | Paling Rendah |
Sebagai bahan latihan, bisakah anda menebak hasil dari kode program berikut?
program prioritas_operator; uses crt; var  hasil:boolean; begin  clrscr;  hasil:= 12 + 6 > 6 * 3 - 1 and true;  writeln('hasil :',hasil);  readln; end.
Hasilnya adalah…. Error: Incompatible types: got "Boolean" expected "LongInt".
Error diatas terjadi karena Pascal akan mencoba menjalankan operasi berikut:
12 + 6 > (6 * 3) - (1 and true);
Perhatikan bahwa di dalam Pascal operasi lintas tipe data seperti "1 and true" tidak bisa diproses (error). Ini karena tingkat prioritas operator perkalian dan operator logika and lebih tinggi daripada yang lain.
Jadi, bagaimana solusinya?
Kita bisa menggunakan tanda kurung "(" dan ")" untuk meningkatkan urutan prioritas sebuah operasi, jika dari contoh sebelumnya saya ingin menjalankan seluruh operator aritmatika terlebih dahulu, saya bisa menulisnya seperti berikut ini:
hasil:= (12 + 6 > 6 * 3 - 1) and true;
Atau lebih jelas lagi jika ditulis sebagai berikut:
hasil:= ((12 + 6) > ((6 * 3) - 1)) and true;
Ini akan diproses menjadi: (18 > 17) and true, kemudian: true and true, yang hasilnya adalah true. Berikut contoh penulisan kode program lengkapnya:
program prioritas_operator; uses crt; var  hasil:boolean; begin  clrscr;  hasil:= ((12 + 6) > ((6 * 3) - 1)) and true;  writeln('hasil :',hasil);  readln; end.
Walaupun bersifat opsional, menambahkan tanda kurung untuk operasi seperti diatas sangat disarankan, terutama untuk menghindari "salah prediksi" dari urutan operator.
Tutorial kali ini menutup tutorial mengenai operator di dalam pascal. Untuk operator bitwise, set/himpunan, dan pointer tidak akan saya jelaskan karena penggunaannya sangat jarang.
Berikutnya kita akan masuk ke tutorial mengenai struktur percabangan kode program dan perulangan, yang akan dimulai dengan cara penulisan struktur percabangan IF THEN di dalam bahasa pemrograman pascal.
@duniailkom min, aq ada tugas tp failed compile trs, 5.5 * 2 mod 2 bs bantuin ga ?
Keterangannya error operand . sdh di otak, stok type datanya tetep aja ga bs
Kemaren sudah saya jawab di bagian komentar tutorial operator aritmatika gan, seperti ini?
program operator_aritmatika;
uses crt;
var
a,b: real;
begin
clrscr;
a := 5.5 * (2 mod 2);
b := 8 div 4 + 0 * 2;
writeln('a: ',a:2:2);
writeln('b: ',b:2:2);
readln;
end.
maaf gan , sya di ksh dosen soalnya a := 5.5 * 2 mod 2, ga ada tanda kurung. tp ga bs di compile trus, kira2 alasannya apa ya ?
maaf sya baru tahap belajar, :) msh bingung.. akhir2 ini sya berkunjung ke blog ini trus coz materinya paham dan gabanyak iklan hehe