PENGANTAR ALGORITMA & PEMROGRAMAN C/C++ Analisis Algoritma dan Struktur Data (TKE 670) Jum at, 04 Februari 2011
Topik Diskusi Komputer dan Pemrograman Mengenal Algoritma dan Struktur Data Langkah Penyelesaian Masalah Standar Algoritma dan Program yang Baik Penyajian Algoritma
Komputer dan Pemrograman Komputer : alat bantu penyelesaian masalah. Langkah-langkah penyelesaian masalah ditentukan oleh operator dalam runtunan instruksi Program adalah sekumpulan instruksi untuk menyelesaikan masalah Bahasa pemrograman digunakan untuk menulis program. Low-level language dan high-level language Interpreted dan compiled language
Algoritma & Struktur Data Pemecahan masalah tidak harus dengan langsung menulis program dengan bahasa pemrograman tertentu Disain pemecahan masalah lebih penting Algoritma menjadi sarana untuk merancang urutan langkahlangkah logis penyelesaian masalah yang disusun secara sistematis Variasi algoritma muncul dalam hal penanganan data: Bagaimana data disusun Data mana yang disimpan di memori Data mana yang digunakan pada saat tertentu, dll. Perlu strategi penanganan data : struktur data
Algoritma Ciri-ciri algoritma yang baik : 1. Benar secara logika 2. Jumlah langkah/step berhingga dan tertentu 3. Efektif 4. Harus terminate pada kondisi tertentu 5. Output yang dihasilkan tepat
Langkah Pemecahan Masalah (1) Inisiasi solusi secara umum: deskripsi masalah merancang algoritma-algoritma untuk memecahkan masalah (bisa lebih dari satu solusi untuk satu permasalahan) menekankan pada ketepatan solusi
Langkah Pemecahan Masalah (2) Analisa algoritma : Menekankan pada efisiensi Efisiensi waktu dan efisiensi ruang Melakukan analisa algoritma dari solusi-solusi yang dirancang Memilih metode struktur data yang tepat Contoh: analisis kompleksitas algoritma (Asymptotic Analysis) untuk membandingkan dua metode sorting, yakni insertion sort dan merge sort (akan dijelaskan di pertemuan berikutnya)
Langkah Pemecahan Masalah (3) Implementasi solusi Menggambar flowchart dan atau menulis pseudocode Menerjemahkan ke dalam bahasa pemrograman tertentu Melakukan pengujian (debugging) dan perbaikan program
Standar Program yang Baik 1. Standar Penyusunan Program a. Kebenaran logika b. Waktu untuk penulisan program c. Kecepatan maksimum eksekusi program d. Ekspresi penggunaan memori e. User friendly (bisa dikembangkan programmer developer lain) f. Portability (instalasi dan inisiasi mudah) g. Pemrograman Modular (memudahkan perawatan)
Standar Program yang Baik 2. Standar Perawatan Program a. Dokumentasi pemakaian untuk pengguna b. Dokumentasi pengembangan untuk programmer (biasanya berbentuk komentarkomentar pada source code program) c. Konvensi penulisan instruksi (memudahkan pengerjaan program oleh programmer lain)
Penyajian Algoritma Algoritma disajikan dengan tulisan dan gambar. Algoritma yang disajikan dengan tulisan berupa pseudocode, sedangkan yang disajikan dengan gambar berupa flowchart (bagan alir).
Contoh Penyajian Algoritma Algoritma untuk mencari rata-rata dari 3 bilangan bulat yang diinputkan: a. Algoritma dengan struktur bahasa Indonesia 1. Baca bilangan a, b, dan c 2. Jumlahkan ketiga bilangan tersebut 3. Bagi jumlahnya dengan 3 4. Tulis hasilnya b. Algoritma dengan pseudocode Algoritma CARI_RERATA a, b, c, Jml: integer Rerata : real Input (a,b,c) Jml <- a+b+c Rerata <- Jml/3 Output (Rerata) c. Algoritma dengan flowchart
Contoh Penyajian Algoritma Algoritma untuk mencari luas lingkaran : a. Algoritma dengan struktur bahasa Indonesia 1. Beri nilai phi dengan 3.14 2. Masukkan jari-jari lingkaran 3. Kalikan phi dengan kuadrat dari jari-jarinya 4. Tulis hasilnya b. Algoritma dengan pseudocode Algoritma LUAS_LINGKARAN phi, L, R : real phi <- 3.14 Input(R) L <- phi * R^2 Output(L) c. Algoritma dengan flowchart
Flowchart Flowchart (bagan alir) adalah suatu bagan yang menggambarkan/mempresentasikan suatu algoritma/prosedur untuk menyelesaikan masalah. Flowchart ada dua macam : Flowchart System Flowchart Program
Flowchart system Yaitu bagan yang menggambarkan suatu prosedur dan proses suatu file dalam suatu media menjadi file dalam media yang lain dalam suatu sistem data. Simbol yang digunakan :
Flowchart program Yaitu bagan yang menggambarkan urutan logika dari suatu prosedur pemecahan masalah. Simbol yang digunakan : : menunjukkan awal dan akhir dari program : memberikan niai awal pada suatu variabel atau counter : menunjukkan pengolahan aritmatika dan pemindahan data : menunjukkan proses input atau output : untuk mewakili operasi perbandingan logika : proses yang ditulis sebagai sub program, yaitu prosedur/ fungsi : penghubung pada halaman yang sama : penghubung pada halaman yang berbeda
Pseudocode Mempermudah pembuatan program Independen dari berbagai bahasa pemrograman Notasi-notasinya bisa diterjemahkan ke berbagai bahasa pemrograman
Struktur Pseudocode Algoritma HITUNG_RERATA (Menghitung rerata bilangan bulat) x, n, k, jumlah: integer rerata: real input(n) k 1 jumlah 0 while k n do input(x) jumlah jumlah + x k k + 1 endwhile Kepala Algoritma Deklarasi Deskripsi rerata jumlah/n output(rerata)
Konversi ke bahasa C /* Program Hitung Rerata */ /* Menghitung nilai rerata sekumpulan bilangan */ /* bulat yang dibaca dari keyboard */ #include <stdio.h> main() { /*Deklarasi*/ int x, n, k, jumlah; float rerata; /*Deskripsi*/ printf( Masukkan jumlah data: ); scanf( %d, &n); } k = 1; jumlah = 0; while (k <= n){ printf( x =? ); scanf( %d, &x); jumlah = jumlah = x; k++; } rerata = (float) jumlah/n; printf( Rerata seluruh data = %f, rerata);
STRUKTUR DASAR ALGORITMA Struktur dasar algoritma ada tiga, yaitu : 1. Sequence Structure (struktur runtunan) Digunakan untuk program yang instruksinya sequential/ urutan. 2. Selection Structure (struktur percabangan) Digunakan untuk program yang menggunakan pilihan/ penyeleksian kondisi. 3. Repetition Structure (struktur perulangan) Digunakan untuk program yang instruksinya akan dieksekusi berulang-ulang.
STRUKTUR RUNTUNAN (Sequence Structure) Dengan Struktur runtunan, berarti : Setiap instruksi akan dikerjakan satu persatu Setiap instruksi dilaksanakan tepat satu kali, tidak ada instruksi yang diulang maupun tidak dilaksanakan Urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi sebagaimana yang tertulis di dalam teks algoritmanya Akhir dari instruksi terakhir merupakan akhir algoritma Bila runtunan instruksi dalam algoritma berturutturut dilambangkan dengan A1, A2, A3, A4, dan A5, maka pelaksanaan instruksi tersebut adalah :
Contoh: Pseudocode sebuah algoritma, sbb: 1. A 10 A 2*A B A Output(B) 2. A 10 B A A 2*A Output(B) Contoh 1) keluaran = 20, Contoh 2) keluaran = 10
Contoh-Contoh Kasus 1. Algoritma untuk menghitung sisi miring segitiga siku siku Algoritma HITUNG_SISI_MIRING_SEGITIGA alas, tinggi: integer Sisimiring: real Input(alas,tinggi) Sisimiring sqrt(alas^2 +tinggi^2) Output(Sisimiring) 2. Algoritma untuk mengkonversi input Jam, Menit, dan Detik, ke total detik Algoritma KONVERSI_WAKTU Jam, Menit, Detik, TotalDetik: integer Input(Jam,Menit,Detik) TotalDetik Jam*3600 + Menit*60 + Detik Output(TotalDetik)
STRUKTUR PERCABANGAN (Selection Structure) Pernyataan percabangan memungkinkan suatu pernyataan dieksekusi hanya jika suatu kondisi terpenuhi atau tidak terpenuhi Contoh : Jika mau nonton film, maka belilah tiketnya Jika suatu bilangan habis dibagi 2, maka bilangan itu adalah bilangan pastilah bilangan genap Bentuk instruksi percabangan Instruksi IF Pernyataan IF Sederhana Pernyataan IF-ELSE Instruksi CASE
INSTRUKSI IF Secara Umum flowchartnya, sebagai berikut:
Pernyataan IF Sederhana Bentuk: IF <kondisi> THEN <pernyataan> ENDIF Pernyataan IF dengan Syarat Tunggal Instruksi untuk memeriksa sebuah kondisi saja Contoh : IF komentar= coba THEN Output( Anda memasukan kata yang benar ) ENDIF
Pernyataan IF Sederhana Pernyataan IF dengan Syarat Majemuk Digunakan operator AND dan OR Contoh : atau IF nilai = A OR nilai = B THEN Output( Anda dapat mengikuti tes asisten ) ENDIF IF nilai<=100 AND nilai>=80then Output( Nilai mata kuliah Anda A ) ENDIF
Pernyataan IF ELSE Bentuk: IF <kondisi> THEN <pernyataan_1> ELSE <pernyataan_2> ENDIF
Pernyataan IF ELSE Contoh : IF x>0 THEN Output( X adalah bilangan positif ) ELSE Output( X adalah bilangan negatif ) ENDIF
INSTRUKSI CASE Alternatif dari pernyataan IF untuk masalah dengan pilihan ganda Semua masalah yang bisa CASE pasti bisa ditangani oleh IF, tetapi tidak sebaliknya Bentuk: SELECT CASE <ekspresi> CASE <ekspresi_1> <blok instruksi_1> CASE <ekspresi_2> <blok instruksi_2>... CASE ELSE <blok instruksi_m> END SELECT
STRUKTUR PERULANGAN (Repetition Structure) Pemrograman untuk melakukan suatu proses yang berulangulang, jika suatu kondisi dipenuhi atau tidak Proses ini biasanya digunakan, untuk : Mengulang proses pemasukan data Mengulang proses perhitungan Mengulang proses penampilan hasil pengolahan data
STRUKTUR PERULANGAN (Repetition Structure) Struktur perulangan terdiri dari 2 bagian : Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan Badan (body) pengulangan, yaitu satu atau lebih aksi yang akan diulang Disamping itu biasanya disertai dengan : Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan
STRUKTUR PERULANGAN (Repetition Structure) Bentuk instruksi perulangan : Instruksi FOR Instruksi WHILE DO Instruksi REPEAT-UNTIL
INSTRUKSI FOR Digunakan untuk mengeksekusi suatu baris/blok instruksi secara berulang-ulang selama kondisi terpenuhi Kondisi yang digunakan untuk menguji hanya sebatas perhitungan menambah/mengurangi isi variabel counter dengan STEP tertentu Jumlah perulangan diketahui secara pasti (n kali)
INSTRUKSI FOR Bentuk instruksi : FOR variable_counter nilai_awal TO nilai_akhir DO <blok instruksi/pernyataan> ENDFOR
INSTRUKSI FOR Contoh: Mencetak tulisan HALO sepuluh kali Algoritma CETAK_HALO_SEPULUH_KALI k : integer FOR k 1 TO 10 DO output( HALO ) ENDFOR
Instruksi WHILE-DO INSTRUKSI Proses berulang selama sebuah kondisi terpenuhi Proses berulang tidak diketahui jumlahnya Bentuk Instruksi : WHILE <kondisi> DO <blok pernyataan> ENDWHILE
Instruksi WHILE-DO Contoh: mencetak tulisan Halo sebanyak 10 kali Algoritma CETAK_HALO_SEPULUH_KALI k : integer k 1 WHILE k 10 DO output( Halo ) k k + 1 ENDWHILE
Instruksi REPEAT-UNTIL Instruksi REPEAT - UNTIL Pengulangan dilakukan selama kondisi bernilai salah Pengujian dilakukan setelah blok pernyataan dijalankan, sehingga minimal sekali pernyataan akan dieksekusi Bentuk Instruksi : REPEAT <blok pernyataan> UNTIL <kondisi>
Instruksi REPEAT-UNTIL Contoh: Menampilkan angka 1, 2,..., 20 Algoritma CETAK_ANGKA_1-20 angka : integer angka 1 REPEAT output(angka) angka angka + 1 UNTIL angka > 20
Tugas Kerjakan TugasASD040311.pdf Waktu pengerjaan dua minggu, deadline hari Kamis, 17 Maret 2011 pkl. 23.59 WIB Tugas dikumpul via email : sunu_jteti@yahoo.co.id Minggu depan kelas ditiadakan, mohon selama dua minggu pelajari dasar-dasar C/C++ Programming PEMBAGIAN GRUP untuk TUGAS PRESENTASI (ambil no. undian). Tema presentasi dan jadwal presentasi diunduh di course page dan papirus