230 likes | 443 Views
Notasi Algoritmik. Algoritma dan Struktur Data. Apakah ini kode program?. /*Kamus*/ x,y,z : integer terbesar: integer /*Algoritma*/ input (x,y,z) terbesar x If (y > terbesar) then terbesar y If (z > terbesar) then terbesar z output (terbesar).
E N D
Notasi Algoritmik Algoritma dan Struktur Data
Apakah ini kode program? /*Kamus*/ x,y,z : integer terbesar: integer /*Algoritma*/ input(x,y,z) terbesar x If (y > terbesar) then terbesar y If (z > terbesar) then terbesar z output(terbesar)
Algoritma vs Kode Program • Algoritmatidaksamadengankode program. • Algoritma: langkah-langkahsistematisuntukpenyelesaiansuatumasalah yang dapatdiimplementasikankedalambahasapemrograman. • Notasialgoritmikmerupakannotasi yang digunakanuntukmenuliskansuatualgoritma. • Kode program merupakanimplementasidarinotasialgoritmikkedalambahasapemrogramantertentu.
/*Implementasi algoritma ke dalam Bahasa C*/ ----------------------- /*Deklarasi variabel*/ int a,b,temp; /*Program utama*/ scanf(“%d”,&a); scanf(“%d”,&b); temp = a; a = b b = temp printf(“a: %d \n”,a); printf(“b: %d \n”,b); /*Algoritma untuk menukar nilai dari dua buah variabel*/ ----------------------- /*Kamus*/ a,b,temp : integer /*Algoritma*/ input(a,b) temp a a b b temp output(a,b)
Pengondisian • Untuk memilih suatu tindakan berdasarkan kondisi tertentu • Ada dua macam notasi algoritmik: • If-then • Depend on
Notasi “if-then” • If <kondisi> then <aksi> • If <kondisi> then <aksi 1> <aksi 2> <aksi n> • If <kondisi> then <aksi> Elseif <kondisi> then <aksi>
/*Algoritma untuk melakukan pengecekan bilangan genap atau ganjil*/ ----------------------------------------------- /*Kamus*/ bil : integer cek : string /*Algoritma*/ Input(bil) if (bil mod 2 = 0) then cek = ‘genap’ else cek = ‘ganjil’ output(cek)
/*Algoritma untuk menentukan yudisium mahasiswa*/ ----------------------------------------------------- /*Kamus*/ ipk: integer yudisium : string /*Algoritma*/ input(ipk) if (ipk >= 3.5) then yudisium = ‘cumlaude’ Elseif (ipk >= 3.0) then yudisium = ‘sangat memuaskan’ Elseif (ipk >= 2.75) then yudisium = ‘memuaskan’ Elseif (ipk >= 2.25) then yudisium = ‘cukup’ else yudisium ‘TIDAK LULUS’ output(yudisium)
Notasi “depend on” • Dependon <variabel> <kondisi 1> : <aksi 1> <kondisi 2> : <aksi 2> <kondisi n> : <aksi n> • Dependon <variabel1> <kondisi 1> : depend on <variabel 2> <kondisi 2.1> : <aksi 2.1> <kondisi 2.2> : <aksi 2.2> <kondisi 2> : <aksi 2>
/*Algoritma untuk menampilkan nama hari berdasarkan nomor urut hari*/ --------------------------------------------------------------------- /*Kamus*/ idxHari: integer [1..7] hari: string /*Algoritma*/ input(idxHari) Dependon (idxHari) 1 : hari ‘Senin’ 2 : hari ‘Selasa’ 3 : hari ‘Rabu’ 4 : hari ‘Kamis’ 5 : hari ‘Jumat’ 6 : hari ‘Sabtu’ 7 : hari ‘Minggu’ output(hari) If (hari = ‘Sabtu’) or (hari = ‘Minggu’) then output(‘HOREEE…!!!’) else output(‘hmmmm…’)
Latihan • Buatlahalgoritmauntukmenentukankondisitubuhseseorang, apakahkurus, ideal, ataukegemukan. Diketahuibahwarumusuntukmenghitungberatbadan ideal adalah: BBI = (Tinggi Badan - 100) * 90% Ketentuan kategori berat badan: - jika berat badan seseorang 20% lebih besar dari nilai BBI-nya, maka kategorinya = kegemukan. - jika berat badan seseorang 10% lebih kecil dari nilai BBI-nya, maka kategorinya = kurus. - jika berat badan seseorang sama dengan nilai BBI-nya, maka kategorinya = ideal.
Silakan mengerjakan • Waktunya 10-15 menit
/*Algoritma untuk menentukan kategori berat badan*/ ---------------------------------------------------------- /*Kamus*/ berat,tinggi: integer bbi,persentase,selisih: real kategori: string /*Algoritma*/ input(berat,tinggi) bbi (tinggi-100) * 0.9 selisih tinggi - bbi If (selisih < 0) then selisih -1 * selisih /*untuk mempositifkan nilai selisih jika selisihnya bernilai negatif*/ persentase (bbi / tinggi) * 1
/*Lanjutan dari algoritma sebelumnya*/ If (persentase > 0.2) then kategori ‘KEGEMUKAN’ Elseif (persentase < 0.1) then kategori ‘KURUS’ Else kategori ‘IDEAL’ output(kategori)
Pengulangan • Untuk melakukan suatu proses secara berulang-ulang, sebanyak frekuensi yang ditentukan. • Ada empat macam notasi algoritmik • Traversal • While-do • Repeat-until • Iterate-stop
Notasi “traversal” • Identikdengannotasi “for” padaBahasa C. • <pencacah> traversal [nilai ke-1.. Nilaike-n] <aksi 1> <aksi n>
Contoh /*Algoritma menampilkan deret bilangan genap*/ ----------------------------------------------------- /*Kamus*/ idx,awal,akhir: integer /*Algoritma*/ Input(awal,akhir) idx traversal[awal..akhir] If (idx mod 2 = 0) then output(idx)
Notasi “while-do” • While <kondisi> do <aksi 1> <aksi 2>
Contoh /*Algoritma menampilkan deret bilangan genap*/ ----------------------------------------------------- /*Kamus*/ idx,awal,akhir: integer /*Algoritma*/ Input(awal,akhir) idx awal While(idx <= akhir) do If (idx mod 2 = 0) then output(idx endif idx idx + 1
Latihan • Buatlahalgoritmauntukmenampilkangambarberikut: * ** *** **** Input berupasatubilangan yang akanmenyatakanberapajumlahbarisdarigambartersebut
/*Algoritma menampilkan pola segitiga*/ ----------------------------------------------------- /*Kamus*/ Idx1, idx2,n : integer /*Algoritma*/ Input(n) idx1 traversal[1..n] idx2 traversal[1..idx1] output(‘*’)