Dasar-dasar Algoritma Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN Apa Itu Algoritma? Algoritma berasal dari: Nama Abu Ja far Muhammad Ibnu Musa Al-Khwarizmi ahli matematika Persia yang menulis Kitab Al jabar wal-muqabala pada sekitar tahun 825M. Konsep pencatatan cara-cara (prosedur) pemecahan masalah matematika. Definisi: Urutan langkah berhingga untuk memecahkan masalah logika atau matematika (Microsoft Press@) Kamus Besar Bahasa Indonesia: Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah Algoritma dibutuhkan (terkait dengan komputer): untuk memerintah komputer mengambil langkah-langkah tertentu dalam menyelesaikan masalah TI - Algoritma dan Pemrograman 2 1
Algoritma di Kehidupan Nyata Cara-cara memasak atau membuat kue yang dinyatakan sebagai resep adalah algoritma. Menulis surat: 1. Mempersiapkan kertas dan amplop 2. Mempersiapkan alat tulis. 3. Mulai menulis 4. Memasukkan kertas ke dalam amplop 5. Amplop ditempeli perangko secukupnya 6. Pergi ke kantor pos untuk mengeposkan surat tsb. Langkah 1 s/d 6 adalah algoritma TI - Algoritma dan Pemrograman 3 Konstruksi (struktur) Algoritma Berurutan (sequence): langkah dikerjakan secara berurutan (sekuensial). Percabangan (selection): langkah dikerjakan JIKA memenuhi kondisi tertentu Pengulangan (iteration): langkah dikerjakan SELAMA memenuhi suatu kondisi tertentu. Konkuren (concurrent): beberapa langkah dikerjakan secara bersama. Catatan: langkah = instruksi TI - Algoritma dan Pemrograman 4 2
Penulisan Algoritma Dalam bahasa natural (Bahasa Indonesia, Bahasa Inggris, dan bahasa manusia lainnya) Tapi sering membingungkan (ambiguous) Menggunakan pseudo-code Sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang yang tidak mengerti pemrograman Menggunakan flow chart (diagram alir) Bagus secara visual akan tetapi repot kalau algoritmanya panjang TI - Algoritma dan Pemrograman 5 Pseudo-code Definisi: Bahasa (biasanya Inggris) terstruktur untuk menggambarkan logika algoritma Bagian terstruktur (konstruksi dasar) adalah: SEQUENCE: berurutan melakukan satu langkah setelah langkah lainnya IF-THEN THEN-ELSE: ELSE: percabangan (seleksi) pilihan dibuat diantara dua alternatif langkah WHILE: pengulangan dengan uji kondisi di awal Konstruksi tambahan: CASE: percabangan (generalisasi IF-THEN THEN-ELSE) ELSE) DO-WHILE: pengulangan dengan uji kondisi di akhir FOR: pengulangan dengan pencacah TI - Algoritma dan Pemrograman 6 3
Konstruksi SEQUENCE Keyword yang umum dari SEQUENCE: Input : READ, OBTAIN, GET Output : PRINT, DISPLAY, SHOW Compute : COMPUTE, CALCULATE, DETERMINE Initialize : SET, INIT Add one : INCREMENT, BUMP Contoh: READ height of rectangle READ width of rectangle COMPUTE area as height times width DISPLAY area BACA tinggi persegi panjang BACA lebar persegi panjang HITUNG luas sbg tinggi kali lebar TAMPILKAN luas TI - Algoritma dan Pemrograman 7 Konstruksi IF-THEN THEN-ELSEELSE Bentuk Umum: IF condition THEN sequence 1 ELSE sequence 2 ENDIF Catatan: : condition adalah pilihan biner (ya atau tidak) Contoh: IF HoursWorked > NormalMax THEN Display overtime message ELSE Display regular time message ENDIF TI - Algoritma dan Pemrograman 8 4
Konstruksi WHILE Bentuk Umum: WHILE condition sequence ENDWHILE Contoh: WHILE Population < Limit Compute Population as Population + Births - Deaths ENDWHILE TI - Algoritma dan Pemrograman 9 Flowchart Definisi: Flowchart adalah bentuk gambar/diagram yang mempunyai aliran satu atau dua arah secara sekuensial. Digunakan: Untuk merepresentasikan sebuah algoritma secara skematik sehingga mempermudah memahami alur logikanya. Lambang-lambang Flowchart Lambang Keterangan Mulai atau Selesai (Terminator) Aliran data TI - Algoritma dan Pemrograman 10 5
Lambang-lambang Flowchart Lambang Keterangan Lambang Keterangan Input/Output Proses syarat Bagian yang diulang Perulangan (Iterasi) Percabangan (Seleksi) pencacah Konektor di halaman yang sama Konektor di halaman lain Pemberian nilai awal suatu variabel Memanggil fungsi TI - Algoritma dan Pemrograman 11 Contoh Konstruksi Berurutan Memecahkan masalah matematika yaitu menghitung luas lingkaran dengan masukan berupa jari-jari lingkaran Rumus: : L = πr 2 Algoritma dalam bahasa natural (Indonesia) 1. Ambil jari-jari lingkaran R 2. Set Pi sama dengan 3.14 3. Hitung luas lingkaran L yaitu Pi kali kwadrat jari-jari R 4. Tampilkan luas lingkaran L TI - Algoritma dan Pemrograman 12 6
Algoritma dengan Pseudo-code Indonesia 1. Masukkan R 2. Pi 3.14 3. L Pi * R * R 4. Tulis L Algoritma dengan Pseudo-code Inggris 1. Read R 2. Pi 3.14 3. L Pi * R * R 4. Print L TI - Algoritma dan Pemrograman 13 Algoritma dengan Flow chart Mulai Masukkan R Pi 3.14 L Pi * R * R Tulis L Selesai TI - Algoritma dan Pemrograman 14 7
Contoh Konstruksi Percabangan Menuliskan nilai absolut dari nilai yang dimasukkan pengguna Definisi nilai absolut: x = x, jika x 0 x = -x, jika x < 0 Algoritma dalam bahasa natural Indonesia 1. Ambil nilai x 2. Jika (x < 0) maka kerjakan baris 3, jika tidak kerjakan baris 4 3. Set x sama dengan -x 4. Tampilkan x TI - Algoritma dan Pemrograman 15 Algoritma dengan Pseudo-code (Bhs( Inggris) 1. GET x 2. IF x < 0 THEN x -x 3. DISPLAY x Algoritma dengan Pseudo-code (Bhs( Indonesia) 1. AMBIL x 2. JIKA x < 0 MAKA x -x 3. TAMPILKAN x TI - Algoritma dan Pemrograman 16 8
Algoritma dengan Flow chart Mulai Masukkan x x < 0? Y T x -x Tulis x Selesai TI - Algoritma dan Pemrograman 17 Contoh Konstruksi Pengulangan Menghitung penjumlahan dari sekumpulan data yang dimasukkan oleh pengguna Rumus mencari penjumlahan dari sejumlah data N: N sum = dt i i=1 Algoritma dalam bahasa natural (Bhs( Indonesia) 1. Masukkan jumlah data N 2. Set sum = 0 dan pencacah i = 1 3. Ulangi langkah-langkah berikut sampai i > N a. Masukkan dt b. Hitung sum = sum + dt c. Tingkatkan pencacah i dengan 1 4. Tulis sum TI - Algoritma dan Pemrograman 18 9
Algoritma dengan Pseudo-code Inggris 1. GET N 2. sum 0 3. i 1 4. WHILE i N 5. READ dt 6. sum sum + dt 7. i i + 1 8. ENDWHILE 9. DISPLAY sum TI - Algoritma dan Pemrograman 19 Algoritma dengan Flow chart Mulai Masukkan N sum 0 i 1 Selama (i N) Masukkan dt sum sum + dt i i + 1 Tulis sum Selesai TI - Algoritma dan Pemrograman 20 10
Aspek Penting dari Algoritma 1. Finiteness (ada( batas) 1. 2. Algoritma harus berhenti after a finite number of steps 2. Definiteness (pasti( pasti) 3. Input 3. 4. Output 4. 5. Setiap langkah harus didefinisikan secara tepat, tidak boleh membingungkan (ambiguous) Sebuah algoritma memiliki nol atau lebih input yang diberikan kepada algoritma sebelum dijalankan Sebuah algoritma memiliki satu atau lebih output, yang biasanya bergantung kepada input 5. Effectiveness (tepat( dan efisien) Setiap algoritma diharapkan miliki sifat efektif TI - Algoritma dan Pemrograman 21 Latihan 1. Tulislah algoritma untuk mencari luas segitiga jika masukan dari pengguna adalah alas dan tingginya. Rumus: : L = ½ a.t. 2. Tulislah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku jika diketahui panjang dua sisi yang membentuk sudut siku-siku siku. Rumus: : c = (a2 + b2) 3. Tulislah algoritma untuk meminta masukan dua bilangan dari pengguna kemudian menampilkan bilangan terbesar di antara kedua bilangan tersebut. 4. Tulislah algoritma untuk menampilkan teks Hello World sebanyak 100 kali. TI - Algoritma dan Pemrograman 22 11