Top opii k Di Diss k us usii Komputer dan Pemrograman Menge engena nall Algori Algoritm tmaa dan St ruk ruktt ur Data Data Langkah Langk ah Penyele enyelesai saian an Masa Masalah lah Sta tanda ndarr Algo Algorr i t ma dan Pr Progr ogram am yang Bai Baik k Pe nyajian Algoritm Algori tmaa
Top opii k Di Diss k us usii Komputer dan Pemrograman Menge engena nall Algori Algoritm tmaa dan St ruk ruktt ur Data Data Langkah Langk ah Penyele enyelesai saian an Masa Masalah lah Sta tanda ndarr Algo Algorr i t ma dan Pr Progr ogram am yang Bai Baik k Pe nyajian Algoritm Algori tmaa
Kompute Kompu terr dan Pem Pemrogra rograma mann Komputer Kompu ter : alat bantu bant u penyele penyelesai saian an mas masalah. alah. Langk ah-langk Langkah-lan gkah ah peny penyele elesaian saian masalah diten ditentuk tukan an oleh operator dalam dalam runtunan runt unan instruksi Program adalah sekumpulan instruk Program adalah inst ruksi si unt untuk uk menyelesaik an masalah Bahasa pemrograman digunak pemrograman digunakan an untuk menulis menulis program. LowLo w-le level vel language dan high-le high-level vel language Interpr Inter pree ted dan compile compiledd language language
Algor Al gorii t ma & St r uk uktt ur Data Pemecah emecahan an masalah masal ah t idak harus dengan langsung lang sung menu menulis lis program program dengan bahasa pemrograman pemrograman tertentu tertent u Disainn pem Disai pemec ecahan ahan masalah lebih pen penti ting ng Algoritma menjadi saran Algoritma menjadi saranaa untuk merancang merancang urutan uru tan langkahlangkah langk ah logis penyelesaian penyeles aian masalah yang disusun sec secara ara sistematis Varias ariasii algoritma algori tma muncul dalam dalam hal penangan pen anganan an data: Bagaimana data disusun Data mana yang disimpan disimp an di memori memori Data Da ta mana yang digunak an pada saat tertentu tertent u, dll. Per erlu lu strategi st rategi penanganan penanga nan data : st struktur ruktur data data
Algoritma Ciri-ciri algoritma yang baik : 1. Benar secara logika 2. Jumlah langkah/step berhingga dan tertentu 3. Efektif 4. Harus terminate pada kondisi tertentu 5. Output yang dihasilkan tepat
Langkah Pemecahan Masalah (1) Inisiasi solusi secara umum: deskripsi masalah merancang algoritma-algoritma untuk memecahkan masalah (bisa lebih dari satu solusi untuk satu permasalahan) menekankan pada ketepatan solusi
Langkah Pemecahan Masalah (2) Analisa algoritma : Menek ankan pada efisiensi Efisiensi waktu dan efisiensi ruang Melakukan analisa algoritma dari solusi-solusi yang dirancang Memilih metode struktur data yang tepat Contoh: analisis kompleksitas algoritma (Asymptotic Analysis) untuk membandingkan dua metode sorting , yakni insertion sort dan merge sort (akan dijelaskan di pertemuan berikutnya)
Langkah Pemecahan Masalah (3) Implementasi solusi Menggambar flowchart dan atau menulis pseudocode Menerjemahkan ke dalam bahasa pemrograman tertentu Melakukan pengujian (debugging) dan perbaikan program
Standar Program yang Baik 1. Standar Penyusunan Program a. Kebenaran logika b. Waktu untuk penulisan program c. Kecepatan maksimum eksekusi program d. Ekspresi penggunaan memori e. User friendly (bisa dikembangkan programmer developer lain) f. Portability (instalasi dan inisiasi mudah) g. Pemrograman Modular (memudahkan perawatan)
Standar Program yang Baik 2. Standar Perawatan Program a. Dokumentasi pemakaian untuk pengguna b. Dokumentasi pengembangan untuk programmer (biasanya berbentuk komentarkomentar pada source code program) c. Konvensi penulisan instruksi (memudahkan pengerjaan program oleh programmer lain)
Penyajian Algoritma
Algoritma disajikan dengan tulisan dan gambar. Algoritma yang disajikan dengan tulisan berupa pseudocode, sedangkan yang disajikan dengan gambar berupa flowchart (bagan alir).
Contoh Penyajian Algoritma Algoritma untuk mencari rata-rata dari 3 bilangan bulat yang diinputk an: a.
Algoritma dengan struktur bahasa Indonesia 1. Baca bilangan a, b, dan c 2. Jumlahkan ketiga bilangan tersebut 3. Bagi jumlahnya dengan 3 4. Tulis hasilnya
b.
Algoritma dengan pseudocode Algoritma CARI_RERATA a, b, c, Jml: integer Rerata : real Input (a,b,c) Jml <- a+b+c Rerata <- Jml/3 Output (Rerata)
c
Algoritma dengan flowchart
Contoh Penyajian Algoritma Algoritma untuk mencari luas lingkaran : a. Algoritma dengan struktur bahasa Indonesia 1. Beri nilai phi dengan 3.14 2. Masukkan jari-jari lingkaran 3. Kalikan phi dengan kuadrat dari jari-jarinya 4. Tulis hasilnya b. Algoritma dengan pseudocode Algoritma LUAS_LINGKARAN phi, L, R : real phi <- 3.14 Input(R) L <- phi * R^2 Output(L)
c. Algoritma dengan flowchart
Flowchart Flowchart (bagan alir) adalah suatu bagan yang menggambarkan/mempresentasikan suatu algoritma/prosedur untuk menyelesaikan masalah. Flowchart ada dua macam : Flowchart System Flowchart Program
Flowchart system Yaitu bagan yang menggambark an suatu prosedur dan proses suatu file dalam suatu media menjadi file dalam media yang lain dalam suatu sistem data. Simbol yang digunak an :
Flowchart program Yait u bagan yang menggambarkan uru tan logika dari suatu prosedur pemecahan masalah. Simbol yang digunak an : : menunjukk an awal dan akhir dari program : member ikan niai awal pada suatu variabel atau counter : menunjukk an pengolahan aritm atik a dan pemindahan data : menunjukk an proses input atau outpu t : untuk mewakili operasi perbandingan logik a : proses yang dit ulis sebagai sub program, yait u prosedur/ fungsi : penghubung pada halaman yang sama : penghubung pada halaman yang berbeda
Pseudocode Mempermudah pembuatan program Independen dari berbagai bahasa pemrograman Notasi-notasinya bisa diterjemahkan ke berbagai bahasa pemrograman
Struktur Pseudocode Algoritma HITUNG_RERATA (Menghitung rerata bilangan bulat) x, n, k, jumlah: integer rerata: real input(n) k ! 1 jumlah ! 0 while k ! n do
input(x) jumlah ! jumlah + x k ! k + 1 endwhile rerata ! jumlah/n output(rerata)
Kepala Algoritma Deklarasi Deskripsi
Konversi ke bahasa C /* Program Hitung Rerata */ /* Menghitung nilai rerata sekumpulan bilangan */ /* bulat yang dibaca dari keyboard */ #include
main() { /*Deklarasi*/ int x, n, k, jumlah; float rerata; /*Deskripsi*/ printf(“Masukkan jumlah data: “); scanf(“%d”, &n); k = 1; jumlah = 0; while (k <= n){ printf(“x = ? “); scanf(“%d”, &x); jumlah = jumlah = x; k++; } rerata = (float) jumlah/n; printf(“Rerata seluruh data = %f”, rerata);
STRUKTUR DASAR ALGORITMA Struktur dasar algoritma ada tiga, yaitu : 1. Sequence Structure (struktur runtunan) Digunakan untuk program yang instruksinya sequent ial/ urutan. 2. Selection Structure (struktur percabangan) Digunakan untuk program yang menggunakan pilihan/ penyeleksian kondisi. 3. Repetition Structure (struktur perulangan) Digunakan untuk program yang instruksinya akan dieksekusi berulang-ulang.
STRUKTUR RUNTUNAN (Sequence Structure) Dengan Struktur runtunan, berarti : Setiap instruksi akan dikerjakan satu persatu Setiap instruksi dilaksanakan tepat satu kali, tidak ada instruksi yang diulang maupun tidak dilaksanak an Urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi sebagaimana yang tertulis di dalam teks algoritmanya Akhir dari inst ruksi terakhir merupakan akhir algoritma Bila runtunan instruksi dalam algoritma berturut turut dilambangkan de ngan A1, A2, A3, A4, dan A5, maka pelak sanaan instruksi tersebut adalah :
Contoh: Pseudocode sebuah algoritma, sbb: 1. A
!
10 A ! 2*A B ! A Output(B)
2. A
!
10 B ! A A ! 2*A Output(B)
Contoh 1) ! keluaran = 20, Contoh 2) ! keluaran = 10
Contoh-Contoh Kasus 1. Algoritma untuk menghitung sisi miring segitiga siku siku Algoritma HITUNG_SISI_MIRING_SEGITIGA alas, tinggi: integer Sisimiring: real Input(alas,tinggi) Sisimiring
!
sqrt(alas^2 +tinggi^2)
Output(Sisimiring)
2. Algoritma untuk mengkonversi input Jam, Menit, dan Detik , ke total detik Algoritma KONVERSI_WAKTU Jam, Menit, Detik, TotalDetik: integer Input(Jam,Menit,Detik) TotalDetik
!
Jam*3600 + Menit*60 + Detik
Output(TotalDetik)
STRUKTUR PERCABANGAN (Selection Structure) Pernyataan percabangan memungkinkan suatu pernyataan dieksekusi hanya jika suatu kondisi terpenuhi atau tidak terpenuhi Contoh : Jika mau nonton film, maka belilah tike tnya Jika suatu bilangan habis dibagi 2, maka bilangan itu adalah bilangan pastilah bilangan genap Bentuk instruksi percabangan Instruksi IF Pernyataan IF Sederhana Pernyataan IF-ELSE Instruksi CASE
INSTRUKSI IF Secara Umum flowchartnya, sebagai berikut:
Pernyataan IF Sederhana Bentuk: IF THEN ENDIF
Pernyataan IF dengan Syarat Tunggal Instruksi untuk memeriksa sebuah kondisi saja Contoh : IF komentar=”coba” THEN Output(“Anda memasukan kata yang benar”) ENDIF
Pernyataan IF Sederhana Pernyataan IF dengan Syarat Majemuk Digunakan operator AND dan OR Contoh : IF nilai = “A” OR nilai = “B” THEN Output(“Anda dapat mengikuti tes asisten”) ENDIF
atau IF nilai<=100 AND nilai>=80THEN Output(“Nilai mata kuliah Anda A”) ENDIF
Pernyataan IF – ELSE
Bentuk: IF THEN ELSE ENDIF
Pernyataan IF – ELSE
Contoh : IF x>0 THEN Output(“X adalah bilangan positif”) ELSE Output(“X adalah bilangan negatif”) ENDIF
INSTRUKSI CASE Alternatif dari pernyataan IF untuk masalah dengan pilihan ganda Semua masalah yang bisa CASE pasti bisa ditangani oleh IF, tetapi tidak sebaliknya Bentuk: SELECT CASE CASE CASE ... CASE ELSE END SELECT
STRUKTUR PERULANGAN (Repetition Structure)
Pemrograman untuk melakukan suatu proses yang berulangulang, jika suatu kondisi dipenuhi atau tidak Proses ini biasanya digunak an, untuk : Mengulang proses pemasuk an data Mengulang proses perhitungan Mengulang proses pen ampilan hasil pengolahan data
STRUKTUR PERULANGAN (Repetition Structure) Struktur perulangan terdiri dari 2 bagian : Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan Badan (body) pengulangan, yaitu satu atau lebih aksi yang akan diulang Disamping itu biasanya disertai dengan : Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan
STRUKTUR PERULANGAN (Repetition Structure)
Bentuk instruksi perulangan : Instruksi FOR Instruksi WHILE – DO Instruksi REPEAT-UNTIL
INSTRUKSI FOR
Digunak an untuk mengeksekusi suatu baris/blok instruksi secara berulang-ulang selama kondisi terpenuhi Kondisi yang digunakan untuk menguji hanya sebatas perhitungan menambah/mengurangi isi variabel counter dengan STEP tertentu Jumlah perulangan diketahui secara pasti (n kali)
INSTRUKSI FOR Bentuk instruksi : FOR variable_counter
nilai_awal TO nilai_akhir DO
!
ENDFOR
INSTRUKSI FOR Contoh: Mence tak tulisan ‘HALO’ sepuluh kali Algoritma CETAK_HALO_SEPULUH_KALI k : integer FOR k ! 1 TO 10 DO output(‘HALO’) ENDFOR
Instruksi WHILE-DO INSTRUKSI Proses berulang selama sebuah kondisi terpenuhi Proses berulang tidak diketahui jumlahnya Bentuk Instruksi : WHILE DO ENDWHILE
Instruksi WHILE-DO Contoh: mencetak tulisa n “Halo” sebanyak 10 kali Algoritma CETAK_HALO_SEPULUH_KALI k : integer k ! 1 WHILE k ! 10 DO output(‘Halo’) k ! k + 1 ENDWHILE
Instruksi REPEAT-UNTIL Instruksi REPEAT - UNTIL Pengulangan dilakukan selama kondisi bernilai salah Pengujian dilakuk an setelah blok pernyataan dijalankan, sehingga minimal sekali pernyataan akan dieksekusi Bentuk Instruksi : REPEAT UNTIL
Instruksi REPEAT-UNTIL
Contoh: Menampilkan angk a 1, 2, ......., 20 Algoritma CETAK_ANGKA_1-20 angka : integer angka ! 1 REPEAT output(angka) angka ! angka + 1 UNTIL angka > 20