Rabu, 17 Oktober 2012

INFIX, PREFIX DAN POSTFIX


    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.

 
 
Apa itu Operand dan Operator ?
 








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.

Jika si komputer yang tidak men-scan keseluruhan soalnya dulu, maka bisa salah hasilnya.



Tidak ada komentar:

Posting Komentar