Notasi Algoritmik - E

advertisement
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)
terbesar 
If (z > terbesar)
terbesar 
output(terbesar)
then
y
then
z
Algoritma vs Kode Program




Algoritma tidak sama dengan kode program.
Algoritma: langkah-langkah sistematis untuk
penyelesaian suatu masalah yang dapat
diimplementasikan ke dalam bahasa
pemrograman.
Notasi algoritmik merupakan notasi yang
digunakan untuk menuliskan suatu algoritma.
Kode program merupakan implementasi dari
notasi algoritmik ke dalam bahasa
pemrograman tertentu.
/*Algoritma untuk
menukar nilai dari dua
buah variabel*/
----------------------/*Kamus*/
a,b,temp : integer
/*Implementasi
algoritma ke dalam
Bahasa C*/
----------------------/*Deklarasi variabel*/
int a,b,temp;
/*Algoritma*/
input(a,b)
temp  a
a  b
b  temp
output(a,b)
/*Program utama*/
scanf(“%d”,&a);
scanf(“%d”,&b);
temp = a;
a = b
b = temp
printf(“a: %d \n”,a);
printf(“b: %d \n”,b);
Pengondisian
 Untuk
memilih suatu tindakan
berdasarkan kondisi tertentu
 Ada dua macam notasi algoritmik:
1.
2.
If-then
Depend on
Notasi “if-then”
If <kondisi> then <aksi>
 If <kondisi> then
<aksi 1>
<aksi 2>
<aksi n>
 If <kondisi> then <aksi>
Else if <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’
Else if (ipk >= 3.0) then
yudisium = ‘sangat memuaskan’
Else if (ipk >= 2.75) then
yudisium = ‘memuaskan’
Else if (ipk >= 2.25) then
yudisium = ‘cukup’
else
yudisium  ‘TIDAK LULUS’
output(yudisium)
Notasi “depend on”


Depend on <variabel>
<kondisi 1> : <aksi 1>
<kondisi 2> : <aksi 2>
<kondisi n> : <aksi n>
Depend on <variabel 1>
<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)
Depend on (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 

Buatlah algoritma untuk menentukan kondisi tubuh
seseorang, apakah kurus, ideal, atau kegemukan.
Diketahui bahwa rumus untuk menghitung berat badan
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 BBInya, maka kategorinya = ideal.
Contoh

Contoh (2)

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
persentase  (bbi / tinggi) * 1
/*untuk mempositifkan
nilai selisih jika
selisihnya bernilai
negatif*/
/*Lanjutan dari algoritma sebelumnya*/
If (persentase > 0.2) then
kategori  ‘KEGEMUKAN’
Else if (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
1.
2.
3.
4.
Traversal
While-do
Repeat-until
Iterate-stop
Notasi “traversal”


Identik dengan notasi “for” pada Bahasa C.
<pencacah> traversal [nilai ke-1.. Nilai ke-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
end if
idx  idx + 1
Latihan
 Buatlah
algoritma untuk menampilkan
gambar berikut:
*
**
***
****
Input berupa satu bilangan yang akan menyatakan
berapa jumlah baris dari gambar tersebut
/*Algoritma menampilkan pola segitiga*/
----------------------------------------------------/*Kamus*/
Idx1, idx2,n : integer
/*Algoritma*/
Input(n)
idx1 traversal[1..n]
idx2 traversal[1..idx1]
output(‘*’)
Download