APLIKASI SIMULASI ALGORITMA PENCARIAN DAN ...Algoritma dan struktur data merupakan salah satu dari...

Preview:

Citation preview

APLIKASI SIMULASI ALGORITMA

PENCARIAN DAN PENGURUTAN DATA

SKRIPSI

Diajukan Untuk Memenuhi Syarat Memperoleh

Gelar Sarjana Teknik Program Studi Teknik Informatika

oleh:

Y Kuntarto Kunto Aji

NIM : 045314039

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2008

ii

DATA SEARCHING AND SORTING ALGORITHM

SIMULATION APLICATION

A THESIS

Presented as Partial Fulfillment of the Requirements

To Obtain Informatics Engineering Degree

In Informatics Engineering Department

by:

Y Kuntarto Kunto Aji

NIM : 045314039

INFORMATICS ENGINEERING STUDY PROGRAM

INFORMATICS ENGINEERING DEPARTMENT

FACULTY OF SAINS AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2008

iii

iv

v

MOTTOMOTTOMOTTOMOTTO

““““TUHAN adalah terangku dan keselamatanku, kepada TUHAN adalah terangku dan keselamatanku, kepada TUHAN adalah terangku dan keselamatanku, kepada TUHAN adalah terangku dan keselamatanku, kepada siapakah aku harus takut? TUHAN adalah benteng siapakah aku harus takut? TUHAN adalah benteng siapakah aku harus takut? TUHAN adalah benteng siapakah aku harus takut? TUHAN adalah benteng hidupku, terhadap siapakah aku harus gemetar?hidupku, terhadap siapakah aku harus gemetar?hidupku, terhadap siapakah aku harus gemetar?hidupku, terhadap siapakah aku harus gemetar?””””

PERSEMBAHPERSEMBAHPERSEMBAHPERSEMBAHANANANAN

Tulisan ini kupersembahkan kepada :

Kedua orang tuakuKedua orang tuakuKedua orang tuakuKedua orang tuaku , Kakakku, Adikku dan, Kakakku, Adikku dan, Kakakku, Adikku dan, Kakakku, Adikku dan

TemanTemanTemanTeman----temankutemankutemankutemanku

vi

INTISARI

Pembelajaran tentang algoritma banyak mengalami masalah dalam

menjelaskan bagaimana alur berjalannya suatu algoritma. Oleh karena itu akan

lebih mudah jika dibuat simulasi yang menggambarkan jalannya sebuah

algoritma.

Tulisan ini dibuat dengan tujuan untuk membuat aplikasi simulasi

algoritma pencarian dan pengurutan data, sehingga dengan aplikasi ini pengguna

dapat belajar mengenai proses pencarian dan pengurutan data.

Dalam pengembangan aplikasi simulasi algoritma pencarian dan

pengurutan data ini digunakan metodologi pengembangan multimedia. Tahap-

tahap pengembangan multimedia tersebut meliputi konsep, perancangan,

pengumpulan bahan, pembuatan, dan testing.

Aplikasi ini mampu menampilkan simulasi proses pencarian dan

pengurutan data, sehingga pengguna dapat mengetahui proses yang terjadi pada

setiap iterasi. Program ini dikembangakan dengan menggunakan Macromedia

Flash 8 dan Action Script 2.0.

vii

ABSTRACT

Studying about algorithm get some problems for explaning how a

algorithm is working. So it’s easier to descript the working of algorithm by using

simulation.

This writing was made in the purpose of making data searching and

sorting algorithm simulation application. by using this application, user could

learn about processing of data sorting and searching.

The development for this application is using multimedia development

methodology. They are five steps to use this methodology such as concept,

design, gathering of material, implementation and testing.

This application is able to show simulation of processing of the data

sorting and searching. User could know the process of algorithm in every

iteration. This program was developed by using Macromedia Flash 8 and Action

Script 2.0.

viii

KATA PENGANTAR

Puji syukur saya ucapkan ke hadirat Tuhan Yang Maha Esa atas berkat dan

limpahan kasih karunia yang telah diberikan-Nya sehingga saya dapat

menyelesaikan skripsi ini dengan judul “APLIKASI SIMULASI

ALGORITMA PENCARIAN DAN PENGURUTAN DATA”.

Dalam penulisan sekripsi ini, penulis telah banyak memperoleh bantuan

dan bimbingan dari berbagai pihak, oleh karena itu tidak lupa penulis

mengucapkan terimakasih kepada:

1. Tuhan Yesus Kristus, yang telah menganugerahkan kasih karunia dan

rahmat-Nya serta selalu memberikan keberuntungan.

2. Bunda Maria yang telah mendengarkan segala doa dan permohonan.

3. Bapak, Ibu, kakak serta adikku yang selalu memberikan doa, dorongan dan

semangat baik moril maupun spiritual.

4. Romo Ir. Greg. Heliarko SJ, S.S., B.S.T., M.A., M.Sc. selaku Dekan

Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.

5. Bapak Puspaningtyas Sanjoyo Adi, S.T., M..T. selaku Ketua Jurusan Teknik

Informatika Fakultas Sains dan Teknologi Universitas Sanata Dharma

Yogyakarta.

6. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Dosen Pembimbing

Akademik Angkatan 2004 Jurusan Teknik Informatika Fakultas Sains dan

Teknologi Universitas Sanata Dharma Yogyakarta.

ix

7. Bapak JB. Budi Darmawan, S.T.,MSc selaku pembimbing I dan Agung

Hernawan, ST selaku pembimbing II, yang telah memberikan waktu,

bantuan dan bimbingan serta ide-ide dalam menyelesaikan skripsi ini.

8. Andri Krisharyadi, Tri Prasetyo Adi, Yanuarius Budi, I.B Mahendra Yudha,

Yosef Benny K, Yosafat Adwi, Nuryani Destiningsih, Hevi De Villa Nova

,dll yang telah membantu dalam pengerjaan tugas Akhir, baik moril maupun

spiritual.

9. Teman-teman TI’2004 yang lain yang telah menjadi teman seperjuangan

dalam melalui kuliah selama ini.

Akhirnya skripsi ini terselesaikan, disadari bahwa skripsi ini jauh dari

sempurna. Untuk itu penulis dengan rendah hati mengharapkan kritik dan saran

yang dapat memberikan kesempurnaan pada penulisan skripsi ini. Akhir kata,

semoga skripsi ini dapat bermanfaat bagi penulis, juga pihak yang membutuhkan.

Yogyakarta, 15 Desember 2008

Penulis

Y Kuntarto Kunto Aji

x

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa Tugas Akhir yang saya

tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah

disebutkan dalam kutipan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, 15 Desember 2008

Y Kuntarto Kunto Aji

xi

LEMBAR PERNYATAAN PERSETUJUAN

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :

Nama : Y Kuntarto Kunto Aji

Nomor Mahasiswa : 045314039

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan

Universitas Sanata Dharma karya ilmiah saya yang berjudul :

APLIKASI SIMULASI ALGORITMA PENCARIAN DAN PENGURUTAN

DATA

beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan

kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, me-

ngalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data,

mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau media

lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun

memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai

penulis.

Demikian pernyataan ini yang saya buat dengan sebenarnya.

Dibuat di Yogyakarta

Pada tanggal : 15 Desember 2008

Yang menyatakan

(Y Kuntarto Kunto Aji )

xii

DAFTAR ISI

Halaman

HALAMAN JUDUL ......................................................................................... i

HALAMAN JUDUL ......................................................................................... ii

HALAMAN PERSETUJUAN PEMBIMBING .............................................. iii

HALAMAN PENGESAHAN ........................................................................... iv

MOTTO DAN PERSEMBAHAN .................................................................... v

INTISARI ......................................................................................... vi

ABSTRACT ......................................................................................... vii

KATA PENGANTAR ....................................................................................... viii

HALAMAN KEASLIAN KARYA .................................................................. x

LEMBAR PERNYATAAN .............................................................................. xi

DAFTAR ISI ..................................................................................................... xii

DAFTAR GAMBAR .................................................................................... xvi

DAFTAR TABEL ......................................................................................... xviii

BAB I PENDAHULUAN .................................................................................. 1

1.1. Latar Belakang Masalah ........................................................................ 1

1.2. Perumusan Masalah ............................................................................... 2

1.3. Batasan Masalah .................................................................................... 3

1.4. Tujuan dan Manfaat .............................................................................. 3

1.5. Metodologi ................. .......................................................................... 3

1.6. Sistematika Penulisan ........................................................................... 4

BAB II LANDASAN TEORI ............................................................................ 6

2.1. Algoritma dan Struktur Data .................................................................. 6

xiii

2.1.1. Searching ............................................................................................ 6

2.1.2. Sorting ............................................................................................... 8

2.2. Multimedia ............................................................................................ 12

2.3. Pembelajaran Berbantuan Komputer (CAI) .......................................... 13

2.4. Metodologi Pengembangan Multimedia ............................................... 15

2.5. Macromedia Flash ................................................................................. 16

2.5.1. Konsep Simbol dan Library ............................................................... 17

2.5.2. Symbol ............................................................................................... 17

2.5.3. Merubah obyek menjadi symbol ........................................................ 17

2.5.4. Library ................................................................................................ 18

2.5.5. Konsep Tentang Animasi ................................................................... 20

2.5.6. Dasar Animasi .................................................................................... 20

2.5.7. Action Script ...................................................................................... 21

2.6. Simulasi ................................................................................................. 23

BAB III PERANCANGAN SISTEM .............................................................. 24

3.1. Konsep Sistem ........................................................................................ 24

3.2. Analisis Sistem ...................................................................................... 25

3.2.1. Analisis Masalah ................................................................................. 25

3.2.2. Analisis Kebutuhan Sistem ................................................................ 26

3.3. Desain Sistem ........................................................................................ 26

3.3.1. Flowchart Sistem ............................................................................... 27

3.3.2. Flowchart Algoritma .......................................................................... 28

3.3.2.1. Flowchart Algoritma Sequential Search ......................................... 28

xiv

3.3.2.2. Flowchart Algoritma Binary Search ............................................... 28

3.3.2.3. Flowchart Algoritma Bubblesort .................................................... 29

3.3.2.4. Flowchart Algoritma Selectionsort ................................................. 30

3.3.2.5. Flowchart Algoritma Insertionsort .................................................. 30

3.3.3. Perancangan Struktur Menu Program ................................................ 31

3.3.4. Spesifikasi Perangkat Sistem ............................................................. 31

3.3.4.1. Perangkat Keras ( Hardware ) ........................................................ 31

3.3.4.2. Perangkat Lunak ( Software ) ......................................................... 31

3.3.5. Perancangan Antar Muka Program .................................................... 32

3.3.5.1. Perancangan Halaman Welcome Screen ........................................ 32

3.3.5.2. Perancangan Halaman Home ........................................................... 33

3.3.5.3. Perancangan Halaman Simulasi ...................................................... 33

3.3.5.4. Perancangan Halaman Input Data ................................................... 34

3.3.5.5. Perancangan Halaman Simulasi Searching ..................................... 36

3.3.5.6. Perancangan Halaman Simulasi Sorting ......................................... 38

3.3.5.7. Perancangan Halaman Materi ......................................................... 40

3.3.6. Storyboard Aplikasi ........................................................................... 43

BAB IV IMPLEMENTASI DAN PEMBAHASAN ....................................... 45

4.1. Implementasi Program .......................................................................... 45

BAB V ANALISIS HASIL ................................................................................ 94

5.1. Implementasi Program .......................................................................... 94

5.2. Analisis Tools ........................................................................................ 95

5.3. Analisis Program ................................................................................... 95

xv

BAB VI PENUTUP ........................................................................................... 97

6.1. Kesimpulan ............................................................................................ 97

6.2. Saran ...................................................................................................... 97

DAFTAR PUSTAKA ....................................................................................... 98

LAMPIRAN ...................................................................................................... 99

xvi

DAFTAR GAMBAR

Gambar Keterangan Halaman

2.1 Convert to symbol 18

2.2 Library 19

3.1 Flowchart Sistem 27

3.2 Flowchart Algoritma Sequential Search 28

3.3 Flowchart Algoritma Binary Search 29

3.4 Flowchart Algoritma Bubblesort 29

3.5 Flowchart Algoritma Selection Sort 30

3.6 Flowchart Algoritma Insertion Sort 30

3.7 Struktur Menu Aplikasi 31

3.8 Rancangan Halaman Welcome Screen 32

3.9 Rancangan Halaman Home 33

3.10 Rancangan Halaman simulasi 34

3.11a Rancangan Halaman Input Data 35

3.11b Rancangan Halaman Input Data Manual 35

3.11c Rancangan Halaman Input Data Random 36

3.11d Rancangan Error Message 36

3.12 Rancangan Halaman Simulasi Searching 37

3.13 Rancangan Halaman Simulasi Sequentialsearch 38

3.14 Rancangan Halaman Simulasi Sorting 39

3.15 Rancangan Halaman Simulasi Selectionsort 40

xvii

3.16a Rancangan Halaman Materi 41

3.16b Rancangan Halaman Materi 41

3.16c Rancangan Halaman Materi 42

3.16d Rancangan Halaman Materi 42

4.1 Halaman Utama Menu Simulasi 46

4.2 Halaman Input Data 46

4.3 Error message 47

4.4 Halaman Input Data Manual 49

4.5a Halaman Simulasi Searching 51

4.5b Halaman Simulasi Sequentialsearch 51

4.5c Halaman Simulasi Sequentialsearch 53

4.5d Halaman Simulasi Sequentialsearch 57

4.6a Halaman Simulasi Binarysearch 58

4.6b Halaman Simulasi Binarysearch 58

4.6c Halaman Simulasi Binarysearch 62

4.7 Halaman Simulasi sorting 63

4.8a Halaman Simulasi Selectionsort Ascending 64

4.8b Halaman Simulasi Selectionsort Ascending 64

4.9a Halaman Simulasi Bubblesort Ascending 74

4.9b Halaman Simulasi Bubblesort Ascending 75

4.10a Halaman Simulasi Insertionsort Ascending 84

4.10b Halaman Simulasi Insertionsort Ascending 85

xviii

DAFTAR TABEL

Tabel Keterangan Halaman

3.1 Deskripsi Konsep Sistem 25

3.2 Storyboard Aplikasi 43

1

BAB I

PENDAHULUAN

Pada bab pendahuluan ini akan dijelaskan gambaran umum tentang tugas

akhir yang berisi latar belakang masalah, rumusan masalah, batasan masalah,

tujuan dan manfaat, metodologi, dan sistematika penulisan tugas akhir.

1.1 Latar Belakang Masalah

Dalam komputerisasi dikenal adanya bidang grafika dan multimedia.

Bidang tersebut banyak dipakai baik di lingkup bisnis, pendidikan, maupun

hiburan. Dalam lingkup pendidikan khususnya, dikenal adanya aplikasi

pembelajaran yang dilengkapi dengan animasi komputer untuk mempermudah

penyampaian sebuah materi yang sangat rumit dipahami.

Algoritma dan struktur data merupakan salah satu dari sekian banyak

pengetahuan di dunia teknologi informasi. Dalam kehidupan sehari-hari secara

tidak sadar pemanfaatan algoritma sering terjadi seperti komputasi-komputasi /

proses dibalik bekerjanya sebuah komputer. Dibalik bekerjanya suatu komputer

terdapat banyak algoritma-algoritma yang menyusun sebuah proses. Untuk

melakukan pencarian, pengurutan, dan sebagainya dibutuhkan algoritma khusus,

sehingga diperoleh sebuah proses yang valid. Pengetahuan tentang algoritma dan

struktur data sangat penting bagi orang-orang yang bergerak di bidang IT. Dalam

prakteknya, pembelajaran tentang algoritma banyak mengalami masalah dalam

menjelaskan bagaimana alur berjalannya suatu algoritma. Oleh karena itu akan

lebih mudah jika dibuat simulasi yang menggambarkan jalannya sebuah

algoritma.

2

Pemanfaatan media komputer untuk mensimulasikan algoritma diharapkan

dapat membantu memahami tentang bagaimana algoritma pencarian data dan

pengurutan data berjalan. Salah satu cara termudah memahami materi mata kuliah

Algoritmadan struktur data adalah dengan cara mensimulasikan materinya secara

langsung, misalnya algoritma pengurutan. Tanpa simulasi, algoritma pengurutan

yang dipelajari harus dibayangkan oleh masing-masing orang. Hal ini tentunya

tidaklah mudah, paling tidak didukung oleh beberapa alasan berikut: pertama,

seringnya terjadi pertukaran data dari suatu posisi ke posisi lain selama proses

pengurutan berlangsung. Kedua, sulitnya membayangkan dan mengingat posisi

data yang berpindah dan data yang tidak berpindah. Ketiga, pertukaran dan

perpindahan data tergantung kepada metode pengurutuan yang digunakan.

Seiring dengan perkembangan teknologi dan didukung oleh tersedianya

sebuah software berbasis multimedia, yaitu Macromedia Flash 8, penulis mencoba

menerapkan simulasi algoritma ke dalam sebuah aplikasi dengan menggunakan

software tersebut. Aplikasi simulasi ini diharapkan akan membantu pemahaman

tentang algoritma.

1.2 Perumusan Masalah

1. Bagaimana mensimulasikan algoritma sorting dengan metode bubble sort,

selection sort dan insertion sort yang interaktif dan mampu memberikan

pemahaman tentang algoritma tersebut

3

2. Bagaimana mensimulasikan algoritma searching dengan metode

sequential search dan binary search yang interaktif dan mampu

memberikan pemahaman tentang algoritma tersebut

1.3 Batasan Masalah

Sistem aplikasi yang dibangun, memiliki ruang lingkup, permasalahan

yang dibatasi pada beberapa hal. Dalam batasan masalah ini, penyusun membatasi

masalah yang perlu, yaitu :

1. Pada sorting dan searching data yang akan disimulasikan adalah data

numeric ( 0 – 99 ).

2. Banyak data yang akan disimulasikan diinputkan oleh user atau dengan

bilangan acak computer maksimal 20 data baik searching maupun sorting.

1.4 Tujuan dan Manfaat

Membuat sebuah aplikasi multimedia yang interaktif untuk proses

pembelajaran algoritma pengurutan dan pencarian data.

1.5 Metodologi

Metodologi yang digunakan adalah metodologi pengembangan

multimedia. Menurut Arch Luther (Luther 1994), pengembangan multimedia

dilakukan berdasarkan 6 tahap, yaitu konsep, perancangan, pengumpulan bahan,

pembuatan, testing dan distribusi. Namun, dalam pembuatan program ini dipakai

5 tahap pengembangan multimedia, yaitu konsep, perancangan, pengumpulan

bahan, pembuatan, dan testing.

4

1. Konsep

Pada tahap ini dilakukan identifikasi pengguna, dan tujuan pembuatan

program

2. Desain

Pada tahap ini dilakukan analisa kebutuhan pembuatan program dan

informasi tentang algoritma, khususnya algoritma pencarian data (data

searching) dan pengurutan data (data sorting). Kemudian diakukan

perancangan system sesuai rancangan system hasil analisa yang telah

dilakukan. Rancangan tersebut meliputi rancangan user interface dan

rancangan program.

3. Pengumpulan bahan

Pada tahap ini dilakukan pengumpulan bahan seperti gambar serta

bahan-bahan lain yang diperlukan untuk tahap berikutnya.

Pengumpulan bahan dapat dilakukan secara paralel atau bersamaan

dengan tahap implementasi/pembuatan.

4. Implementasi

Pada tahap ini dilakukan proses pembuatan program berdasarkan

desain, yaitu menerjemahkan desain ke dalam bahasa pemrograman

action script.

5. Pengujian

Pada tahap ini dilakukan pengujian program untuk mencari kesalahan

dan kemudian dilakukan perbaikan.

5

1.6 Sistematika Penulisan

BAB I PENDAHULUAN,

Bab ini merupakan gambaran umum tentang tugas akhir ini yang berisi latar

belakang masalah, rumusan masalah, batasan masalah, tujuan dan manfaat,

metodologi, dan sistematika penulisan tugas akhir.

BAB II LANDASAN TEORI,

Bab ini akan berisi uraian tentang landasan teori yang akan digunakan dalam

perancangan sistem.

BAB III PERANCANGAN SISTEM

Bab ini akan membahas rancangan dari sistem yang dibuat untuk memecahkan

permasalahan yang ada. Meliputi konsep, analisa dan desain.

BAB IV IMPLEMENTASI DAN PEMBAHASAN

Bab ini akan menerapkan hasil rancangan dari sistem ke dalam bentuk program

simulasi berikut pembahasan hasil analisis dari program.

BAB V ANALISIS HASIL

Bab ini berisi tentang pengalaman penulis dalam pengembangan aplikasi dari tahap

perancangan sampai tahap implementasi. Hal-hal yang di analisis pada bab ini meliputi

penggunaan metodologi pengembangan multimedia, analisis tools dan analisis program.

BAB VI PENUTUP

Bab ini berisi kesimpulan dan saran untuk sistem yang telah dibuat agar ada

pengembangan yang lebih baik untuk masa yang akan datang.

DAFTAR PUSTAKA

LAMPIRAN

6

BAB II

LANDASAN TEORI

Pada bab landasan teori ini berisi uraian tentang landasan teori yang akan

digunakan dalam perancangan dan pengembangan aplikasi simulasi algoritma

pencarian dan pengurutan data ini. Landasan teori yang digunakan untuk

perancangan dan pengembangan aplikasi tersebut meliputi algoritma dan struktur

data (sequential search, binary search, selection sort, bubble sort, insertion sort),

multimedia, pembelajaran berbantuan komputer, metodologi pengembangan

multimedia, dan flash.

2.1 Algoritma dan Struktur Data

2.1.1 Searching

Pencarian data yang sering disebut dengan table look-up atau storage

retrieval information adalah suatu proses untuk mengumpulkan informasi didalam

pengingat computer dan kemudian mencari kembali informasi yang diperlukan

secepat mungkin. Sering kali kita dihadapkan pada situasi dimana sebenarnya

hanya memerlukan sedikit informasi diantara sekian banyak informasi yang

tersedia, sehingga sering timbul pemikiran untuk melupakan atau menghilangkan

informasi tersebut. Tetapi pada suatu saat timbul pikiran lain untuk

mempertahankan informasi tersebut dan mengkoordinasi sedemikian rupa

sehingga proses pencarian dilakukan secepat mungkin.

Algoritma pencarian adalah algoritma yang menerima argument K dan

dengan langkah-langkah tertentu akan mencari rekaman kuncinya yang bernilai K.

7

argument tersebut bisa menemukan rekaman secara utuh atau hanya mempeoleh

pointer yang menunjuk ke rekaman yang dimaksud. Setelah proses pencarian akan

diperoleh satu dari dua kemungkinan yaitu data yang dicari ditemukan atau tidak.

(referensi, modul praktikum algoritma dan struktur data)

a. Pencarian beruntun (sequential search)

Pencarian beruntun atau sequential search, pencarian ini dilakukan

dengan memeriksa elemen larik dari elemen pertama sampai elemen yang

ditemukan atau sampai seluruh elemen diperiksa. Pada saat data yang dicari

ditemukan maka proses pencarian akan dihentikan, tetapi jika data yang dicari

belum ditemukan maka pencarian akan diteruskan sampai semua data

dibandingkan. Dalam kasus yang paling buruk, untuk larik dengan N elemen

harus dicari sebanyak N kali.

b. Pencarian bagi dua (binary search)

Pencarian bagi dua atau binary search adalah metode pencarian yang

diterapkan sekumpulan yang sudah terurut atau (terurut naik atau turun). Metode

ini digunakan untuk kebutuhan pencari dengan waktu cepat. Memang syarat ini

pula yang merupakan kelemahan algoritma pencarian bagi dua, berbeda pencarian

beruntun yang dapat diterapkan pada data yang terurut atau tidak. Namun

sebenarnya banyak data yang sudah terurut dala kehidupan sehari-hari. Misalnya

data nomoe telpon pada buku telpon sudah diurutkan berdasarkan no.induk (dari

kecil ke besar). Data mahasiswa diurutkan dalam NIM, kata-kata dalam kamus

8

diurut dari A sampai Z dan sebagainya. Salah satu keuntungan data yang terurut

adalah memudahkan pencarian, dalam hal ini pencarian bagi dua. Untuk mencari

kata tertentu di dalam kamus, kita tidak membuka kamus itu dari halaman awal

sampai akhir saru per satu, namun kitamencarinya dengan cara membelah atau

membagi dua buku itu. Jika kata yang dicari tidak terletak dihalaman pertengahan

itu, kita mencari lagi dibelahan sebelah kiri atau bagia kanan dengan cara

membagi dua belahan tersebut. Begitu seterusnya sampai kata yang dicari

ditemukan. Prinsipngan membagi kata diatas menjadi dua bagian sama dengan

pembagian algoritma bagi dua. Data yang disimpan dalam larik harus sudah urut

untuk memudahkan pembhasan, elemen larik harus sudah terurut menaik atau

ascending. Selama proses pencarian kita membutuhkan dua larik yakni index

terbesar dan terkecil. Index terkecil disebut sebagai ujung kiri larik dan index

terbesar disebut ujung kanan larik.

2.1.2 Sorting

Pengurutan data (sorting) secara umum dapat didefinisikan sebagai suatu

proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.

Secara umum ada dua jenis pengurutan data yaitu pengurutan secara urut naik

(ascending) yaitu data yang nilainya palig kecil sampai yang nilainya paling besar

dan pengurutan data secara urut turun (descending) yaitu data yang mempunyai

nilai paling besar sampai paling kecil. Dalam pengurutan data yang bertipe string

atau char nilai data dikatakan lebih besar atau lebih kecil berdasarkan pada urutan

9

relative seperti yang dinyatakanpada table ASCII. Tujuan pengurutan data adalah

untuk lebih mempermudah pencarian data kelak dikemudian hari.

Dalam pemngurutan larik, yang disimpan dalam pengingat utama computer, ada

aspek ekonomis yang perlu dipertimbangkan. Aspek ini menyangkut kapasitas

pengingat yang tersedia. Aspek lain adalah dalam hal waktu yaitu waktu yang

diperlukan untuk melakukan permentasi sehingga semua elemen menjadi urut.

Ukuran efesiensi dapat diperoleh dari banyaknya perbandingan yaitu sebanyak N

logN kali. (referensi, modul praktikum algoritma dan struktur data)

1. Pengurutan Maksimum/minimum (selection sort)

Metode ini didasarkan pada pemilihan elemen maksimum/minimum

sebagai dasar pengurutan. Gagasannya adalah memilih elemen

maksimum/minimum kemudian dipertukarkan dengan elemen terujung larik

(elemen ujung kiri atau elemen ujung kanan). Selanjutnya elemen terujung

tersebut diisolasi dan tidak disertakan pada proses selanjutnya. Proses yang sama

diulang untuk elemen larik yang tersisa, yaitu memilih elemen

maksimum/minimum berikutnya dan menukarnya dengan elemen terujung larik

sisa. Karena proses utama dalam pengurutan ini adalah pemilihasn elemen

maksimum/minimum, maka metode ini disebut metode pengurutan

maksimum/minimum. Disebut juga metode seleksi atau selection sort.

Contoh ilustrasi :

Misalkan ada sekumpulan data acak berjumlah n elemen yang disimpan di dalam

larik L, akan diurut menaik, maka langkah-langkah yang harus dilakukan adalah:

10

1. Menentukan jumlah iterasi, yaitu pass = n – 2.

2. Untuk setiap pass ke-i = 0,1,2,...,pass, lakukan:

a. Cari elemen terbesar (maks) dari elemen ke-i sampai ke-(n-1).

b. Pertukarkan maks dengan elemen ke-i.

c. Kurangin n satu (n = n – 1).

Rincian tiap-tiap pas adalah sebagai berikut:

• pass 0

− Cari elemen maksimum di dalam L[0...(n-1)].

− Pertukarakan elemen maksimum dengan elemen L[n-1].

• pass 1

− Cari elemen maksimum di dalam L[0...(n-2)].

− Pertukarakan elemen maksimum dengan elemen L[n-2].

• pass 2

− Cari elemen maksimum di dalam L[0...(n-3)].

− Pertukarakan elemen maksimum dengan elemen L[n-3].

• pass 3

− Cari elemen maksimum di dalam L[0...1]

− Pertukarakan elemen maksimum dengan elemen L[1].

2. Bubble sort (exchange sort)

Metode ini adalah metode paling umum yang dikenal dalam dunia

pengrograman. Kelebihan metode ini adalah kemudahan dalam membuat

programnya. Walaupun semua metode yang digunakan pada akhirnya harus

11

memperhatikan tingkat efesiensi. Ide dasar metode ini adalah melewatkan data

dalam larik beberapa kali. Setiap melewati larik dilakukan perbandingan setiap

elemen dilarik dengan elemen sesudahnya (x[i] dengan x[i+1]) dan dilakukan

pertukaran bila tidak urut.

� Algoritma dimulai dari elemen paling awal

� 2 buah elemen pertama dari list dibandingkan

� Jika elemen pertama lebih besar dari elemen kedua dilakukan pertukaran

� Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga, seterusnya

sampai ke ujung elemen.

� Bila sudah sampai ke ujung dilakukan lagi ke awal sampai tidak ada terjadi

lagi pertukaran elemen.

� Bila tidak ada pertukaran elemen lagi, maka list elemen sudah terurut.

3. Pengurutan sisip (insertion sort)

Algoritma insertion sort adalah sebuah algoritma sederhana yang cukup

efisien untuk mengurutkan sebuah list yang hampir terurut. Algorima ini juga

biasa digunakan sebagai bagian dari algoritma yang lebih canggih. Cara kerja

algoritma ini adalah dengan mengambil elemen list satu-per-satu dan

memasukkannya di posisi yang benar seperti namanya. Pada array, list yang baru

dan elemen sisanya dapat berbagi tempat di array, meskipun cukup rumit. Untuk

menghemat memori, implementasinya menggunakan pengurutan di tempat yang

membandingkan elemen saat itu dengan elemen sebelumnya yang sudah diurut,

lalu menukarnya terus sampai posisinya tepat. Hal ini terus dilakukan sampai

12

tidak ada elemen tersisa di input. Salah satu implementasinya pada kehidupan

sehari-hari adalah saat kita mengurutkan kartu remi. Kita ambil kartu satu-per-

satu lalu membandingkan dengan kartu sebelumnya untuk mencari posisi yang

tepat. Variasi pada umunya yang dilakukan terhadap array pada insertion sort

adalah sebagai berikut :

� Elemen awal di masukkan sembarang, lalu elemen berikutnya dimasukkan di

bagian paling akhir.

� Elemen tersebut dibandingkan dengan elemen ke (x-1). Bila belum terurut

posisi elemen sebelumnya digeser sekali ke kanan terus sampai elemen yang

sedang diproses menemukan posisi yang tepat atau sampai elemen pertama.

� Setiap pergeseran akan mengganti nilai elemen berikutnya, namun hal ini

tidak menjadi persoalan sebab elemen berikutnya sudah diproses lebih dahulu.

2.2 Multimedia

Teknologi digital berkembang dengan demikian pesatnya, bahkan

kadangkala membuat pengguna komputer bingung ketika harus menghadapi

produk teknologi yang baru. Satu definisi yang mudah untuk menjelaskan

multimedia merupakan gabungan dari beberapa media seperti data, audio dan

video menjadi satu. Jadi multimedia merupakan gabungan dari beberapa media.

Sebagai contoh VCD, dimana audio dan video digabungkan ke dalam satu media

penyimpan data.

13

Istilah multimedia digunakan dalam banyak hal, seperti system informasi

multimedia, computer multimedia, perangkat lunak multimedia dan lain-lain.

Dalam bukunya The Information Revolution : Education & Learning yang ditulis

oleh Walter Oleksy (1995) dikatakan bahwa ‘Multimedia adalah suatu teknologi

untuk perangkat keras (hardware) dan perangkat lunak (software) yang membawa

media teks, ilustrasi, gambar, suara, animasi dan video sebuah computer.’.

Satu definisi yang mudah untuk menjelaskan definisi dari multimedia

adalah penggabungan beberapa media seperti data, audio dan video menjadi satu.

Pada umumnya, multimedia merupakan perantara dalam pembelajaran

yang mengkombinasikan teks, video, suara dan animasi dalam sebuah perangkat

lunak komputer yang interaktif.

2.3 Pembelajaran Berbantuan Komputer (Computer Assisted Instruction)

Pada umumnya pemanfaatan komputer dalam dunia pendidikan disebut

dengan Computer Based Instruction Education ( CBI/E). CBI/E lebih bersifat

menyeluruh, semua aplikasi computer dalam pendidikan dapat dikategorikan

dalam CBI/E. CBI/E dipilah menjadi dua hal, yaitu aplikasi pengajaran dan

aplikasi non pengajaran. Aplikasi pengajaran salah satunya meliputi Computer

Assited Instruction (CAI). CAI atau pengajaran berbantuan komputer adalah

system computer dimana dalam prosentase tertentu mengganti peran seorang

guru/pengajar dalam penyampaian materi pembelajaran.

Ada beberapa media pengajaran yang dapat diimplementasikan untuk

menyampaikan materi pengajaran bagi para siswa, antara lain :

14

• Media cetak, termasuk diantaranya adalah textbooks dan modul

• Media audio visual, termasuk diantaranya sound slides, video dan televise

• Komputer, yaitu CAI

• Media audio, termasuk diantaranya radio, dan program audio cassette

Diantara beberapa media tersebut diatas, CAI tidak diimplementasikan

secara luas, hal ini disebabkan oleh beberapa faktor, yaitu :

• Harga yang masih mahal

• Masih kurangnya perangkat keras atau fasilitas dan pengembangan

perangkat lunak CAI

• Terbatasnya kualitas perangkat lunak pendukung

• Terbatasnya tenaga ahli dalam menciptakan dan mengembangkan

perangkat lunak CAI terbatas

Saat ini beberapa persoalan di atas dapat teratasi dengan baik secara

bertahap. Seiring dengan perkembangan teknologi, pengenalan mengenai CAI

semakin menyebar secara cepat, dan sanggup memenuhi beberapa faktor :

• Murah (inexpensive)

• Dapat dipercaya / diandalkan (reliable)

• Mudah digunakan (simple to use)

• Orang yang ahli dalam perangkat lunak CAI bertambah

CAI adalah cara penggunaan komputer secara langsung didalam proses

pengajaran sebagai pengganti buku-buku dan pengajar. CAI mencakup

15

penggunaan komputer yang berhubungan secara langsung dengan siswa. Dalam

hal ini komputer dapat digunakan untuk mengajar dan melatih siswa dalam belajar

suatu bidang ilmu pendidikan.

CAI memanfaatkan sifat komputer yang memungkinkan kegiatan interaksi

diantara pemakai komputer itu. Berbeda dengan bahan ajar yang disampaikan

melalui film, slide, atau video recorder, siswa dapat dapat memberi respon, dan

respon itu ditanggapi oleh computer, seperti halnya guru menanggapi kegiatan

siswanya.

2.4 Metodologi Pengembangan Multimedia

Menurut Arch Luther (Luther 1994), pengembangan multimedia dilakukan

berdasarkan 6 tahap, yaitu konsep, perancangan, pengumpulan bahan, pembuatan,

testing dan distribusi. Namun, dalam pembuatan program ini dipakai 5 tahap

pengembangan multimedia, yaitu konsep, perancangan, pengumpulan bahan,

pembuatan, dan testing.

• Konsep

Dalam tahap ini dilakukan identifikasi pengguna, dan tujuan pembuatan

program

• Perancangan

Dalam tahap ini dilakukan pembuatan secara rinci mengenai arsitektur

proyek, gaya, dan kebutuhan material untuk proyek, serta analisa

system, karena pembuatan program aplikasi dengan metodologi ini

dibuat sesuai dengan konsepnya.

16

• Pengumpulan bahan

Pengumpulan bahan dapat dilakukan secara paralel atau bersamaan dengan

tahap pembuatan. Pada tahap ini dilakukan pengumpulan bahan seperti

gambar serta bahan-bahan lain yang diperlukan untuk tahap berikutnya.

• Pembuatan

Aplikasi seluruh proyek dikembangkan bersama-sama dalam tahap ini.

Pembuatan aplikasi dilakukan secara modular, yaitu setiap scene

diselesaikan, selanjutnya digabungkan seluruhnya menjadi satu kesatuan.

• Testing

Testing dilakukan setelah tahap pembuatan dan seluruh data telah

dimasukkan. Hal ini dilakukan untuk mengetahui adanya kesalahan atau

tidaknya suatu program dibuat.

• Distribusi

Bila aplikasi akan digunakan dengan mesin / komputer yang berbeda,

penggandaan menggunakan flashdisk, CD-ROM atau distribusi dengan

jaringan sangat diperlukan. Distribusi dapat kembali lagi ke tahap

konsep apabila diperlukan adanya pengembangan program aplikasi.

2.5 Macromedia Flash

Flash adalah salah satu program pembuatan animasi yang sangat handal.

Kehandalah flash dibandingkan dengan program yang lain adalah dalam hal

ukuran file dari hasil animasinya yang kecil. Untuk itu animasi yang dihasilkan

17

oleh program flash banyak digunakan untuk membuat sebuah web agar menjadi

tampil lebih interaktif.

2.5.1 Konsep Simbol dan Library

Symbol dan library adalah termasuk salah satu bagian yang paling penting

dalam membuat animasi dengan flash. Jika kita tidak bisa memahami konsep ini

maka kita akan kesulitan untuk bisa melangkah ke bagian selanjutnya.

Untuk membuat suatu bentuk bisa beranimasi, kita harus membuat bentuk

tersebut menjadi symbol. Pada bab ini kita akan membahas tentang symbol,

bagaimana symbol dibuat, bekerja, diatur dan di perbaiki.

2.5.2 Symbol

Dengan merubah suatu obyek menjadi symbol, itu artinya obyek tersebut

sudah menjadi bentuk yang pasti dan kita tidak bisa memanipulasinya lagi

didalam stage misalnya merubah warna, memberikan coretan diatasnya atau yang

lainnya. Jadi sebelum merubah suatu obyek menjadi symbol maka sebaiknya

obyek tersebut harus benar benar sudah siap untuk digunakan sehingga tidak lagi

ingin melakukan perubahan terhadap obyek tersebut. Tetapi kita bisa melakukan

operasi merubah bentuk di dalam stage seperti memutar, memperbesar atau

memindahkannya.

2.5.3 Merubah obyek menjadi symbol

Sebelum sebuah obyek dirubah menjadi symbol, blok terlebih dahulu

obyek tersebut dengan menggunakan arrow tool yang ada pada toolbar bagian

kiri atas. Jika suatu obyek sudah diblok maka obyek tersebut akan muncul titik

18

titik kecil pada permukaanya. Selanjutnya pilih menu insert>convert to symbol

sehingga muncul menu seperti yang terlihat pada gambar 2.1 berikut:

gambar 2.1 convert to symbol

isikan nama sesuai dengan keinginan pada bagian name. Dan pada bagian

behavior terdapat tiga pilihan yaitu:

movie clip : obyek digunakan untuk beranimasi

button : obyek dibuat sebagai tombol

grafik : obyek dibuat sebagai gambar yang statis atau tidak beranimasi

Sebelum kita mengubah obyek menjadi symbol, kita harus mempunyai

tujuan dari pembuatan symbol tersebut sehingga dapat kita isi salah satu dari

ketiga option diatas. Setelah selesai tekan tombol OK.

Jika suatu obyek sudah berubah menjadi symbol maka obyek tersebut akan

dibatasi oleh persegi empat berwarna biru dan muncul tanda + ditengahnya. Hal

itu bertujuan untuk membedakan antara obyek yang sudah diubah menjadi symbol

dengan yang belum.

2.5.4 Library

Library didalam flash fungsinya sesuai dengan namanya adalah sebuah

tempat penyimpan symbol yang sudah kita buat. Jika kita membuat sebuah

19

symbol maka secara otomatis symbol tersebut akan masuk ke dalam library. Jadi

selama kita bekerja semua symbol yang sudah pernah kita buat, walaupun sudah

kita hapus, symbol tersebut masih tersimpan dalam library.

Untuk menampilan library, pilih window>library dari menu bar. Library

window akan muncul seperti yang terlihat pada gambar 2.2.

gambar 2.2 library

Daftar semua symbol yang ada ditampilkan di bawah preview window. Icon

disebelah nama symbol menunjukkan tipe dari simbol (behavior). Untuk melihat

simbol di preview window, klik simbol yang ingin ditampilkan.

Library mempunyai kegunaan yang cukup penting, dan jika kita

mengoptimalkan pemakaiannya maka akan membantu mempermudah didalam

membuat animasi. Misalnya symbol yang ada dalam stage terlanjur dihapus dan

tidak bisa dikembalikan lagi maka kita bisa mengambil symbol yang masih

tersimpan dalam library dengan cara mendragnya ke dalam stage

20

2.5.5 Konsep Tentang Animasi

Animasi merupakan satu fungsi utama dari Flash. Animasi, dan cara

pembuatannya tidak sesederhana menggerakkan sesuatu dari titik A ke titik B.

Ada banyak faktor yang harus dipertimbangkan untuk membuat animasi yang

efektif dan efisien.

2.5.6 Dasar Animasi

Animasi pada awalnya berupa kumpulan atau potongan gambar yang

ditampilkan bergantian secara cepat. Karena keterbatasan mata kita, kita tidak bisa

membedakan setiap gambar yang satu dengan yang lainya dan yang tampak dalam

mata kita adalah sebuah gerakan yang disebut animasi.

Dalam film, setiap bagian gambar itu disebut frame. Frame frame tersebut

berganti dengan kecepatan tertentu sehingga tidak nampak oleh mata kita.

Kecepatan banyaknya frame yang ditampilkan dihitung dalam satuan frame per

detik(fps = frame per second). Film yang kita saksikan di bioskop menampilkan

24 frame per detik. Videotape dan televisi menampilkan 30 frame per detik.

Semakin tinggi kecepatan dari frame maka gambar yang dihasilkan akan semakin

halus tetapi kerugiannya adalah memerlukan jumlah frame yang lebih banyak

dengan waktu yang sama.

Misalnya film kecepatan 50 frame perdetik lebih baik daripada 25 frame

perdetik, tetapi dengan waktu yang sama misal dua jam, untuk kecepatan 50 frame

perdetik membutuhkan lebih banyak frame daripada yang kecepatannya 25 frame

perdetik dan itu berarti sebuah pemborosan. Dengan menggunakan flash kita bisa

21

menentukan kecepatan frame dari animasi yang kita buat sehigga bisa optimal

pada saat dimasukkan dalam web.

2.5.7 Action Script

Action Script adalah bahasa yang menjembatani antara bahasa yang kita

kenal dengan bahasa yang dikenali oleh flash. Action Script mengijinkan kita

membuat instruksi berorientasi action dan instruksi berorientasi logic (analisa

masalah sebelum melakukan perintah). Sama dengan bahsa pemrograman yang

lain, action script berisi banyak elemen yang berbeda serta sturkturnya sendiri.

Sebuah action biasanya berada pada beberapa baris yang menginstruksikan pada

Flash untuk berbuat, membuat, mengubah, me-load atau menghapus.

Dalam Action Script terdapat beberapa perintah yang sering digunakan untuk

membuat animasi, antara lain :

Action Script – goto

1. gotoAndPlay

Digunakan untuk menuju ke frame tertentu dan memainkan animasi

yang ada di frame tersebut.

Bentuk Penulisannya :

on(release) {

gotoAndPlay(“Scene 2”,25);

}

Maksud perintah diatas adalah menuju ke scene 2 frame 25 dan

langsung memainkan animasi yang ada di frame 25.

2. gotoAndStop

22

Digunakan untuk menuju ke frame tertentu dan berhenti di frame

tersebut.

Bentuk Penulisannya :

on(release) {

gotoAndStop(“Scene 2”,25);

}

Maksud perintah diatas adalah menuju ke scene 2 frame 25 dan

langsung berhenti di frame 25.

Action Script – on

Perintah On digunakan untuk mendukung perintah yang lain.

Bentuk penulisannya :

On ( ) {

}

Action Script – play

Perintah Play digunakan untuk menjalankan animasi movie.

Bentuk penulisannya :

play();

Action Script – stop

Perintah Stop digunakan untuk menjalankan animasi movie.

Bentuk penulisannya :

stop();

Action Script – loadMovie

Perintah LoadMovie digunakan untuk memanggil dan menjalankan

animasi flash yang telah disimpan.

Bentuk Penulisannya :

23

on(release) {

loadMovie(“alamat file”,0);

}

2.6 Simulasi

Simulasi adalah peniruan nyata beberapa hal, keadaan, atau proses.

Perbuatan dari simulasi umumnya memerlukan suatu yang mewakili karakteristik

tertentu atau kunci perilaku yang dipilih sistem fisik atau abstrak. Simulasi

digunakan dalam banyak konteks, termasuk modeling sistem alam atau sistem

manusia untuk mendapatkan informasi tentang mereka berfungsi. konteks lain

termasuk simulasi teknologi untuk optimasi performa, keselamatan rekayasa,

pengujian, pelatihan dan pendidikan. Simulasi dapat digunakan untuk

menunjukkan sikap yang nyata efek dari alternatif kondisi dan program aksi

(Indrianto,2003).

24

BAB III

PERANCANGAN SISTEM

Tahap perancangan sistem adalah tahap awal dari proses pengembangan

suatu aplikasi. Bab ini akan membahas rancangan dari sistem yang dibuat untuk

memecahkan permasalahan yang ada. Tahap perancangan ini meliputi konsep,

analisa dan desain.

3.1 Konsep Sistem

Dalam prakteknya, pembelajaran tentang algoritma banyak mengalami

masalah. Yaitu tentang bagaimana alur berjalannya suatu algoritma. Maka akan

lebih mudah jika dibuat simulasi yang menggambarkan jalannya sebuah

algoritma.

Seiring dengan perkembangan teknologi dan didukung oleh tersedianya

sebuah software berbasis multimedia, yaitu Macromedia Flash 8, memungkinkan

untuk menerapkan simulasi algoritma kedalam sebuah aplikasi pembelajaran

dengan menggunakan software tersebut. Aplikasi pembelajaran ini diharapkan

akan membantu pemahaman tentang algoritma. Karena disajikan dalam bentuk

simulasi, sehingga mudah untuk dimengerti. Aplikasi ini nantinya akan bisa

digunakan oleh siapa saja, khususnya bagi semua orang yang tertarik dengan

algoritma pencarian dan pengurutan data.

Tahap konsep (concept) adalah tahap penentuan tujuan, termasuk

identifikasi audiens dalam hal ini adalah user yang dituju, macam aplikasi, tujuan

25

dan spesifikasi aplikasi secara umum. Dalam tahap inilah dasar aturan

perancangan ditentukan. Adapun deskripsi konsep dari sistem dapat dilihat pada

tabel 3.1 berikut ini:

Tabel 3. 1 Deskripsi Konsep Sistem

Judul Aplikasi Simulasi Algoritma Pencarian

dan Pengurutan Data

User Semua orang yang tertarik dengan

algoritma pencarian dan pengurutan

data

Durasi Sesuai kebutuhan user

Image Menggunakan image PNG, JPG, BMP

dan GIF

Video Tidak menggunakan

Audio Tidak menggunakan

Animasi Menggunakan animasi text dan grafik

Interaktif Memasukkan data-data yang akan

disimulasikan. Mensimulasikan suatu

proses algoritma.

3.2 Analisis Sistem

3.2.1 Analisis Masalah

Penggunaan komputer sebagai media pembelajaran untuk menyampaikan

materi pelajaran dapat dilakukan dengan berbagai macam aplikasi. Aplikasi yang

26

akan dikembangkan sebagai media pembelajaran algoritma dan struktur data

disini nantinya akan dapat digunakan sebagai media pendukung pembelajaran

algoritma dan struktur data, khususnya pencarian dan pengurutan data dengan

beberapa jenis algoritmanya. Permasalahan yang dihadapi dalam proses

perancangan ini antara lain adalah bagaimana mengatur animasi dalam simulasi,

agar dapat menggambarkan suatu proses, sehingga mudah untuk dipahami.

3.2.2 Analisis Kebutuhan Sistem

Komponen pendukung pembuatan program yang menjadi daya tarik untuk

user, antara lain yaitu Gambar ilustrasi, text, warna, animasi.

Fasilitas pendukung aplikasi sebagai media alternatif pembelajaran algoritma,

yang memuat materi sebagai berikut :

1. Gambaran singkat tentang searching dengan algoritma sequential search dan

binary search.

2. Gambaran singkat tentang sorting dengan algoritma bubblesort, insertion sort

dan selection sort.

3.3 Desain Sistem

Secara umum, aplikasi ini digunakan sebagai media alternatif

pembelajaran algoritma, khususnya algoritma pencarian dan pengurutan data.

Aplikasi ini sendiri dibuat dalam bentuk simulasi yang menarik dan interaktif.

Berdasarkan pada hal tersebut, dalam perancangan aplikasi terdapat beberapa

27

pertimbangan mengenai hal umum yang berkaitan dengan kebutuhan sistem,

antara lain:

1. Pengguna sistem adalah semua orang yang tertarik dengan algoritma

pencarian dan pengurutan data.

2. Penyesuaian aplikasi dengan kemampuan user dalam mencerna aplikasi yang

dibuat.

3.3.1 Flowchart Sistem

Flowchart program merupakan bagan yang menjelaskan secara rinci

langkah-langkah dari proses program secara logika. Berikut ini flowchart dari

program aplikasi yang dikembangkan adalah sebagai berikut :

Gambar 3. 1 Flowchart Sistem

28

3.3.2 Flowchart Algoritma

Flowchart algoritma merupakan bagan yang menjelaskan secara rinci

langkah-langkah dari proses algoritma secara logika. Flowchart dari algoritma-

algoritma yang digunakan dalam aplikasi adalah sebagai berikut :

3.3.2.1. Flowchart Algoritma Sequential Search

Flowchart algoritma sequential search ditunjukkan pada gambar 3.2 dibawah.

Gambar 3. 2 Flowchart Algoritma Sequential Search

3.3.2.2. Flowchart Algoritma Binary Search

Flowchart algoritma Binary search ditunjukkan pada gambar 3.3 dibawah.

29

Gambar 3. 3 Flowchart Algoritma Binary Search

3.3.2.3. Flowchart Algoritma Bubblesort

Flowchart algoritma Bubblesort ditunjukkan pada gambar 3.4 dibawah ini.

Gambar 3. 4 Flowchart Algoritma Bubblesort

30

3.3.2.4. Flowchart Algoritma Selectionsort

Flowchart algoritma Selectionsort ditunjukkan pada gambar 3.5 dibawah ini.

Gambar 3. 5 Flowchart Algoritma Selection Sort

3.3.2.5. Flowchart Algoritma Insertionsort

Flowchart algoritma Insertionnsort ditunjukkan pada gambar 3.5 dibawah ini.

Gambar 3. 6 Flowchart Algoritma Insertion Sort

31

3.3.3 Perancangan Struktur Menu Program

Gambar 3. 7 Struktur Menu Aplikasi

3.3.4 Spesifikasi Perangkat Sistem

Agar suatu aplikasi yang dibuat dapat berjalan dengan baik, dibutuhkan

alat-alat yang mendukung, salah satu diantaranya berupa komputer.

3.3.4.1 Perangkat Keras ( Hardware )

Minimum konfigurasi sistem perangkat keras yang harus dimiliki agar system

aplikasi yang akan dibangun dapat bekerja secara optimal adalah sebagai berikut :

• Prosesor Intel Pentium III atau yang lebih baik

• Memori ( RAM ) 128 MB

• Hardisk 20GB

• Monitor berwarna

• Mouse

• Keyboard

• CD ROM

3.3.4.2. Perangkat Lunak ( Software )

Spesifikasi minimum perangkat lunak yang dibutuhkan dalam pembuatan dan

pengoperasian sistem aplikasi yang dibangun adalah sebagai berikut :

32

• Sistem Operasi : Microsoft Windows XP atau yang lebih baik

• Aplikasi : Macromedia Flash 8

3.3.5 Perancangan Antar Muka Program

Perancangan antarmuka meliputi perancangan bentuk-bentuk tampilan

program. Dengan tampilan ini, pengguna akan lebih mudah mengoperasikan

program.

3.3.5.1 Perancangan Halaman Welcome Screen

Form yang terdapat pada gambar 3.8 dibawah merupakan rancangan

interface untuk welcome screen atau halaman muka program. Form gambar 3.7

ialah tampilan yang akan pertama kali dibuka ketika program dijalankan. Pada

halaman ini terdapat dua buah tombol pilihan, yaitu ENTER dan EXIT. Jika

tombol ENTER ditekan maka program akan melanjutkan ke halaman berikutnya

atau dengan kata lain masuk ke inti dari aplikasi. Jika tombol EXIT yang terletak

pada pojok kanan ditekan maka akan keluar dari program, menutup aplikasi.

Gambar 3. 8 Rancangan Halaman Welcome Screen

33

3.3.5.2 Perancangan Halaman Home

Form yang terdapat pada gambar 3.9 merupakan interface untuk halaman

menu utama aplikasi pembelajaran algoritma dan struktur data. Pada halaman ini

terdapat 4 buah tombol. 2 buah tombol menu utama yaitu MATERI dan

SIMULASI. Selain 2 buah tombol menu, juga terdapat 2 buah tombol navigasi

yaitu HELP dan EXIT. Untuk tombol MATERI akan di-link ke halaman ,materi

yang berisi tentang materi-materi/dasar teori yang akan dipelajari. Untuk tombol

SIMULASI akan di link ke halaman simulasi. Tombol navigasi yaitu HELP dan

EXIT berfungsi masing-masing, tombol HELP akan di-link ke halaman help

yang berisi panduan-panduan/petunjuk penggunaan program. Untuk tombol EXIT

berfungsi menutup aplikasi.

Gambar 3. 9 Rancangan Halaman Home

3.3.5.3 Perancangan Halaman Simulasi

Form pada gambar 3.10 dibawah adalah interface untuk halaman menu

simulasi. Pada interface simulasi ini terdapat 3 buah tombol utama. Yaitu INPUT

DATA, SEARCHING dan SORTING. Tombol INPUT DATA akan di-link ke

34

interface input data yang berfungsi untuk input data yang akan disimulasikan dari

user. Tombol SEARCHING akan di-link ke halaman simulasi searching. Tombol

SORTING akan di-link ke halaman simulasi sorting. Pada bagian atas terdapat

juga tombol navigasi HOME, HELP dan EXIT. Tombol HOME akan di-link ke

halaman sebelumnya. Yaitu halaman home.

Gambar 3. 10 Rancangan Halaman simulasi

3.3.5.4 Perancangan Halaman Input Data

Form yang terdapat pada gambar 3.11a adalah interface untuk menu input

data. Pada interface ini terdapat sebuah textfield, radio button dan dua buah

tombol konfirmasi OK dan CANCEL. Textfield ini ditujukan kepada user untuk

memasukkan banyak data yang akan disimulasikan. Data yang dimasukkan adalah

data numeric (1-20). Aplikasi ini akan menegluarkan error message jika data yang

dimasukkan tidak sesuai dengan batasan maksimum data atau minimum data.

Seperti yang terlihat pada gambar 3.11d. Sedangkan untuk radio button digunakan

untuk memilih metode input data. Input data dapat dilakukan secara manual

ataupun random. Input data manual, berarti data dimasukkan oleh user sebanyak

35

data yang dimasukkan pada textfield banyak data. Sedangkan untuk input data

random, data akan diisi bilangan acak secara otomatis oleh komputer. Pada

gambar 3.11b menunjukkan tampilan untuk input data manual setelah textfield

diisi dan tekan tombol OK. Terdapat juga tombol SAVE untuk menyimpan data

yang telah dimasukkan oleh user. Sedangkan gambar 3.11c interface untuk input

data acak oleh komputer.

Gambar 3. 11a Rancangan Halaman Input Data

Gambar 3. 11b Rancangan Halaman Input Data Manual

36

Gambar 3. 11c Rancangan Halaman Input Data Random

Gambar 3. 11d Rancangan Error Message

3.3.5.5 Perancangan Halaman Simulasi Searching

Form yang terdapat pada gambar 3.12 adalah interface untuk menu

simulasi searching. Terdapat textfield untuk memasukkan data yang akan dicari.

Data yang dimasukkan adalah data numeric (0-99). Terdapat juga radio button

untuk memilih metode simulasi searching yang diinginkan, akan menggunakan

37

sequential search atau binary search. Kemudian tekan tombol START untuk

masuk simulasi.

Gambar 3. 12 Rancangan Halaman Simulasi Searching

Pada gambar 3.13 merupakan contoh tampilan setelah data yang akan

dicari dimasukkan. Setelah tombol START ditekan, pada bagian tengah halaman

akan ditampilkan deretan bilangan yang akan disimulasikan. Akan muncul juga

tombol-tombol navigasi untuk memainkan simulasi, yaitu tombol PLAY,

PAUSE, TRACE. Adapun fungsi dari masing-masing tombol, adalah sebagai

berikut :

• PLAY : Memainkan simulasi secara otomatis

• PAUSE : Menunda simulasi yang sedang berjalan secara otomatis

• TRACE : Memainkan simulasi langkah demi langkah

Untuk mengatur kecepatan simulasi yang berjalan secara otomatis, digunakan

dropdown menu dengan tiga pilihan kecepatan. Pada saat proses simulasi sedang

berjalan, akan muncul keterangan pada bagian bawah meliputi perbandingan data,

38

dan hasil pencarian data. Setelah simulasi selesai tombol CLEAR akan muncul,

yang berfungsi untuk me-reset kembali ke posisi semula halaman simulasi.

Gambar 3. 13 Rancangan Halaman Simulasi Sequentialsearch

3.3.5.6 Perancangan Halaman Simulasi Sorting

Halaman simulasi sorting seperti terlihat pada gambar 3.14. Hampir sama

seperti halaman simulasi searching. Terdapat 3 buah algoritma sorting yang akan

disimulasikan. Yaitu selectionsort, bubblesort, dan insertionsort. Digunakan radio

button untuk memilih salah satu algoritma yang akan disimulasikan. Pada

halaman ini terdapat juga radio button, untuk memilih metode pengurutan yang

akan disimulasikan, yaitu ascending dan descending. Untuk masuk simulasi tekan

tombol START.

39

Gambar 3. 14 Rancangan Halaman simulasi Sorting

Setelah menekan tombol START, maka tampilan berikutnya ialah seperti terlihat

pada gambar 3.15. Data yang akan disimulasikan ditampilkan dibagian tengah.

Terdapat juga tombol-tombol navigasi untuk memainkan animasi, yaitu : PLAY,

PAUSE, TRACE yang masing-masing fungsinya sama dengan tombol-tombol

navigasi simulasi searching yang telah dijelaskan sebelumnya. Kecepatan animasi

pada simulasi sorting ini juga dapat diatur, dengan dropdown menu. Sama dengan

simulasi searching, pada simulasi sorting juga terdapat tiga pilihan kecepatan

yang dapat dipilih oleh user. Pada saat simulasi berjalan terdapat keterangan dari

proses algoritma di bagian bawah. Keterangan-keterangan tersebut meliputi

banyak iterasi,perbandingan data, pertukaran data. Tombol CLEAR yang

berfungsi untuk me-reset kembali ke halaman semula sebelum simulasi dijalankan

akan muncul setelah simulasi selesai dijalankan.

40

Gambar 3. 15 Rancangan Halaman simulasi Selectionsort

3.3.5.7 Perancangan Halaman Materi

Untuk halaman materi seperti yang terlihat pada gambar 3.16a. Terdapat

dua buah menu materi utama. Yaitu searching dan sorting. Setiap menu materi

utama juga terdapat sub-menu. Materi searching terdiri dari dua pokok bahasan,

yaitu sequential search dan binary search. Seperti yang terlihat pada gambar

3.16b. Sedangkan untuk materi sorting terdiri dari tiga pokok bahasan. Yaitu

selection sort, bubble sort dan insertion sort. Seperti yang terlihat pada gambar

3.14c. Setelah dipilih sebuah pokok bahasan, akan tampil seperti gambar 3.16d.

Dasar-dasar teori pokok bahasan tersebut akan ditampilkan dibagian tengah

halaman. Disisi sebelah kanan terdapat tiga buah tombol navigasi. Yaitu

MATERI, NEXT, PREV. Untuk tombol MATERI berfungsi untuk

mengembalikan kembali ke halaman materi utama seperti pada gambar 3.16a.

Sedangkan untuk tombol NEXT berfungsi untuk melanjutkan ke halaman

selanjutnya dari sebuah pokok bahasan. Tombol PREV berfungsi untuk kembali

ke halaman sebelumnya dari sebuah pokok bahasan.

41

Gambar 3. 16a Rancangan Halaman Materi

Gambar 3. 16b Rancangan Halaman Materi

42

Gambar 3. 16c Rancangan Halaman Materi

Gambar 3. 16d Rancangan Halaman Materi

43

3.3.6 Storyboard Aplikasi

Storyboard akan menjadi panduan atau pedoman untuk mewujudkan

produk multimedia. Naskah ini akan memberikan sistematika urutan tampilan,

deskripsi tampilan visual dan narasi, serta evaluasinya. Pada table 3.2 dibawah

merupakan storyboard aplikasi simulasi algoritma pencarian dan pengurutan data.

Tabel 3. 2 Storyboard Aplikasi

FILE

PROGRAM

ISI KETERANGAN

main.swf

Aplikasi induk yang berisi layout

dasar yang menampilkan

- Menu materi

- Menu simulasi

- Menu home

- Menu help

- Exit

- Header dan footer

Merupakan file stand

alone untuk memanggil

file menu materi, menu

simulasi, menu help.

materi.swf

Berisi teori-teori singkat tentang

algortima pencarian data

(sequential search, binary search)

dan algoritma pengurutan data

(selection sort, bubble sort,

insertion sort)

Terletak pada folder swf

simulasi.swf File inti dari simulasi algoritma Terletak pada folder swf

44

pencarian dan pengurutan data

yang berisi :

- Input data

- Simulasi searching

- Simulasi sorting

help.html

Halaman ini berisi tentang

petunjuk penggunaan aplikasi,

about aplikasi

Terletak pada folder help

45

BAB IV

IMPLEMENTASI DAN PEMBAHASAN

Implementasi merupakan tahap pengkodean dari hasil perancangan. Pada bab

sebelumnya telah dijelaskan mengenai perancangan sistem. Pada bab ini akan

dijelaskan hasil implementasi dan pembahasan program.

4.1 Implementasi Program

Program simulasi algoritma ini dapat digunakkan oleh siapapun yang ingin

mempelajari proses berjalannya sebuah algoritma dan juga dasar-dasar teori dari

algoritma tersebut, dalam hal ini algoritma searching dan sorting.

Susunan dari program simulasi algoritma ini terdiri dari sekumpulan modul-

modul flash movie yang terintegrasi antara satu dengan yang lainnya, sehingga

membentuk sebuah aplikasi pembelajaran yang utuh.

Bagian utama dari aplikasi ini adalah simulasi algoritma searching dan

sorting disamping tutorial-tutorial yang berisi teori singkat tentang algoritma yang

akan disimulasikan sebagai penunjuang. Tampilan awal dari menu simulasi aplikasi

ini adalah sebagai berikut terlihat pada gambar 4.1

46

Gambar 4.1 Halaman Utama Menu Simulasi

Aplikasi ini merupakan aplikasi yang dinamis, sehingga memungkinkan user untuk

berinteraksi langsung dengan aplikasi ini. User dapat memasukkan data-data yang

akan disimulasikan melalui interface input data, yang dapat dilihat setelah user

memilih tombol INPUT DATA. Tampilan halaman input data seperti pada gambar

4.2 dibawah ini

Gambar 4.2 Halaman Input Data

47

Pertama user diminta untuk memasukkan banyak data yang akan disimulasikan. Jika

tidak sesuai dengan batasan aplikasi ini, maka akan muncul pesan error. Seperti yang

terlihat pada gambar 4.3.

Gambar 4.3 Error message

Error Message tersebut berupa movie clip yang didalamnya terdapat sebuah dynamic

text yang berfungsi untuk menampilkan pesan error. Terdapat juga tombol EXIT yang

berfungsi untuk menutup pesan error tersebut. Pengecekan data masukkan oleh user

dilakukan didalam tombol OK. Yaitu dengan listing program 4.1 dibawah ini :

//JIKA TEXT DATA KOSONG

if(this.banyak_data.text=="")

{

warning1._x=-150;

warning1._y=30;

48

this.warning1.war.text="DATA MASIH KOSONG !!"

}

//JIKA DATA = 0

else if(data_ < 0 || data_ == 0)

{

warning1._x=-150;

warning1._y=30;

this.warning1.war.text="DATA HARUS > 0";

}

//JIKA DATA LEBIH DARI 20

else

{

warning1._x=-150;

warning1._y=30;

this.warning1.war.text="DATA MAX 20";

}

listing program 4.1 script Error Message

Pada saat aplikasi dijalankan posisi awal dari movie clip warning1 berada di

koordinat (750, -250). Yaitu tepatnya jauh diluar screen aplikasi. Sehingga user tidak

dapat melihat. Setelah dilakukkan pengecekan dan memenuhi syarat untuk

ditampilkan pesan error, maka movie clip pesan error akan diubah koordinatnya ke

posisi tengah. Pada posisi koordinat (-150, 30). Misal data yang dimasukkan adalah

49

kosong ( if(this.banyak_data.text=="")), maka movie clip pesan error akan

diubah koordinatnya ke posisi tengah, pada posisi koordinat (-150, 30) dan dynamic

text yang berada dalam movie clip pesan error diisi dengan pesan “DATA MASIH

KOSONG !!” (this.warning1.war.text="DATA MASIH KOSONG !!" ). Pesan error

akan ditampilkan juga jika data yang dimasukkan 0 atau data lebih besar dari 20.

Sedangkan action untuk tombol EXIT pada pesan error, adalah mengeset kembali

koordinat diposisi awal. Sehingga pesan error tidak terlihat lagi di screen.

Input data yang akan disimulasikan dapat dilakukan dengan dua cara. Dengan

random atau dengan cara manual sebagaimana yang telah dijelaskan sebelumnya.

Gambar 4.3 dibawah ini merupakan tampilan input data secara manual.

Gambar 4.4 Halaman Input Data Manual

50

Akan muncul textfield sebanyak banyak data yang diinputkan oleh user sebelumnya.

Pada frame input data sudah ada 20 textfield yang diset tidak terlihat (visible=false)

dan dengan data yang sudah terisi dimasing-masing textfield. d1 untuk textfield ke-1,

d2 untuk textfield ke-2 dan seterusnya hingga d20 untuk textfield ke-20. Sehingga

memudahkan untuk menampilkan textfield sebanyak banyak data yang dimasukkan

oleh user.

Setelah user memasukkan data yang akan disimulasikan maka user harus menyimpan

data terlebih dahulu. Dengan tombol SAVE data akan tersimpan. Data disimpan

dalam bentuk variabel yang sebelumnya sudah dideklarasikan.

Untuk input data secara random, data akan secara otomatis tersimpan. Data random

tersebut adalah data numeric dengan range antara 0-99. Untuk membangkitkan

bilangan random digunakan listing program 4.2 sebagai berikut :

var acak:Number = 0;

acak =Math.floor(Math.random()*100);

listing program 4.2 script Bilangan random

Setelah data selesai dimasukkan, simulasi sudah bisa dilakukan. Data yang

dimasukkan oleh user bisa digunakan untuk simulasi searching dan sorting.

Halaman awal simulasi searching tampak pada gambar 4.5a terdapat 2 buah

pilihan searching, yang dapat dipilih pada bagian kanan. Terdapat juga textfield untuk

memasukkan data yang akan dicari. Untuk memulai simulasi tekan tombol START.

51

Kemudian akan muncul tampilan seperti terlihat pada gambar 4.5b untuk

simulasi sequential search. simulasi dapat dijalankan dengan dua cara. Yaitu secara

otomatis (play), dan manual (trace).

Gambar 4.5a Halaman simulasi searching

Gambar 4.5b Halaman simulasi Sequentialsearch

52

Script untuk sequential search terletak pada tombol TRACE untuk simulasi manual,

dan terletak pada root untuk simulasi otomatis. Untuk simulasi otomatis digunakan

fungsi onClipEvent (enterFrame). Fungsi tersebut diletakkan di sebuah movie clip.

Script yang digunakan adalah seperti yang terlihat pada listing program 4.3 dibawah

ini :

onClipEvent (load) {

var m:Number;

m = 0;

}

onClipEvent (enterFrame) {

if (this._parent.kecepatan.speed.selectedIndex == 0) {

speed=50;

} else if (this._parent.kecepatan.speed.selectedIndex == 1) {

speed=30;

} else {

speed=10;

}

if (this._parent.animasi == true) {

m++;

if (m%speed == 0) {

this._parent.seqsearch();

}

}

}

listing program 4.3 script OnClipEvent sequential search

53

Variabel animasi terlebih dahulu dideklarasikan di root dengan default false. Dengan

tombol PLAY dan dengan script didalamnya yang berfungsi untuk merubah nilai

variabel animasi menjadi true. Sehingga syarat if (this._parent.animasi ==

true) terpenuhi. Hal ini memicu variable m bertambah terus menerus hingga

rentang waktu m%speed == 0. Variabel speed telah dideklarasikan sebelumnya.

Variable speed berfungsi untuk mengatur delay animasi. Delay itu sendiri dapat

dipilih oleh user dengan dropdown menu kecepatan. Disana terdapat tiga pilihan

kecepatan. 1X, 2X, 3X. Jika menggunakan kecepatan 1X maka speed di-set 50, 2X

speed = 30 dan 3X speed =10. Sehingga untuk simulasi otomatis dapat ditentukan

kecepatan animasi atau lama delay. Misal user menggunakan kecepatan 1X, berarti

setiap kelipatan 50 (12/detik) sekali akan memanggil fungsi untuk pencarian data

yang terletak di root.

Pada gambar 4.5c merupakan tampilan saat simulasi sedang berjalan. Pada bagian

keterangan juga ditampilkan proses perbandingan data yang dicari dengan data index

ke-i.

Gambar 4.5c Halaman simulasi Sequentialsearch

54

Untuk simulasi sequentialsearch, dilakukan dengan potongan listing program 4.4

dibawah ini. Yaitu fungsi seqsearch yang diletakkan pada frame.

function seqsearch() {

pointer._x = this['_t'+j+'_']._x;

pointer._y = this['_t'+j+'_']._y;

if (j<=n) {

if (Number(this['_t'+j+'_'].text) == cari) {

text1.text = this['_t'+j+'_'].text;

text2.text = "=";

text3.text = cari;

ket.text = "DATA "+cari+" DITEMUKAN";

seq_btn.enabled = false;

seq_btn_t.enabled = false;

seq_btn_p.enabled = false;

clear.enabled = true;

seq_btn._alpha = 50;

seq_btn_t._alpha = 50;

seq_btn_p._alpha = 50;

clear._alpha = 100;

delete this.onEnterFrame;

} else if (Number(this['_t'+j+'_'].text)>cari) {

text1.text = this['_t'+j+'_'].text;

text2.text = ">";

text3.text = cari;

ket.text = "";

j++;

55

} else {

text1.text = this['_t'+j+'_'].text;

text2.text = "<";

text3.text = cari;

ket.text = "";

j++;

}

} else {

ket.text = "DATA "+cari+" TIDAK DITEMUKAN";

seq_btn.enabled = false;

seq_btn_t.enabled = false;

seq_btn_p.enabled = false;

clear.enabled = true;

seq_btn._alpha = 50;

seq_btn_t._alpha = 50;

seq_btn_p._alpha = 50;

clear._alpha = 100;

delete this.onEnterFrame;

}

}

listing program 4.4 script fungsi sequential search

Langkah-langkah yang dilakukan dalam simulasi sequential search ini adalah sebagai

berikut :

56

1. Melakukan pengecekan, apakah j lebih kecil atau sama dengan n (if

(j<=n)). Sebelumnya, variabel j dideklarasikan terlebih dahulu di frame.

Yaitu dengan data j=1. Sedangkan untuk variabel n, merupakan banyak data

yang akan disimulasikan, dan sudah di-set pada saat input data oleh user. Jika

syarat tersebut terpenuhi, maka dilakukan lagi pengecekan, apakah data pada

indek ke-j sama dengan data yang dicari (if

(Number(this['_t'+j+'_'].text) == cari)). Jika sama, simulasi

dihentikan, dan data ditemukan. Jika syarat tersebut tidak terpenuhi, maka

dilakukan proses yang sama lagi seperti proses awal. Tetapi sebelumnya

variabel j ditambah dengan 1 (j++).

2. Jika syarat j<=n sudah tidak memenuhi lagi, simulasi pencarian data

dihentikan. Data tidak ditemukan.

Gambar 4.5d dibawah menunjukkan akhir dari pencarian data sequential search. Data

ditemukan dan simulasi dihentikan. Pada bagian keterangan akan menampilkan hasil

dari pencarian. Apakah data ditemukan atau tidak. Jika simulasi selesai dilakukan,

maka tombol navigasi PLAY, PAUSE, TRACE kan di-disable. Sedangkan untuk

tombol CLEAR akan muncul. Tombol TRACE berfungsi untuk me-reset kembali

keposisi semula sebelum simulasi dijalankan, yaitu pada halaman awal simulasi

searching.

57

Gambar 4.5d Halaman Simulasi Sequentialsearch

Untuk simulasi binarysearch tampilan awal simulasi tampak seperti pada gambar

4.6a dibawah. Setelah tombol START ditekan, maka secara otomatis data akan

diurutkan. Dalam hal ini data diurutkan secara ascending. Pengurutan data dilakukan

dengan metode bubblesort. Pada dasarnya tampilan simulasi binarysearch sama

dengan simulasi sequentialsearch. Hal yang membedakan antara sequentialsearch

dengan binary search adalah prosesnya. Tiga komponen yang sangat penting untuk

simulasi binarysearch. Yaitu nilai awal (first), nilai tengah (mid) dan nilai akhir (last)

. Seperti yang terlihat pada gambar 4.6b.

58

Gambar 4.6a Halaman Simulasi Binarysearch

Gambar 4.6b Halaman Simulasi Binarysearch

59

Berikut potongan script fungsi binsearch seperti terlihat pada listing program 4.5

dibawah ini :

function binsearch() {

if (first_<=last_) {

mid = (first_+last_)/2;

mid = Math.round(mid);

mid_p._x = this['_t'+mid+'_']._x;

mid_p._y = this['_t'+mid+'_']._y;

first_p._x = this['_t'+first_+'_']._x;

first_p._y = this['_t'+first_+'_']._y;

last_p._x = this['_t'+last_+'_']._x;

last_p._y = this['_t'+last_+'_']._y;

ket.text = "mid :"+this['_t'+mid+'_'].text+" , first

:"+this['_t'+first_+'_'].text+" , last :"+this['_t'+last_+'_'].text;

if (Number(this['_t'+mid+'_'].text) == cari) {

ket.text = "DATA "+cari+" DITEMUKAN";

bin_btn.enabled = false;

bin_btn_t.enabled = false;

bin_btn_p.enabled = false;

clear.enabled = true;

bin_btn._alpha = 50;

bin_btn_t._alpha = 50;

bin_btn_p._alpha = 50;

clear._alpha = 100;

text1.text = this['_t'+mid+'_'].text;

text2.text = "=";

60

text3.text = cari;

} else if (Number(this['_t'+mid+'_'].text)>cari) {

last_ = mid-1;

text1.text = this['_t'+mid+'_'].text;

text2.text = ">";

text3.text = cari;

} else {

first_ = mid+1;

text1.text = this['_t'+mid+'_'].text;

text2.text = "<";

text3.text = cari;

}

} else {

ket.text = "DATA "+cari+" TIDAK DITEMUKAN";

bin_btn.enabled = false;

bin_btn_t.enabled = false;

bin_btn_p.enabled = false;

clear.enabled = true;

bin_btn._alpha = 50;

bin_btn_t._alpha = 50;

bin_btn_p._alpha = 50;

clear._alpha = 100;

mid_p._x = -300;

mid_p._y = -500;

first_p._x = -250;

first_p._y = -500;

61

last_p._x = -200;

last_p._y = -500;

}

}

listing program 4.5 script fungsi binary search

Langkah-langkah yang dilakukan dalam simulasi binary search ini adalah sebagai

berikut :

1. Melakukan pengecekan apakah first_<=last_ (if (first_<=last_)).

Variabel first_ dan variabel last_ sebelumnya sudah dideklarasikan di frame.

Dengan first_=1 dan last_=n (banyak data).

2. Jika first_<=last_ terpenuhi, maka langkah selanjutnya adalah mencari

nilai tengah (mid). Yaitu dengan cara menjumlahkan first_ dengan last_,

kemudian dibagi dua. mid=(first_+last_)/2. Kemudian dilakukan

pembulatan nilai tengah, mid = Math.round(mid).

3. Setelah mendapatkan nilai tengah, maka dilakukan pengecekan kembali.

Apakah nilai tengah sama dengan data yang dicari (if

(Number(this['_t'+mid+'_'].text) == cari)). Jika syarat tersebut

terpenuhi, maka simulasi dihentikan. Data ditemukan. Jika syarat tersebut

tidak terpenuhi, maka dilakukan pengecekan kembali. Apakah nilai tengah

(mid) lebih besar dari data yang dicari (else if

(Number(this['_t'+mid+'_'].text)>cari)). Jika syarat tersebut

terpenuhi, maka nilai akhir (last_) di-set menjadi nilai tengah dikurang 1.

62

last_ = mid – 1. Jika syarat tersebut tidak terpenuhi, maka nilai awal

(first_) di-set menjadi nilai tengah ditambah 1. first_ = mid + 1.

Kemudian diulang kembali langkah ke-1.

4. Jika first_<=last_ sudah tidak terpenuhi lagi, maka pencarian dihentikan.

Data tidak ditemukan.

Gambar 4.6c menunjukkan akhir dari pencarian data binary search. Data ditemukan

dan simulasi dihentikan. Pada bagian keterangan akan menampilkan hasil dari

pencarian. Apakah data ditemukan atau tidak. Jika simulasi selesai dilakukan, maka

tombol navigasi PLAY, PAUSE, TRACE kan di-disable. Sedangkan untuk tombol

CLEAR akan muncul. Tombol TRACE berfungsi untuk me-reset kembali keposisi

semula sebelum simulasi dijalankan, yaitu pada halaman awal simulasi searching.

Gambar 4.6c Halaman simulasi Binarysearch

63

Gambar 4.7 dibawah merupakan tampilan awal untuk simulasi sorting setelah user

melakukan input data. Pada gambar 4.7 terdapat 20 data yang akan diurutkan.

Terdapat 3 macam algoritma sorting yang akan disimulasikan dengan masing-masing

2 metode pengurutan, yaitu ascending atau descending yang bisa dipilih oleh user.

Gambar 4.7 Halaman Simulasi sorting

Gambar 4.8a dibawah merupakan tampilan awal setelah user memilih simulasi

selectionsort. Pada dasarnya, tombol navigasi yang ada untuk simulasi selectionsort

ini sama dengan simulasi searching yang telah dibahas sebelumnya. Terdapat tombol

PLAY, TRACE, PAUSE, CLEAR dan dropdown menu untuk mengatur kecepatan

simulasi yang prinsip kerjanya sama dengan prinsip kerja tombol-tombol navigasi

dari simulasi searching. Prinsip kerja dari selectionsort adalah dengan melakukan

64

perulangan, mencari data terkecil dari indeks ke-i+1 (iterasi+1) hingga indeks

terakhir. Dan menukarnya dengan indeks ke-i, jika data terkecil dari indeks ke-i+1

hingga indeks terakhir lebih kecil dari indeks ke-i. Komponen nilai terkecil yang akan

digunakan untuk menjelaskan langkah-langkah simulasi selectionsort ini.

Gambar 4.8a Halaman Simulasi Selectionsort Ascending

Gambar 4.8b Halaman Simulasi Selectionsort Ascending

65

Gambar 4.8b menunjukkan simulasi selectionsort secara ascending sedang berjalan.

Untuk menjelaskan proses dari algoritma selectionsort, digunakan 2 buah penunjuk

(pointer). Yaitu iterasi ke- (yang berwarna putih), dan pointer nilai terkecil (yang

berwarna merah). Jika terjadi pertukaran data, maka pesan “TUKAR” akan muncul

dibagian keterangan. Selain itu, bagian keterangan akan menampilkan nilai terkecil

dari indeks ke-i+1 hingga indeks terakhir. Berikut adalah potongan script program

untuk simulasi selectionsort. Yang terlihat pada listing program 4.6 dibawah ini:

function selectionsort() {

this.ket5.text = "";

if (j<n) {

pointer1._x = this['_t'+(j)+'_']._x;

pointer1._y = this['_t'+(j)+'_']._y;

var min = Number(this['_t'+(j+1)+'_'].text);

var min_ = '_t'+(j+1)+'_';

for (var x1 = j+1; x1<=n; x1++) {

if (Number(this['_t'+(x1+1)+'_'].text)<min) {

min = Number(this['_t'+(x1+1)+'_'].text);

min_ = '_t'+(x1+1)+'_';

}

}

pointer2._x = this[min_]._x;

pointer2._y = this[min_]._y;

66

if

(Number(this[min_].text)<Number(this['_t'+(j)+'_'].text)) {

swap++;

var alpha = 100;

this.ket1.text = this['_t'+(j)+'_'].text;

this.ket2.text = ">";

this.ket3.text = this[min_].text;

this.ket4.text = "min index ke "+(j+1)+"-"+n+"

:"+this[min_].text;

this.ket5.text = "TUKAR";

onEnterFrame = function () {

this.play_.enabled = false;

this.play_t.enabled = false;

alpha -= 10;

this[min_]._alpha = alpha;

this['_t'+(j-1)+'_']._alpha = alpha;

if (alpha<0) {

delete this.onEnterFrame;

this[min_]._alpha = 100;

this['_t'+(j-1)+'_']._alpha = 100;

var temp = this[min_].text;

this[min_].text = this['_t'+(j-

1)+'_'].text;

this['_t'+(j-1)+'_'].text = temp;

this.play_.enabled = true;

this.play_t.enabled = true;

67

}

};

//end function

} else if

(Number(this[min_].text)>Number(this['_t'+(j)+'_'].text)) {

this.ket1.text = this['_t'+(j)+'_'].text;

this.ket2.text = "<";

this.ket3.text = this[min_].text;

this.ket4.text = "min index ke "+(j+1)+"-"+n+"

:"+this[min_].text;

this.ket5.text = "";

} else {

this.ket1.text = this['_t'+(j)+'_'].text;

this.ket2.text = "=";

this.ket3.text = this[min_].text;

this.ket4.text = "min index ke "+(j+1)+"-"+n+"

:"+this[min_].text;

this.ket5.text = "";

}

j++;

it++;

} else {

pointer1._x = -300;

pointer1._y = -500;

pointer2._x = -255;

pointer2._y = -500;

68

this.clear_._alpha = 100;

this.play_._alpha = 50;

this.pause_._alpha = 50;

this.play_t._alpha = 50;

this.clear_.enabled = true;

this.play_.enabled = false;

this.pause_.enabled = false;

this.play_t.enabled = false;

this.ket4.text = "iterasi :"+it+" , swap :"+swap;

this.ket5.text = "TERURUT";

}

//end if 1

}

listing program 4.6 script fungsi selection sort ascending

Langkah-langkah yang dilakukan dalam simulasi sequential sort ascending ini adalah

sebagai berikut :

1. Melakukan pengecekan apakah j kurang dari n (if (j<n)), variabel j

sebelumnya telah dideklarasikan di frame. Nilai j awal di-set j=1. Sedangkan

untuk variabel n merupakan banyak data. variabel ini di dapat dari user, saat

user melakukan proses input data.

2. Jika syarat tersebut terpenuhi, maka langkah selanjutnya adalah mencari nilai

terkecil indeks ke- j+1 hingga indeks terakhir. Digunakan statement for, untuk

69

mencari nilai terkecil. Kemudian nilai terkecil tersebut ditampung dalam

variabel min.

3. Langkah selanjutnya adalah melakukan pengecekan, apakah nilai terkecil

indeks ke- j+1 hingga indeks terakhir lebih kecil dari indeks ke- j (if

(Number(this[min_].text)<Number(this['_t'+(j)+'_'].text))). Jika

syarat tersebut terpenuhi, maka dilakukan pertukaran data. nilai terkecil dari

indeks ke- j+1 hingga indeks terakhir ditukar dengan nilai dari indeks ke- j.

4. Proses langkah 1-3 akan terus berulang, hingga syarat j<n tidak terpenuhi

lagi. simulasi dihentikan, data sudah terurut.

Untuk selection sort descending pada prinsipnya hampir sama dengan selection sort

ascending. Perbadaan yang mendasar adalah pengurutan data. Pada selection sort

descending data akan diurutkan menurun dari besar ke kecil. Untuk itu, digunakan

fungsi yang berbeda. Script program untuk selection sort descending dapat dilihat

pada listing program 4.7 dibawah ini :

function selectionsort_dsc() {

this.ket5.text = "";

pointer2.pointer2_text.text="MAX";

if (j<n) {

pointer1._x = this['_t'+(j)+'_']._x;

pointer1._y = this['_t'+(j)+'_']._y;

var min = Number(this['_t'+(j+1)+'_'].text);

var min_ = '_t'+(j+1)+'_';

70

for (var x1 = j+1; x1<=n; x1++) {

if (Number(this['_t'+(x1+1)+'_'].text)>min) {

min = Number(this['_t'+(x1+1)+'_'].text);

min_ = '_t'+(x1+1)+'_';

}

}

pointer2._x = this[min_]._x;

pointer2._y = this[min_]._y;

if

(Number(this[min_].text)>Number(this['_t'+(j)+'_'].text)) {

swap++;

var alpha = 100;

this.ket1.text = this['_t'+(j)+'_'].text;

this.ket2.text = "<";

this.ket3.text = this[min_].text;

this.ket4.text = "max index ke "+(j+1)+"-"+n+"

:"+this[min_].text;

this.ket5.text = "TUKAR";

onEnterFrame = function () {

this.play_.enabled = false;

this.play_t.enabled = false;

alpha -= 10;

this[min_]._alpha = alpha;

this['_t'+(j-1)+'_']._alpha = alpha;

if (alpha<0) {

delete this.onEnterFrame;

71

this[min_]._alpha = 100;

this['_t'+(j-1)+'_']._alpha = 100;

var temp = this[min_].text;

this[min_].text = this['_t'+(j-

1)+'_'].text;

this['_t'+(j-1)+'_'].text = temp;

this.play_.enabled = true;

this.play_t.enabled = true;

}

};

//end function

} else if

(Number(this[min_].text)<Number(this['_t'+(j)+'_'].text)) {

this.ket1.text = this['_t'+(j)+'_'].text;

this.ket2.text = ">";

this.ket3.text = this[min_].text;

this.ket4.text = "max index ke "+(j+1)+"-"+n+"

:"+this[min_].text;

this.ket5.text = "";

} else {

this.ket1.text = this['_t'+(j)+'_'].text;

this.ket2.text = "=";

this.ket3.text = this[min_].text;

this.ket4.text = "max index ke "+(j+1)+"-"+n+"

:"+this[min_].text;

this.ket5.text = "";

72

}

j++;

it++;

} else {

pointer1._x = -300;

pointer1._y = -500;

pointer2._x = -255;

pointer2._y = -500;

this.clear_._alpha = 100;

this.play_._alpha = 50;

this.pause_._alpha = 50;

this.play_t._alpha = 50;

this.clear_.enabled = true;

this.play_.enabled = false;

this.pause_.enabled = false;

this.play_t.enabled = false;

this.ket4.text = "iterasi :"+it+" , swap :"+swap;

this.ket5.text = "TERURUT";

}

//end if 1

}

listing program 4.7 script fungsi selection sort descending

Langkah-langkah yang dilakukan dalam simulasi sequential sort ascending ini adalah

sebagai berikut :

73

1. Melakukan pengecekan apakah j lebih kecil dari n (if (j<n)), variabel j

sebelumnya telah dideklarasikan di frame. Nilai j awal di-set j=1. Sedangkan

untuk variabel n merupakan banyak data. variabel ini di dapat dari user, saat

user melakukan proses input data.

2. Jika syarat tersebut terpenuhi, maka langkah selanjutnya adalah mencari nilai

terbesar indeks ke- j+1 hingga indeks terakhir. Digunakan statement for,

untuk mencari nilai terbesar. Kemudian nilai terbesar tersebut ditampung

dalam variabel min.

3. Langkah selanjutnya adalah melakukan pengecekan, apakah nilai terterbesar

indeks ke- j+1 hingga indeks terakhir lebih besar dari indeks ke- j. Jika syarat

tersebut terpenuhi, maka dilakukan pertukaran data. nilai terbesar dari indeks

ke- j+1 hingga indeks terakhir ditukar dengan nilai dari indeks ke- j.

4. Proses langkah 1-3 akan terus berulang, hingga syarat j<n tidak terpenuhi

lagi. simulasi dihentikan, data sudah terurut secara descending.

Gambar 4.9a adalah tampilan awal untuk simulasi bubblesort ascending. Untuk

tampilan sama dengan tampilan simulasi sebelumnya yaitu selectionsort. Tombol-

tombol navigasi dan juga pengatur kecepatan simulasi juga sama.

74

Gambar 4.9a Halaman Simulasi Bubblesort Ascending

Gambar 4.9b menunjukan simulasi algoritma bubblesort ascending sedang berjalan.

Ada 2 buah penunjuk (pointer), untuk menggambarkan jalannya simulasi algoritma

bubblesort. Proses pengurutan data dengan algoritma bubblesort merupakan proses

pengurutan data yang paling lama dibanding dengan pengurutan data dengan metode

selection sort atau insertion sort. Algoritma bubblesort ini pada prinsipnya adalah

melewatkan data dalam larik beberapa kali. Setiap melewati larik dilakukan

perbandingan setiap elemen dilarik dengan elemen sesudahnya dan dilakukan

pertukaran bila tidak urut. Berikut adalah potongan script yang digunakan untuk

menyimulasikan algoritma bubblesort, seperti yang terlihat pada listing program 4.8

75

Gambar 4.9b Halaman Simulasi Bubblesort Ascending

function bubblesort() {

//bubble sort

this.ket5.text = "";

if (j<n) {

if (i<(n-j)) {

point1._x = this['_t'+(i+1)+'_']._x;

point1._y = this['_t'+(i+1)+'_']._y;

point2._x = this['_t'+(i+2)+'_']._x;

point2._y = this['_t'+(i+2)+'_']._y;

for (var x1 = 1; x1<=n; x1++) {

if (point1._x == this['_t'+x1+'_']._x &&

point1._y == this['_t'+x1+'_']._y) {

var data1 = '_t'+x1+'_';

}

76

if (point2._x == this['_t'+x1+'_']._x &&

point2._y == this['_t'+x1+'_']._y) {

var data2 = '_t'+x1+'_';

}

}

//end for

if

(Number(this[data1].text)>Number(this[data2].text)) {

swap++;

this.ket1.text = this[data1].text;

this.ket2.text = ">";

this.ket3.text = this[data2].text;

this.ket4.text = "iterasi :"+it+" ,swap

:"+swap;

this.ket5.text = "TUKAR";

var alp = 100;

onEnterFrame = function () {

alp -= 20;

this[data1]._alpha = alp;

this[data2]._alpha = alp;

if (alp<0) {

delete this.onEnterFrame;

this[data1]._alpha = 100;

this[data2]._alpha = 100;

var temp = this[data1].text;

77

this[data1].text =

this[data2].text;

this[data2].text = temp;

}

};

} else if

(Number(this[data1].text)<Number(this[data2].text)) {

this.ket1.text = this[data1].text;

this.ket2.text = "<";

this.ket3.text = this[data2].text;

this.ket4.text = "iterasi :"+it+" ,swap

:"+swap;

this.ket5.text = "";

} else {

this.ket1.text = this[data1].text;

this.ket2.text = "=";

this.ket3.text = this[data2].text;

this.ket4.text = "iterasi :"+it+" ,swap

:"+swap;

this.ket5.text = "";

}

i++;

it++;

} else {

j++;

78

i = 0;

}

} else {

this.ket4.text = "iterasi :"+it+" ,swap :"+swap;

this.ket5.text = "TERURUT";

this.play_s.enabled = false;

this.play_s._alpha = 50;

this.pause_s.enabled = false;

this.pause_s._alpha = 50;

this.play_s_t.enabled = false;

this.play_s_t._alpha = 50;

this.clear_.enabled = true;

this.clear_._alpha = 100;

point1._x = -320;

point1._y = -500;

point2._x = -340;

point2._y = -500;

}

}

listing program 4.8 script fungsi bubble sort ascending

Langkah-langkah yang dilakukan dalam simulasi bubble sort ascending ini adalah

sebagai berikut :

79

1. Melakukan pengecekan apakah j lebih kecil dari n (if (j<n)), variabel j

sebelumnya telah dideklarasikan di frame. Nilai j awal di-set j=1. Sedangkan

untuk variabel n merupakan banyak data. variabel ini di dapat dari user, saat

user melakukan proses input data.

2. Jika syarat j<n terpenuhi, maka dilakukan pengecekan apakah i<(n-j).

Variabel i sebelumnya sudah dideklarasikan di frame, i = 0.

3. Jika syarat tersebut terpenuhi, langkah selanjutnya adalah melakukan

pengecekan terhadap data ke – (i+1) apakah lebih besar dibanding dengan

data ke – (i+2). Jika syarat tersebut terpenuhi, maka dilakukan pertukaran data

antara data indeks ke – (i+1) dengan data sesudahnya, yaitu data indeks ke –

(i+2). Kemudian variabel i dtambah dengan 1 (i++).

4. Langkah 2-3 diulang terus menerus, hingga syarat untuk i<(n-j) tidak

terpenuhi lagi. Kemudian variabel j ditambah dengan 1 (j++) dan i di-set

kembali menjadi 0 (i=0). Setelah itu kembali ke langkah pertama (langkah 1)

dengan nilai variabel j yang baru setelah dilakukan operasi penambahan

dengan 1 terhadap j (j++).

5. Simulasi akan dihentikan jika syarat j<n sudah tidak terpenuhi lagi. Data

sudah terurut.

Untuk bubble sort descending pada prinsipnya hampir sama dengan bubble sort

ascending. Perbedaan yang mendasar adalah pengurutan data. Pada bubble sort

80

descending data akan diurutkan menurun dari besar ke kecil. Untuk itu, digunakan

fungsi yang berbeda. Script program untuk bubble sort descending dapat dilihat pada

listing program 4.9 dibawah ini :

function bubblesort_dsc() {

//bubble sort

this.ket5.text = "";

if (j<n) {

if (i<(n-j)) {

point1._x = this['_t'+(i+1)+'_']._x;

point1._y = this['_t'+(i+1)+'_']._y;

point2._x = this['_t'+(i+2)+'_']._x;

point2._y = this['_t'+(i+2)+'_']._y;

for (var x1 = 1; x1<=n; x1++) {

if (point1._x == this['_t'+x1+'_']._x &&

point1._y == this['_t'+x1+'_']._y) {

var data1 = '_t'+x1+'_';

}

if (point2._x == this['_t'+x1+'_']._x &&

point2._y == this['_t'+x1+'_']._y) {

var data2 = '_t'+x1+'_';

}

}

//end for

if

(Number(this[data1].text)<Number(this[data2].text)) {

81

swap++;

this.ket1.text = this[data1].text;

this.ket2.text = "<";

this.ket3.text = this[data2].text;

this.ket4.text = "iterasi :"+it+" ,swap

:"+swap;

this.ket5.text = "TUKAR";

var alp = 100;

onEnterFrame = function () {

play_s_t.enabled=false;

alp -= 20;

this[data1]._alpha = alp;

this[data2]._alpha = alp;

if (alp<0) {

delete this.onEnterFrame;

this[data1]._alpha = 100;

this[data2]._alpha = 100;

var temp = this[data1].text;

this[data1].text =

this[data2].text;

this[data2].text = temp;

play_s_t.enabled=true;

}

};

} else if

(Number(this[data1].text)>Number(this[data2].text)) {

82

this.ket1.text = this[data1].text;

this.ket2.text = ">";

this.ket3.text = this[data2].text;

this.ket4.text = "iterasi :"+it+" ,swap

:"+swap;

this.ket5.text = "";

} else {

this.ket1.text = this[data1].text;

this.ket2.text = "=";

this.ket3.text = this[data2].text;

this.ket4.text = "iterasi :"+it+" ,swap

:"+swap;

this.ket5.text = "";

}

i++;

it++;

} else {

j++;

i = 0;

}

} else {

this.ket4.text = "iterasi :"+it+" ,swap :"+swap;

this.ket5.text = "TERURUT";

this.play_s.enabled = false;

this.play_s._alpha = 50;

this.pause_s.enabled = false;

83

this.pause_s._alpha = 50;

this.play_s_t.enabled = false;

this.play_s_t._alpha = 50;

this.clear_.enabled = true;

this.clear_._alpha = 100;

point1._x = -320;

point1._y = -500;

point2._x = -340;

point2._y = -500;

}

}

listing program 4.9 script fungsi bubble sort descending

Langkah-langkah yang dilakukan dalam simulasi bubble sort ascending ini adalah

sebagai berikut :

1. Melakukan pengecekan apakah j lebih kecil dari n (if (j<n)), variabel j

sebelumnya telah dideklarasikan di frame. Nilai j awal di-set j=1. Sedangkan

untuk variabel n merupakan banyak data. variabel ini di dapat dari user, saat

user melakukan proses input data.

2. Jika syarat j<n terpenuhi, maka dilakukan pengecekan apakah i<(n-j).

Variabel i sebelumnya sudah dideklarasikan di frame, i = 0.

3. Jika syarat tersebut terpenuhi, langkah selanjutnya adalah melakukan

pengecekan terhadap data ke – (i+2) apakah lebih besar dibanding dengan

data ke – (i+1) (if (Number(this[data1].text) < Number (this

84

[data2]. text ))). Jika syarat tersebut terpenuhi, maka dilakukan

pertukaran data antara data indeks ke – (i+1) dengan data sesudahnya, yaitu

data indeks ke – (i+2). Kemudian variabel i ditambah dengan 1 (i++).

4. Langkah 2-3 diulang terus menerus, hingga syarat untuk i<(n-j) tidak

terpenuhi lagi. Kemudian variabel j ditambah dengan 1 (j++) dan i di-set

kembali menjadi 0 (i=0). Setelah itu kembali ke langkah pertama (langkah 1)

dengan nilai variabel j yang baru setelah dilakukan operasi penambahan

dengan 1 terhadap j (j++).

5. Simulasi akan dihentikan jika syarat j<n sudah tidak terpenuhi lagi. Data

sudah terurut secara descending.

Gambar 4.10a adalah tampilan awal untuk simulasi algoritma insertionsort

ascending. Untuk tampilan sama dengan tampilan simulasi sebelumnya. Tombol-

tombol navigasi dan juga pengatur kecepatan simulasi juga sama.

Gambar 4.10a Halaman Simulasi Insertionsort Ascending

85

Gambar 4.10b menunjukan simulasi algoritma insertionsort ascending sedang

berjalan. Pada simulasi ini hanya digunakan satu penunjuk (pointer) untuk

menggambarkan berjalannya algoritma pengurutan data insertionsort. Pengurutan

data dengan metode insertionsort adalah metode pengurutan dengan cara

menyisipkan elemen larik pada posisi yang tepat. Pada posisi yang tepat dilakukan

dengan pencarian beruntun dalam larik, selama pencarian posisi yang tepat selalu

dilakukan pergeseran elemen larik.

Gambar 4.10b Halaman Simulasi Insertionsort Ascending

Berikut adalah potongan script untuk menyimulasikan algoritma insertionsort

ascending, seperti yang terlihat pada listing program 4.10 dibawah ini:

function insertionsort() {

//insertionsort

this.ket5.text = "";

86

this.ket6.text = "";

if (i<n) {

var temp = Number(this['_t'+(i+1)+'_'].text);

var temp1 = this['_t'+(i+1)+'_'].text;

pointer_i._x = this['_t'+(i+1)+'_']._x;

pointer_i._y = this['_t'+(i+1)+'_']._y;

j = i;

while (temp<=Number(this['_t'+j+'_'].text) && j>=1) {

this['_t'+(j+1)+'_'].text = this['_t'+j+'_'].text;

j--;

}

if (Number(this['_t'+(j+1)+'_'].text)>temp) {

this.ket1.text = this['_t'+(j+1)+'_'].text;

this.ket2.text = "";

this.ket3.text = "";

this.ket4.text = "POSISI BENAR";

this['_t'+(j+1)+'_'].text = temp1;

}

if (Number(this['_t'+(j+1)+'_'].text) ==

Number(this['_t'+(i+1)+'_'].text)) {

this.ket1.text = this['_t'+(j+1)+'_'].text;

this.ket2.text = "";

this.ket3.text = "";

this.ket4.text = "POSISI BENAR";

this['_t'+(j+1)+'_'].text = temp1;

} else {

87

swap++;

this.ket1.text = this['_t'+(j+1)+'_'].text;

this.ket2.text = "->";

this.ket3.text = j+1;

this.ket4.text = "index ke "+(j+1)+"-"+i+" geser

ke kanan";

this.ket5.text = "TUKAR";

this.ket6.text = "index";

this['_t'+(j+1)+'_'].text = temp1;

}

i++;

} else {

play_i.enabled = false;

pause_i.enabled = false;

play_i_t.enabled = false;

clear_.enabled = true;

play_i._alpha = 50;

pause_i._alpha = 50;

play_i_t._alpha = 50;

clear_._alpha = 100;

pointer_i._x = -200;

pointer_i._y = -500;

this.ket1.text = "";

this.ket2.text = "";

this.ket3.text = "";

this.ket4.text = "iterasi : "+i+", swap : "+swap;

88

this.ket5.text = "TERURUT";

this.ket6.text = "";

}

}

listing program 4.10 script fungsi insertion sort ascending

Langkah-langkah yang dilakukan dalam simulasi insertion sort ascending ini adalah

sebagai berikut :

1. Melakukan pengecekan, apakah i lebih kecil dari n (if (i<n)). Variabel i

sebelumnya sudah dideklarasikan di frame. Dengan data i=0. Sedangkan

variabel n adalah variabel banyak data hasil dari inputan user.

2. Jika syarat i<n terpenuhi, maka data pertama data ke – i+1 dianggap sudah

tepat pada posisinya. Data tersebut disimpan dalam variabel temp. Kemudian

variabel j di-set sama dengan i (j = i).

3. Langkah selanjutnya adalah mencari posisi yang tepat dari data yang disimpan

di variabel temp. untuk langkah pertama data dianggap sudah pada posisinya.

Sehingga proses pencarian posisi yang tepat dimulai di interasi ke-2.

Pencarian posisi yang paling tepat dilakukan dengan statement perulangan

while. Dengan syarat data temp lebih kecil atau sama dengan data indeks ke –j

89

dan j>=1. Jika syarat tersebut terpenuhi, maka data ke – j digeser ke kanan.

Data ke – j+1 = data ke – j dan variabel j dikurang dengan 1 (j--).

4. Kemudian dilakukan pengecekan, apakah data temp lebih kecil dari data ke –j

(if (Number(this['_t'+(j+1)+'_'].text)>temp)). Jika syarat tersebut

terpenuhi, maka data ke – j+1 di ganti dengan data temp. variabel i ditambah

dengan 1 (i++).

5. Langkah 1-4 diulang terus menerus hingga syarat i<n tidak terpenuhi lagi.

Simulasi dihentikan, data terurut.

Untuk insertion sort descending pada prinsipnya hampir sama dengan insertion sort

ascending. Perbedaan yang mendasar adalah pengurutan data. Pada insertion sort

descending data akan diurutkan menurun dari besar ke kecil. Untuk itu, digunakan

fungsi yang berbeda. Script program untuk insertion sort descending dapat dilihat

pada listing program 4.11 dibawah ini :

function insertionsort_dsc() {

//insertionsort dsc

this.ket5.text="";

this.ket6.text="";

trace(it);

if(i<n)

{

var temp=Number(this['_t'+(i+1)+'_'].text);

90

var temp1=this['_t'+(i+1)+'_'].text;

pointer_i._x=this['_t'+(i+1)+'_']._x;

pointer_i._y=this['_t'+(i+1)+'_']._y;

j=i;

while(temp>=Number(this['_t'+j+'_'].text) && j>=1)

{

this['_t'+(j+1)+'_'].text=this['_t'+j+'_'].text;

j--;

}

if(Number(this['_t'+(j+1)+'_'].text)<temp)

{

this.ket1.text=this['_t'+(j+1)+'_'].text;

this.ket2.text="";

this.ket3.text="";

this.ket4.text="POSISI BENAR";

this['_t'+(j+1)+'_'].text=temp1;

}

if(Number(this['_t'+(j+1)+'_'].text)==Number(this['_t'+(i+1)+'

_'].text))

{

91

this.ket1.text=this['_t'+(j+1)+'_'].text;

this.ket2.text="";

this.ket3.text="";

this.ket4.text="POSISI BENAR";

this['_t'+(j+1)+'_'].text=temp1;

}

else

{

swap++;

this.ket1.text=this['_t'+(j+1)+'_'].text;

this.ket2.text="->";

this.ket3.text=j+1;

this.ket4.text="index ke "+(j+1)+"-"+i+" geser ke

kanan";

this.ket5.text="TUKAR";

this.ket6.text="index";

this['_t'+(j+1)+'_'].text=temp1;

}

i++;

it++;

}//end if 1

else

92

{

play_i.enabled = false;

pause_i.enabled = false;

play_i_t.enabled = false;

clear_.enabled = true;

play_i._alpha = 50;

pause_i._alpha = 50;

play_i_t._alpha = 50;

clear_._alpha = 100;

pointer_i._x = -200;

pointer_i._y = -500;

this.ket1.text="";

this.ket2.text="";

this.ket3.text="";

this.ket4.text="iterasi : "+it+", swap : "+swap;

this.ket5.text="TERURUT";

this.ket6.text="";

}

}

listing program 4.11 script fungsi insertion sort descending

Langkah-langkah yang dilakukan dalam simulasi insertion sort ascending ini adalah

sebagai berikut :

93

1. Melakukan pengecekan, apakah i lebih kecil dari n (if(i<n)). Variabel i

sebelumnya sudah dideklarasikan di frame. Dengan data i=0. Sedangkan

variabel n adalah variabel banyak data hasil dari inputan user.

2. Jika syarat i<n terpenuhi, maka data pertama data ke – i+1 dianggap sudah

tepat pada posisinya. Data tersebut disimpan dalam variabel temp. Kemudian

variabel j di-set sama dengan i (j = i).

3. Langkah selanjutnya adalah mencari posisi yang tepat dari data yang disimpan

di variabel temp. untuk langkah pertama data dianggap sudah pada posisinya.

Sehingga proses pencarian posisi yang tepat dimulai di interasi ke-2.

Pencarian posisi yang paling tepat dilakukan dengan statement perulangan

while. Dengan syarat data temp lebih besar atau sama dengan data indeks ke –

j dan j>=1. Jika syarat tersebut terpenuhi, maka data ke – j digeser ke kanan.

Data ke – j+1 = data ke – j dan variabel j dikurang dengan 1 (j--).

4. Kemudian dilakukan pengecekan, apakah data temp lebih kecil dari data ke –j.

jika syarat tersebut terpenuhi, maka data ke – j+1 di ganti dengan data temp.

variabel i ditambah dengan 1 (i++).

5. Langkah 1-4 diulang terus menerus hingga syarat i<n tidak terpenuhi lagi.

Simulasi dihentikan, data terurut.

94

BAB V

ANALISIS HASIL

Pada bab ini berisi tentang pengalaman penulis dalam pengembangan aplikasi

dari tahap perancangan sampai tahap implementasi. Hal-hal yang di analisis pada bab

ini meliputi penggunaan metodologi pengembangan multimedia, analisis tools dan

analisis program.

5.1 Penggunaan Metodologi Pengembangan Multimedia

Menurut Arch Luther (Luther 1994), pengembangan multimedia dilakukan

berdasarkan 6 tahap, yaitu konsep, perancangan, pengumpulan bahan, pembuatan,

testing dan distribusi. Namun, dalam pembuatan program ini dipakai 5 tahap

pengembangan multimedia, yaitu konsep, perancangan, pengumpulan bahan,

pembuatan, dan testing.

Pemanfaatan metodologi pengembangan multimedia untuk membangun

aplikasi simulasi algoritma sudah tepat. Karena tahap-tahap pengembangannya

mudah untuk diikuti. Misalnya pada tahap konsep dijelaskan bagaimana tujuan dan

identifikasi pengguna, sehingga pada tahap perancangan harus dilakukan sesuai

tujuan dan hasil identifikasi pengguna yang sudah dibuat pada tahap konsep.

Kemudian pada tahap pembuatan harus mengikuti perancangan sistem yang telah

dibuat pada tahap sebelumnya. Tahap pengumpulan bahan dapat dilakukan secara

95

bersama dengan tahap pembuatan. Aplikasi ini berbasis multimedia, jadi metodologi

pengembangan multimedia yang tepat untuk membangun aplikasi ini.

5.2 Analisis Tools

Flash adalah salah satu program pembuat animasi yang sangat handal.

Kehandalan flash dibandingkan dengan program yang lain adalah dalam hal ukuran

file dari hasil animasinya yang kecil. Untuk itu animasi yang dihasilkan oleh program

Flash banyak digunakan untuk membuat sebuah web atau sebuah profile company

agar menjadi tampil lebih interaktif. Selain itu dengan ukuran file yang kecil, maka

distribusi aplikasi berbasis flash akan lebih mudah dan cepat.

Sesuai dengan tujuan pembuatan aplikasi ini, maka flash sangat membantu

dan mempermudah pembuatan aplikasi simulasi algoritma. Berikut ini adalah alasan

digunakannya tools flash dalam pembuatan aplikasi simulasi algoritma, anatara lain :

1. Mendukung object oriented programming (OOP), sehingga mudah dalam

mengimplementasikan simulasi suatu algoritma.

2. Flash dapat menggabungkan berbagai media, sehingga kita dapat

memasukkan berbagai media seperti gambar, suara, text.

3. Instalasi mudah, karena langsung dapat di eksport menjadi .EXE. sehingga

dapat langsung dijalankan di sistem operasi windows.

4. Ukuran file yang dihasilkan kecil, sehingga mempermudah dalam proses

distribusi.

96

5. Dengan memasukkan dalam file html, maka aplikasi ini dapat berjalan

dengan media website.

5.3 Analisis Program

Dari proses testing yang telah dilakukan dengan cara sampling terhadap 8

orang mahasiswa teknik informatika yang sudah mengambil mata kuliah algoritma

dan struktur data, maka didapatkan :

1. Aplikasi ini dapat membantu mahasiswa dalam mengetahui proses

berjalannya suatu algoritma.

2. Aplikasi ini sudah cukup interaktif dalam penggunaannya. Karena dari

user yang dicobakan, pertama kali menjalankan, mereka langsung bisa

menggunakannya.

3. Data yang disimulasikan terbatas.

4. Tutorial kurang detail.

97

BAB VI

PENUTUP

6.1 Kesimpulan

Dari hasil analisa, desain, implementasi dan survei yang telah dilakukan maka

dapat diambil kesimpulan sebagai berikut ini :

1. Aplikasi simulasi algoritma searching, yaitu sequential search, binary

search dan algoritma sorting, yaitu selection sort, bubble sort, insertion sort

ini dapat diimplementasikan dengan menggunakan macromedia flash 8.

2. Penggunaan metodologi pengembangan multimedia membantu dalam

membangun aplikasi simulasi algoritma ini..

3. Setelah dicoba pada beberapa user, aplikasi ini membantu user untuk

mengetahui proses berjalannya suatu algoritma searching dan sorting.

6.2 Saran

Saran yang dapat diberikan agar program bantu ini dapat di buat lebih baik

lagi adalah sebagai berikut :

Untuk pengembangan lebih lanjut dapat dilengkapi dengan algoritma yang

lain.

98

DAFTAR PUSTAKA

Herlambang, F., 2007, Membuat Efek Khusus dengan Action Script 2.0 Flash 8.

Jakarta : PT. Elex Media Komputindo

Budi JB, Darmawan, 2005., Modul Praktikum Algoritma dan Struktur Data I

Yogyakarta : Teknik Informatika USD

Luther, A., 1994. Authoring Interactive Multimedia. Boston : AP Profesional

Oleksy, Walter. 1995. The Information Revolution : Education and learning

Sismoro, Heri. 2004. Struktur Data dan Pemrograman dengan Pascal. Yogyakarta :

ANDI Offset

Madcoms. 2004. Macromedia Flash MX 2004. Yogyakarta : ANDI Offset

Christian, Joyke. 2007. CAI : Media Pembelajaran Kontekstual Berbasis

Informasi Teknologi (http://jchkumaat.wordpress.com/2007/02/18/cai-

media-pembelajaran-kontekstual-berbasis-informasi-teknologi, diakses

8 Agustus 2008)

Arya Putu, Gde.____. Multimedia Pembelajaran, [pdf]. (www.docstoc.com diakses

20 September 2008)

99

LAMPIRAN

Listing Program

Berikut ini ditampilkan beberapa listing yang digunakan untuk

implementasi aplikasi ini.

Listing Pada File Utama Frame 1

stop(); if (Key.getCode() == Key.ENTER) { gotoAndPlay(2); }

Listing Pada File Utama Frame 2

unloadMovieNum(1); stop();

Listing Pada File Utama Frame 3

loadMovieNum("swf/materi.swf",1);

Listing Pada File Utama Frame 4

loadMovieNum("swf/visualisasi.swf",1);

Listing Pada File Visualisasi Layer input_ui Frame 12

this.banyak_data.restrict = "0-9"; //this.warning1._visible=false; var warning:Number; warning = 0; //variabel sel=1 --> jika data sudah diisi if (sel == 0) { this.line._visible = false; this.line2._visible = false; this.save1._visible = false; this.edit1._visible = false; for (i=1; i<=20; i++) { this['_d'+i]._visible = false; } } if (sel == 1) { this.loading._visible = false; this.ok.enabled = false; this.ok._alpha = 50; this.cancel_.enabled = false;

100

this.cancel_._alpha = 50; this.banyak_data.enabled = false; this.banyak_data._alpha = 50; this.banyak_data.editable = false; this.pilihan.enabled = false; this.pilihan._alpha = 50; this.pilihan2.enabled = false; this.pilihan2._alpha = 50; for (i=1; i<=20; i++) { if (this['_d'+i].text == "d"+i || edit_ == 1) { this['_d'+i]._visible = false; } } if (edit_ == 0) { this.edit1.enabled = false; this.edit1._alpha = 50; this.save1.enabled = true; this.save1._alpha = 100; } if (edit_ == 1) { this.edit1.enabled = true; this.edit1._alpha = 100; this.save1.enabled = false; this.save1._alpha = 50; } }

Listing Pada File Visualisasi Layer input_ui Frame 12 untuk tombol OK

on (release) { //JIKA TEXT DATA KOSONG if (this.banyak_data.text == "") { warning1._x = -150; warning1._y = 30; this.ok.enabled=false; this.ok._alpha = 50; this.cancel_.enabled = false; this.cancel_._alpha = 50; this.banyak_data.enabled = false; this.banyak_data._alpha = 50; this.warning1.war.text = "DATA MASIH KOSONG !!"; } else if ((Number(this.banyak_data.text)<21) && (Number(this.banyak_data.text)>0)) { //disable tombol this.ok.enabled = false; this.ok._alpha = 50; this.cancel_.enabled = false; this.cancel_._alpha = 50; this.banyak_data.enabled = false; this.banyak_data._alpha = 50; this.pilihan.enabled = false; this.pilihan._alpha = 50; this.pilihan2.enabled = false; this.pilihan2._alpha = 50;

101

var sel = 1; this.loading._visible = false; this.line._visible = true; this.line2._visible = true; //INPUT MANUAL if (this.pilih.selectedData == "1") { this.save1._visible = true; this.edit1._visible = true; this.edit1.enabled = false; this.edit1._alpha = 50; var i = Number(this.banyak_data.text); n = i; //tampil textfield manual for (var u = 1; u<=i; u++) { this['_d'+u]._visible = true; this['_d'+u].text = ""; this['_d'+u].restrict = "0-9"; this['_d'+u].maxChars = 2; } //end for } else { //input random this.save1._visible = true; this.edit1._visible = true; this.save1.enabled = false; this.save1._alpha = 50; edit_ = 1;//data tersimpan, tombol edit true, tombol simpan false var i = Number(this.banyak_data.text); n = i; for (var u = 0; u<i; u++) { var acak:Number = 0; acak = Math.floor(Math.random()*100); _data[u] = acak; } for (var u = 1; u<=i; u++) { this['d'+u+'_'] = _data[u-1]; this['_d'+u+'_']._visible = true; } //end for } //end manual //end random } else if (data_<0 || data_ == 0) { warning1._x = -150; warning1._y = 30; this.ok.enabled=false; this.ok._alpha = 50; this.cancel_.enabled = false; this.cancel_._alpha = 50; this.banyak_data.enabled = false; this.banyak_data._alpha = 50; this.warning1.war.text = "DATA HARUS > 0";

102

} else { warning1._x = -150; warning1._y = 30; this.ok.enabled=false; this.ok._alpha = 50; this.cancel_.enabled = false; this.cancel_._alpha = 50; this.banyak_data.enabled = false; this.banyak_data._alpha = 50; this.warning1.war.text = "DATA MAX 20"; } //JIKA DATA BENAR }

Listing Pada File Visualisasi Layer input_ui Frame 12 untuk tombol SAVE

on(release) { this.edit1.enabled=true; this.save1.enabled=false; this.edit1._alpha=100; this.save1._alpha=50; edit_=1; n=i; for(u=1;u<=i;u++) { if(this['_d'+u].text=="") { this['d'+u+'_']=0; } else { this['d'+u+'_']=Number(this['_d'+u].text); } this['_d'+u+'_']._visible=true; this['_d'+u]._visible=false; } }

Listing Pada File Visualisasi Layer input_ui Frame 12 untuk tombol EDIT

on(release) { sel=0; edit_=0; for(i=1;i<=20;i++) { this['d'+i]="d"+i; this['d'+i+'_']="d"+i; }

103

gotoAndPlay(10); }//end release

Listing Pada File Visualisasi Layer sim_search2 Frame 29

if(d1_=="d1") { this.start.enabled=false; this.start._alpha=50; warning2._x = -150; warning2._y = 30; this.warning2.war.text = "DATA MASIH KOSONG !!"; } this.data_cari.restrict = "0-9"; this.search_besar._visible = false; //gambar lup besar this.search_kecil._visible = false; //gambar lup kecil this.mode.text = ""; //judul this.view_.text = ""; //angka yang dicari(dalam lup besar) animasi = false; animasi2 = false; metode_searching = "sequential"; for(i=1;i<=20;i++) { this['s'+i+'_'] = this['d'+i+'_']; if (this['_s'+i+'_'].text == "d"+i) { this['_s'+i+'_']._visible = false; } //-----bagian tengah------// this['t'+i+'_'] = this['d'+i+'_']; this['_t'+i+'_']._visible = false; } var j = 1; //var ketemu:Boolean = true; var first_ = 1; var last_ = n; var mid; this.play_search._visible = false; this.trace_search._visible = false; this.pause_search._visible = false; this.clear._visible = false; this.kecepatan._visible = false; this.play_search._alpha = 100; this.trace_search._alpha = 100; this.pause_search._alpha = 100; this.clear._alpha = 100; this.kecepatan._alpha = 100; this.in1.text = "";

104

this.in2.text = ""; this.in3.text = ""; this.in4.text = ""; //-----function----------// function seqsearch() { pointer._x = this['_t'+j+'_']._x; pointer._y = this['_t'+j+'_']._y; if (j<=n) { if (Number(this['_t'+j+'_'].text) == cari) { ketemu = true; text1.text = this['_t'+j+'_'].text; text2.text = "="; text3.text = cari; ket.text = "DATA "+cari+" DITEMUKAN"; play_search.enabled = false; trace_search.enabled = false; pause_search.enabled = false; clear.enabled = true; play_search._alpha = 50; trace_search._alpha = 50; pause_search._alpha = 50; clear._alpha = 100; animasi=false; } else if (Number(this['_t'+j+'_'].text)>cari) { text1.text = this['_t'+j+'_'].text; text2.text = ">"; text3.text = cari; ket.text = ""; j++; } else { text1.text = this['_t'+j+'_'].text; text2.text = "<"; text3.text = cari; ket.text = ""; j++; } } else { ket.text = "DATA "+cari+" TIDAK DITEMUKAN"; play_search.enabled = false; trace_search.enabled = false; pause_search.enabled = false; clear.enabled = true; play_search._alpha = 50; trace_search._alpha = 50; pause_search._alpha = 50; clear._alpha = 100; animasi=false; } } function binsearch() { if (first_<=last_) { mid = (first_+last_)/2; mid = Math.round(mid); mid_p._x = this['_t'+mid+'_']._x; mid_p._y = this['_t'+mid+'_']._y; first_p._x = this['_t'+first_+'_']._x;

105

first_p._y = this['_t'+first_+'_']._y; last_p._x = this['_t'+last_+'_']._x; last_p._y = this['_t'+last_+'_']._y; ket.text = "mid :"+this['_t'+mid+'_'].text+" , first :"+this['_t'+first_+'_'].text+" , last :"+this['_t'+last_+'_'].text; if (Number(this['_t'+mid+'_'].text) == cari) { ket.text = "DATA "+cari+" DITEMUKAN"; play_search.enabled = false; trace_search.enabled = false; pause_search.enabled = false; clear.enabled = true; play_search._alpha = 50; trace_search._alpha = 50; pause_search._alpha = 50; clear._alpha = 100; text1.text = this['_t'+mid+'_'].text; text2.text = "="; text3.text = cari; animasi2=false; } else if (Number(this['_t'+mid+'_'].text)>cari) { last_ = mid-1; text1.text = this['_t'+mid+'_'].text; text2.text = ">"; text3.text = cari; } else { first_ = mid+1; text1.text = this['_t'+mid+'_'].text; text2.text = "<"; text3.text = cari; } } else { ket.text = "DATA "+cari+" TIDAK DITEMUKAN"; play_search.enabled = false; trace_search.enabled = false; pause_search.enabled = false; clear.enabled = true; play_search._alpha = 50; trace_search._alpha = 50; pause_search._alpha = 50; clear._alpha = 100; mid_p._x = -300; mid_p._y = -500; first_p._x = -250; first_p._y = -500; last_p._x = -200; last_p._y = -500; animasi2=false; } } //-----------------------//

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk tombol

START

106

on (release) { if (this.search.selectedData == "seq" && this.data_cari.text != "") { this.mode.text = "SEQUENTIAL SEARCH"; view = cari; metode_searching = "sequential"; this.data_cari.enabled = false; this.data_cari._alpha = 50; this.start.enabled = false; this.search.enabled = false; this.start._alpha = 50; this.search._alpha = 50; this.search_besar._visible = true; this.search_kecil._visible = true; this.play_search._visible = true; this.trace_search._visible = true; this.pause_search._visible = true; this.clear._visible = true; this.play_search._alpha = 100; this.trace_search._alpha = 100; this.pause_search._alpha = 50; this.clear._alpha = 50; this.play_search.enabled = true; this.trace_search.enabled = true; this.pause_search.enabled = false; this.clear.enabled = false; this.kecepatan._visible = true; for(i=1;i<=n;i++) { this['t'+i+'_']=this['d'+i+'_']; this['_t'+i+'_']._visible = true; } } else if (this.search.selectedData == "bin" && this.data_cari.text != "") { var temp_data:Array = new Array(); for(i=0;i<n;i++) { temp_data[i]=this['s'+(i+1)+'_']; //ex : temp_data[0]=s1_ } bublesort(temp_data, n); for(i=0;i<n;i++) { this['t'+(i+1)+'_']=temp_data[i]; //ex : t1_=temp_data[0] } for(i=1;i<=n;i++) { this['_t'+i+'_']._visible = true; } this.mode.text = "BINARY SEARCH"; view = cari; metode_searching = "binary";

107

this.data_cari.enabled = false; this.data_cari._alpha = 50; this.start.enabled = false; this.search.enabled = false; this.start._alpha = 50; this.search._alpha = 50; this.search_besar._visible = true; this.search_kecil._visible = true; this.play_search._visible = true; this.play_search._alpha = 100; this.play_search.enabled = true; this.trace_search._visible = true; this.trace_search._alpha = 100; this.trace_search.enabled = true; this.pause_search._visible = true; this.pause_search._alpha = 50; this.pause_search.enabled = false; this.clear._visible = true; this.clear._alpha = 50; this.clear.enabled = false; this.kecepatan._visible = true; this.ket.text = "DATA OTOMATIS DIURUTKAN"; } //END IF BIN function bublesort(dat:Array, banyak:Number) { var temp:Number; var i:Number; var j:Number; for (i=1; i<banyak; i++) { for (j=0; j<banyak-1; j++) { if (dat[j]>dat[j+1]) { temp = dat[j]; dat[j] = dat[j+1]; dat[j+1] = temp; } } } } //--------tampil index-------------- if (this.data_cari.text != "") { if (n<=5) { this.in1.text = "index 1-"+n; } else if (n<=10) { this.in1.text = "index 1-5"; this.in2.text = "index 6-"+n; } else if (n<=15) { this.in1.text = "index 1-5"; this.in2.text = "index 6-10"; this.in3.text = "index 11-"+n; } else { this.in1.text = "index 1-5"; this.in2.text = "index 6-10"; this.in3.text = "index 11-15"; this.in4.text = "index 16-"+n;

108

} } //---------------------------------- } //end script

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk tombol

PLAY

on (release) { if (metode_searching == "sequential") { if (animasi == false) { animasi = true; this.play_search.enabled = false; this.play_search._alpha = 50; this.trace_search.enabled = false; this.trace_search._alpha = 50; this.pause_search.enabled = true; this.pause_search._alpha = 100; } else { animasi = false; this.play_search.enabled = true; this.play_search._alpha = 100; this.trace_search.enabled = true; this.trace_search._alpha = 100; this.pause_search.enabled = false; this.pause_search._alpha = 50; } } else { if (animasi2 == false) { animasi2 = true; this.trace_search.enabled = false; this.trace_search._alpha = 50; this.play_search.enabled = false; this.play_search._alpha = 50; this.pause_search.enabled = true; this.pause_search._alpha = 100; } else { animasi2 = false; this.trace_search.enabled = true; this.trace_search._alpha = 100; this.play_search.enabled = true; this.play_search._alpha = 100; this.pause_search.enabled = false; this.pause_search._alpha = 50; } } }

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk tombol

PAUSE

on (release) { if (metode_searching == "sequential") {

109

if (animasi == false) { animasi = true; this.play_search.enabled = false; this.play_search._alpha = 50; this.trace_search.enabled = false; this.trace_search._alpha = 50; this.pause_search.enabled = true; this.pause_search._alpha = 100; } else { animasi = false; this.play_search.enabled = true; this.play_search._alpha = 100; this.trace_search.enabled = true; this.trace_search._alpha = 100; this.pause_search.enabled = false; this.pause_search._alpha = 50; } } else { if (animasi2 == false) { animasi2 = true; this.trace_search.enabled = false; this.trace_search._alpha = 50; this.play_search.enabled = false; this.play_search._alpha = 50; this.pause_search.enabled = true; this.pause_search._alpha = 100; } else { animasi2 = false; this.trace_search.enabled = true; this.trace_search._alpha = 100; this.play_search.enabled = true; this.play_search._alpha = 100; this.pause_search.enabled = false; this.pause_search._alpha = 50; } } }

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk tombol

TRACE

on (release) { if (metode_searching == "sequential") { seqsearch(); } else { binsearch(); } }

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk tombol

CLEAR

on(release) {

110

gotoAndPlay(28); }

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk movieclip

seq_search

onClipEvent (load) { var m:Number; m = 0; } onClipEvent (enterFrame) { if (this._parent.kecepatan.speed.selectedIndex == 0) { speed=50; } else if (this._parent.kecepatan.speed.selectedIndex == 1) { speed=30; } else { speed=10; } if (this._parent.animasi == true) { m++; if (m%speed == 0) { trace("loop"+m); this._parent.seqsearch(); } } }

Listing Pada File Visualisasi Layer sim_search2 Frame 29 untuk movieclip

bin_search

onClipEvent (load) { var m:Number; m = 0; } onClipEvent (enterFrame) { if (this._parent.kecepatan.speed.selectedIndex == 0) { speed = 50; } else if (this._parent.kecepatan.speed.selectedIndex == 1) { speed = 30; } else { speed = 10; } if (this._parent.animasi2 == true) { m++; if (m%speed == 0) { trace("loop"+m); this._parent.binsearch(); } } }

111

Listing Pada File Visualisasi Layer sim_sort2 Frame 52

if(d1_=="d1") { this.start.enabled=false; this.start._alpha=50; warning3._x = -150; warning3._y = 30; this.warning3.war.text = "DATA MASIH KOSONG !!"; } this.mode.text = ""; trace_=false; animasi = false; animasi2 = false; animasi3 = false; asc_dsc_ = "asc"; metode_sort = "selection"; for (i=1; i<=20; i++) { this['sr'+i+'_'] = this['d'+i+'_']; if (this['_sr'+i+'_'].text == "d"+i) { this['_sr'+i+'_']._visible = false; } this['_t'+i+'_']._visible = false; } //selectionsort this.play_sort._visible = false; this.pause_sort._visible = false; this.trace_sort._visible = false; this.clear_._visible = false; this.kecepatan._visible = false; this.sort_besar._visible = false; this.sort_kecil._visible = false; this.sort._alpha = 100; this.sort.enabled = true; var i = 0; var j = 1; var it = 0; var swap = 0; this.in1.text = ""; this.in2.text = ""; this.in3.text = ""; this.in4.text = ""; //-----------function---------------// function selectionsort() { this.ket5.text = ""; if (j<n) { pointer1._x = this['_t'+(j)+'_']._x; pointer1._y = this['_t'+(j)+'_']._y; var min = Number(this['_t'+(j+1)+'_'].text); var min_ = '_t'+(j+1)+'_'; for (var x1 = j+1; x1<=n; x1++) { if (Number(this['_t'+(x1+1)+'_'].text)<min) { min = Number(this['_t'+(x1+1)+'_'].text); min_ = '_t'+(x1+1)+'_'; }

112

} pointer2._x = this[min_]._x; pointer2._y = this[min_]._y; if (Number(this[min_].text)<Number(this['_t'+(j)+'_'].text)) { swap++; var alpha = 100; this.ket1.text = this['_t'+(j)+'_'].text; this.ket2.text = ">"; this.ket3.text = this[min_].text; this.ket4.text = "min index ke "+(j+1)+"-"+n+" :"+this[min_].text; this.ket5.text = "TUKAR"; onEnterFrame = function () { if(trace_==true) { this.play_sort.enabled = false; this.trace_sort.enabled = false; } alpha -= 10; this[min_]._alpha = alpha; this['_t'+(j-1)+'_']._alpha = alpha; if (alpha<0) { delete this.onEnterFrame; this[min_]._alpha = 100; this['_t'+(j-1)+'_']._alpha = 100; var temp = this[min_].text; this[min_].text = this['_t'+(j-1)+'_'].text; this['_t'+(j-1)+'_'].text = temp; if(trace_==true) { this.play_sort.enabled = true; this.trace_sort.enabled = true; } } }; //end function } else if (Number(this[min_].text)>Number(this['_t'+(j)+'_'].text)) { this.ket1.text = this['_t'+(j)+'_'].text; this.ket2.text = "<"; this.ket3.text = this[min_].text; this.ket4.text = "min index ke "+(j+1)+"-"+n+" :"+this[min_].text; this.ket5.text = ""; } else { this.ket1.text = this['_t'+(j)+'_'].text; this.ket2.text = "="; this.ket3.text = this[min_].text; this.ket4.text = "min index ke "+(j+1)+"-"+n+" :"+this[min_].text; this.ket5.text = ""; } j++; it++;

113

} else { pointer1._x = -300; pointer1._y = -500; pointer2._x = -255; pointer2._y = -500; this.clear_._alpha = 100; this.play_sort._alpha = 50; this.pause_sort._alpha = 50; this.trace_sort._alpha = 50; this.clear_.enabled = true; this.play_sort.enabled = false; this.pause_sort.enabled = false; this.trace_sort.enabled = false; //this.ket4.text = "iterasi :"+it+" , swap :"+swap; this.ket5.text = "TERURUT"; hasil._x = -150; hasil._y = 0; this.hasil.sort.text = "SELECTIONSORT ASCENDING"; this.hasil.iterasi.text = it; this.hasil.banyak_data.text = n; this.hasil.tukar.text = swap; animasi = false; } //end if 1 } //end selection function selectionsort_dsc() { this.ket5.text = ""; pointer2.pointer2_text.text = "MAX"; if (j<n) { pointer1._x = this['_t'+(j)+'_']._x; pointer1._y = this['_t'+(j)+'_']._y; var min = Number(this['_t'+(j+1)+'_'].text); var min_ = '_t'+(j+1)+'_'; for (var x1 = j+1; x1<=n; x1++) { if (Number(this['_t'+(x1+1)+'_'].text)>min) { min = Number(this['_t'+(x1+1)+'_'].text); min_ = '_t'+(x1+1)+'_'; } } pointer2._x = this[min_]._x; pointer2._y = this[min_]._y; if (Number(this[min_].text)>Number(this['_t'+(j)+'_'].text)) { swap++; var alpha = 100; this.ket1.text = this['_t'+(j)+'_'].text; this.ket2.text = "<"; this.ket3.text = this[min_].text; this.ket4.text = "max index ke "+(j+1)+"-"+n+" :"+this[min_].text; this.ket5.text = "TUKAR"; onEnterFrame = function () { if(trace_==true) {

114

this.play_sort.enabled = false; this.trace_sort.enabled = false; } alpha -= 10; this[min_]._alpha = alpha; this['_t'+(j-1)+'_']._alpha = alpha; if (alpha<0) { delete this.onEnterFrame; this[min_]._alpha = 100; this['_t'+(j-1)+'_']._alpha = 100; var temp = this[min_].text; this[min_].text = this['_t'+(j-1)+'_'].text; this['_t'+(j-1)+'_'].text = temp; if(trace_==true) { this.play_sort.enabled = true; this.trace_sort.enabled = true; } } }; //end function } else if (Number(this[min_].text)<Number(this['_t'+(j)+'_'].text)) { this.ket1.text = this['_t'+(j)+'_'].text; this.ket2.text = ">"; this.ket3.text = this[min_].text; this.ket4.text = "max index ke "+(j+1)+"-"+n+" :"+this[min_].text; this.ket5.text = ""; } else { this.ket1.text = this['_t'+(j)+'_'].text; this.ket2.text = "="; this.ket3.text = this[min_].text; this.ket4.text = "max index ke "+(j+1)+"-"+n+" :"+this[min_].text; this.ket5.text = ""; } j++; it++; } else { pointer1._x = -300; pointer1._y = -500; pointer2._x = -255; pointer2._y = -500; this.clear_._alpha = 100; this.play_sort._alpha = 50; this.pause_sort._alpha = 50; this.trace_sort._alpha = 50; this.clear_.enabled = true; this.play_sort.enabled = false; this.pause_sort.enabled = false; this.trace_sort.enabled = false; //this.ket4.text = "iterasi :"+it+" , swap :"+swap; this.ket5.text = "TERURUT"; hasil._x = -150;

115

hasil._y = 0; this.hasil.sort.text = "SELECTIONSORT DESCENDING"; this.hasil.iterasi.text = it; this.hasil.banyak_data.text = n; this.hasil.tukar.text = swap; animasi = false; } //end if 1 } //end selection dsc function bubblesort() { //bubble sort this.ket5.text = ""; if (j<n) { if (i<(n-j)) { point1._x = this['_t'+(i+1)+'_']._x; point1._y = this['_t'+(i+1)+'_']._y; point2._x = this['_t'+(i+2)+'_']._x; point2._y = this['_t'+(i+2)+'_']._y; for (var x1 = 1; x1<=n; x1++) { if (point1._x == this['_t'+x1+'_']._x && point1._y == this['_t'+x1+'_']._y) { var data1 = '_t'+x1+'_'; } if (point2._x == this['_t'+x1+'_']._x && point2._y == this['_t'+x1+'_']._y) { var data2 = '_t'+x1+'_'; } } //end for if (Number(this[data1].text)>Number(this[data2].text)) { swap++; this.ket1.text = this[data1].text; this.ket2.text = ">"; this.ket3.text = this[data2].text; this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = "TUKAR"; var alp = 100; onEnterFrame = function () { if(trace_==true) { this.play_sort.enabled = false; this.trace_sort.enabled = false; } alp -= 20; this[data1]._alpha = alp; this[data2]._alpha = alp; if (alp<0) { delete this.onEnterFrame; this[data1]._alpha = 100; this[data2]._alpha = 100; var temp = this[data1].text; this[data1].text = this[data2].text;

116

this[data2].text = temp; if(trace_==true) { this.play_sort.enabled = true; this.trace_sort.enabled = true; } } }; } else if (Number(this[data1].text)<Number(this[data2].text)) { this.ket1.text = this[data1].text; this.ket2.text = "<"; this.ket3.text = this[data2].text; this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = ""; } else { this.ket1.text = this[data1].text; this.ket2.text = "="; this.ket3.text = this[data2].text; this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = ""; } i++; it++; } else { j++; i = 0; } } else { this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = "TERURUT"; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.clear_.enabled = true; this.clear_._alpha = 100; point1._x = -320; point1._y = -500; point2._x = -340; point2._y = -500; hasil._x = -150; hasil._y = 0; this.hasil.sort.text = "BUBBLESORT ASCENDING"; this.hasil.iterasi.text = it; this.hasil.banyak_data.text = n; this.hasil.tukar.text = swap; animasi2 = false; } } //end bubblesort

117

function bubblesort_dsc() { //bubble sort this.ket5.text = ""; if (j<n) { if (i<(n-j)) { point1._x = this['_t'+(i+1)+'_']._x; point1._y = this['_t'+(i+1)+'_']._y; point2._x = this['_t'+(i+2)+'_']._x; point2._y = this['_t'+(i+2)+'_']._y; for (var x1 = 1; x1<=n; x1++) { if (point1._x == this['_t'+x1+'_']._x && point1._y == this['_t'+x1+'_']._y) { var data1 = '_t'+x1+'_'; } if (point2._x == this['_t'+x1+'_']._x && point2._y == this['_t'+x1+'_']._y) { var data2 = '_t'+x1+'_'; } } //end for if (Number(this[data1].text)<Number(this[data2].text)) { swap++; this.ket1.text = this[data1].text; this.ket2.text = "<"; this.ket3.text = this[data2].text; this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = "TUKAR"; var alp = 100; onEnterFrame = function () { if(trace_==true) { this.play_sort.enabled = false; this.trace_sort.enabled = false; } alp -= 20; this[data1]._alpha = alp; this[data2]._alpha = alp; if (alp<0) { delete this.onEnterFrame; this[data1]._alpha = 100; this[data2]._alpha = 100; var temp = this[data1].text; this[data1].text = this[data2].text; this[data2].text = temp; if(trace_==true) { this.play_sort.enabled = true; this.trace_sort.enabled = true; } } };

118

} else if (Number(this[data1].text)>Number(this[data2].text)) { this.ket1.text = this[data1].text; this.ket2.text = ">"; this.ket3.text = this[data2].text; this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = ""; } else { this.ket1.text = this[data1].text; this.ket2.text = "="; this.ket3.text = this[data2].text; this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = ""; } i++; it++; } else { j++; i = 0; } } else { //this.ket4.text = "iterasi :"+it+" ,swap :"+swap; this.ket5.text = "TERURUT"; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.clear_.enabled = true; this.clear_._alpha = 100; point1._x = -320; point1._y = -500; point2._x = -340; point2._y = -500; hasil._x = -150; hasil._y = 0; this.hasil.sort.text = "BUBBLESORT DESCENDING"; this.hasil.iterasi.text = it; this.hasil.banyak_data.text = n; this.hasil.tukar.text = swap; animasi2 = false; } } //end bubblesort dsc function insertionsort() { //insertionsort this.ket5.text = ""; this.ket6.text = ""; if (i<n) { var temp = Number(this['_t'+(i+1)+'_'].text); var temp1 = this['_t'+(i+1)+'_'].text; pointer_i._x = this['_t'+(i+1)+'_']._x; pointer_i._y = this['_t'+(i+1)+'_']._y;

119

j = i; while (temp<=Number(this['_t'+j+'_'].text) && j>=1) { this['_t'+(j+1)+'_'].text = this['_t'+j+'_'].text; j--; } if (Number(this['_t'+(j+1)+'_'].text)>temp) { this.ket1.text = this['_t'+(j+1)+'_'].text; this.ket2.text = ""; this.ket3.text = ""; this.ket4.text = "POSISI BENAR"; this['_t'+(j+1)+'_'].text = temp1; } if (Number(this['_t'+(j+1)+'_'].text) == Number(this['_t'+(i+1)+'_'].text)) { this.ket1.text = this['_t'+(j+1)+'_'].text; this.ket2.text = ""; this.ket3.text = ""; this.ket4.text = "POSISI BENAR"; this['_t'+(j+1)+'_'].text = temp1; } else { swap++; this.ket1.text = this['_t'+(j+1)+'_'].text; this.ket2.text = "->"; this.ket3.text = j+1; this.ket4.text = "index ke "+(j+1)+"-"+i+" geser ke kanan"; this.ket5.text = "TUKAR"; this.ket6.text = "index"; this['_t'+(j+1)+'_'].text = temp1; } i++; } else { play_sort.enabled = false; pause_sort.enabled = false; trace_sort.enabled = false; clear_.enabled = true; play_sort._alpha = 50; pause_sort._alpha = 50; trace_sort._alpha = 50; clear_._alpha = 100; pointer_i._x = -200; pointer_i._y = -500; this.ket1.text = ""; this.ket2.text = ""; this.ket3.text = ""; //this.ket4.text = "iterasi : "+i+", swap : "+swap; this.ket5.text = "TERURUT"; this.ket6.text = ""; hasil._x = -150; hasil._y = 0; this.hasil.sort.text = "INSERTIONSORT ASCENDING"; this.hasil.iterasi.text = i; this.hasil.banyak_data.text = n; this.hasil.tukar.text = swap; animasi3 = false;

120

} } //end insertionsort function insertionsort_dsc() { //insertionsort dsc this.ket5.text = ""; this.ket6.text = ""; trace(it); if (i<n) { var temp = Number(this['_t'+(i+1)+'_'].text); var temp1 = this['_t'+(i+1)+'_'].text; pointer_i._x = this['_t'+(i+1)+'_']._x; pointer_i._y = this['_t'+(i+1)+'_']._y; j = i; while (temp>=Number(this['_t'+j+'_'].text) && j>=1) { this['_t'+(j+1)+'_'].text = this['_t'+j+'_'].text; j--; } if (Number(this['_t'+(j+1)+'_'].text)<temp) { this.ket1.text = this['_t'+(j+1)+'_'].text; this.ket2.text = ""; this.ket3.text = ""; this.ket4.text = "POSISI BENAR"; this['_t'+(j+1)+'_'].text = temp1; } if (Number(this['_t'+(j+1)+'_'].text) == Number(this['_t'+(i+1)+'_'].text)) { this.ket1.text = this['_t'+(j+1)+'_'].text; this.ket2.text = ""; this.ket3.text = ""; this.ket4.text = "POSISI BENAR"; this['_t'+(j+1)+'_'].text = temp1; } else { swap++; this.ket1.text = this['_t'+(j+1)+'_'].text; this.ket2.text = "->"; this.ket3.text = j+1; this.ket4.text = "index ke "+(j+1)+"-"+i+" geser ke kanan"; this.ket5.text = "TUKAR"; this.ket6.text = "index"; this['_t'+(j+1)+'_'].text = temp1; } i++; it++; } else { play_sort.enabled = false; pause_sort.enabled = false; trace_sort.enabled = false; clear_.enabled = true; play_sort._alpha = 50; pause_sort._alpha = 50; trace_sort._alpha = 50; clear_._alpha = 100; pointer_i._x = -200;

121

pointer_i._y = -500; this.ket1.text = ""; this.ket2.text = ""; this.ket3.text = ""; this.ket4.text = "iterasi : "+it+", swap : "+swap; this.ket5.text = "TERURUT"; this.ket6.text = ""; hasil._x = -150; hasil._y = 0; this.hasil.sort.text = "INSERTIONSORT DESCENDING"; this.hasil.iterasi.text = i; this.hasil.banyak_data.text = n; this.hasil.tukar.text = swap; animasi3 = false; } //end if 1 } //end insertionsort dsc //----------------------------------//

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk tombol

START

on (release) { for (u=1; u<=n; u++) { this['t'+u+'_'] = this['d'+u+'_']; this['_t'+u+'_']._visible = true; } this.play_sort._visible = true; this.play_sort.enabled = true; this.play_sort._alpha = 100; this.pause_sort._visible = true; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; this.trace_sort._visible = true; this.trace_sort.enabled = true; this.trace_sort._alpha = 100; this.clear_._visible = true; this.clear_.enabled = false; this.clear_._alpha = 50; this.start.enabled = false; this.start._alpha = 50; this.sort._alpha = 50; this.sort.enabled = false; this.asc_dsc._alpha = 50; this.asc_dsc.enabled = false; this.kecepatan._visible = true; this.sort_besar._visible = true; this.sort_kecil._visible = true; if (this.sort.selectedData == "1") { //selection this.mode.text = "SELECTION SORT"; metode_sort = "selection"; if (this.asc_dsc.selectedData == "dsc") { asc_dsc_ = "dsc";

122

} } else if (this.sort.selectedData == "2") { //bubblesort this.mode.text = "BUBBLESORT"; metode_sort = "bubble"; if (this.asc_dsc.selectedData == "dsc") { asc_dsc_ = "dsc"; } } else if (this.sort.selectedData == "3") { //insertion this.mode.text = "INSERTION SORT"; metode_sort = "insertion"; if (this.asc_dsc.selectedData == "dsc") { asc_dsc_ = "dsc"; } } //end if insertion sort //--------tampil index-------------- if (n<=5) { this.in1.text = "index 1-"+n; } else if (n<=10) { this.in1.text = "index 1-5"; this.in2.text = "index 6-"+n; } else if (n<=15) { this.in1.text = "index 1-5"; this.in2.text = "index 6-10"; this.in3.text = "index 11-"+n; } else { this.in1.text = "index 1-5"; this.in2.text = "index 6-10"; this.in3.text = "index 11-15"; this.in4.text = "index 16-"+n; } //---------------------------------- }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk tombol PLAY

on (release) { trace_=false; if (metode_sort == "selection") { if (animasi == false) { animasi = true; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.pause_sort.enabled = true; this.pause_sort._alpha = 100; } else { animasi = false; this.trace_sort.enabled = true; this.trace_sort._alpha = 100;

123

this.play_sort.enabled = true; this.play_sort._alpha = 100; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; } } else if (metode_sort == "bubble") { if (animasi2 == false) { animasi2 = true; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.pause_sort.enabled = true; this.pause_sort._alpha = 100; } else { animasi2 = false; this.play_sort.enabled = true; this.play_sort._alpha = 100; this.trace_sort.enabled = true; this.trace_sort._alpha = 100; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; } } else { if (animasi3 == false) { animasi3 = true; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.pause_sort.enabled = true; this.pause_sort._alpha = 100; } else { animasi3 = false; this.play_sort.enabled = true; this.play_sort._alpha = 100; this.trace_sort.enabled = true; this.trace_sort._alpha = 100; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; } } }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk tombol

PAUSE

on (release) { if (metode_sort == "selection") { if (animasi == false) { animasi = true; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50;

124

this.pause_sort.enabled = true; this.pause_sort._alpha = 100; } else { animasi = false; this.trace_sort.enabled = true; this.trace_sort._alpha = 100; this.play_sort.enabled = true; this.play_sort._alpha = 100; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; } } else if (metode_sort == "bubble") { if (animasi2 == false) { animasi2 = true; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.pause_sort.enabled = true; this.pause_sort._alpha = 100; } else { animasi2 = false; this.play_sort.enabled = true; this.play_sort._alpha = 100; this.trace_sort.enabled = true; this.trace_sort._alpha = 100; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; } } else { if (animasi3 == false) { animasi3 = true; this.play_sort.enabled = false; this.play_sort._alpha = 50; this.trace_sort.enabled = false; this.trace_sort._alpha = 50; this.pause_sort.enabled = true; this.pause_sort._alpha = 100; } else { animasi3 = false; this.play_sort.enabled = true; this.play_sort._alpha = 100; this.trace_sort.enabled = true; this.trace_sort._alpha = 100; this.pause_sort.enabled = false; this.pause_sort._alpha = 50; } } }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk tombol

TRACE

on (release) { trace_=true;

125

if (metode_sort == "selection") { if (asc_dsc_ == "dsc") { selectionsort_dsc(); } else { selectionsort(); } //end dsc //end asc } else if (metode_sort == "bubble") { if (asc_dsc_ == "dsc") { bubblesort_dsc(); } else { bubblesort(); } //end dsc //end asc } else { if (asc_dsc_ == "dsc") { insertionsort_dsc(); } else { insertionsort(); } //end dsc //end asc } }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk tombol

CLEAR

on(release) { gotoAndPlay(51); }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk movieclip

selection

onClipEvent (load) { var m:Number; m = 0; } onClipEvent (enterFrame) { if (this._parent.kecepatan.speed.selectedIndex == 0) { speed=50; } else if (this._parent.kecepatan.speed.selectedIndex == 1) { speed=30; } else { speed=20; } if (this._parent.animasi == true) { m++; if (m%speed == 0) {

126

trace("loop"+m); if(this._parent.asc_dsc_=="dsc") { this._parent.selectionsort_dsc(); } else { this._parent.selectionsort(); } } } }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk movieclip

bubble

onClipEvent (load) { var m:Number; m = 0; } onClipEvent (enterFrame) { if (this._parent.kecepatan.speed.selectedIndex == 0) { speed=50; } else if (this._parent.kecepatan.speed.selectedIndex == 1) { speed=30; } else { speed=20; } if (this._parent.animasi2 == true) { m++; if (m%speed == 0) { trace("loop"+m); if(this._parent.asc_dsc_=="dsc") { this._parent.bubblesort_dsc(); } else { this._parent.bubblesort(); } } } }

Listing Pada File Visualisasi Layer sim_sort2 Frame 52 untuk movieclip

insertion

onClipEvent (load) { var m:Number; m = 0; } onClipEvent (enterFrame) {

127

if (this._parent.kecepatan.speed.selectedIndex == 0) { speed=50; } else if (this._parent.kecepatan.speed.selectedIndex == 1) { speed=30; } else { speed=20; } if (this._parent.animasi3 == true) { m++; if (m%speed == 0) { trace("loop"+m); if(this._parent.asc_dsc_=="dsc") { this._parent.insertionsort_dsc(); } else { this._parent.insertionsort(); } } } }

Struktur Fungsi

Berikut ini merupakan fungsi-fungsi yang terdapat pada aplikasi ini. Pada

struktur fungsi ini akan dijelaskan nama-nama fungsi, keterangan dan lokasi dari

fungsi-fungsi tersebut.

Nama Fungsi Keterangan Lokasi

function seqsearch() Untuk mensimulasikan

algoritma sequential

search

layer sim_search2

frame29

function binsearch() Untuk mensimulasikan

algoritma binary search

layer sim_search2

frame29

function

bublesort(dat:Array,

banyak:Number)

Untuk mengurutkan data

pada simulasi algoritma

binary search

layer sim_search2

frame29 tombol start

function selectionsort() Untuk mensimulasikan

algoritma selection sort

ascending

layer sim_sort2 frame

52

function

selectionsort_dsc()

Untuk mensimulasikan

algoritma selection sort

descending

layer sim_sort2 frame

52

function bubblesort() Untuk mensimulasikan layer sim_sort2 frame

128

algoritma bubble sort

ascending

52

function bubblesort_dsc() Untuk mensimulasikan

algoritma bubble sort

descending

layer sim_sort2 frame

52

function insertionsort() Untuk mensimulasikan

algoritma insertion sort

ascending

layer sim_sort2 frame

52

function

insertionsort_dsc()

Untuk mensimulasikan

algoritma insertion sort

descending

layer sim_sort2 frame

52

Recommended