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) 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 Pseudocode A A x 10 Cetak nilai A bila lebih besar 10 IF A >10 THEN PRINT A Dari dua bilangan A dan B, cari IF A > B THEN PRINT A ELSE bilangan terbesar 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 Start Program Flowchart Urutan instruksi yang digambarkan dengan simbol tertentu untuk memecahkan masalah dalam suatu program Input alas, tinggi Luas = alas*tinggi Print Luas End 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 Simbol Flowchart Simbol Nama Keterangan Preparation Inisialisasi perulangan 26 CONTOH ALGORITMA SEKUENSIAL 27 Contoh 1 (Konversi Fahrenheit - Celcius) 28 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) 29 Contoh 2 (Menghitung Luas Lingkaran) 30 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) 31 Contoh 3 (Konversi Koordinat Polar ke Koordinat Cartesian) 32 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) 33 Contoh 3 (Bilangan Terbesar) 34 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 35 Diskusi • Silahkan bentuk kelompok kecil dgn anggota 5 orang • Buatlah algoritma dalam kalimat deklaratif, flowchart, dan pseudocode untuk suatu masalah tertentu • Silahkan tentukan sendiri masalahnya • Waktu 15 menit dan presentasi 1 kelompok dipilih secara acak 36 Tugas • Problem: Seorang kasir menginputkan data barang yang dibeli oleh pelanggan ke dalam sistem. Setiap pembelian barang akan mendapatkan diskon sebesar 15% • Alur program: pertama program meminta input data nama barang dan harga asli, kemudian program akan menghitung diskon, lalu mencetak nama barang, diskon, dan harga setelah diskon • Buatlah algoritma untuk kasus tersebut dalam bentuk flowchart dan pseudocode 38 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 Di suatu pertemuan ada 4 orang pria dewasa, 4 wanita dewasa, dan 4 anak-anak. Keempat pria dewasa itu bernama: Santo, Markam, Gunawan, dan Saiful. Keempat wanita dewasa itu bernama Ria, Gina, Dewi, dan Hesti. Keempat anak itu bernama Hadi, Putra, Bobby dan Soleh. Sebenarnya mereka berasal dari 4 keluarga yang setiap keluarga terdiri dari seorang ayah, seorang ibu dan satu orang orang anak, namun tidak diketahui yang mana yang menjadi ayah dan mana yang menjadi ibu dan mana yang menjadi anak dari masing-masing keluarga itu. Kecuali, beberapa hal diketahui sebagai berikut: Ibu Ria adalah ibu dari Soleh. Pak Santo adalah ayah dari Hadi. Pak Saiful adalah suami dari Ibu Dewi, tapi bukan ayah dari Bobby. Pak Gunawan adalah suami Ibu Hesti. (1) Putra adalah anak dari Pak ........ (2) Anak dari Pak Gunawan adalah ........ 40 Terimakasih 41