Friday, January 30, 2015

Aplikasi Stack


PENGGUNAAN / APLIKASI STACK
Logika stack digunakan untuk menyelesaikan berbagai macam masalah
Antara lain digunakan pada complier, operating system dan dalam program-program aplikasi
Berikut ini tiga buah contoh aplikasi stack

MATCHING PARENTSHESES
Proses ini dilakukan complier untuk memeriksa kelengkapan tanda kurung yang terdapat  pada suatu ekspresi aritmetik
Sedangkan stack disini digunakan tempat prosesnya
Algoritma yang digunakan adalah :
  • Elemen-elemen suatu ekspresi aritmetik (string) di_scan dari kiri ke kanan .
  • Jika ditemukan simbol “(“ atau “left parenthesis”, maka simbol tersbut di-push ke dalam stack . 
  • Jika ditemukan simbol “)” atau “right parenthesis” , maka isi stack diperiksa.
    - Jika
    stack kosong terjadi kesalahan. Berarti : ada simbol “)”, tetapi tidak ada simbol “(“ yang seharusnya mendahului.
    -
    Jika stack tidak kosong artinya ada pasangannya dan langsung di POP keluar stack.
  • Misalkan NEXT CHAR adalah suatu karakter terakhir dalam suatu string.



BERIKUT INI BENTUK FLOWCHART (LOGIKA PROSES) YANG DIGUNAKAN PADA PROSES MATCHING INI :   


NOTASI POSTFIX 


Bentuk aplikasi stack yang lain adalah mengubah suatu ekspresi aritmatik (string) ke dalam notasi postfix.
Notasi postfix ini digunakan oleh complier  untuk menyatakan suatu ekspresi aritmatik dalam bahasa tingkat tinggi (high level language)
Stack digunakan oleh complier untuk mentransformasikan ekspresi aritmatik menjadi suatu ekspresi dalam bentuk/ notasi postfix.
Notasi diberikan ekspresi aritmatik : A + B ;
Maka bentuknya dalam notasi postfix menjadi : AB +
Urutan (prioritas) dari operator adalah : 

  1. Perpangkatan (^)
  2. Perkalian (*) atau Pembagian (/)
  3. Penjumlahan (+) atau Pengurangan (-)
Aturan yang digunakan dalam proses transformasi tersebut adalah : 

  • Ekspresi aritmatik yang diberikan di- “Scan” dari kiri ke kanan.
  • Bila simbol yang di-scan adalah “(“, maka simbol tersebut di push ke dalam stack.
  • Bila simbol yang di-scan adalah “)”, maka seluruh isi stack di pop keluar mulai dari simbol “(“ yang pertama ditemukan dalam stack.
  • Bila simbol adalah operator, maka dilakukan perbandingan dulu dengan simbol (operator) yang berada pada posisi top dalam stack.
    -
    Jika derajatnya setara  atau lebih rendah dari simbol yang berada pada posisi top, maka top stack di-pop keluar sebagai output dan simbol yang baru di-push ke dalam stack.
    -
    Jika derajatnya lebih tinggi dari simbol yang berada pada posisi top, maka simbol (operator) yang di-scan tersebut di-push ke dalam stack.
  • Bila simbol yang di-scan adalah operand, maka simbol tersebut langsung sebagai output.
  • Bila simbol adalah “;” maka seluruh isi stack di-pop sebagai output. 
CONTOH :
Misal diberikan sebuah ekspresi aritmatik dengan bentuk sbb:
                      (( A + B ) * C / D + E ^F ) / G;
Selanjutnya akan dicari bentuk ekspresi diatas dalam notasi postfix.
Proses yang dilakukan dapat digambarkan dalam tabel berikut : 

No comments:

Post a Comment