15/03/2010
Tujuan dan Sasaran • Mengasah kemampuan pemecahan masalah • Mengeksplorasi algoritma dalam pemecahan masalah. • Mempelajari pengembangan algoritma • Menjadi peduli proses penyelesaian masalah
Problem Solving = Algorithms Algoritma Pemrograman Agus Sumaryanto, S.Kom
[email protected]
http://learning.mas-anto.com
1
Pemecahan Masalah
http://learning.mas-anto.com
2
Proses Pemecahan Masalah
• Pemrograman adalah proses penyelesain masalah. • Teknik Pemecahan masalah
• Langkah 1 : Analisa Masalah – Garis besar masalah dan kebutuhannya – Mendesain langkah untuk memecahkan masalah (algoritma).
– Menganalisasi masalah – Mendefinisikan masalah kebutuhan – Mendesain langkah untuk memecahkan masalah (algoritma).
• Langkah 2 : Implementasi Algoritma – Mengimplementasikan algoritma dalam kode (bahasa pemrograman) – Melakukan verifikasi kinerja algoritma
• Algoritma : – Urutan langkah pemecahan masalah – Pemecahan masalah dibatasi oleh waktu tertentu
• Langkah 3 : Pemeliharaan – Menggunakan dan memodifikasi program jika ada perubahan kebutuhan.
http://learning.mas-anto.com
3
http://learning.mas-anto.com
4
1
15/03/2010
Analisa Program
Apa Algoritma itu?
• Benar-benar memahami masalah • Memahami masalah kebutuhan
• • • • •
– Apakah program membutuhkan interaksi user? – Data apa yang dimanipulasi? – Seperti apa keluarannya
• Jika masalah komplek, bagi menjadi permasalahan lebih kecil.
– Menggambarkan serangkaian contoh (input) itu harus diproses – Menggambarkan keluaran yang diinginkan
– Lakukan analisa setiap sub masalah diatas. http://learning.mas-anto.com
5
•
1. Algoritma harus berhenti setelah melakukan langkah terbatas. 2. Algoritma harus didefinisikan dengan tepat dan tidak ambigu (meragukan). 3. Algoritma harus memiliki nol atau lebih masukan (input). 4. Algoritma harus memiliki nol atau lebih keluaran (output). 5. Algoritma harus sangkil (efektif).
• Formal: Sebuah algoritma merupakan kumpulan instruksi yang tidak ambigu (meragukan).
•
Ordered set of steps : struktur! Executable steps : bisa dilakukan! Unambiguous steps : ikuti petunjuk! Terminating : harus mempunyai akhir!
Algoritma Jantung dari Ilmu Algoritma http://learning.mas-anto.com
6
Donald E. Knuth “The Art of Computer Programming”
Algoritma harus ada sebelum komputer mengeksekusi apa yang diinginkan. Informal : Sebuah Algoritma adalah serangkaian langkah-langkah yang menentukan bagaimana suatu proses dilakukan. Urutan langkah logis pemecahan masalah.
– – – –
http://learning.mas-anto.com
Lima Ciri Penting Algoritma
Apa Algoritma itu?(lanj.) •
Ide dibelakang sebuah program Jenis hardware yang menjalankannya Ditulis dalam bahasa pemrograman apa? Memecahkan masalah dengan cara yang biasa Dikhususkan untuk :
7
http://learning.mas-anto.com
8
2
15/03/2010
Contoh Algoritma (1)
Contoh Algoritma (2)
Nasi Goreng Gila Bahan : Sumber : 1 piring nasi putih, 1 butir telur ayam http://www.lautanindonesia.com/serbarasa/arti kel/try-it/nasi-goreng-gila 1 buah sosis sapi, iris serong tipis 2 butir bakso sapi, belah dua, rajang tipis, 1 siung bawang putih, 1 batang daung bawang, rajang., 1/2 butir bawang Deklarasi bombay, rajang tipis, 1/2 sdt kecap ikan, 1/2 sdt saus Tiram, 1/2 sdt garam, 1/2 sdt gula pasir, 1/2 lada bubuk 1 sdm kecap manis, 1 sdm acar mentimun, Pelengkap : Kerupuk secukupnya, Bawang goreng secukupnya, Acar Cara Membuat : 1. Tumis bawang putih hingga harum, masukkan telur, aduk - aduk. 2. Tambahkan nasi dan garam, aduk rata, angkat. 3. Cetak nasi goreng dalam mangkuk kecil, letakan di piring saji, sisihkan. Algoritma 4. Tumis bawang putih dan bawang bombay hingga harum dan agak layu. 5. Masukkan semua bahan kecuali pelengkap, masak hingga matang, angkat. 6. Siram diatas nasi goreng. Sajikan dengan bawang goreng, kerupuk dan acar. http://learning.mas-anto.com
9
Contoh Algoritma (2.1)
Diberikan dua buah bilangan bulat positif m dan n (m>=n). Cari pembagi bersama terbesar (pbt) dari kedua bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis membagi m dan n.
A1. Bagilah m dengan n dan misalkan r adalah hasilnya. A2. Apakah r = 0? Jika r=0, algoritma selesai, n adalah jawabannya, jika tidak, lanjutkan langkah A3 A3. Ganti nilai m dengan nilai n, nilai n dengan nilai r dan ulangi langkah A1.
http://learning.mas-anto.com
10
Penyajian Algoritma • Satu algoritma dapat digambarkan dalam beberapa cara :
Contoh : Misalkan m=30, n=12 => cari pbt(30,12) Gunakan algoritma Euclidean : A1.1 Hitung m/n=30/12=2, sisanya r=6 A2.1 Karena r=6 tidak sama dengan 0, lanjutkan langkah 3.1 A3.1 Nilai m=n=12 dan n=r=6, ulangi langkah A1.1 A1.2 Hitung m/n=12/6=2, sisanya r=0 A2.2 Karena r=0, maka n=6 adalah jawabanya. Jadi pbt(30,12) = 6
http://learning.mas-anto.com
Algoritma Euclidean
– Formulas: F = (9/5)C + 32 – Words: Multiply the Celsius by 9/5 and add 32. – Flow Charts. – Pseudo-code.
• Dalam setiap kasus, algoritma tetap sama tapi implementasi berbeda 11
http://learning.mas-anto.com
12
3
15/03/2010
Penyajian Algoritma (lanj.)
Ekspresi Algoritma
• Program adalah representasi (perwujudan) dari sebuah algoritma yang didesain untuk aplikasi komputer • Proses: Kegiatan mengeksekusi sebuah program, atau mengeksekusi algoritma yang diwujudkan ke dalam program • Proses : Kegiatan mengeksekusi sebuah algoritma http://learning.mas-anto.com
• English description More easily expressed
More
• Pseudo-code
precise
• High-level programming language
13
http://learning.mas-anto.com
14
Flowchart vs Pseudocode • Penulisan algoritma biasanya diwujudkan dalam 2 bentuk : Apa perbedaan Algoritma dan Program !
1. Flowchart – dalam bentuk-bentuk skema yang dilengkapi dengan deskripsi. Cocok untuk penggambaran proses global 2. Pseudocode – dalam bentuk notasi tulisan Cocok untuk penggambaran proses detil
• Kuliah ini akan menggunakan Pseudocode http://learning.mas-anto.com
15
http://learning.mas-anto.com
16
4
15/03/2010
Pseudocode
Pseudocode (lanj.)
• Pseudocode adalah seperti sebuah bahasa pemrograman namun tanpa ketentuan yang rumit (mudah dipahami, terpenting bisa dipahami). • Ditulis dalam kombinasi bahasa Inggris dan notasi pembentuk program
Contoh algoritma pencarian sequential
– Seperti if, switch dan for, while merupakan notasi dalam bahasa program tingkat tinggi (high-level language)
• Di desain menggunakan pendekatan bahasa tingkat tinggi – Tidak tergantung pada bahasa pemrograman tertentu. http://learning.mas-anto.com
17
Menemukan Algoritma
18
Problem Solving: A creative process • Pemecahan masalah tidak unik dalam ilmu komputer. • Ilmu komputer harus dikombinasikan dengan bidang lain untuk pemecahan lebih baik. • Idealnya harus ada sebuah usaha untuk menemukan/mengembangkan algoritma • Tapi tidak semua masalah dapat dipecahkan dengan model algoritmik. • Perlu seni pemecahan masalah
• Dua tahapan membangun program : – Menemukan algoritma – Menerjemahkan algoritma ke program
• Tahap 2 merupakan langkah termudah. • Tahap 1 bisa sangat susah • Membuat algoritma adalah mencari pemecahan masalah
http://learning.mas-anto.com
http://learning.mas-anto.com
19
http://learning.mas-anto.com
20
5