● PENDAHULUAN
Salah
satu kegunaan stack adalah untuk mengubah notasi infix menjadi prefix
ataupun postfix. Sebelum kita lihat yang dimaksud dengan infix, prefix dan postfix, ada
baiknya mengenal
istilah
operand dan operator
dahulu.
Lalu
apa
sih Infix, Prefix, Postfix tersebut ?
Infix, Prefix ataupun Postfix adalah
bentuk penulisan operasi matematika, bedanya :
Infix = Operator
diletakkan di antara Operand
Prefix = Operator
diletakkan di depan
Operand
Postfix / Sufix = Operator diletakkan di belakang Operand
Contoh :
Infix
|
Prefix
|
Postfix
|
A + B x C
|
x + A
B C
|
A B C x +
|
D / E – F
|
- / D E F
|
D E / F -
|
Bingung kenapa Prefix atau
Postfix-nya bisa
seperti itu?
Mengapa mesti ada notasi Prefix atau Postfix? Kenapa nggak gunakan
infix aja??
Karena infix memiliki beberapa kekurangan, yaitu :
1. Urutan pengerjaan
tidak
berdasarkan letak kiri
atau kananya,
tetapi berdasarkan
precedence-nya
Contoh : 3
+ 4 x 2
3 + 4 x 2 , maka urutan pengerjaan adalah
4 x 2 dahulu.
3 + 8 , baru
hasilnya ditambah 3
11
Urutan precedence (dari prioritas tertinggi) adalah sebagai berikut
:
1. Pemangkatan
2. Perkalian dan
Pembagian
3. Penjumlahan dan Pengurangan.
Kecuali kalau ada tanda kurung.
2. Menggunakan tanda kurung. Betul, infix bisa menggunakan tanda kurung. Repotnya,
si tanda kurung ini bisa ngacak-ngacak
urutan precedence.
Contoh
: Tanpa penggunaan
tanda
kurung :
9 – 5 – 3
9
– 5 – 3 ,
maka urutan pengerjaan adalah 9 - 5 dahulu.
4 – 3
1
Bandingkan
dengan penggunaan
tanda kurung berikut :
9 – ( 5 – 3 )
9 –
( 5 – 3 ) , maka urutan pengerjaan adalah 5 –
3 dahulu.
9 – 2
7
3. Jika suatu program akan mengevaluasi (mencari hasil) suatu infix, maka komputer
perlu men-scan
berulang-ulang mencari
urutan
pengerjaannya dahulu.
Contoh : 7 + 4 x 2 – 6 / 3
Jika kita diminta untuk menghitung
soal seperti itu, maka kita tahu bahwa yang pertama kali
harus kita kerjakan adalah
4 x
2. Lalu 6
/ 3 dsb, seperti langkah-langkah
berikut :
7 + 4 x 2 – 6 / 3
7 + 8 – 6
/ 3
7 + 8 – 2
15 – 2
13 Bingung pada tahapan ini?
Jangan lupa bahwa pengerjaan suatu soal tergantung
pada urutan precedence-nya.
Masalahnya, si komputer tidak bisa
membaca keseluruhan soal
sekaligus. Komputer hanya bisa
men-scan soal satu per satu operand atau operator. Sehingga
untuk mengetahui mana yang harus dikerjakan duluan, komputer harus men-scan keseluruhan soalnya dulu. Jadi langkah-langkah si komputer dalam mengerjakan soal infix seperti berikut:
1. Cari precedence tertinggi dengan
men-scan
kiri ke kanan keseluruhan
soal.
2. Hitung nilai operator dengan precedence tertinggi tersebut.
3. Ulangi
lagi
dari
langkah 1,
sampai semua operator selesai dikerjakan.
Tidak ada komentar:
Posting Komentar