Upload
others
View
33
Download
0
Embed Size (px)
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