Dasar-dasar Algoritma Dan Representasi Algoritma Pengampu : Muhammad Zidny Naf’an, M.Kom STRUKTUR DASAR ALGORITMA 2 Proses, Instruksi, dan Aksi Algoritma merupakan deskripsi urutan pelaksanaan suatu proses. Algoritma tersusun oleh sederetan langkah instruksi yang logis. Tiap langkah instruksi akan mengerjakan suatu tindakan (Aksi). Bila Aksi dilaksanakan, maka sejumlah operasi yang bersesuaian akan dikerjakan oleh CPU 3 Struktur Dasar Algoritma • Runtunan (Sequence) • Pemilihan (Selection) • Pengulangan (Repetition) 4 Struktur Dasar Algoritma Runtunan (sequence) Runtunan (sequence) • Aksi-aksi dalam algoritma yang dikerjakan secara berurutan • Tiap instruksi dikerjakan satu per satu • Tiap instruksi dilaksanakan tepat satu kali; tidak ada instruksi yang di ulang • Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagaimana yang tertulis di dalam teks algoritmanya. • Akhir dari instruksi terakhir merupakan akhir algoritma • Contoh : A1. Aksi 1 A2. Aksi 2 A3. Aksi 3 • mula-mula aksi 1 dilakukan • aksi 2 dilakukan setelah aksi 1 selesai dilaksanakan • dst. 5 Struktur Dasar Algoritma Pemilihan (Selection) Pemilihan (Selection) memungkinkan suatu Aksi dieksekusi jika suatu kondisi terpenuhi atau tidak terpenuhi Bentuk-bentuk pemilihan • if – else • switch - case 6 Struktur Dasar Algoritma Pemilihan (Selection) if (ekspresi boolean) Aksi 1; Aksi 2; ………… end if Aksi 1 dan Aksi 2 akan diproses jika dan hanya jika nilai ekspresi Boolean = TRUE 7 Struktur Dasar Algoritma Pemilihan (Selection) switch - case Konstruksi ini digunakan sebagai pengganti konstruksi if-else, bila konstruksi if-else bertingkat terlalu jauh, sehingga menjadi sulit dibaca. switch (ekspresi) { case constant_1 : statements_1; break; case constant_2 : statements_2; … case constant_N : statements_N; break; default : statements; } 8 Struktur Dasar Algoritma Pengulangan (repeatition) Aksi-aksi yang dikerjakan berulang kali Bentuk-bentuk Pengulangan : 1. FOR pencacah pengulangan dari a sampai b DO Aksi (aksi dilakukan sebanyak hitungan pencacah pengulangan, yaitu dari a sampai b yakni sebanyak b-a+1 kali) 9 2. REPEAT Aksi UNTIL kondisi (pengulangan aksi dilakukan sehingga kondisi/persyaratan berhenti terpenuhi) 3. WHILE kondisi DO Aksi (selama kondisi/persyaratan pengulangan masih benar, maka aksi dikerjakan) 10 REPRESENTASI ALGORITMA 11 Representasi Algoritma (Notasi Algoritmik) • Kalimat Deklaratif • Pseudocode • Flowchart (diagram alir) 12 Kalimat Deklaratif Judul program/algoritma PROGRAM Hitung Luas Lingkaran Program untuk menghitung luas lingkaran dengan diketahui PHI=3.14 Algoritma Algoritma: 1. Baca r 2. Hitung Luas dengan rumus = PHI*r*r 3. Cetak Luas 13 Kalimat Deklaratif Judul program/algoritma PROGRAM Euclidean Program untuk mencari GCD dari dua buah bilangan bulat positif m dan n (m >= n). GCD dari m dan n adalah bilangan bulat positif terbesar yang habis membagi m dan n Algoritma: 1. Baca m dan n 2. Jika n=0 maka m adalah jawabannya; stop Tetapi jika n!= 0 Lanjutkan ke langkah 3 3. Bagilah m dengan n dan misalkan r adalah sisanya 4. Ganti m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah 1 14 Algoritma Pseudocode Kode atau tanda yang menyerupai (pseudo) program atau merupakan penjelasan cara menyelesaikan suatu masalah. Pseudocode sering digunakan oleh manusia (programmer) untuk menuliskan algoritma sebab mudah mudah dipahami dan digunakan karena mirip dengan kode-kode program sebenarnya. 15 Struktur Pseudocode PROGRAM Nama Program {Penjelasan tentang algoritma, berisi uraian singkat mengenai masalah yang akan diselesaikan} DEKLARASI {semua nama yang dipakai, meliputi nama tipe, nama konstanta, nama peubah, nama prosedur, dan nama fungsi} ALGORITMA: {semua langkah/aksi algoritma dituliskan disini} 16 Format Pseudocode Lengkap Judul program/algoritma PROGRAM Euclidean Program untuk mencari GCD dari dua buah bilangan bulat positif m dan n (m >= n). GCD dari m dan n adalah bilangan bulat positif terbesar yang habis membagi m dan n Deklarasi: m,n r : integer : integer {bil bulat} {sisa hasil bagi} Deklarasi variable komentar Algoritma read(m,n) {m >= n} while n!= 0 do Algoritma r m MOD n mn nr end while {kondisi selesai pengulangan n=0, maka gcd(m,n) = m} 17 Perbandingan Antara Notasi Algoritmik Kalimat Deklaratif Dengan Pseudocode Algoritma Nilai A dikali dengan 10 Cetak nilai A bila lebih besar 10 Dari dua bilangan A dan B, cari bilangan terbesar Pseudocode A A + 10 IF A >10 THEN PRINT A IF A > B THEN PRINT A ELSE PRINT B 18 Flow Chart Flow chart suatu bagan/diagram yang menggambarkan aliran proses yang dikerjakan program dari awal sampai akhir. Flow chart adalah algoritma yang digambarkan dengan diagram. Fungsi dari flow chart adalah mendeskripsikan urutan pelaksanaan suatu proses (sama dengan fungsi algoritma). 19 Jenis Flowchart Sistem Flowchart Urutan proses dalam sistem dengan menunjukkan alat media input, output serta jenis media penyimpanan dalam proses pengolahan data. 20 Jenis Flowchart Program Flowchart Urutan instruksi yang digambarkan dengan simbol tertentu untuk memecahkan masalah dalam suatu program 21 Pembuatan Flowchart Dalam pembuatan flowchart tidak ada kaidah yang baku. • Flowchart = gambaran hasil analisa suatu masalah. • Flowchart dapat bervariasi antara satu pemrogram dengan pemrogram lainnya. Secara garis besar ada 3 bagian utama: • Input • Proses • Output 22 Beberapa hal yang perlu diperhatikan dalam pembuatan flowchart, yaitu : • Hindari pengulangan proses yang tidak perlu dan logika yang berbelit sehingga jalannya proses menjadi singkat. • Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk memperjelas. • Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END. 23 Simbol Flowchart Simbol Nama Keterangan Terminator Tanda mulai/selesai Input/output Operasi pemasukan data atau penampilan data Proses Menyatakan sebarang proses Keputusan Pengambilan keputusan. Di dalam simbol berupa pertanyaan dengan jawaban YA atau TIDAK 24 Simbol Flowchart Simbol Nama Keterangan Proses Terdefinisi Tanda prosedur/fungsi Konektor Sambungan dari satu proses ke poses yang lain dalam halaman yang sama Konektor Sambungan dari satu proses ke poses yang lain dalam halaman yang berbeda 25 CONTOH ALGORITMA SEKUENSIAL 26 Contoh 1 (Konversi Fahrenheit - Celcius) 27 Contoh 1 (Konversi Fahrenheit - Celcius) PROGRAM Konversi Fahrenheit ke Celcius {algoritma ini akan menghitung nilai Celcius dari nilai Fahrenheit yang diinputkan} DEKLARASI f,c : float ALGORITMA read(f) c (F-32) * 5/9 print(c) 28 Contoh 2 (Menghitung Luas Lingkaran) 29 Contoh 2 (Menghitung Luas Lingkaran) PROGRAM Menghitung Luas Lingkaran {algoritma ini akan menghitung luas lingkaran berdasarkan jari-jari yang diinputkan} DEKLARASI r, Luas : float ALGORITMA read(r) Luas phi * r *r print(Luas) 30 Contoh 3 (Konversi Koordinat Polar ke Koordinat Cartesian) 31 Contoh 3 (Konversi Koordinat Polar ke Koordinat Cartesian) PROGRAM Konversi Koordinat {algoritma ini akan mengkonversi koordinat polar menjadi koordinat cartesian} DEKLARASI radius, alpha, X, Y : integer ALGORITMA read(radius) read(alpha) X Radius * Cos(Alpha) Y Radius * Sin(Alpha) print(X) print(Y) 32 Contoh 3 (Bilangan Terbesar) 33 Contoh 3 (Bilangan Terbesar) PROGRAM Mendapatkan Bilangan Terbesar {algoritma ini akan mencari dan mendapatkan bilangan terbesar dari dua bilangan yang diinputkan} DEKLARASI bilanganPertama, bilanganKedua : integer ALGORITMA read(bilanganPertama) read(bilanganKedua) if bilanganPertama > bilanganKedua print(bilanganPertama) else print(bilanganKedua) end if 34 Buatlah Flowchart dan Pseudocode • Problem: Seorang salesman akan menerima komisi berdasarkan nilai penjualan yang dicapai. Salesman itu mendapat komisi 5% dari hasil penjualannya. Buatlah flowchart dan pseudocode untuk menghitung komisi yang didapatkan seorang salesman. Algoritma program: pertama program meminta input data nama salesman dan nilai penjualannya, kemudian program akan menghitung komisi, lalu mencetak nama salesman dan komisi yang didapatkan. 35 TUGAS 1. Buat algoritma dalam bentuk kalimat deklaratif, pseudocode & flowchart untuk mengkonversi dari satuan jam dan menit menjadi detik Misal 1 jam, 20 menit = 3600 + 1200 = 4800 detik Diskusi • Silahkan bentuk kelompok kecil dgn anggota 3 orang • Buatlah algoritma dalam flowchart dan pseudocode untuk suatu masalah tertentu • Silahkan tentukan sendiri masalahnya • Waktu 20 menit dan presentasi 3 kelompok dipilih secara acak 37 Terimakasih 38