Notasi Algoritma & Tipe Data Dasar Teknik Komputer & Pemrograman Dasar Penyusunan Algoritma • Ada beberapa hal yang perlu diperhatikan dalam menyusun suatu algoritma * 1. Finitness. Menyatakan bahwa suatu algoritma harus berakhir untuk semua kondisi setelah memproses sejumlah langkah. 2. Definitness. Menyatakan bahwa setiap langkah harus dinyatakan dengan jelas (tidak rancu atau tidak mendua arti) 3. Masukan. Setiap algoritma bisa memiliki masukan atau tidak memiliki masukan. 4. Keluaran. Setiap algoritma memiliki keluaran. Keluaran merupakan besaran yang berhubungan dengan masukan. 5. Efektifitas. Setiap algoritma diharapkan bersifat efektif, dalam arti semua operasi yang dilaksanakan oleh algoritma haruslah sederhana dan dapat dikerjakan dalam waktu terbatas. * Knuth(1973, hal. 4) dan Horowitz dkk. (1999, hal.1) Jenis Notasi Algoritma Algoritma dapat dituangkan dalam bentuk gambar/bagan atau tulisan A. Flowchart B. Pseudocode A. Flowchart (Diagram Alir) • Merupakan diagram yang menggunakan simbol dan garis untuk menggambarkan urutan proses suatu algoritma • Simbol standar Contoh diagram alir B. Pseudo-code • Pseudo = Bayangan • Code = Program • Pseudo-code menggunakan instruksi tulisan yang mirip dengan instruksi bahasa pemrograman Pedoman menyusun Pseudo-code 1. Notasi ← dipakai untuk memberikan nilai ke suatu variabel hasil ← 2 memberikan nilai ‘2’ ke variabel hasil 2. hasil ← 2 + 1 memberikan hasil penjumlahan bilangan 2 dan 1 ke variabel hasil. 3. Variabel dengan huruf kecil berarti variabel nonlarik, variabel dengan huruf kapital berarti variabel larik (array) Lanjutan .. 4. Penjorokan ke kanan, digunakan untuk menuliskan pernyataan-pernyataan yang berada dalam suatu struktur blok. if x > 0 then pernyataan-1 pernyataan-2 end-if 5. Simbol // digunakan untuk menyatakan komentar 6. Notasi masukkan () dan tampilkan () mewakili perintah untuk memperoleh masukan dan menyajikan keluaran input (a,b) output (jumlah) Lanjutan ... 7. Tanda <, >, ≤, ≥, =, ≠ 8. Notasi A [i] menyatakan elemen ke-I pada larik A. nilai terkecil untuk I adalah nol (0). Untuk larik 2 dimensi akan dinotasikan A[i,j] i menyatakan baris dan j menyatakan kolom 9. Notasi JumlahElemen(A) menyatakan ekspresi untuk memperoleh jumlah elemen larik A. 10. Bentuk while <kondisi> pernyataan-1 … pernyataan-N end-while for <kondisi> pernyataan-1 ... end-for 11. Penulisan Prosedur PROSEDUR namaProsedur(daftarparameter) Pernyataan-1 … Pernyataan-2 NILAI-BALIK AKHIR PROSEDUR Struktur Teks Algoritma • Bagian Judul adalah bagian yang terdiri dari nama program dan penjelasan (spesifikasi) tentang program tersebut. • Bagian Deklarasi merupakan bagian yang digunakan untuk mengumumkan semua nama/variabel yang dipakai dalam algoritma beserta propertinya (misal: tipe) • Bagian Algoritma Merupakan inti dari sebuah program yang berisi instruksi-instruksi pemecahan masalah dalam notasi pseudo-code Program mencetak Hello World PROGRAM HelloWorld { Program untuk mencetak “Hello world”. Masukan program ini tidak ada. Keluarannya adalah tulisan ‘Hello, world’ tercetak di layar.} DEKLARASI { tidak ada } ALGORITMA output(“Hello, world”) Program penjumlahan 2 bilangan PROGRAM Penjumlahan { Program untuk menjumlahkan dua bilangan. Masukan : bilangan a dan bilangan b. Keluarannya adalah hasil penjumlahan.} DEKLARASI a, b, hasil : integer ALGORITMA input(a) input(b) hasil a+b output(hasil) Tipe Data a. Logika ( boolean ) b. Numerik – Bilangan Bulat ( integer ) – Pecahan ( real ) c. Karakter ( character ) d. Gabungan Karakter ( string ) Tipe Logika a. Nama : Boolean b. Domain : {true, false } c. Konstanta: true false d. Operator : Operator logika Tabel Kebenaran Operator Boolean Tipe Numerik a. Nama : integer { untuk bilangan bulat } b. Domain : …,-3,-2,-1,0,1,2,3,… c. Konstanta: 4 -120 10 0 -3 a. Nama : real { untuk bilangan pecahan } b. Domain : semua bilangan pecahan c. Konstanta: 4.0 -1/20 10.99 0.1 -3/4 Operator Numerik No Nama Arti Tipe Hasil operasi 1 * Kali Tergantung operand 2 / Bagi Selalu real 3 + Tambah Tergantung operand 4 - Kurang Tergantung operand 5 ^ Pangkat Tergantung operand 6 abs Harga mutlak Tergantung operand Operator Numerik(lanj..) Khusus Integer : Operator div ( hasil bagi ) Operator mod (sisa bagi ) operand dan hasil selalu integer Contoh 1 3 div 2 = 1 5 div 5 = 1 0 div 2 = 0 5 div 0 = error 1 div 0.5 = error 0.5 div 0.5 = error Contoh 2 3 mod 2 =1 5 mod 5 = 0 0 mod 2 = 0 5 mod 0 = error 1 mod 0.5 = error 0.5 mod 0.5 = error Operator Tipe Numerik ( lanj) 2. Urutan prioritas : a. Kurung didahulukan b. *, /, div, mod sejajar. c. + dan – sejajar d. Jika muncul berurutan & sejajar, mulai dari kiri 20 1 – 2 * 3 div 4 mod 5 + 6 = 1 – 6 div 4 mod 5 + 6 = 1 – 1 mod 5 + 6 = 1–1+6 = 0+6 = 6 Operator Tipe Numerik ( lanj) 3. Dalam algoritma, kedua operand harus bertipe sama. Dalam Pascal, tidak harus sama. Contoh : a,b,c integer, x,y real, bol1 : boolean a div 2 21 a div 2.0 { valid} { tidak valid / error} a/b { valid} x+ a { tidak valid} x div x { tidak valid / error} (x<y) { valid} bol1 - true { tidak valid / error} Operator Tipe Numerik ( lanj) 4. Variabel yang menyimpan hasil operasi harus memiliki tipe sama dengan hasil operasi. Dalam Pascal : jika hasil integer bisa disimpan pada variabel real. Contoh : a,b,c integer, x,y real, bol1 : boolean a a div 2 22 x a div 2 { valid} { tidak valid / error} xa/b { valid} a a div 2 { valid} xa+x { tidak valid / error} bol1 ( x < y ) { valid} bol1 ( a – b ) { tidak valid / error} Operator Relasi Tipe Numerik No Nama Arti Contoh 1 < Lebih kecil 10 < 5 2 ≤ Lebih kecil atau sama dengan 10 ≤ (9+1) {true} 10 ≤ 9 {false} 3 > Lebih besar (1+5)>(2-3) {true} 4 ≥ Lebih besar atau sama dengan 0 ≥ (1) 10 ≥ 9 {false} {true} 5 = Sama dengan 0 = (0-0) {true} 6 Tidak sama dengan 10(11-1) {false} 23 {false } Tipe karakter a. Nama : character b. Domain : karakter yang dikenal komputer c. Konstanta: ‘K’ ‘k’ ‘1’ ‘a’ ‘0’ ‘O’ ‘o’ d. Operator : Operator relasi / perbandingan No Nama Arti Contoh 1 < Lebih kecil ‘b’ < ‘a’ 2 ≤ Lebih kecil atau sama dengan 3 4 > ≥ Lebih besar Lebih besar atau sama dengan 5 = Sama dengan ‘a’ ‘a’ ‘a’ ‘a’ ‘a’ ‘a’ 6 ≤ ≤ > ≥ ≥ = ‘b’ ‘A’ ‘A’ ‘b’ ‘B’ ‘a’ Tidak sama dengan ‘a’ ‘a’ {salah } {betul} {salah} {betul} {salah} {betul} { betul} 24 {salah} Tipe String a. Nama : string b. Domain : kumpulan karakter yang dikenal komputer c. Konstanta: ‘Kaki’ ‘kakak’ ‘111060001’ ‘aki’ ‘007’ ‘O’ d. Operator : Operator Kontruksi No Nama Arti Contoh 1 Tambah 1 karakter ‘batu’ ‘1’ di akhir string ‘batu1’ 2 Tambah 1 karakter ‘atu’ ‘b’ di awal string ‘batu’ 3 & Gabungkan string pertama & kedua ‘aku’ & ‘ cinta’ ‘aku cinta’ 25 Contoh #1 • Buat algoritma program dan flowchart untuk menampilkan “D3 Teknik Telekomunikasi” PROGRAM D3TT { Program untuk menampilkan ‘D3 Teknik Telekomunikasi’. Masukan : -. Keluarannya : “D3 Teknik Telekomunikasi”} DEKLARASI ALGORITMA output(“D3 Teknik Telekomunikasi”) Contoh #2 • Buat algoritma program dan flowchart untuk menampilkan bilangan bulat yang diinputkan pengguna PROGRAM D3TT { Program untuk menampilkan bilangan bulat yang diinputkan pengguna Masukan : bilangan x Keluarannya : bilangan x } DEKLARASI x : integer ALGORITMA input(x) output(x) Contoh #3 Buat algoritma dan flowchart untuk menampilkan hasil perkalian 3*5 PROGRAM perkalian { Program untuk hasil perkalian 3*5 Masukan : Keluarannya : hasil perkalian 3*5} DEKLARASI hasil : integer ALGORITMA hasil 3*5 output(hasil) Contoh #4 Buat algoritma dan flowchart untuk menampilkan hasil perhitungan luas persegi panjang. Nilai panjang dan lebar sesuai dengan yang diinputkan pengguna PROGRAM luasPersegiPanjang { Program untuk menampilkan perhitungan luas persegi panjang Masukan : panjang, lebar Keluarannya : hasil perhitungan luas} DEKLARASI panjang : integer lebar : integer luas : integer ALGORITMA input(panjang) input(lebar) luas panjang * lebar output(luas)