1.Definisi Algoritma dan Struktur data
Dewasa ini, komputer
digunakan di hampir semua bidang kehidupan manusia, mulai dari
pendidikan, bisnis, sampai dengan permainan. Berbicara tentang komputer
tidak lepas dari pemrogaman komputer. Hal ini karena komputer pada
dasarnya merupakan mesin yang tidak bisa apa-apa. Kita harus memberikan
serangkaian instruksi kepada komputer agar mesin ‘pintar’ ini dapat
memecahkan suatu masalah. Langkah-langkah yang perlu dilakukan dalam
memberikan instruksi kepada komputer untuk memecahkan masalah inilah
yang dinamakan pemrogaman komputer. Adapun langkah-langkah pemrogaman
komputer adalah sebagi berikut: mendefinisikan masalah, menentukan
solusi, memilih algoritma, menulis program, menguji program, menulis
dokumentasi, serta merawat program.
Sebelum membuat program,
hendaknya kita membuat Flow Chart atau Pseudocode, sehingga memudahkan
kita untuk memahami algoritma serta memudahkan kita dalam membuat
program. Program yang ditulis juga harus jelas, nyata, dan komplit.
A. Pengertian Algoritma dan struktur data
Algoritma
adalah suatu prosedur yang tepat untuk memecahkan masalah dengan
menggunakan bantuan komputer serta menggunakan suatu bahasa pemrogaman
tertentu seperti bahasa Pascal, Visual Basic, Java, dan masih banyak
lagi bahasa yang lain.Pranata (2002:8) dalam kehidupan sehari-hari,
sebenarnya kita juga menggunakan algoritma untuk melaksanakan sesuatu.
Sebagai contoh, ketika kita menulis surat, maka kita perlu melakukan
beberapa langkah sebagai berikut:
1. Mempersiapkan kertas dan amplop.
2. Mempersiapkan alat tulis, seperti pena atau pensil.
3. Mulai menulis.
4. Memasukkan kertas ke dalam amplop.
5. Pergi ke kantor pos untuk mengeposkan surat tersebut.
B. Fungsi Algoritma
Dengan
algoritma, kita dapat mengatasi masalah dari yang sederhana sampai yang
kompleks sekalipun. Namun, seorang user harus mampu membuat suatu
program dengan menggunakan bahasa yang difahami oleh komputer. Sebelum
disajikan dalam bentuk bahasa pemrogaman, sebaiknya kita membuat diagram
alir (Flow Chart) dan Pseudocode. Hal ini dimaksudkan agar dapat
mempermudah kerja atau mempermudah dalam membuat program. Selain itu,
algoritma dapat mengatasi masalah logika dan masalah matematika dengan
cara berurutan, tetapi kadang-kadang algoritma tidak selalu berurutan,
hal ini dikenal dengan proses percabangan.
C. Kriteria Program Algoritma dalam Bidang Komputer
Pada
dasarnya, komputer adalah mesin digital, artinya komputer hanya bisa
mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan
tidak ada arus listrik (biasanya dilambangkan dengan 0). Dengan kata
lain, kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrogaman
komputer. Bahasa pemrogaman yang menggunakan sandi 0 dan 1 ini disebut
bahasa mesin. Karena bahasa mesin sangat susah, maka muncul ide untuk
melambangkan untaian sandi 0 dan 1 dengan singkatan kata yang lebih
mudah difahami manusia biasa disebut dengan mnemonic code. Bahasa
pemrogaman yang menggunakan singkatan kata ini disebut bahasa assembly.
Program
algoritma harus komplit, nyata, dan jelas. Meskipun tugas algoritma
tidak menghasilkan solusi, tetapi proses harus berakhir hal ini disebut
dengan semi algorithm (prosedur akan berjalan terus atau biasa disebut
dengan perulangan). Intinya kita tidak boleh menambah masalah, akan
tetapi kita harus mampu menyelesaikan masalah untuk mendapat hasil yang
tepat. Adapun contoh algoritma seperti dalam menghitung luas lingkaran
dari masukan berupa jari-jari lingkaran. Rumus lingkaran adalah L=?*R*R
Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:
1. Masukkan R
2. Pi ? 3,14
3. L ? Pi*R*R
4. Tulis L
Perhatikan
tanda ? pada baris kedua dan ketiga. Tanda ini berarti nilai di sebelah
kanan diberikan pada operan di sebelah kiri. Sebagai contoh, untuk
baris kedua, nilai 3,14 diberikan pada variabel Pi. Berikutnya, nilai
Pi*R*R diberikan pada variable L. Baris terakhir menuliskan luas
lingkaran tersebut.
Seperti yang dikemukakan di atas, bahwa algoritma
ada yang tidak berurutan dan biasa di sebut dengan pengulangan. Adapun
contohnya yaitu dalam penghitungan rata-rata dari sekumpulan data yang
dimasukkan pengguna.
Berikut ini adalah algoritma untuk menghitung rata-rata data yang dimasukkan pengguna:
1. Masukkan N
2. i?1
3. j?0
4.
Selama (i<=N) kerjakan baris 4 sampai dengan 7 5. Masukkan dt 6.
i?i+1 7. j?j+dt 8. Rata?j/N 9. Tulis rata Baris pertama meminta pengguna
memasukkan N, yaitu jumlah data. Pada baris kedua, variabel I, yang
berguna sebagai pencacah banyaknya data yang telah dimasukkan pegguna,
bernilai 1. Pada baris ketiga, variabel j, yang digunakan untuk
menyimpan hasil penjumlahan data, diberi nilai 0. Baris keempat
memberikan perintah untuk mengulangi baris keempat sampai dengan baris
ketujuh selama I kurang dari sama dengan N. Dengan kata lain, setelahi
lebih besar dari N, baris kedelapan yang dijalankan. Baris kelima
meminta masukkan data yang ke-i. Baris keenam menambah variabel I dengan
1. Perhatikan arti dari perintah i?i+1 adalah nilai i ditambah dengan 1
kemudian hasilnya disimpan pada variabel i kembali. Baris ketujuh
menambah variabel j dengan data yang dimasukkan pengguna. Sebagaimana
dijelaskan di atas, variabel j digunakan untuk menyimpan hasil
penjumlahan semua data, jadi untuk setiap masukan data, nilai variabel j
harus ditambah dengan dt. Baris kedelapan menghitung rata-rata dengan
cara membagi hasil penjumlahan dengan banyaknya data. Baris terakhir
menuliskan rata-rata tersebut. Tetapi banyak pemrogram yang sudah
berpengalaman tidak pernah menuliskan algoritma di atas kertas lagi..
Artinya dia menuliskan algoritma itu di daalam kepalanya.
2. Materi dalam Algoritma 2
Bab 1 Pointer
Pointer
merupakan tipe data berukuran 32 bit yang berisi salah satu nilai yang
berpadanan dengan alamat memory tertentu. Sebagai contoh, Sebuah
variable P bertipe pointer bernilai 0x0041FF2A, berarti P menunjuk pada
alamat memory 0041FF2A. Pointer Dideklarasikan seperti variable biasa
menambahkan tanda * (asterisk yangh mengawali nama variable.
Bab 2 Array
Array
adalah suatu struktur data yang terdiri dari sejumlah elemen yang
memiliki tipe data yang sama. Elemen – elemen array tersusun secara
sekuensial dalam memory computer. Array dapat berupa satu dimensi, dua
dimensi, tiga dimensi ataupun banyak dimensi (multi dimensi).
2.1 Array satu dimensi
Array
satu dimensi tidak lain adalah kumpulan elemen – elemen identik yang
tersusun dalam satu baris. Elemen – elemen tersebut memiliki tipe data
yang sama pula.
2.2 Array dua dimensi
Array dua dimensi sering
digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu
dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan
kolom elemen, maka array dua dimensi terdiri dari beberapa baris dan
beberapa kolom elemen yang bertipe sama.
Bab 3. Strukture
Structure
(struktur) adalah kumpulan elemen-elemen data yang digabungkan menjadi
satu ketentuan. Masing – masing elemen data tersebut dikenal dengan
sebuah field. Field data tersebut dapat memiliki tipe data yang sama
ataupun berbeda. Walaupun field – field tersebut berada dalam satu
kesatuan, masing – masing field tersebut tetap dapat diakses secara
indifidual.
Bab 4. Linked list
Pada bab sebelumnya telah
dijelaskan mengenai varriabel array yang bersifat statis (ukuran dan
urutannya sudah pasti). Selain itu, ruang memory yang dipakai olehnya
tidak dapat dihapus bila array tersebut sudah tidak digunakan lagi pada
saat program dijalankan. Untuk memecahkan masalah diatas , Kita dapat
menggunakan variable akan dilokasikan hanya pada saat dibutuhkan dan
sesudah tidak dibutuhkan dapat direlokasikan kembali.
4.1 Single linked list
Pembuatan Single link list dapat menggunakan 2 metode :
• LIPO (Last In First Out), Aplikasinya : Stack ( Tumpukan)
• FIFO (First In First Out), Aplikasinya : Queue (Antrean)
4.2 Double Linked list
Salah
satu kelemahan single link list adalah pointer hany dapat bergerak satu
arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada
single link list hanya dapat bergerak dalam satu arah saja. Untuk
mengatasi kelemahan tersebut, anda dapat menggunakan metode double link
list.
4.3 Circular Doubele linkd list
Ini adalah double linked
list yang simpul terakhirnya menuju ke simpul terakhirnya menuju ke
simpul awalnya menuju ke simpul akhir sehingga membentuk suatu linkaran.
Bab 5. Stack
5.1. Definisi stack
Steck
adalah suatu tumpukan dari benda. Konsep utamanya adalah LIPO , benda
terakhr masuk dalam stack menjadi benda pertama yang dikeluarkandari
stack.
5.2 . Stack dengan Array
Sesuai dengan sifat stack, pengambilan / penghapusan di elemen dalam stack harus dimulai dari elemen teratas.
5.3. Double stack dengan Array
Metode
ini adalah teknik khusus yang dikembangkan untuk menghemat pemakaian
memori dalam pembuatan dua stack dengan array. Intinya adalah
penggunaannya hanya sebuah array untuk menampung dua stack.
5.4. Stack dengan Singel Link List
.
Stack dengan Singel Link List memiliki keunggulan dari pada menggunakan
array, yaitu penggunaan alokaso memori yang dinamis sehingga
menghindari pemborosan memori.
Bab 4. Queue
Queue
merupakan salah satu contoh aplikasi dari pembuatan double linked
listyang cukup sering kita temui dalam kehidupan sehari-hari. Istilah
yang sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue.
Istilah yang sering dipakai bila seseorang keluar dari antrian adalah
dequeue.
1) IMPLEMENTASI QUEUE DENGAN LINEAR ARRAY
Linear array
adalah suatu array yang dibuat seakan-akan merupakan suatu garis lurus
dengan satu pintu masuk dan satu pintu keluar.
2) IMPLEMENTASI ARRAY DENGAN CIRCULAR ARRAY
Circular
array adalah suatu array yang dibuat seakan-akan merupakan sebuah
lingkaran dengan titik awal(head)dan titik akhir(tail) saling
bersebelahan jika array tersebut masih kosong.
3) IMPLEMENTASI QUEUEU DENGAN DOUBLE LINKED LIST
Selain
menggunakan array, queue juga dapat dibuat dengan linked list. Metode
linked list yang digunakan adalah double linked list.
Bab 5. Tree
• TREE
Tree
merupakan salah satu bentuk struktur data tidak linear yang
menggambarkan hubungan yang bersifat hierarkis antara elemen-elemen.
Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen
khusus yang disebut Root. Node lainnya terbagi menjadi himpunan-himpunan
yang saling tak berhubungan satu sama lain.
JENIS-JENIS TREE
1) Binary tree
Binary
tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki
maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai
dengan definisi tersebut tiap node dalam binary tree hanya boleh
memiliki paling banyak 2 child.
JENIS-JENIS BINARY TREE:
FULL BINARY TREE
Jenis binary tree ini tiap nodenya (kecuali leaf) memiliki 2 child dan tiap subtree harus mempunyai panjang path yang sama.
COMPLETE BINARY TREE
Jenis
ini mirip dengan full binary tree, namun tiap subtree boleh memiliki
panjang path yang berbeda dan stiap node kecuali leaf hanya boleh
memiliki 2 child.
SKEWED BINARY TREE
Skewed binary tree adalah binary tree yang semua nodenya (kecuali leaf)
Hanya memiliki 1 child
IMPLEMENTASI BINARY TREE
Binary tree dapat diimplementasikan dalam c++ dengan menggunakan double linked list.
BINARY SEARCH TREE
Binary
tree ini memiliki sifat dimana semua left child harus lebih kecil dari
pada right child dan parentnya. Semua right child juga harus lebih besar
dari left child serta parentnya. Binary search tree dibuat untuk
mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam
searching/pencarian node tertentu dalam binary tree.
3. Kesimpuan
Matakuliah ini mengajarkan teknik-teknik
dasar untuk abstraksi data, algoritma-algoritma akses dan manipulasi
struktur-struktur abstraksi tersebut; serta pengantar analisis kompleksitas
pemakaian storage dan waktu dalam eksekusi algoritme-algoritme tersebut.
Topik-topik yang akan dibahas meliputi: pengenalan struktur data, konsep ADT
(Abstract Data Type) dan contoh-contoh penggunaannya, pemrograman rekursif,
algoritma-algoritma pengurutan (sorting), implementasi struktur data linear
(list, stack, queue), struktur data hirarkis: Tree, Binary Search Tree, AVL
Tree, BTree, Hashtable, dan Graph.
blogngurah.blogspot.com
Tidak ada komentar:
Posting Komentar