modul struktur data
DESCRIPTION
matakuliah teknik informatikaTRANSCRIPT
PRAKTIKUM STRUKTUR DATALABORATORIUM PEMROGRAMAN DAN INFORMATIKA TEORI___________________________________________________________________________________
Kata Pengantar
Assalamualaikum warahmatullahi wabarakatuh
Alhamdulillah, segala puji hanya bagi Allah Taala Rabb semesta alam yang telah memberi taifiq sehingga penerbitan Modul Praktikum Struktur Data Semester Genap 2008/2009 terlaksana dengan baik. Penerbitan modul ini bertujuan untuk memberikan panduan dan informasi kepada mahasiswa Jurusan Teknik Informatika, Universitas Islam Indonesia dalam melakukan praktikum.
Kami sangat berharap modul ini bisa membantu dan memandu mahasiswa dalam beraktivitas di Laboratorium Pemrograman dan Teori (PIT) jurusan Teknik Informatika. Terimakasih kepada semua pihak, terutama para asisten laboratorium PIT yang berperan dalam penerbitan modul ini.Jazzakumullahu khairan, Barakallahu fiikum.
Wassalamualaikum warahmatullahi wabarakatuh
Yogyakarta, Maret 2009Kepala Laboratorium PIT
Arwan Ahmad Khoiruddin, S.Kom., M.Cs.
Bab 1. Analisis Algoritma
1.1. Tujuan praktikuma. Memahami proses analisis algoritmab. Mampu menerapkan metode analisis algoritma dalam berbagai algoritma yang diberikanc. Mampu membuat algoritma untuk sebuah masalah tertentu dan menganalisis optimalitasnya.1.2. Dasar teori1.2.1. PendahuluanAlgoritma adalah istilah yang diambil dari tokoh logika dari dunia Islam yang terkenal yaitu Al Khuwarizmi. Beliau mengemukakan bahwa dalam setiap penyelesaian permasalahan, ada langkah-langkah yang harus ditempuh dalam urutan tertentu. Oleh orang-orang barat, pemikiran yang dikemukakan oleh Al Khuwarizmi ini disebut sebagai algorithm. Algoritma atau algorithm adalah prosedur langkah demi langkah untuk menyelesaikan sebuah permasalahan dalam waktu yang tertentu. Dalam menyelesaikan sebuah permasalahan yang sama, ada kemungkinan bahwa masalah itu diselesaikan dalam cara yang berbeda. Dalam pembahasan kita, hal ini disebut dengan pendekatan algoritma yang berbeda dalam sebuah permasalahan yang sama. Oleh karena itu, maka diperlukan sebuah analisis algoritma untuk mengetahui algoritma mana yang paling optimal di antara semua algoritma yang mungkin digunakan. 1.2.2. Metode analisis algoritmaUntuk menganalisis sebuah algoritma, kita menghitung waktu berjalan (running time) dari sebuah algoritma. Running time tidak ditentukan berdasarkan waktu fix untuk menjalankan sebuah algoritma, karena hal ini akan sangat dipengaruhi oleh beberapa hal, yaitu perangkat yang digunakan (CPU, RAM, dll), sistem operasi yang digunakan, serta bahasa pemrograman yang digunakan.Oleh karena itu, maka penghitungan running time ditentukan dengan notasi-notasi yang mencerminkan proses-proses dalam algoritma tersebut. Notasi-notasi tersebut adalah sebagaimana dalam tabel berikut:Tabel 1. Notasi-notasi analisis algoritmaNotasiKeterangan
TfetchWaktu untuk mengambil nilai variabel
TstoreWaktu untuk memasukkan nilai ke dalam sebuah variabel
TplusWaktu untuk menambahkan dua nilai
TkaliWaktu untuk mengalikan dua nilai
T, T=Waktu untuk membandingkan dua nilai
DllSesuai operasi yang ada
1.3. Langkah Praktikum1.3.1. Latihan terbimbingKasus 1Anda diminta untuk membuat function untuk menghitung luas sebuah persegi panjang. Untuk itu, anda kemudian membuat algoritma sebagai berikut:
1 int cariLuas(int panjang, int lebar) {2Return panjang*lebar;3 }
30 cariLuas(5,7);
Teman anda membuat algoritma yang sedikut berbeda dengan anda. Algoritma yang dia buat adalah sebagai berikut:1 Void cariLuas() {2Int panjang = 5;3Int lebar = 7;4Int luas = panjang * lebar;5 } Untuk algoritma yang anda buat, maka running timenya adalah sebagai berikut:
SyntaxRunning Time
Int cariLuas(int panjang, int lebar)2*Tfetch
Return panjang*lebarTstore + (2*Tfetch) + T*
cariLuas(5,7)2*Tstore
Total(3*Tstore) + (4*Tfetch) + T*
Untuk algoritma teman anda, running timenya adalah sebagai berikut:SyntaxRunning Time
Void cariLuas()-
Int panjang=5Tstore
Int lebar=7Tstore
Int luas = panjang * lebarTstore + (2*Tfetch) + T*
Total(3*Tstore)+ (2*Tfetch) + T*
Dengan demikian, kita bisa membandingkan antara kedua algoritma anda dan teman anda. Dapat dilihat bahwa algoritma teman anda lebih cepat daripada algoritma anda dengan selisih waktu sebanyak Tfetch. Meskipun demikian, dari segi fungsionalitas, algoritma anda lebih fungsional, karena bisa dimanfaatkan lagi (reuse) untuk menghitung luas dari nilai panjang dan lebar yang berbeda.
Kasus 2Untuk menghitung nilai tertinggi pada praktikum struktur data, seorang asisten praktikum membuat sebuah algoritma sebagai berikut:
1 void cariTertinggi(int[] nilai) {2int nilaiMax = 0;3int banyakMahasiswa = nilai.length();4while (i