Tutorial Belajar Pascal Part 35: Urutan Prioritas Operator dalam Bahasa Pascal

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.

Hasil Contoh Program - Urutan Prioritas Operator dalam Pascal

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".

Hasil Contoh Program - Error Urutan Prioritas Operator dalam Pascal

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.

Hasil Contoh Program - Urutan Prioritas Operator dalam Pascal

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.


eBook Pascal Uncover Duniailkom
Apabila anda serius ingin mempelajari Pascal dan butuh materi Pascal yang jauh lebih lengkap, Duniailkom telah menerbitkan eBook Pascal Uncover yang membahas bahasa pemrograman Pascal dari dasar hingga procedure, function dan contoh kasus. Penjelasan lebih lanjut bisa ke eBook Pascal Uncover Duniailkom.

3 Comments

  1. Anonymous
    20 Sep 16
    • Andre
      20 Sep 16
      • maulana
        20 Sep 16

Add Comment