modul struktur data

Upload: amsar-amrah

Post on 14-Oct-2015

51 views

Category:

Documents


0 download

DESCRIPTION

matakuliah teknik informatika

TRANSCRIPT

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