Modul Praktikum Algoritma dan Pemrograman II
Oleh: Bambang Purnomosidi D. P., S.E., Ak., S.Kom., MMSI
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM YOGYAKARTA
MODUL I List I.1 I.1.1 I.1.2
I.2
Maksud dan Tujuan Maksud Modul ini membahas tentang implementasi list menggunakan Python Tujuan 1. Mahasiswa memahami pengertian list 2. Mahasiswa memahami dan mampu mendefinisikan list 3. Mahasiswa memahami cara mengakses list 4. Mahasiswa memahami dan mampu melakukan berbagai operasi untuk manipulasi list Dasar Teori
Pengertian List List adalah sekumpulan nilai yang tersimpan dalam suatu variabel dan masing-masing nilai tersebut diidentifikasikan oleh suatu indeks. Contoh: [1, 20, “spongebob”, 4, 21] Definisi List Untuk membuat list menggunakan Python, pemrogram bisa langsung menuliskan kumpulan nilai tersebut dalam suatu kurung siku atau bisa menggunakan range jika akan mendefinisikan nilai berupa angka yang berurutan. Contoh: >>> myList = [2, 'nickelodeon','spongebob','56] >>> angka = range(10,25) Mengakses List Untuk mengakses list, pemrogram bisa menyebutkan nama variabel serta indeks dari list yang akan diakses. Contoh: >>> myList[1] 'spongebob' Jika indeks bernilai negatif, maka pengaksesan akan dimulai dari komponen terakhir. Pengaksesan juga bisa dilakukan dengan menggunakan mode slice. Perhatikan contoh pada praktik. Mengetahui Jumlah Elemen List Untuk mengetahui jumlah elemen, bisa digunakan fungsi len(namaList)
Praktikum Algoritma dan Pemrograman II – hal 2 dari 15
Keanggotaan List Untuk mengetahui apakah suatu nilai ada pada suatu list, bisa digunakan perintah berikut: >>> 'spongebob' in myList true Mengakses dengan Loop for variabel in namaList: operasi dalam looping Operasi Aritmetika Terhadap List Pemrogram juga bisa melakukan operasi aritmatis terhadap list dengan hasil berikut ini: ● Operasi penjumlahan akan menyebabkan elemen list bertambah ● Operasi perkalian akan menyebabkan elemen list ditambah dengan elemen yang sama sejumlah angka yang digunakan untuk mengalikan. Mengganti Elemen List Untuk mengganti elemen list, bisa langsung digunakan operator penugasan terhadap elemen yang dikehendaki untuk diganti. Contoh: >>> myList[0] = 'patrick' Menghapus Elemen List Untuk menghapus elemen list, bisa digunakan perintah del elemen I.3
Praktik
1. Ketikkan perintah berikut pada prompt Python: >>> filmFavoritKu = ['Spongebob Squarepants', 'Dora the Explorer'] >>> print filmFavoritKu[1] >>> print filmFavoritku[4]
Catat hasilnya dan jelaskan kesimpulan anda terhadap perintah tersebut! 2. Ketikkan perintah berikut pada prompt Python: >>> print 'Hey Arnold' in filmFavoritKu >>> print 'Dora the Explorer' not in filmFavoritKu
Catat hasilnya dan jelaskan kesimpulan anda terhadap perintah tersebut! 3. Ketikkan perintah berikut pada prompt Python:
Praktikum Algoritma dan Pemrograman II – hal 3 dari 15
>>> >>> >>> >>>
jumlahFilmFavoritku = len(filmFavoritKu) print jumlahFilmFavoritKu jumlahFilmFavoritKu = len(filmFavoritKu[0]) print jumlahFilmFavoritKu
Catat hasilnya dan jelaskan mengapa perintah ke dua dan ke empat menghasilkan hasil yang berlainan! 4. Ketikkan perintah berikut dan jelaskan arti dan hasil masing-masing baris perintah: >>> filmFavoritKu = filmFavoritKu + 'Hey Arnold' >>> filmFavoritKu = filmFavoritKu + ['Hey Arnold'] >>> del filmFavoritKu[-1]
Tambahkan 4 elemen lagi ke dalam list filmFavoritKu dengan isi bebas! 5. Ketikkan perintah-perintah slice pada list filmFavoritKu berikut ini dan kemudian jelaskan masing-masing hasilnya: >>> >>> >>> >>>
filmFavoritKu[1,3] filmFavoritKu[:4] filmFavoritKu[3:] filmFavoritKu[:]
6. Buatlah perintah untuk menampilkan isi dari semua elemen filmFavoritKu dengan menggunakan loop!
Praktikum Algoritma dan Pemrograman II – hal 4 dari 15
MODUL II Method pada List II.1 Maksud dan Tujuan II.1.1 Maksud Modul ini membahas tentang operasi lanjutan pada list dengan menggunakan berbagai method yang tersedia pada Python. II.1.2 Tujuan 1. Mahasiswa memahami berbagai method yang bisa digunakan pada suatu list II.2
Dasar Teori Python menyediakan berbagai method yang bisa digunakan terhadap suatu list. Berikut ini adalah daftar dari method tersebut: append(x) Menambahkan x ke dalam list extend(L) Menambahkan list L ke dalam list insert(i,x) Meyisipkan x ke dalam list, i adalah indeks sebelumnya. remove(x) Menghapus elemen x pop([/]) Mengeluarkan elemen dari list. Tanda [/] menunjukkan bahwa parameter tersebut bersifat opsional. Jika ada, maka parameter untuk method ini adalah indeks yang akan dikeluarkan. Jika tidak ada, maka elemen yang dikeluarkan adalah elemen terakhir. index(x) Menampilkan indeks dari elemen yang bernilai x count(x) Menampilkan jumlah pemunculan dari x dalam list tersebut. sort() Mengurutkan list. reverse() Membalik urutan list.
Praktikum Algoritma dan Pemrograman II – hal 5 dari 15
II.3
Praktik Dengan menggunakan list yang telah anda buat pada modul I (filmFavoritKu yang telah ditambah 4 elemen), kerjakan method di atas terhadap list tersebut! Jelaskan juga hasil yang anda peroleh.
Praktikum Algoritma dan Pemrograman II – hal 6 dari 15
MODUL III Tuple III.1 Maksud dan Tujuan III.1.1 Maksud Modul ini membahas tentang tuple yaitu suatu struktur data di Python yang digunakan untuk menampung daftar elemen yang tidak bisa diganti (immutable). III.1.2 Tujuan 1. Mahasiswa memahami cara mendefinisikan dan menggunakan tuple. 2. Mahasiswa memahami perbedaan tuple dengan list. III.2
Dasar Teori Tuple adalah struktur data di Python yang berisi berbagai elemen dan masing-masing mempunyai indeks. Berbeda dengan list, tuple mempunyai sifat tidak bisa diubah. Meskipun demikian, pemrogram tetap bisa menghapus (seluruh elemen) tuple dengan menggunakan perintah del namaTuple. Selain itu, pemrogram juga bisa mendefinisikan ulang tuple yang telah ada (berarti mengganti seluruh elemen dengan elemen baru). Mendefinisikan Tuple Untuk mendefinisikan tuple, ada beberapa hal yang harus diperhatikan: 1. Untuk tuple dengan lebih dari satu elemen, didefinisikan dengan cara berikut ini: >>> penyanyiFavoritKu = 'Inul','Siti KDI', 'Josh Grobak', 'Britney Spongebob' >>> daftar = (1, 7, 'Hi Roy!', 'http://www.roysuryowatch.org')
2. Untuk tuple dengan satu elemen, didefinisikan dengan menyertakan koma pada akhir elemen: >>> penyanyiFavoritKu = 'Alice Kuper',
Menambahkan Elemen Tuple Suatu tuple hanya bisa ditambah dengan menggunakan elemen tuple lain. Mengakses Elemen Tuple Suatu tuple bisa diakses dengan cara yang sama dengan cara mengakses list. III.3 Praktik 1. Ketikkan perintah berikut ini pada prompt Python kemudian jelaskan arti dan masing-masing hasilnya:
Praktikum Algoritma dan Pemrograman II – hal 7 dari 15
>>> penyanyiFavoritKu = 'Inul','Siti KDI', 'Josh Grobak', 'Britney Spongebob' >>> daftar = (1, 7, 'Hi Roy!', 'http://www.roysuryowatch.org') >>> type(daftar) >>> type(penyanyiFavoritKu)
2. Ketikkan perintah berikut: >>> pelawakFavoritKu = 'Charlie Caplin' >>> kuliahFavoritKu = 'Algoritma Pemrograman',
Dari perintah yang anda ketikkan tersebut, carilah tipe dari variabel di atas dengan menggunakan perintah type. Sama atau berbedakah tipenya? Mengapa? 3. Hapuslah tuple kuliahFavoritKu! 4. Buatlah suatu perintah dengan loop foor (lihat modul I tentang list) untuk menampilkan elemen dari tuple penyanyiFavoritKu! 5. Tambahkan 2 elemen tuple lagi (dengan isi bebas) ke tuple penyanyiFavoritKu! 6. Ketikkan perintah-perintah berikut ini, amati hasilnya dan jelaskan!: >>> >>> >>> >>>
penyanyiFavoritKu[1,3] penyanyiFavoritKu[:4] penyanyiFavoritKu[3:] penyanyiFavoritKu[:]
Praktikum Algoritma dan Pemrograman II – hal 8 dari 15
MODUL IV Dictionary IV.1 Maksud dan Tujuan IV.1.1 Maksud Modul ini membahas tentang dictionary, yaitu suatu struktur data yang mirip dengan kamus, dengan indeks berupa kata. IV.1.2 Tujuan 1. Mahasiswa memahami struktur data dictionary di Python. 2. Mahasiswa memahami dan mampu mendefinisikan dictionary. 3. Mahasiswa memahami perbedaan dictionary dengan list dan tuple. 4. Mahasiswa memahami berbagai operasi yang bisa dilakukan pada dictionary. IV.2
Dasar Teori Dictionary merupakan suatu tipe struktur data yang mirip dengan kamus, pada bahasa pemrograman lain sering disebut associative array. Jika pada tipe data yang telah dibahas sebelumnya (list dan tuple), setiap elemen mempunyai indeks berupa angka integer (bulat) yang urut, maka indeks pada dictionary ini bisa berupa angka integer dan string. Mendefinisikan Dicitionary Dictionary didefinisikan dengan menggunakan kurung kurawal ({}) berikut ini: >>> myDict = {} >>> myDict['one'] = 'satu' Mencari Jumlah Elemen >>> len(namaDictionary) Mengganti Elemen >>> myDict['one'] = 'siji' Menghapus Elemen >>> del myDict[indeks] Method pada Dictionary keys() values() items()
= = =
menampilkan kunci menampilkan nilai elemen menampilkan pasangan kunci dan nilai
Praktikum Algoritma dan Pemrograman II – hal 9 dari 15
has_key(kunci) copy()
= =
mengetahui keberadaan kunci menyalin ke dictionary baru lain.
IV.3 Praktik 1. Buatlah dictionary yang berisi lawan kata sebanyak 10 elemen (misalnya: salah->benar, kiri->kanan, dan seterusnya) 2. Praktikkan penggunaan method pada dictionary yang telah anda buat tersebut! 3. Buatlah program untuk meminta input suatu kata kemudian mencari kata tersebut pada dictionary yang telah anda buat tersebut. Jika ditemukan, tampilkan lawan kata dari kata yang telah diinput tersebut, jika tidak ditemukan, tampilkan pesan bahwa kata tersebut belum ada pada dictionary.
Praktikum Algoritma dan Pemrograman II – hal 10 dari 15
MODUL V Rekursi V.1 Maksud dan Tujuan V.1.1 Maksud Modul ini membahas tentang rekursi yaitu suatu fungsi yang memanggil dirinya sendiri. V.1.2 Tujuan 1. Mahasiswa memahami arti rekursi dan bisa menerapkannya dengan menggunakan Python. V.2
Dasar Teori Rekursi merupakan suatu fungsi yang memanggil fungsi itu sendiri. Tentu saja pembuatan fungsi yang bersifat rekursif ini harus berhati-hati karena kesalahan dalam definisi serta kondisi untuk mengakhir dapat mengakibatkan eksekusi yang tidak terhingga (artinya tidak berhenti-berhenti). Berikut ini adalah contoh rekursi: def hitungMundur(n): if n == 0: print 'Selesai!' else: print n hitungMundur(n-1) V.3 Praktik 1. Ketikkan definisi fungsi hitungMundur di atas kemudian buat dua contoh penggunaannya (dengan parameter 0 dan sembarang angka lain). 2. Apa yang terjadi jika hitungMundur(n-1) diganti dengan hitungMundur(n)? Mengapa? 3. Dengan menggunakan fungsi yang rekursif, buatlah fungsi untuk menampilkan n baris yang berisi tulisan “aku ada di putaran x” dengan x adalah baris yang sedang di akses. Contoh tampilan hasil: >>> tampilkanBaris(5) aku ada di putaran 5 aku ada di putaran 4 aku ada di putaran 3 aku ada di putaran 2 aku ada di putaran 1
Praktikum Algoritma dan Pemrograman II – hal 11 dari 15
MODUL VI Stack VI.1 Maksud dan Tujuan VI.1.1 Maksud Modul ini membahas tentang tipe data abstrak yang berupa stack. Stack merupakan sekumpulan koleksi data dan di Python biasanya diimplementasikan sebagai list. Operasi pada stack biasanya merupakan operasi khusus. VI.1.2 Tujuan 1. Mahasiswa memahami tipe data abstrak berupa stack serta operasi yang biasanya terjadi pada stack. VI.2
Dasar Teori Stack adalah sekumpulan koleksi data dan biasanya berupa suatu list di Python. Oleh karena itu, cara mendefinisikan suatu stack di Python sama dengan cara mendefinisikan list (lihat kembali modul 1). Stack biasanya digunakan pada disiplin ilmu komputer terutama untuk pembuatan interpreter dan compiler. Operasi yang biasanya dilakukan pada stack adalah penambahan dan penghapusan elemen. Stack menggunakan metode LIFO (Last In First Out), yaitu elemen yang terakhir dimasukkan akan dikeluarkan pertama kali. Untuk memasukkan elemen, pemrogram bisa menggunakan method append. Untuk mengambil dan mengeluarkan elemen, pemrogram bisa menggunakan method pop. VI.3 Praktik 1. Buatlah list yang berisi 10 elemen dengan isi bebas. 2. Dengan menggunakan method append dan pop, buktikan bahwa list yang anda buat tersebut merupakan suatu stack!.
Praktikum Algoritma dan Pemrograman II – hal 12 dari 15
MODUL VII Antrian VII.1 Maksud dan Tujuan VII.1.1 Maksud Modul ini membahas tentang antrian yang merupakan kebalikan dari stack. VII.1.2 Tujuan 1. Mahasiswa memahami arti dari antrian dan bisa mengimplementasikan antrian dengan menggunakan bahasa pemrograman Python. VII.2 Dasar Teori Antrian merupakan suatu struktur data yang juga banyak digunakan pada disiplin ilmu komputer. Seperti halnya dalam kehidupan normal, antrian berisi sekumpulan koleksi data yang diimplementasikan sebagai list dan mempunyai dua kategori operasi yaitu penambahan dan penghapusan elemen dari antrian. Penambahan dan penghapusan elemen antrian menggunakan metode FIFO (First In First Out), yaitu data yang pertama kali masuk akan keluar pertama. Untuk memasukkan elemen data ke dalam antrian, digunakan method append, dan untuk menghapus elemen dari antrian, digunakan pop dengan 0 sebagai indeksnya. VII.3 Praktik 1. Buatlah suatu list antrian yang berisi 10 elemen data dengan isi bebas! 2. Dengan menggunakan method append dan pop, buktikan bahwa list yang anda buat tersebut merupakan suatu antrian!.
Praktikum Algoritma dan Pemrograman II – hal 13 dari 15
MODUL VIII Pengurutan Data VIII.1 Maksud dan Tujuan VIII.1.1 Maksud Modul ini membahas tentang algoritma pengurutan data. VIII.1.2 Tujuan 1. Mahasiswa memahami bahwa terdapat banyak algoritma pengurutan data dan dapat mengimplementasikan salah satu dari algoritma tersebut dengan menggunakan bahasa pemrograman Python. VIII.2 Dasar Teori Pengurutan data merupakan materi yang sangat penting karena berkaitan dengan kecepatan pengaksesan data. Suatu data yang diurutkan akan lebih cepat diakses daripada data yang belum diurutkan. Untuk data berjumlah banyak, hal ini akan sangat terasa. Pada dasarnya ada banyak metode untuk pengurutan data, diantaranya adalah selection sort, insertion sort, shell sort, bubble sort, quick sort, radix sort, heap sort, dan lain-lain. Modul ini hanya membahas pengurutan data dengan metode insertion sort. Algoritma insertion sort bisa diuraikan sebagai berikut: 1. Mulai dari elemen pertama dari list sebagai hasil 2. Iterasi sepanjang elemen list, “memindah” elemen pertama 3. Membandingkan elemen yang dipindah dengan hasil saat ini, dimulai dari elemen paling kanan sampai ke elemen paling kiri. 4. Jika elemen yang dipindah lebih rendah nilainya daripada hasil saat ini, salin nilai tersebut ke elemen berikutnya untuk membuat ruangan bagi elemen baru, kemudian ulang lagi dengan elemen hasil terendah berikutnya. 5. Jika elemen yang dipindah tersebut tidak lebih rendah nilainya daripada hasil saat ini, berarti elemen baru tersebut sudah berada pada lokasi yang benar. Simpan ke elemen sebelah kiri dengan menyalin hasil terakhir yang diuji dan ulangi lagi langkah 2 dengan elemen input berikutnya. VIII.3 Praktik 1. Ketikkan dan jalankan script Python berikut ini: #!/usr/bin/python # Implementasi insertion sort # Dimodifikasi dari http://en.wikipedia.org/wiki/insertion_sort # def insertionSort(list): for removed_index in range(1, len(list)): Praktikum Algoritma dan Pemrograman II – hal 14 dari 15
removed_value = list[removed_index] insert_index = removed_index while insert_index > 0 and list[insert_index - 1] > removed_value: list[insert_index] = list[insert_index - 1] insert_index = insert_index - 1 list[insert_index] = removed_value unsorted = [3, 32, 1, 15, 90, 75] insertionSort(unsorted)
2. Bagaimanakah hasil dari script tersebut jika dijalankan? Mengapa? 3. Ubahlah script tersebut sehingga mempunyai output sebagai berikut: Data sebelum diurutkan = [3, 32, 1, 15, 90, 75] Data setelah diurutkan = [1, 3, 15, 32, 75, 90]
4. Dari script tersebut, jelaskan algoritma insertion sort!
Praktikum Algoritma dan Pemrograman II – hal 15 dari 15