PENGENALAN ALGORITMA DAN PEMROGRAMAN Pertemuan 1 MASALAH Adalah pertanyaan atau tugas yang kita cari jawabannya. Setiap masalah memiliki satu atau lebih parameter yang membatasi ruang lingkupnya. Untuk menentukan parameter tersebut dibutuhkan analisa masalah. ALGORITMA Adalah urutan langkah-langkah untuk memecahkan masalah. Pengertian dari beberapa literatur Deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran. Deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas. Prosedur komputasi yang terdefenisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi, algoritma adalah deretan langkah komputasi yang mentransformasikan masukan menjadi keluaran. ALGORITMA Contoh-contoh Algoritma Langkah-langkah memasak suatu resep makanan. Langkah-langkah pengerjaan pratikum kimia. Langkah-langkah pengisian pulsa prabayar. 3 Faktor dalam Algoritma Problem – Problem Solver – Processor Lima sifat Algoritma Selesai dalam jumlah langkah terbatas. Tidak memiliki arti ganda. Memiliki nol atau lebih input. Memiliki nol atau lebih output. Efektif. SEJARAH ALGORITMA Algoritma berasal dari kata Algorism. Berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad Ibnu Musa al-Khuwarizmi. al-Khuwarizmi dibaca oleh orang Barat menjadi algorism. Dikarenakan sering dikelirukannya algorism dengan arithmetic, terjadi perubahan akhiran sm menjadi -thm. Algorithm secara perlahan dan berangsur-angsur mulai dipakai sebagai metode perhitungan (komputasi) secara umum. PROGRAM DAN PEMROGRAMAN Algoritma akan efektif jika dijalankan oleh sebuat pemroses (processor), dengan sifat : Mengerti setiap langkah dalam algoritma, Mengerjakan operasi yang bersesuaian dengan langkah tersebut. Algoritma yang ditulis dalam bahasa komputer = program. Bahasa komputer yang digunakan untuk menulis program = bahasa pemrograman. Orang yang membuat program = pemrogram. Kegiatan merancang dan menulis program disebut = pemrograman. BELAJAR MEMPROGRAM DAN BELAJAR BAHASA PEMROGRAMAN Apa perbedaannya? Belajar memprogram: Pemecahan Masalah -Strategi -Metodologi -Sistematika Belajar bahasa pemrograman: Notasi yang telah disepakati Belajar memakai suatu bahasa komputer, Aturan tata bahasanya, Instruksi-instruksinya, Tata cara pengoperasian compiler-nya, Dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja. Hasil vs Metode? PENGGOLONGAN BAHASA PEMROGRAMAN Berdasarkan tujuan aplikasinya Bertujuan khusus (specific purpose PL) Bertujuan umum (general purpose PL) Cobol, Fortran, Assembly, Prolog, Simscript, etc Pascal, Basic, C, C++, etc Berdasarkan kemiripan bahasa Bahasa tingkat rendah Bentuk “manusiawi” dari bahasa mesin Bahasa tingkat tinggi Lebih “manusiawi” dan dekat ke bahasa manusia NOTASI ALGORITMIK Terbagi menjadi 3 Notasi I : menyatakan langkah-langkah algoritma dengan untaian kalimat deskriptif. Notasi II : menggunakan bagan alir (flowchart). Notasi III : menggunakan pseudo-code. KALIMAT DESKRIPTIF PROGRAM Euclidean Diberikan dua buah bilang bulat tak-negatif m dan n (m ≥ n). Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari kedua bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis membagi m dan n. ALGORITMA : 1. Jika n = 0 maka m adalah jawabannya; stop. tetapi jika n ≠ 0, lanjutkan ke langkah 2. 1. Bagilah m dengan n dan misalkan r adalah sisanya. 2. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali langkah 1. FLOWCHART mulai baca m dan n n=0 r = m MOD n m=n n=r tulis m selesai PSEUDO-CODE PROGRAM Euclidean Program untuk mencari gcd dari dua buah bilangan bulat tak-negatif m dan n (m ≥ n). Gcd dari m dan n adalah bilangan bulat positif terbesar yang habis membagi m dan n. DEKLARASI : m, n : integer r : integer { bilangan bulat yang akan dicari pbt-nya } { sisa hasil bagi } ALGORITMA : read (m,n) {m≥n} while n ≠ 0 do r ← m MOD n { hitung sisa hasil pembagian } m←n n←r endwhile { kondisi selesai pengulangan : n = 0, maka gcd(m,n) = m } write (m) PARADIGMA PEMROGRAMAN Pemrograman Prosedural / Terstruktur Pemrograman Fungsional Berdasarkan urutan-urutan, sekuensial. Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan. Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah. Program dapat dibagi-bagi menjadi prosedur dan fungsi. Contoh : PASCAL dan C. Berdasarkan teori fungsi matematika. Fungsi merupakan dasar utama program. Pemrograman Modular Pemrograman ini membentuk banyak modul. Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri. Sebuah program dapat merupakan kumpulan modul-modul. Contoh : MODULA-2 atau ADA. PARADIGMA PEMROGRAMAN Pemrograman Berorientasi Objek Pemrograman berdasarkan prinsip objek, dimana objek memiliki data / variable / property dan method / event / procedure yang dapat dimanipulasi. Contoh : C++, Object Pascal, Java, dll. Pemrograman Berorientasi Fungsi Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini. Contoh : SQL, HTML, XML, dll. Pemrograman Deklaratif Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma. Contoh : PROLOG. SOAL LATIHAN Tuliskan 3 contoh algoritma dalam kehidupan sehari-hari beserta langkah-langkahnya. Misalkan terdapat dua buah ember, masingmasing mempunyai volume 5 liter dan 3 liter. Tuliskan algoritma untuk memperoleh air sebanyak 1 liter dengan hanya menggunakan kedua ember tersebut.