Programming & Problem Solving Knowledge & skill Algorithms (advanced, combinatoric) Programming language Knowledge & skill Discrete Mathematics Logical Capability Analytical Capability
`
IF2031/Hamonangan Situmorang
Problem Solving (ultimate goal) Ad anced Topics (algorithms, data structures) Intermediate Topics (algorithms, data structures) Pengem bangan Ke pri ba di an
Dasar Pemrograman
Bahasa Pemrograman
` `
` `
Program = truktur Data + Algoritma (instruksi) truktur data : dasar (int, real, boolean), bentukan (record, array, set) Instruksi : assignment, read/write, if/case, loop (for, while, repeat) Pengelompokan instruksi menjadi fungsi/prosedur Operasi file eksternal.
Struktur data: cara merepresentasikan data agar efisien dalam penyimpanan dan pengolahannya. [2] Struktur data seharusnya diterapkan pada algoritma yang didisain secara efisien Jadi mata kuliah Algoritma & Struktur Data adalah suatu disiplin ilmu yang mempelajari bagaimana merepresentasikan data secara efisien dan disain pengolahannya secara efisien
IF2031/Hamonangan Situmorang
` ` ` `
Implementasi dan perawatan software sangat sulit. Kerangka konsep yang jernih memungkinkan pembuatan koding yang lebih efisien dan benar. Requirements (persyaratan) untuksofware yang baik adalah :
Clean Design Easy maintenance Reliable (no core dumps)
IF2031/Hamonangan Situmorang
IF2031/Hamonangan Situmorang
Solusi 1: menggunakan sequential matching, membutuhkan waktu 1 detik x 600.000 kata = 166 jam
IF2031/Hamonangan Situmorang
IF2031/Hamonangan Situmorang
1. 2. 3. 4. 5. 6.
Problem definition Algorithm design / Algorithm specification Algorithm analysis Implementation Testing Maintenance
IF2031/Hamonangan Situmorang
11
` `
Algoritma: Sekumpulan instruksi terbatas yang jika dijalankan akan melaksanakan tugas tertentu.[3] Deskripsi (cara penulisan):
natural language pseudo-code diagram (seperti flowchart)
Kriteria algoritma:
Input: nol atau lebih Output: satu atau lebih Definisi/terjemahan/interprestasi: jelas, tepat untuk tiap instruksi Batasan: sebuah algoritma harus berhenti setelah sejumlah langkah, walaupun jumlah langkah boleh banyak tapi harus terbatas
IF2031/Hamonangan Situmorang
12
Efektifitas: tiap instruksi harus berupa perintah dasar bukan merupakan bentukan dari beberapa perintah
IF2031/Hamonangan Situmorang
13
Contoh: Algoritma untuk menentukan nilai maksimum array ditulis dalam pseudocode
Algorithm arrayMax(A, n): Input: An array A storing n integers. Output: The maximum element in A. currentMax n A[0] for in 1 to n -1 do if currentMax < A[i] then currentMax n A[i] return currentMax
IF2031/Hamonangan Situmorang 14
` `
Deklarasi metode:
-Algorithm name(param1, param2)
Metode
calls: returns: object method(args) return value
` `
Space complexity
Berapa banyak space yang dibutuhkan
Time complexity
Berapa lawa waktu running algoritma
IF2031/Hamonangan Situmorang
16
Space complexity = jumlah memory yang dibutuhkan oleh sebuah algoritma untuk berjalan sampai selesai.
Core dumps (memory leaks) terjadi karena jumlah memory yang dibutuhkan lebih besar daripada yang disediakan oleh sistem.
Beberapa algoritma terkadang lebih efisien jika keseluruhan datanya dimuatkan pada memory.
Hal ini harus memperhatikan batasan sistem, misalnya 2GB teks dalam berbaga kategori (mis: politik, travel, olahraga, bencna alam, dll) apakah mungkin data sebanyak ini dimuatkan ke memory?
IF2031/Hamonangan Situmorang
17
1.
Fixed part: ukuran yang dibutuhkan untuk menyimpan data/variabel, yang independen dari ukuran problem, seperti:
Nama kumpulan data : ukurannya sama saja untuk teks berkuran 2GB ataupun 1MB
2.
Variable part: ukuran yang dibutuhkan ole variabel yang bergantung pada problem, seperti:
- actual text : load 2GB text VS. load 1MB text
IF2031/Hamonangan Situmorang
18
` `
Contoh:
void float sum (float* a, int n) { float s = 0; for(int i = 0; i<n; i++) { s+ = a[i]; } return s; } Space? one word for n, one for a [passed by reference!], one for i constant space!
IF2031/Hamonangan Situmorang
19
IF2031/Hamonangan Situmorang
20
5 ms 4 ms 3 ms 2 ms 1 ms
worst-case
}
A B C
average-case?
best-case
Input
Jika program mengandung if-then statement yang dapat dieksekusi atau tidak variable running time umumnya running time algoritma diukur dari worst case
IF2031/Hamonangan Situmorang 21
Pendekatan eksperimen :
Tuliskan program yang mengimplementasikan algoritma. Jalankan program dengan sekumpulan data yang bervariasi. Tentukan actual running time menggunakan fungsi system untuk mengukur waktu (contoh: system (date) ); Apa problemnya?
IF2031/Hamonangan Situmorang
22
Method: Inspect the pseudo-code and count the number of primitive operations executed by the algorithm Berapa operasi-kah algoritma mencari nilai maksimum array yang ada pada halaman 14 slide presentasi ini?
IF2031/Hamonangan Situmorang
23
Implementation
Pemutusan bahasa pemrograman yang akan digunakan
x C, C++, Lisp, Java, Perl, Prolog, assembly, dll.
Test, test, test Mengintegrasikan feedback dari user, perbaiki bug, penjaminan kompatibelitas pada berbagai platform Maintenance
IF2031/Hamonangan Situmorang
24
[1] Inggriani Liem, Roadmap Belajar Pemrograman dari Kabupaten ke Nasional, dalam presentasi TOKI Biro ITB, 2004. [2] Rada Mihalcea, Data Structures and Algorithm Analysis, CSCE3110 lecture notes chap.1, 2006. [2] Rada Mihalcea, Data Structures and Algorithm Analysis, CSCE3110 lecture notes chap.2, 2006.
IF2031/Hamonangan Situmorang
25