PROGRAM KONVERSI INFIX KE POSTFIX
Di bawah ini salah satu tugas mata kuliah struktur data yang mengharuskan membuat program tentang konversi ekspresi infix ke ekspresi postfix.
nah selesai, saya kasih logikanya sedikit ya..
semua yang diawali sama tanda # merupakan library dalam bahasa pemrograman C++
seperti #include<iostream> merupakan library yang berisi tentang perintah input output (IO). Nah dalam program tersebut yang termasuk ke dalam library iostrem ini antara lain ada cout (dibaca : C out), dan cin (dibaca : C in). cout tersebut untuk menampilkan output ke layar, sedangkan cin untuk membaca inputan kita dari keyboard.
program ini merupakan program konversi dari ekspresi infix ke ekspresi postfix yang menggunakan operasi stack (tumpukan).
paham ngga sama cara pengoperasian stack dalam program ini?
ya, okee saya jelasin secara singkatnya ya..
pengertian dari stacknya terlebih dulu deh, stack merupakan bentuk khusus dari operasi single list, yang dianalogikan sebagai tumpukan baki/nampan, dimana operasi pemasukkannya hanya bisa dari satu arah, begitupun dengan operasi penghapusannya.
cara kerja dari stack bisa disebut LIFO (Last In Last Out) yang bermaksud elemen terakhir yang dimasukkan atau TOPelemen akan dikeluarkan pertama kali menjadi output.
macam-macam operasi pada stack ada CREATE, PUSH, POP, ISEMPTY.
baiklah, sekarang simak nih cara kerja dari program yang menggunakan cara pengeksekusian operasi stack.
pertama, progam ini akan membaca inputan yang kita masukkan. Jika inputan pertama berupa simbol “(” {kurung buka}maka simbol tersebut kita PUSH ke dalam stack.
kedua, jika bertemu dengan simbol “)” {kurung tutup} maka program akan menge-POP seluruh elemen yang berada dalam stack menjadi output sampai bertemu dengan simbol “(“ yang kita inputkan pertama tadi. [simbol "(" tidak menjadi output].
ketiga, jika inputan yang terbaca berupa simbol OPERAND, maka OPERAND tersebut langsung di POP menjadi output.
keempat, jika inputan merupakan simbol OPERATOR maka :
A. kita perhatikan dahulu level dari OPERATOR yang diinputkan, jika TOP stack berisi OPERATOR dengan level lebih tinggi atau sama dengan OPERATOR yang diinputkan, maka TOP stack tersebut akan di POP menjadi output. Proses seperti ini akan terus berlanjut dan akan berakhir jika bertemu dengan OPERATOR dengan level lebih rendah atau jika bertemu dengan simbol “(“.
B. jika OPERATOR yang diinputkan memiliki level lebih tinggi dibanding dengan OPERATOR yang ada di dalam stack, maka OPERATOR tersebut ikut kita PUSH ke dalam stack.
*keterangan :
-CREATE = operasi pembuatan stack.
-PUSH = operasi memasukkan/menambah elemen ke dalam stack.
-POP = operasi penghapusan elemen dari stack.
-ISEMPTY =operasi stack yang memastikan stack kosong atau tidak, dan output datanyanya bertipe boolean.
-OPERAND = operand di sini merupakan simbol berupa abjad/alfabet (contoh : a,b,c,d…z).
-OPERATOR = merupakan simbol aritmatika (contoh: ^, *, /, +, -”(“, “)” ).
Dalam program ini, prioritas/level simbol OPERAND dianggap sama, dan huruf kapital atau kecil pun dianggap sama.
Namun urutan prioritas/level untuk OPERATOR sangat diperhatikan dalam menghasilkan output nanti.
Pendeklarasian prioritas untuk OPERATOR dapat dilihat sendiri dalam program di foto kedua (inpost2).
Lalu program untuk konversi ekspresi infix ke postfixnya dapat dilihat pada foto ketiga (inpost3).
Penasaran sama outputnya??
langsung aja deh nih check this out…..
setelah diinputkan “t” lalu kita tekan <enter> maka program langsung berakhir dan keluar.
Tidak ada komentar:
Posting Komentar