BAB I PENDAHULUAN
1.1. Latar Belakang Masalah
Secara umum suatu struktur data terdiri dari beberapa bagian seperti himpunan nilai-nilai data dan sejumlah operasi dasar yang bekerja pada data tersebut menurut suatu algortima tertentu. Sebagai contoh bila nilai data yang dibicarakan adalah bagian dari himpunan bilangan riil, maka operasi-operasi yang dapat dilakukan pada himpunan tersebut hanya operasi tambah, kurang, bagi dan kali, sedangkan algoritma yang diterapkan pada himpunan data tersebut mungkin merupakan algoritma untuk mencari nilai maksimum atau minimum dari data yang data.
Dalam penerapannya seorang pengguna komputer hanya akan menggunakan fungsi-fungsi dasar yang ada tanpa memperhatikan secara terperinci algoritma yang digunakan maupun struktur dari tempat penyimpanan dimana data tersebut disimpan. Untuk itu dibuatlah suatu model yang dapat menyelesaikan suatu persoalan yang ada.
notation, dimana polish notation ini berhubungan dengan penanganan konversi secara simbolik ekspresi suffix pada machine code. Dengan notasi infix, komputer akan sukar mengevaluasi ungkapan tersebut.
Disini dibuat suatu konsep yang sangat berguna didalam ilmu komputer untuk menulis ungkapan dengan menggunakan notasi tertentu melalui salah satu pemanfaatan tumpukan (stack).
1.2. Perumusan Masalah
Perumusan masalah pada Tugas Akhir ini adalah “ Bagaimana melakukan konversi notasi prefix, infix, dan postfix serta simulasi stack dalam struktur data dengan menggunakan program ? “
1.3. Pembatasan Masalah
Agar tidak meyimpang dari tujuan yang hendak dicapai, maka pembahasan masalah dibatasi pada hal-hal sebagai berikut :
1. Konversi notasi prefix, infix, dan postfix hanya digunakan pada tipe data abstrak dasar tumpukan (stack)
2. Sistem ini hanya membandingkan masing-masing notasi yang memberi keuntungan dalam perhitungan aritmatika pada komputer.
1.4. Tujuan
stack sehingga bisa diketahui konversi notasi mana yang lebih mudah digunakan
untuk melakukan perhitungan aritmatika.
1.5. Sistematika Penulisan
Dalam penulisan Tugas Akhir ini penulis membagi menjadi 5 bab, masing-masing bab membahas tentang :
BAB I : PENDAHULUAN
Bab ini menguraikan latar belakang permasalahan, tujuan yang dicapai dengan adanya program yang dibuat oleh penulis, perumusan masalah, pembatasan masalah.
BAB II : LANDASAN TEORI
Bab ini berisi uraian mengenai teori-teori yang penulis gunakan dalam menyelesaikan permasalahan. Teori-teori ini meliputi teori TDA, stack, infix, prefix, postfix, Delphi.
BAB III : METODE PENELITIAN/PERANCANGAN SISTEM
Bab ini membahas tentang metode penelitian dan perancangan/desain yang digunakan dalam mengkonversi notasi prefix, infix, dan postfix serta simulasinya dalam stack.
BAB IV : IMPLEMENTASI DAN EVALUASI
BAB V : PENUTUP
BAB II
LANDASAN TEORI
2.1. Tipe Data Abstrak (TDA)
“Tipe data sebuah variabel adalah kumpulan nilai yang dapat dimuat oleh
variabel ini. Misalnya sebuah tipe boolean hanya bernilai TRUE atau FALSE, tidak
boleh nilai yang lain. TDA adalah suatu model matematika, disertai sekumpulan
operasi terhadap model itu” (Slamet, 1990:14). Untuk merepresentasikan suatu
model matematika dari suatu TDA, digunakan struktur data yang berisi sekumpulan
variabel, yang bisa terdiri atas beberapa tipe data, dan mempunyai
bermacam-macam jenis dan cara relasi antara setiap variabel. Contoh sebuah TDA yang sangat
sederhana adalah himpunan bilangan bulat {-3,4,0,5,…} dan operasi yang bisa
dilakukan terhadap himpunan ini {gabungan, irisan dan lain-lain}. Dalam sebuah
TDA, operasi-operasi dapat mengambil operand bukan hanya elemen TDA itu, tapi
juga TDA yang lainnya. Demikian juga hasil operasinya bukan hanya merupakan
elemen TDA itu, tapi juga TDA yang lain. Implementasi dari model matematik
yang digunakan untuk menyelesaikan persoalan ke dalam program yang akan ditulis
dilakukan dengan menterjemahkan model ke dalam struktur data abstrak (TDA)
atau abstract data type yang selanjutnya dituliskan sebagai suatu struktur data yang sebenarnya dituliskan dalam bahasa pemrograman yang akan digunakan, seperti
Pascal, C atau yang lainnya. Proses penulisan progam ini dapat digambarkan dalam
Model matematik Tipe Data Abstrak Struktur Data
Algoritma informal Bahasa informal Program pascal, C dll
2.2. Tumpukan (Stack)
Tumpukan sama dengan array, tetapi tumpukan bersifat dinamis
sedangkan array bersifat statis. Dalam array, pengaksesan data (penambahan /
penghapusan data) dapat dilakukan pada sembarang elemen (dari depan, tengah
maupun belakang). Tetapi pada tumpukan pengaksesan data hanya dapat
dilakukan pada satu ujung saja. “Secara sederhana, tumpukan bisa diartikan
sebagai suatu kumpulan data yang seolah-olah ada data yang diletakkan diatas
data yang lain” (Santosa, 1992:71). Kita bisa menambahi (menyisipkan) data, dan
mengambil (menghapus) data lewat ujung yang sama, yang disebut ujung atas
tumpukan (top of stack).
Untuk menjelaskan pengertian diatas kita ambil contoh sebagai berikut,
misalnya kita mempunyai dua buah kotak yang kita tumpuk, sehingga kotak kita
letakkan diatas kotak yang lain. Jika kemudian tumpukan dua buah kotak itu kita
tambah dengan kotak ketiga, keempat, dan seterusnya, maka akan kita peroleh
“Ada dua operasi dasar yang bisa kita lakukan pada sebuah tumpukan,
yaitu operasi menyisipkan data, atau mempush data, dan operasi menghapus data
atau mempop data” (Santosa, 1992:74). Dengan demikian jika akan dilakukan
penghapusan data, data yang akan dihapus justru data yang paling baru disisipkan.
“Operasi-operasi dasar yang dapat dilakukan terhadap stack adalah :
MAKENULL(S) kosongkan stack S
TOP(S) ambil elemen top stack
POP(S) hapus elemen pada top stack
PUSH(x,S) sisipkan elemen x pada top stack
EMPTY(S) cek kekosongan stack pada S” (Slamet, 1990:30)
Proses dalam stack dapat dilihat pada gambar 2.2.
A B B C
1 2 3 4 5
STACK PUSH A PUSH B POP B PUSH C
EMPTY
Gambar 2.1 Proses Push dan Pop pada stack A
B
A A
C
2.3. Array
“Array adalah tipe terstruktur yang mempunyai komponen dalam jumlah
yang tetap dan setiap komponen mempunyai tipe data yang sama. Posisi
masing-masing komponen dalam array dinyatakan sebagai nomor index” (Santosa,
1992:18). Array terdiri atas serangkaian sel bertipe data tertentu, nilai suatu sel
dapat diambil dengan menyebutkan indeks sel itu, yaitu letak sel didalam array.
Bentuk umum dari deklarasi tipe array adalah :
type stack = array [tipe_index] of tstack;
dengan stack : nama tipe data
tipe_index : tipe data untuk nomor index
tstack : tipe data komponen
Parameter tipe_index menentukan banyaknya komponen array tersebut. Parameter
ini boleh berupa sembarang tipe ordinal kecuali longint dan subjangkauan dari longint.
Sebagai, contoh, deklarasi :
Type stack = array[1..100] of integer;
Menunjukkan bahwa Stack adalah tipe data yang berupa array yang komponennya
bertipe integer dan banyaknya 100 buah.
2.4. Infix
Ungkapan aritmatika terdiri atas operand dan operator dan umumnya
ungkapan tersebut dituliskan dalam bentuk notasi infix, dimana operator ditulis
A + B * C / ( D + E )
Ungkapan ini terdiri atas 5 operand yaitu A,B,C,D,E dan operatornya adalah * +
pembatasnya adalah karakter blank. Operand dapat berupa variabel atau konstanta,
operatornya meliputi operator dasar * / + - ^ (kali, bagi, tambah, kurang, dan
pangkat), juga operator-operator tambahan plus dan minus unari, mod, div, rem,
ceil, dan floor.
Masalahnya adalah bagaimana mengartikan ungkapan ini, yaitu
bagaimana urutan pelaksanaan operator terhadap operand-operand. Untuk itu
dibuat suatu hirarki umum :
operator prioritas
Dengan demikian cara evaluasi ungkapan diatas adalah pasangan operand
yang akan dievaluasi lebih dulu adalah pasangan operand dibatasi oleh operator
yang paling tinggi prioritasnya. Sebagai ilustrasi evaluasi ungkapan diatas akan
menjadi :
A + B * C / ( D + E )
Hitung B * C
Hitung D + E
Hitung A + ( ( B * C ) / ( D + E ) )
Hasil
2.5. Prefix
“Seorang ahli matematika Jan Lukasiewich mengembangkan satu cara
penulisan ungkapan numeris yang selanjutnya disebut Polish Notation atau notasi Prefix yang artinya bahwa operator ditulis sebelum kedua operand yang akan disajikan” (Insap Santosa, 1992:81) Dari contoh dalam notasi infix maka bisa
dibuat ke dalam bentuk notasi prefix, yaitu :
A / * H + B1 B2 2
- A B
- + A B C
2.6. Postfix
Pada notasi postfix, operator dituliskan sesudah atau dibelakang
operand-operand yang akan digunakan. Notasi postfix biasa disebut juga dengan Reverse Polish notation atau RPN. Keuntungan utama pada notasi postfix adalah adanya kepastian operand-operand yang harus digunakan oleh suatu operator, operator
yang harus digunakan adalah kedua operand yang ada didepan operator. Dengan INFIX Operand Operator Operand
demikian pada notasi postfix tidak diperlukan adanya tanda kurung untuk
memperjelas arti ungkapan. Contoh :
A H B1 B2 + * 2 / =
A B + C –
A B + C D - *
2.7. Konversi Notasi Infix ke Postfix
Salah satu kegunaan dari stack adalah untuk melakukan konversi dari
suatu ungkapan aritmatik dalam bentuk infix ke dalam ungkapan dalam bentuk
postfix. Dengan notasi infix, komputer akan sukar mengevaluasi ungkapan
tersebut. Untuk itu perlu digunakan notasi postfix untuk menyatakan ungkapan
yang sama. Dalam hal ini operator ditulis sesudah operand dan tidak memerlukan
tanda kurung untuk memperjelas arti ungkapan.Contoh :
Notasi Infix Notasi Postfix
A + B A B +
A + B – C A B + C –
( A + B ) * ( C – D ) A B + C D - *
A / B ^ C + D A B C ^ / D +
2.8. Konversi Notasi Infix ke Prefix
Secara sederhana, proses konversi dari infix menjadi prefix dijelaskan
sebagai berikut, misalkan ungkapan yang akan dikonversikan adalah :
( A + B ) * ( C – D )
Dengan menggunakan tanda kurung bantuan, ungkapan diatas diubah
menjadi [ + A B ] * [ - C D ]
Jika [ - A B ] dimisalkan P, dan [ - C D ] dimisalkan Q, maka ungkapan
diatas bisa ditulis sebagai :
P * Q
Selanjutnya, notasi infix diatas diubah menjadi notasi prefix :
* P Q
Dengan mengembalikan P dan Q pada notasinya semula dan menghapus
tanda kurung bantuan, diperoleh notasi prefix dari persamaan (A+B) * (C–D),
yaitu :
* + A B – C D
Dari contoh-contoh diatas bahwa dalam penulisan ungkapan, bahkan
yang rumit sekalipun, tidak pernah digunakan tanda kurung untuk
pengelompokan. Dalam hal ini urutan penulisan operator akan menentukan
operasi mana yang harus dikerjakan lebih dahulu.
2.9. Konversi Notasi Prefix ke Postfix
Untuk mengkonversi notasi prefix ke postfix perlu diperhatikan beberapa
<Op> <Pre1> <Pre2>
menjadi
<Post1> <Post2> <Op>
dan
<Pre1> menjadi <Post1>
<Pre2> menjadi <Post2>
Contoh :
Conv (+/AB-CD) Conv (/AB) Conv (-CD) +
Conv (A) Conv(B) / Conv (C) Conv (D) - +
A B / C D - +
A B / C D - +
2.10. Konversi Notasi Postfix ke Prefix
Sama halnya dengan konversi notasi prefix ke postfix, maka dalam
konversi notasi postfix ke prefix pun mengikuti beberapa pengetahuan dasar
sebagai berikut :
<Post1> <Post2> <Op>
menjadi
<Op> <Pre1> <Pre2>
dan
<Post1> menjadi <Pre1>
Contoh :
Conv (AB/CD-+) + Conv (AB/) Conv (CD-)
+ / Conv (A) Conv(B) - Conv (C) Conv (D)
+ / A B - C D
+ / A B - C D
2.11. Konversi Notasi Prefix ke Infix
Secara sederhana proses konversi notasi prefix ke infix bisa dijelaskan
melalui aturan dasar sebagai berikut :
<Op> <Pre1> <Pre2>
menjadi
<Inf1> <Op> <Inf2>
dan
<Pre1> menjadi <Inf1>
<Pre2> menjadi <Inf2>
Contoh :
Conv (-+ABC) Conv (+AB) - Conv (C)
Conv (A) + Conv(B) - Conv (C)
A + B - C
2.12. Konversi Notasi Postfix ke Infix
Dalam mengkonversi notasi postfix menjadi infix perlu diperhatikan
beberapa pengetahuan dasar sebagai berikut :
<Post1> <Post2> <Op>
menjadi
<Inf1> <OP> <Inf2>
dan
<Post1> menjadi <Inf1>
<Post2> menjadi <Inf2>
Contoh :
Delphi for Windows merupakan perangkat pengembang yang begitu
memanjakan pemakainya. Demikian banyak kemudahan yang disediakan untuk
menyusun program aplikasi. Dengan delphi, seorang awam dapat memasuki dunia
kemudahan yang melimpah, Delphi juga menjanjikan waktu penyusunan aplikasi
tercepat didunia saat ini.
Delphi adalah perangkat lunak untuk menyusun program aplikasi yang
berdasarkan pada bahasa pemrograman Pascal dan bekerja dalam lingkungan
sistem operasi Windows. Dengan Delphi, kita akan merasakan begitu mudahnya
menyusun program aplikasi, karena Delphi menggunakan komponen-komponen
yang akan menghemat penulisan program.
Dengan Delphi pengguna tidak perlu lagi repot membuat window, kotak
dialog maupun perangkat kontrol lainnya seperti tombol perintah (command
button), menu pulldown, kotak kombo (combo box) dan sebagainya. Karena
semua komponen tersebut sudah disediakan oleh Delphi. Kita tinggal
mengambilnya dengan sangat mudah : klik mouse (tidak perlu lagi menulis kode
yang rumit untuk menggambarnya)
Selain kemudahan, kelebihan Delphi adalah dalam hal kecepatan proses
kompilasi program. Sampai saat ini belum ada perangkat lunak bidang bahasa
pemrograman yang mampu menyaingi kecepatannya. Dapat disebutkan pula
sebagai keunggulan Delphi yaitu ukuran file *.exe (exe=excecution, yaitu file
yang mampu berjalan sendiri diluar software pembangunnya) yang dihasilkannya
relatif sangat kecil sehingga tidak menggunakan ruang disk yang besar. Selain itu,
fil-file *.dll (dll=dynamic link library, yaitu file program bantu pada file
execution) yang dihasilkannyapun mampu berdiri sendiri tanpa harus melalui
habis dibahas pada kesempatan ini, kita rasakan sendiri saja bedanya, seperti
pemakaian jalur 32 bit untuk pengaksesan data dan lain-lain.
2.13.2 Visual Component Library
Visual Component Library (VCL) berisi kumpulan objek yang ditulis
dalam Object Pascal dari Delphi untuk dipakai pada form Delphi. Delphi
menyediakan VCL yang dapat diakses dari Component Palette.
Component Palette merupakan bagian dari toolbar. Ada dua jenis komponen yang
terdapat dalam component palette, yaitu visible (tampak) dan invisible (tidak
tampak).
Komponen visible (tampak) adalah komponen-komponen yang diletakkan
dalam form atau ditempatkan dalam program oleh pemakai.
Misalnya Label, Edit Button, Memo dan lain-lain. Komponen-komponen
tersebut diletakkan pada form, dan keberadaannya akan ditampilkan
dilembar kerja saat aplikasi dijalankan.
Komponen invisible (tidak tampak) adalah komponen yang memberikan
kontrol khusus atau sebagai antarmuka bagi pemrogram.
Misalnya komponen Timer, Open Dialog, MainMenu dan lain-lain.
Komponen-komponen tersebut diletakkan pada form yang keberadaannya
2.13.3 Event
Event meliputi syntax (bahasa pemrograman), parameter yang terkait, tipe
data, nilai default, dan apakah parameter digunakan untuk input atau output.
Dalam Delphi, hampir semua kode yang ditulis dapat dieksekusi baik secara
langsung maupun tidak langsung dan bahkan untuk dieksekusi oleh event.
Event merupakan suatu jenis properti khusus yang akan dijalankan sebagai suatu
kejadian, yang sering disebut aksi. Kode yang direspon secara langsung oleh
sebuah event sering disebut dengan event handler yang merupakan suatu
procedure Object Pascal.
2.14. INTERAKSI MANUSIA DAN KOMPUTER
Tujuan utama disusunnya berbagai cara interaksi manusia dan komputer pada
dasarnya adalah untuk memudahkan manusia dalam mengoperasikan komputer dan
mendapatkan berbagai umpan balik yang ia perlukan selama ia bekerja pada sebuah
sistem komputer. Dengan kata lain, para perancang antarmuka manusia dan komputer
berharap agar sistem komputer yang ia rancang dapat mempunyai sifat yang akrab
dan ramah dengan penggunanya.
Sistem komputer terdiri atas 3 aspek yaitu perangkat keras (hardware),
perangkat lunak (software) dan manusia (brainware), yang saling bekerja sama. Kerja
sama tersebut ditunjukkan dalam kerja sama antara komputer dengan manusia.
Komputer yang terdiri perangkat keras (hardware) dan perangkat lunak (software)
digunakan oleh manusia dalam menghasilkan sesuatu sesuai dengan keinginan
komunikasi antara pemakai (manusia) dengan komputer untuk saling bertukar
informasi seperti layaknya percakapan orang dengan komputer melalui suatu
masukan dan keluaran.
Untuk mengerti hubungan pemakai dengan komputer secara baik adalah
dengan membaginya ke dalam 9 minimal :
1. Pemakai komputer
Dalam membuat suatu interaksi harus memperhatikan siapa yang akan
menggunakan system tersebut, agar nantinya pemakai tidak kebingungan dalam
menggunakan system tersebut.
2. Alat input
Alat input yang digunakan harus mudah dipakai oleh user sehingga tidak
menemui kesulitan dalam penggunaannya.
3. Bahasa input
Bahasa input yang digunakan harus mudah dimengerti oleh user
4. Rancangan dialog
Rancangan dialog dibuat untuk memudahkan user dalam mengakomodasikan
keinginannya.
5. Alat output
Untuk dapat melihat hasil atau informasi yang dikeluarkan oleh system
6. Pemandu user
Adanya suatu panduan yang dibuat untuk memudahkan user dalam
7. Pesan yang nampak dalam komputer
Apabila melakukan kesalahan, ada suatu pesan kepada user yang akan sangat
membantu, sebab kesalahan tersebut akan segera diperbaiki oleh user.
8. Rancangan output
Merupakan hal yang sangat perlu diperhatikan karena akan berhubungan
langsung dengan pandangan user. Apabila rancangan layar tidak sesuai maka
ketertarikan user pada aplikasi menjadi kurang.
9. Waktu respon komputer
Dalam penggunaan system, user biasanya membutuhkan kecepatan akses. Oleh
karena itu yang perlu diperhatikan juga adalah bagaimana sistem itu dibuat agar
BAB III
METODE PENELITIAN / PERANCANGAN SISTEM
3.1. Metode Penelitian
Metodologi penelitian yang digunakan untuk mendukung penyelesaian perancangan dan pembuatan program ini meliputi :
1. Studi literatur
Mempelajari referensi baik buku maupun web site yang berhubungan dengan konversi notasi infix, prefix, dan postfix.
2. Analisa permasalahan
Melakukan analisa mengenai bagaimana mengkonversi notasi infix, prefix, postfix serta bagaimana mengimplementasikan dalam struktur data melalui pemanfaatan stack.
3. Perancangan dan pembuatan program
Setelah analisa permasalahan untuk mencapai tujuan dari pembuatan program ini, maka penulis merancang dan membuat program untuk mengkonversi notasi infix, prefix, postfix yang dijelaskan melalui algotritma dan flowchart.
4. Uji coba dan implementasi program
5. Dokumentasi dan Penulisan Laporan Tugas Akhir
Menyusun dan membuat buku Tugas Akhir, yang berisi tentang segala sesuatu yang berhubungan dengan sistem ini.
3.2. Perencanaan Program
Secara umum program konversi ini digambarkan dengan diagram blok seperti gambar di bawah ini :
Gambar 3.1. Blok diagram program secara global
User menginputkan satu ungkapan numeris, kemudian ungkapan tersebut diproses atau dikonversi menjadi beberapa notasi hingga menghasilkan suatu output.
3.3. Perancangan Proses Konversi Notasi Prefix ke Infix
Konversi notasi prefix ke infix dijelaskan dalam algoritma dan flowchart di bawah ini :
2. Valensi 3
[ menset valensi ke harga tertinggi yang berarti bahwa yang dikerjakan terlebih dahulu adalah operator yang mempunyai valensi tertinggi ]
3. While (valensi >0) do
• Cari notasi yang sesuai dengan aturan notasi prefix [ operator + operand + operand ] dan operator tersebut mempunyai derajat valensi yang sama dengan nilai variabel valensi.
• If (ketemu=true) then
a. Konversikan ke notasi infix [ operand + operator + operand ] dengan terlebih dahulu menambahkan parantesis berupa kurung buka dan kurung tutup.
[ ‘(‘ + operand + operator + operand + ‘)’ ]
{ Hasil konversi diperlakukan sebagai operand baru dan diletakkan pada satu alamat stack. }
b. Flowchart konversi notasi prefix ke Infix
3.4. Perancangan Proses Konversi Notasi Prefix ke Postfix
Untuk mengkonversi notasi prefix ke postfix dijelaskan melalui algoritma dan flowchart sebagai berikut :
a) Algoritma konversi notasi prefix ke postfix 1. Set derajat valensi terlebih dahulu adalah operator yang mempunyai valensi tertinggi ]
3. While (valensi >0) do
• Cari notasi yang sesuai dengan aturan notasi prefix [ operator + operand + operand ] dan operator tersebut mempunyai derajat valensi yang sama dengan nilai variabel valensi.
• If (ketemu=true) then
a. Konversikan ke notasi postfix [ operand + operand + operator ] { Hasil konversi diperlakukan sebagai operand baru dan diletakkkan pada satu alamat stack. }
b. Geser operand atau operator yang terletak pada alamat, diatas operand hasil konversi
Else
Valensi valensi -1 4. [ Selesai ]
b) Flowchart konversi notasi prefix ke postfix
3.5. Perancangan Proses Konversi Notasi Postfix ke Prefix
Proses konversi notasi postfix ke prefix merupakan kebalikan dari konversi prefix ke postfix, proses tersebut dijabarkan dalam algoritma dan flowchart sebagai berikut :
a) Algoritma konversi notasi postfix ke prefix 1. Set derajat valensi terlebih dahulu adalah operator yang mempunyai valensi tertinggi ]
3. While (valensi >0) do
• Cari notasi yang sesuai dengan aturan notasi postfix [ operand + operand + operator ] dan operator tersebut mempunyai derajat valensi yang sama dengan nilai variabel valensi.
• If (ketemu=true) then
a. Konversikan ke notasi prefix [ operator + operand + operand ] { Hasil konversi diperlakukan sebagai operand baru dan diletakkkan pada satu alamat stack. }
c. Valensi 3 Else
Valensi valensi -1 4. [ Selesai ]
b) Flowchart konversi notasi postfix ke prefix
3.6. Perancangan Proses Konversi Notasi Postfix ke Infix
Pada dasarnya konversi notasi postfix ke infix tidak jauh beda atau sama dengan proses konversi notasi prefix ke infix, perbedaanya hanya pada letak operatornya saja, berikut algoritma dan flowchart konversi notasi postfix ke infix : a) Algoritma Konversi Postfix ke Infix
1. Set derajat valensi terlebih dahulu adalah operator yang mempunyai valensi tertinggi ]
3. While (valensi >0) do
• Cari notasi yang sesuai dengan aturan notasi postfix [ operand + operand + operator ] dan operator tersebut mempunyai derajat valensi yang sama dengan nilai variabel valensi.
• If (ketemu=true) then
a. Konversikan ke notasi infix [ operand + operator + operand ] dengan terlebih dahulu menambahkan parantesis berupa kurung buka dan kurung tutup.
{ Hasil konversi diperlakukan sebagai operand baru dan diletakkan pada satu alamat stack. }
b. Geser operand atau operator yang terletak pada alamat, diatas operand hasil konversi
c. Valensi 3 Else
Valensi valensi -1 4. [ Selesai ]
b) Flowchart Konversi Postfix ke Infix
3.7. Perancangan Proses Konversi Notasi Infix ke Prefix
Konversi notasi prefix ke infix dijelaskan dalam algoritma dan flowchart dibawah ini :
a. Algoritma konversi notasi infix ke prefix 1. Set derajat valensi terlebih dahulu adalah operator yang mempunyai valensi tertinggi ]
3. Proses pengecekan jumlah kurung dengan terlebih dahulu menghapus parantesis berupa kurung buka dan kurung tutup.
b. Geser operand atau operator yang terletak pada alamat, diatas operand hasil konversi
• Cari notasi yang sesuai dengan aturan notasi infix ( tanpa kurung ) • If (ketemu=true) then
a. Konversikan ke notasi prefix [ operand + operator + operand ] dengan terlebih dahulu menghapus parantesis berupa kurung buka dan kurung tutup.
{ Hasil konversi diperlakukan sebagai operand baru dan diletakkan pada satu alamat stack. }
b. Geser operand atau operator yang terletak pada alamat, diatas operand hasil konversi
c. Valensi 3 Else
Valensi valensi -1 5. [ Selesai ]
b. Flowchart konversi notasi infix ke prefix
Infix1 <-- proses cari notasi infix dengan tanda kurung
Infix2 <-- proses cari notasi infix tanpa tanda kurung
3.8. Perancangan Proses Konversi Notasi Infix ke Postfix
Ilustrasi pengubahan notasi infix menjadi notasi postfix secara lengkap tersaji dalam algoritma dan flowchart dibawah ini :
a. Algoritma konversi notasi infix ke postfix 1. Baca ungkapan notasi infix per karakter 2. For I = 1 to panjang karakter do
a. Jika stack[I]=operand maka langsung dicetak b. Jika stack[I]=‘(‘, push ke dalam tumpukan c. Jika stack[I] = operator, maka
• Jika stack paling atas adalah ‘(‘, push operator
• Jika operator memiliki prioritas lebih tinggi dari pada derajat ujung paling atas stack, maka push operator.
• Jika tidak, pop operator dari stack lalu cetak, kemudian ulangi step 4
5. Jika stack[I] = ‘)’, pop operator kemudian cetak sampai ketemu ‘(‘, tetapi ‘(‘ tidak usah ditulis.
6. Jika stack[I] <> 0, kembali ke step 1
A
3.9. Desain Input Output
Pada perancangan desain input output ini dibuat dengan menggunakan alat-alat input komputer seperti penggunaan mouse ataupun keyboard untuk mempermudah proses konversi dan hanya terdiri dari satu menu utama saja.
Pernyataan matematis ditulis pada Notasi Awal (seperti tampak pada gambar), dengan menentukan notasi yang akan diproses terlebih dahulu, yaitu notasi prefix, infix, atau postfix. Karakter yang digunakan untuk operand pada notasi prefix, infix, dan postfix adalah huruf A sampai dengan Z, a sampai dengan z, sedangkan untuk operator adalah ^, *, /, +, -. Khusus untuk input notasi infix ada tambahan karakter berupa parentesis ‘(‘ dan ‘)’.
Setelah input pernyataan matematis, maka dilakukan proses konversi dengan menekan tombol proses. Proses perubahan konversi ditunjukkan pada gambar dibawah ini :
INPUT OUTPUT
Gambar 3.9 Proses Konversi
Jika notasi yang diinputkan berupa notasi prefix, maka hasil output akan berupa notasi infix dan postfix, seperti terlihat pada gambar dibawah ini :
Gambar 3.10 Desain output konversi notasi prefix Postfix
Infix Prefix
Untuk melihat implementasi stack, tekan tombol lihat stack, maka akan muncul form baru seperti terlihat pada gambar dibawah ini :
Gambar 3.11 Desain output stack konversi notasi prefix
Gambar 3.12 Desain output konversi notasi infix
Untuk melihat implementasi stack, tekan tombol lihat stack, maka akan gambar seperti terlihat pada gambar dibawah ini :
Jika notasi yang diinputkan berupa notasi infix, maka hasil output akan berupa notasi prefix dan postfix, seperti terlihat pada gambar dibawah ini :
Gambar 3.14 Desain output konversi notasi postfix
Untuk melihat implementasi stack, tekan Tombol Lihat Stack, maka akan muncul form baru seperti terlihat pada gambar dibawah ini :
BAB IV
IMPLEMENTASI DAN EVALUASI
4.1. Implementasi
Dalam mengimplementasikan tugas akhir ini digunakan PC dengan
spesifikasi sebagai berikut :
Program ini dapat dijalankan dengan menggunakan sistem operasi
Window 95, Windows 98, Windows 2000, Windows ME, Windows NT, maupun
Windows XP.
4.1.2. Penjelasan pemakaian program
Setelah kebutuhan atas perangkat keras dan perangkat lunak terpenuhi
selanjutnya aplikasi perancangan dan pembuatan program ini dapat dijalankan.
A. Tampilan Menu Utama
Gambar 4.1 Tampilan menu utama
Tombol Buka File Stack digunakan untuk membuka file stack yang telah disimpan
sebelumnya. Jika keluar dari program, tekan tombol Keluar.
B. Tampilan Menu Pulldown
Tampilan menu utama berisi menu notasi (prefix, infix, postfix), dan
help. Jika menu prefix diklik secara otomatis akan muncul output berupa infix dan
Gambar 4.2 Tampilan menu prefix
Jika menu infix diklik maka akan muncul output berupa prefix dan postfix, seperti
terlihat pada gambar dibawah ini :
Pernyataan matematik diinput pada Notasi Awal, untuk prosesnya tekan tombol
Proses, sedangkan tombol Hapus berfungsi untuk hapus data, jika ingin keluar
dari program, tekan tombol Keluar. Jika menu postfix diklik maka akan muncul
output berupa prefix dan postfix, seperti terlihat pada gambar dibawah ini :
Gambar 4.4. Tampilan menu postfix
Untuk tampilan menu help terdiri atas Konversi Notasi Help dan About, seperti
Gambar 4.5 Tampilan Menu Help
Menu Konversi Notasi Help merupakan program bantu untuk melakukan konversi
Gambar 4.6. Tampilan menu help untuk konversi notasi
Selanjutnya dengan memilih menu about akan terlihat tampilan yang berisi versi
program serta nama programer “Tatin Wahyanto”, seperti terlihat pada gambar
dibawah ini :
Untuk menghilangkan informasi ini tekan tombol Tutup, maka akan kembali ke
menu utama. Untuk mengetahui implementasi stack, tekan tombol Lihat Stack,
seperti tampak pada gambar di bawah ini :
Gambar 4.8. Tampilan untuk melihat stack
Form ini digunakan untuk melihat implementasi konversi pada stack. Tombol Simpan
untuk menyimpan implementasi stack pada file dengan extention txt.
4.2. Contoh Pemakaian Program
Untuk mengkonversi notasi prefix, infix, dan postfix serta simulasinya
dalam stack, maka dilakukan pengujian. Pengujian dilakukan dengan mengubah-ubah
bilangan, operand dan operator pada ekspresi.
4.2.1. Pengujian Konversi Notasi Prefix ke Infix dan Postfix
A. Berikut disajikan contoh konversi notasi prefix ke infix :
1. Prefix : * + A B – C D
Infix : ( ( A + B ) * ( C – D ) )
D
C
- D
B C
A - (C-D)
+ (A+B) (A+B) ((A+B) *
(C-D))
* * *
Gambar 4.11. Stack konversi notasi prefix ke infix (1)
2. Prefix : - A / B + * C D ^ E F
Infix : ( A - ( B / ( ( C * D ) + ( E ^ F ) ) ) )
Gambar 4.13. Stack konversi notasi prefix ke infix (2)
B. Contoh konversi notasi prefix ke postfix
1. Prefix : / A – B * C + D E
Gambar 4.14. Tampilan konversi notasi prefix ke postfix (1)
E
D
+ DE+
C C
* * CDE+*
B B B
BCDE+*-
- - -
A A A A
ABCDE+*-/
/ / / /
1 2 3 4 5
2. Prefix : * + A B ^ - C D / E F
Postfix : A B + C D – E F / ^ *
Gambar 4.16. Tampilan konversi notasi prefix ke postfix (2)
4.2.2. Pengujian Konversi Notasi Infix ke Prefix dan Postfix
A. Berikut disajikan contoh konversi notasi infix ke prefix
1. Infix : A – ( B+ C ) * ( D + E )
Prefix : - A * + B C + D E
Gambar 4.19. Stack konversi notasi infix ke prefix (1)
2. Infix : ( A – B ) * ( ( ( C – D ^ E ) / F ) / G ) * H
B. Contoh konversi notasi infix ke postfix
1. Infix : ( A + B ) * ( C + D ) + E
Postfix : A B + C D + * E +
Input Output Stack
Gambar 4.23. Stack konversi notasi infix ke postfix (1)
2. Infix : A + B - C * D / E ^ F
Gambar 4.24. Tampilan konversi notasi infix ke postfix (2)
4.2.3. Pengujian Konversi Notasi Postfix ke Infix dan Prefix
A. Berikut disajikan contoh konversi notasi postfix ke infix :
1. Postfix : A B – C D E ^ */
Infix : ( ( A – B ) / ( C * ( D ^ E ) ) )
/
*
^ /
E *
D (D^E) /
C C (C*(D^E))
- - - /
B B B (C*(D^E))
((A-B)/(C+(D^E))
A A A (A-B)
1 2 3 4 5
2. Potsfix : A B C D E ^ F / + G – H / * +
Infix : ( A + ( B * ( ( ( C + ( ( D ^ E ) / F ) ) – G ) / H ) ) )
+
*
/ +
H *
- / +
G H *
+ - / +
/ G H *
F + - /
^ / G H
E F + -
D (D^E) ((D^E)/F) G
C C C (C+((D^E)/F))
B B B B
A A A A
Gambar 4.29. Stack konversi notasi postfix ke infix (2)
B. Contoh konversi notasi postfix ke prefix :
1. Postfix : A B / C D / +
Gambar 4.30. Tampilan konversi notasi postfix ke prefix (1)
+
/
D +
C /
/ D +
B C /CD
A /AB /AB +/AB/CD
1 2 3 4
2. Potsfix : A B C D E + F / + G – H ^ * +
Prefix : + A * B ^ - + C / + D E F G H
+
*
^ +
H *
- ^ +
G H *
+ - ^ +
/ G H *
F + - ^
+ / G H
E F + -
D +DE /+DEF G
C C C +C/^DEF
B B B B
A A A A
Gambar 4.33. Stack konversi notasi postfix ke prefix (2)
4.2.4 Error Message
Pada saat menjalankan program, kemudian ada kesalahan dalam
penginputan notasi, maka akan muncul beberapa pesan atau error message sebagai
berikut :
a. Bila input yang dimasukkan berupa notasi infix, maka akan dilakukan
pengecekan tanda kurung terlebih dahulu, jika input notasi infix kelebihan
membawa konsekuensi bahwa penulisan tanda kurung itu harus benar-benar
terhindar dari kesalahan. Berikut gambar pesan kesalahan atau error message
untuk notasi infix :
Gambar 4.34 Pesan kesalahan notasi infix
b. Pesan kesalahan dibawah ini akan muncul bila tidak ada input pada form
“Notasi Awal”.
Gambar 4.35 Pesan kesalahan tidak ada input
Bila input data yang akan dimasukkan berupa notasi prefix ( operator + operand +
operand ), akan tetapi pada pengujian program ditulis notasi postfix ( operand +
operand + operator ), maka secara otomatis program akan muncul pesan kesalahan
Gambar 4.36 Pesan kesalahan input notasi
4.3. Evaluasi
Setelah dilakukan implementasi program dengan menguji 12 contoh
notasi aritmatika, diperoleh hasil evaluasi bahwa pemakaian tanda kurung akan
sangat mempengaruhi hasil akhir, sebagai contoh dalam konversi notasi infix ke
postfix yang diambil dari contoh Sub Bab 4.2.2. bagian B :
Infix : ( A + B ) * ( C + D ) + E
Dalam ungkapan-ungkapan yang rumit, pemakaian tanda kurung ini tidak bisa
dihindari. Semakin rumit suatu ungkapan semakin banyak dibutuhkan tanda kurung.
Jadi penulisan tanda kurung harus benar-benar terhindar dari kesalahan. Untuk
konversi notasi infix ke prefix dan infix ke postfix, jika ada salah satu tanda kurung
yang tidak ditulis, maka akan terjadi kesalahan, sehingga muncul pesan kesalahan.
Infix : A – ( B + C * ( D + E )
Prefix : Error
Dari uji coba program, untuk hasil output konversi notasi infix ke prefix terjadi
kesalahan karena kurang ‘)’. Untuk notasi prefix dan postfix tidak pernah digunakan
tanda kurung untuk pengelompokan. Dalam hal ini valensi atau derajat operator akan
menentukan operasi mana yang harus dikerjakan terlebih dahulu, sehingga tidak
mempengaruhi hasil akhir dari notasi.
Program konversi ini jika dibalik notasi awalnya (output digunakan sebagai
input) maka hasilnya akan tetap sama. Sebagai contoh yang diambil dari Sub bab
4.2.1 bagian B (2), untuk konversi notasi prefix ke postfix :
Prefix : * + A B ^ - C D / E F
Postfix : A B + C D – E F / ^ *
Jika dibalik notasi awalnya :
Postfix : A B + C D – E F / ^ *
Prefix : * + A B ^ - C D / E F
Jumlah operand harus lebih banyak 1 karakter dari pada operator, jika ada
kelebihan salah satu diantara keduanya, maka akan terjadi kesalahan. Sebagai
Jika notasi postfix ditulis :
Postfix : A B – C D ^ * /
Maka akan terjadi kesalahan, karena selisih antara jumlah operand dan operator
nol. Input notasi pada konversi ini bisa menampung sampai dengan 255 karakter,
jika lebih dari 255 karakter maka akan terjadi kelebihan data, sehingga notasi
77
Dari hasil perancangan dan pembuatan program ini dapat diambil
beberapa kesimpulan sebagai berikut :
1. Program Konversi ini dapat mengkonversi notasi prefix ke postfix, prefix
ke infix, infix ke prefix, infix ke postfix, postfix ke infix dan postfix ke
prefix.
2. Program Konversi ini bisa mengimplementasikan simulasi stack dalam
struktur data.
3. Jumlah operand harus lebih banyak 1 karakter daripada jumlah operator,
jika ada kelebihan atau kekurangan diantara keduanya, maka akan terjadi
kesalahan sehingga program tidak bisa dijalankan. Untuk input notasi
bisa menampung 255 karakter, jika lebih dari 255 karakter maka proses