PENGANTAR ALGORITMA & PEMROGRAMAN C/C++
Transcript of PENGANTAR ALGORITMA & PEMROGRAMAN C/C++
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 PemrogramanKomputer : 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 DataPemecahan masalah tidak harus dengan langsung menulis program dengan bahasa pemrograman tertentu
Disain pemecahan masalah lebih penting
Algoritma menjadi sarana untuk merancang urutan langkah-langkah 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 tertentu5. 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 Baik1. Standar Penyusunan Program
a. Kebenaran logikab. 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)
2. Standar Perawatan Program a. Dokumentasi pemakaian untuk pengguna
b. Dokumentasi pengembangan untuk programmer (biasanya berbentuk komentar-komentar pada source code program)
c. Konvensi penulisan instruksi (memudahkan pengerjaan program oleh programmer lain)
Standar Program yang Baik
Penyajian Algoritma
Algoritma disajikan dengan tulisan dan gambar. Algoritma yang disajikan dengan tulisan berupa pseudocode, sedangkan yang disajikan dengan gambar berupa flowchart (bagan alir).
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 pseudocodeAlgoritma CARI_RERATAa, b, c, Jml: integerRerata : realInput (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 pseudocodeAlgoritma LUAS_LINGKARAN
phi, L, R : realphi <- 3.14 Input(R) L <- phi * R^2 Output(L)
c. Algoritma dengan flowchart
Contoh Penyajian Algoritma
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 programYaitu bagan yang menggambarkan urutan logika dari suatu prosedurpemecahan 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 PseudocodeKepala AlgoritmaAlgoritma HITUNG_RERATA
(Menghitung rerata bilangan bulat)
x, n, k, jumlah: integerrerata: real
input(n)k ← 1jumlah ← 0while k ≦ n do input(x) jumlah ← jumlah + x k ← k + 1endwhile
rerata ← jumlah/noutput(rerata)
Deklarasi
Deskripsi
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 berturut-turut 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 sikuAlgoritma HITUNG_SISI_MIRING_SEGITIGAalas, tinggi: integerSisimiring: realInput(alas,tinggi)
Sisimiring ← sqrt(alas^2 +tinggi^2)
Output(Sisimiring)
2. Algoritma untuk mengkonversi input Jam, Menit, dan Detik, ke
total detikAlgoritma KONVERSI_WAKTUJam, Menit, Detik, TotalDetik: integerInput(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 :
IF nilai = “A” OR nilai = “B” THEN
Output(“Anda dapat mengikuti tes asisten”)
ENDIF
atauIF 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 berulang-ulang, 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 FORInstruksi WHILE – DOInstruksi 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)
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_KALIk : integer
FOR k ← 1 TO 10 DO output(‘HALO’)ENDFOR
INSTRUKSI FOR
Instruksi WHILE-DO
INSTRUKSIProses berulang selama sebuah kondisi terpenuhi Proses berulang tidak diketahui jumlahnya
Bentuk Instruksi : WHILE <kondisi> DO
<blok pernyataan>
ENDWHILE
Contoh: mencetak tulisan “Halo” sebanyak 10 kali
Algoritma CETAK_HALO_SEPULUH_KALIk : integerk ← 1WHILE k ≦ 10 DO
output(‘Halo’)k ← k + 1
ENDWHILE
Instruksi WHILE-DO
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-20angka : integerangka ← 1
REPEAT output(angka) angka ← angka + 1 UNTIL angka > 20
TugasKerjakan TugasASD040311.pdf
Waktu pengerjaan dua minggu, deadline hari Kamis, 17 Maret 2011 pkl. 23.59 WIB
Tugas dikumpul via email : [email protected]
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