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.
Sumber wk.com
EmoticonEmoticon