Sebelumnya telah dibahas disini tentang postfix dan infix. Sekarang kita akan membahas cara membaca rumus postfix dan cara mengubah rumus infix ke posix.

Membaca postfix

Aturannya adalah :

  1. Notasi dibaca dari kiri ke kanan
  2. Jika ditemukan OPERAND, disimpan dalam stack
  3. Jika ditemukan OPERATOR (+,-,*,/) , kompiler akan mengambil 2 OPERAND terakhir dari stack tadi (POP) dan hasilnya disimpan kembali ke stack

Contoh rumus postfix : ABC*+

No Stack Proses
1 A A Operand, simpan ke stack
2 B A,B Operand, simpan ke stack
3 C A,B,C Operand, simpan ke stack
4 * A,D Operator *, POP 2 operand (B & C) lalu kalikan. Hasilnya (D) simpan kembali ke stack
5 + E Operator +, POP 2 operand (A,D) lalu jumlahkan. Hasilnya (E) simpan kembali ke stack

Mengubah infix ke postfix

Aturannya adalah :

  1. Tentukan derajat masing-masing operator
    Contoh : * dan / = 2, + dan - = 1, kurung buka ‘(’ = 0
  2. Untuk OPERAND, langsung tulis sebagai OUTPUT
  3. ‘(’, langsung push ke stack
  4. ‘)’, POP dan tulis ke output semua isi stack sampai pasangannya kurung buka ‘(’. Untuk ‘(’ dan ‘)’ tidak usah ditulis ke output
  5. Operator 1 : Jika stack kosong atau derajat operator yang baru lebih tinggi dari operator sebelumnya di stack, masukkan operator ke stack (PUSH)
  6. Operator 2 : Jika derajat operator di stack yang baru lebih rendah atau sama dengan operator sebelumnya, maka pindah operator sebelumnya tersebut ke output (POP). Lalu bandingkan lagi operator yang baru tersebut dengan operator sebelumnya. Jika derajatnya lebih tinggi atau stack dalam keaadaan kosong, PUSH ke stack (Mbulet yah)

Contoh rumus infix : A + B * C. Ubahlah ke rumus postfix

No Stack Output Proses
1 A A Operand, langsung output
2 + + A Operator, langsung PUSH ke stack
3 B + AB Operand, langsung output
4 * +,* AB Operator, karena derajat * (2) lebih tinggi dari + (1), langsung PUSH ke stack
5 C +,* ABC Operand, langsung output
6 + ABC* POP stack ke output
7 ABC*+ POP stack ke output

Contoh rumus infix : A*(B-C)+D. Ubahlah ke bentuk postfix

No Stack Output Proses
1 A A Operand, langsung output
2 * * A Operator, langsung PUSH ke stack
3 ( *( A ‘(’ Langsung push ke stack
4 B *( AB Operand, langsung output
5 - *(- AB Operator, langsung push ke stack
6 C *(- ABC Operand, langsung output
7 ) * ABC- ‘)’, semua operator yang diapit tanda ini dioutput kan
8 + + ABC-* Derajat operator + (1) lebih rendah dari * (2). Maka * dioutputkan (POP). Kemudian, karena stack kosong, maka + di PUSH ke stack
9 D + ABC-*D Operand, langsung output
10 ABC-*D+ Operator dari stack, di pop ke output