• Tidak ada hasil yang ditemukan

TA : Perancangan dan Pembuatan Program Yang Digunakan Untuk Koversi Notasi Prefix, Infix, dan Postfix Serta Simulasi Stack Dalam Struktur Data.

N/A
N/A
Protected

Academic year: 2017

Membagikan "TA : Perancangan dan Pembuatan Program Yang Digunakan Untuk Koversi Notasi Prefix, Infix, dan Postfix Serta Simulasi Stack Dalam Struktur Data."

Copied!
78
0
0

Teks penuh

(1)

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.

(2)

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

(3)

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

(4)

BAB V : PENUTUP

(5)

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

(6)

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

(7)

“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

(8)

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

(9)

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

(10)

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

(11)

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 +

(12)

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

(13)

<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>

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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 :

(23)

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. }

(24)

b. Flowchart konversi notasi prefix ke Infix

(25)

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

(26)

Else

Valensi valensi -1 4. [ Selesai ]

(27)

b) Flowchart konversi notasi prefix ke postfix

(28)

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. }

(29)

c. Valensi 3 Else

Valensi valensi -1 4. [ Selesai ]

(30)

b) Flowchart konversi notasi postfix ke prefix

(31)

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.

(32)

{ 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 ]

(33)

b) Flowchart Konversi Postfix ke Infix

(34)

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.

(35)

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 ]

(36)

b. Flowchart konversi notasi infix ke prefix

Infix1 <-- proses cari notasi infix dengan tanda kurung

Infix2 <-- proses cari notasi infix tanpa tanda kurung

(37)

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

(38)
(39)

A

(40)

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 ‘)’.

(41)

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

(42)

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

(43)

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 :

(44)

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 :

(45)
(46)

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

(47)

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

(48)

Gambar 4.2 Tampilan menu prefix

Jika menu infix diklik maka akan muncul output berupa prefix dan postfix, seperti

terlihat pada gambar dibawah ini :

(49)

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

(50)

Gambar 4.5 Tampilan Menu Help

Menu Konversi Notasi Help merupakan program bantu untuk melakukan konversi

(51)

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 :

(52)

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

(53)

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 ) )

(54)

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 ) ) ) )

(55)

Gambar 4.13. Stack konversi notasi prefix ke infix (2)

B. Contoh konversi notasi prefix ke postfix

1. Prefix : / A – B * C + D E

(56)

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

(57)

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)

(58)

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

(59)

Gambar 4.19. Stack konversi notasi infix ke prefix (1)

2. Infix : ( A – B ) * ( ( ( C – D ^ E ) / F ) / G ) * H

(60)
(61)
(62)

(63)

B. Contoh konversi notasi infix ke postfix

1. Infix : ( A + B ) * ( C + D ) + E

Postfix : A B + C D + * E +

(64)

Input Output Stack

Gambar 4.23. Stack konversi notasi infix ke postfix (1)

2. Infix : A + B - C * D / E ^ F

(65)

Gambar 4.24. Tampilan konversi notasi infix ke postfix (2)

(66)

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 ) ) )

(67)

/

*

^ /

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 ) ) )

(68)

+

*

/ +

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

(69)

Gambar 4.29. Stack konversi notasi postfix ke infix (2)

B. Contoh konversi notasi postfix ke prefix :

1. Postfix : A B / C D / +

(70)

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

(71)

2. Potsfix : A B C D E + F / + G – H ^ * +

Prefix : + A * B ^ - + C / + D E F G H

(72)

+

*

^ +

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

(73)

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

(74)

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

(75)

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.

(76)

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

(77)

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

(78)

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

Gambar

Gambar 3.4. Flowchart Konversi Notasi Postfix ke Prefix
Gambar 3.5 Konversi notasi postfix ke infix
Gambar 3.6 Konversi Notasi Infix ke Prefix
Gambar 3.7 Konversi Notasi Infix ke Postfix
+7

Referensi

Dokumen terkait