notasi algoritmik

23
Notasi Algoritmik Algoritma dan Struktur Data

Upload: hao

Post on 20-Jan-2016

99 views

Category:

Documents


12 download

DESCRIPTION

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). - PowerPoint PPT Presentation

TRANSCRIPT

Notasi AlgoritmikAlgoritma 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 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

/*Algoritma*/

input(a,b)

temp a

a b

b temp

output(a,b)

/*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);

Pengondisian Untuk memilih suatu tindakan

berdasarkan kondisi tertentu Ada dua macam notasi algoritmik:

1. If-then2. 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 BBI-nya, 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 /*untuk mempositifkan nilai selisih jika selisihnya bernilai

negatif*/

persentase (bbi / tinggi) * 1

/*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 algoritmik1. Traversal2. While-do3. Repeat-until4. 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(‘*’)