22
ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN Disusun Oleh : Sakina Mawardah Teknik Informatika Dosen : Asep M. Yusuf, S.T UNIVERSITAS NASIONAL PASIM

# Algoritma Percabangan dan Algoritma Perulangan

Embed Size (px)

DESCRIPTION

Algoritma Percabangan dan Algoritma Perulangan

Citation preview

ALGORITMA

TUGAS 2

RESUME ALGORITMA PERCABANGAN

DAN ALGORITMA PERULANGAN

Disusun Oleh :

Sakina Mawardah

Teknik Informatika

Dosen :

Asep M. Yusuf, S.T

UNIVERSITAS NASIONAL PASIM

DAFTAR ISI

A. Algoritma Percabangan........................................................................................... 1

1. Pengertian Algoritma Percabangan.................................................................. 1

2. Ekspresi Boolean ............................................................................................... 1

3. Algoritma Teks dan Flowchart Percabangan .................................................... 3

4. Percabangan Tersarang .................................................................................... 6

5. Menggunakan Operator Boolean ..................................................................... 8

6. Percabangan 3 Kondisi atau Lebih .................................................................... 10

B. Algoritma Perulangan ............................................................................................. 12

1. Pengertian Algoritma Perulangan..................................................................... 12

2. Perulangan For – Do.......................................................................................... 14

3. Perulangan While – Do ..................................................................................... 17

4. Perulangan Repeat – Until ................................................................................ 19

1

A. ALGORITMA PERCABANGAN

1. Pengertian Algoritma Percabangan

Pada algoritma runtunan telah kita lihat bahwa setiap pernyataan selalu

dilakukan bila telah sampai gilirannya. Namun demikian ada kalanya suatu pernyataan

atau perintah hanya bisa dilakukan bila memenuhi suatu kondisi atau persyaratan

tertentu. Algoritma ini kita sebut dengan algoritma seleksi kondisi atau juga

percabangan.

Contoh. Misalnya kita ingin menentukan apakah suatu bilangan merupakan

bilangan genap atau ganjil. Algoritmanya dapat kita jabarkan

1. Mulai2. Masukkan satu bilangan (X)3. jika X habis dibagi dua maka lanjut ke 4. Jika tidak

lanjut ke 54. tulis ‘X bilangan genap’. Lanjut ke 6.5. tulis ‘X bilangan ganjil’6. Selesai

Perhatikan bahwa ada dua kemungkinan perintah yang akan dikerjakan setelah

perintah ke-3 dikerjakan. Jika X habis dibagi dua maka selanjutnya perintah ke-4 yang

dikerjakan, kemudian melompat ke 6 (perintah 5 tidak dikerjakan). Sebaliknya jika X

tidak habis dibagi dua perintah selanjutnya melompat ke-5 (perintah 4 tidak

dikerjakan) dan kemudian berakhir pada perintah ke-6.

2. Ekspresi Boolean

Ada dua komponen utama dalam ekspresi percabangan yaitu kondisi dan

pernyataan. Kondisi adalah syarat dilakukannya sebuah (atau sekelompok)

pernyataan, sedangkan pernyataan dalam konteks ini adalah perintah yang berkaitan

dengan suatu kondisi. Contoh umum pernyataan kondisi-pernyataan

2

1. Jika hari hujan, maka saya tidak jadi keluar rumah

kondisi pernyataan

2. Jika nilai ujian lebih besar atau sama dengan 60, maka ujian dinyatakan lulus

kondisi 1 pernyataan 1

Jika nilai ujian kurang dari 60, maka ujian dinyatakan gagal

kondisi 2 pernyataan 2

Sebagaimana contoh sebelumnya dapat dilihat bahwa adakalanya suatu

perintah dilakukan jika kondisi yang mempersyaratkannya telah jelas nilai benar

salahnya. Dalam hal pemrograman kondisi tersebut harus bisa dinyatakan dalam suatu

ekspresi boolean. Ekspresi boolean adalah ekspresi yang hasil ekspresinya bernilai

boolean (true atau false).

Ekspresi Boolean dapat diperoleh dengan menggunakan dua jenis operasi :

1. Operasi Boolean.

Operasi boolean adalah operasi yang menggunakan operator boolean

seperti and, or, not, xor.

Contoh operasi relasional

1. z1 x and y

2. z2 a=2 or b=10

3. z3 not(x)

4. z4 p+2=4 xor q=0

3

2. Operasi Relasional (Operasi Perbandingan)

Operasi relasional adalah operasi yang membandingkan dua buah

operan dengan menggunakan operator perbandingan (ingat, operator

perbandingan : =, <>, <, ≤, >, ≥).

Contoh operasi relasional

1. z1 x > y2. z2 a <> 103. z3 x + y = 174. z4 p div q < r5. z5 p mod 2 = 0

Hasil dari operasi perbandingan memiliki dua kemungkinan, yaitu true

(benar) atau false (salah). Oleh karena itu tipe hasil (z1, z2, z3, z4, z5) dari

setiap operasi di atas adalah boolean.

3. Algoritma Teks dan Flowchart Percabangan

Ada dua tipe algoritma percabangan yang akan kita bahas berikut ini yaitu :

- Satu kondisi (if-then) : artinya hanya ada satu kondisi yang menjadi syarat

untuk melakukan satu atau satu blok (sekelompok) pernyataan. Bentuk

umum algoritma teks standar percabangan dengan satu kondisi :

if <kondisi> thenpernyataan

Jika <kondisi> bernilai benar maka pernyataan dikerjakan, sedangkan jika

tidak, maka pernyataan tidak dikerjakan dan proses langsung keluar dari

percabangan (begin).

4

Contoh.

if A>B thenwrite (A)

Ekspresi di atas menunjukkan bahwa perintah menulis /

menampilkan A dikerjakan hanya jika kondisi A>B bernilai benar. Jika yang

terjadi adalah sebaliknya, tidak ada pernyataan yang dilakukan atau proses

langsung keluar dari percabangan (endif). Secara flowchart ekspresi itu

dapat ditulis seperti berikut.

Perhatikan bahwa pada kotak belah ketupat memiliki dua cabang

arus data, yang satu untuk kondisi bernilai benar (y, artinya ya), sedang yang

lain untuk kondisi bernilai salah (t, artinya tidak). Jika kondisi bernilai benar

(y) maka perintah yang dikerjakan adalah write(A). Jika kondisi salah (t)

maka arus data langsung menuju ke bawah tanpa mengerjakan pernyataan

apapun.

- Dua kondisi (if-then-else) : artinya ada dua kondisi yang menjadi syarat

untuk dikerjakannya dua jenis pernyataan. Bentuk umum percabangan

dengan dua kondisi :

if <kondisi> thenpernyataan1

elsepernyataan2

A>B?

y

t

Write(A)

5

Jika <kondisi> bernilai benar maka pernyataan1 dikerjakan.

Sedangkan jika tidak (<kondisi> bernilai salah), maka pernyataan yang

dikerjakan adalah pernyataan2. Berbeda dengan percabangan satu kondisi,

pada percabangan dua kondisi ada dua pernyataan untuk dua keadaan

kondisi, yaitu untuk <kondisi> yang bernilai benar dan <kondisi> yang

bernilai salah. Contoh algoritma percabangan dua kondisi :

if A>B thenwrite (A)

elsewrite (B)

Ekspresi di atas sedikit berbeda dengan sebelumnya. Perintah

menulis/menampilkan A dikerjakan hanya jika kondisi A>B bernilai benar,

sedangkan jika yang terjadi adalah sebaliknya maka pernyataan yang

dilakukan adalah menulis B. Secara flowchart pernyataan di atas dapat

ditulis sebagai berikut.

A>B?

Write(A)

Write(B)

6

Berikut ini adalah beberapa contoh lainnya.

a. If x > 0 then

ket ‘bilangan positif’

b. if m = n

im*n

write(i)

c. if bil>=0 then

ket (‘bilangan positif’)

else

ket (‘bilangan negatif’)

d. if m = n then

im*n

jm-n

else

im/n

jm+n

write(i,j)

4. Percabangan Tersarang

Percabangan tersarang adalah percabangan di dalam percabangan. Banyak sekali

bentuknya, namun salah satu contohnya adalah sebagai berikut.

If <kondisi1> thenif <kondisi2> then

Pernyataan1elsePernyataan2

elseIf <kondisi3>

Pernyataan3else

7

Pernyataan4

Misalnya, buatlah algoritma untuk menentukan apakah suatu bilangan merupakan

bilangan kelipatan 2 saja, atau kelipatan 5 saja, atau kelipatan 2 dan 5, atau bukan

kelipatan 2 dan 5. Bilangan yang dimaksud merupakan input algorritma.

Algoritma Kelipatan2 Kelipatan5

DeklarasiBil : integerKet : string

Deskripsiread (bil)if bil mod 2 = 0 thenif bil mod 5 = 0 then

Ket ‘ Kelipatan 2 dan Kelipatan 5’

Pernyataan2

Kondisi1

Kondisi3 Kondisi2

Pernyataan1Pernyataan4 Pernyataan3

t y

8

elseKet ‘ Kelipatan 2 tapi Bukan Kelipatan 5’

elseif bil mod 5 = 0 then

Ket ‘Bukan Kelipatan 2 tapi Kelipatan 5’else

Ket ‘Bukan Kelipatan 2 atau 5’)Write(Ket)

5. Menggunakan Operator Boolean

Kita dapat menyederhanakan persoalan percabangan dengan menggunanakan

operator boolean (and, or, not, dan xor) untuk ekspresi boolean yang lebih dari satu.

Misalnya, sebuah univeritas memberlakukan yudisium cumlaude untuk mahasiswa yang

lulus dengan IPK lebih besar sama dengan 3.5 dan masa kuliah tidak lebih dari 4 tahun.

Bagaimana algoritma penentuan yudisiumnya?

(Input : IPK dan masa kuliah)

Algoritma yudisium1Deklarasi

IPK, MK : realKet : string

DeskripsiRead (IPK,MK)If (IPK>=3.5) and (MK<=4)

thenKet ‘cum laude’elseKet ‘tidak cumlaude’

write (Ket)

Begin

(IPK>=3.5)and (MK <=4)

write(ket)

End

y

ket <-- 'cum laude'

ket <-- 'tidak cumlaude'

t

9

Penjelasan

Mula mula IPK dan MK, misalnya, kita beri nilai 3.6 dan 4. Karena kondisi (IPK>=3.5) and

(MK<=4) bernilai benar maka perintah berikutnya adalah Ket ‘cum laude’. Sehingga

ketika perintah Write (Ket) menghasilkan output ‘cum laude’. Cobalah menganalisa soal

ini dengan memberikan input yang lain.

Penggunaan operator logika sangat membantu untuk menyederhanakan algoritma. Jika

tidak menggunakan operator logika maka algoritmanya dapat ditulis sebagai berikut.

Algoritma yudisium2

Deklarasi

IPK, MK : real

Ket : string

Deskripsi

if IPK>=3.5 then

if MK<=4 then

Ket ‘cum laude’

else

Ket ‘tidak cumlaude’

else

Ket ‘Tidak cumlaude’

write (Ket)

10

Di sini terlihat algoritmanya menjadi sedikit rumit. Kerumitan bertambahkarena kita harus membuat percabangan dalam percabangan (percabangantersarang). Selain itu penulisan Ket’Tidak cumlaude’ harus ditulis dua kali agartujuan algoritma dapat dicapai. Dengan demikian penggunaan operator logika dalamhal ini jelas menyederhanakan algoritma di atas.6. Percabangan Tiga Kondisi Atau Lebih

Percabangan dengan tiga kondisi atau lebih adalah bentuk pengembangan dari dua

bentuk percabangan percabangan yang telah kita bahas sebelumnya. Akan ada banyak

sekali variasinya tetapi secara umum ekspresi percabangannya dapat kita tuliskan sebagai

berikut.

If <kondisi1> then

Pernyataan1

else if <kondisi2> then

Pernyataan2

...

else if <kondisi(n-1)> then

Pernyataan(n)

else

Pernyataan(n)

Mula-mula <kondisi1> dicek nilai kebenarannya. Jika benar, maka dikerjakan

pernyataan1. Jika salah, maka dicek nilai kebenaran <kondisi2>. Jika <kondisi2> benar,

maka dikerjakan pernyataan2. Jika tidak algoritma akan mengecek ke kondisi berikutnya

dengan cara yang sama dengan yang sebelumnya. Terakhir, jika semua kondisi bernilai

salah, maka pernyataan yang dikerjakan adalah Pernyataan(n+1). Bentuk flowchartnya

dapat dilihat di bawah ini.

11

Pada algoritma di atas pernyataan1 akan dikerjakan jika <kondisi1> bernilai

benar, jika tidak pemeriksan dilanjutkan ke <kondisi2>. Jika <kondisi2> bernilai benar

maka pernyataan2 dikerjakan. Jika tidak, pemeriksaan dilanjutkan pada kondisi-kondisi

berikutnya. Pemeriksaan ini terus terhadap semua kondisi yang ada. Jika tidak ada kondisi

yang benar maka pernyataan yang dikerjakan adalah pernyataan(n+1).

<kondisi1>?

t

aksi(n+1)<--0

aksi1y

<kondisi2> aksi2

t

y

12

B. ALGORITMA PENGULANGAN

1. Algoritma Perulangan

Ada kalanya untuk menyelesaikan suatu masalah, satu atau beberapa perintah harus

dikerjakan beberapa kali. Misalnya anda hendak menampilkan tulisan algoritma sebanyak

tiga kali. Maka algoritmanya dapat ditulis

1. Mulai2. Tulis ‘Algoritma’3. Tulis ‘Algoritma’4. Tulis ‘Algoritma’5. Selesai

Sehingga diperoleh keluaran

Algoritma

Algoritma

Algoritma

Contoh lain. Anda hendak menghitung suatu bilangan dipangkatkan tiga. Maka

algoritmanya dapat dituliskan

1. Mulai2. Masukkan bilangan X3. Set nilai Y=14. Kalikan X dengan Y, simpan sebagai Y5. Kalikan X dengan Y, simpan sebagai Y6. Kalikan X dengan Y, simpan sebagai Y7. Tulis (Y)8. Selesai

13

Atau dalam algoritma standar ditulis

Deskripsi

Y1

YX*Y

YX*Y

YX*Y

Write(Y)

Jika input algoritma (X) adalah 2, maka dengan tabel penyimpanan data

Perintah X Y Ouput

Y1

YX*Y

YX*Y

YX*Y

Write(Y)

2

1

4

8

16

16

Output yang dihasilkan adalah : 16

Cara ini memang dapat menyelesaikan permasalahan tersebut di atas, tapi sangat

tidak efisien dalam penulisannya. Bayangkan kalau pengulangannya dilakukan sebanyak

1000 kali, maka kita harus menulisnya sebanyak seribu kali pula. Tentunya akan sangat

merepotkan. Untuk itu kita perlu mengenal satu lagi algoritma dasar yaitu algoritma

pengulangan. Dengan algoritma ini kita cukup menuliskan perintahnya sekali untuk

pengulangan berapapun banyaknya.

14

Bila mengacu pada bahasa pemrograman Pascal, terdapat tiga ekspresi algoritma

untuk pengulangan :

1. for-do

2. while-do

3. repeat-until

Namun demikian, ketiganya memiliki komponen-komponen pengulangan yang sama

yaitu :

- Kondisi pengulangan : Setiap aksi atau kumpulan aksi dikerjakan jika memenuhi kondisi

tertentu. Selama kondisi terpenuhi aksi akan terus dikerjakan

- Badan pengulangan : bagian aksi yang diulang

- Nilai awal atau inisialisasi : Pemberian nilai satu atau beberapa variabel sebelum

pengulangan dilakukan.

2. Pengulangan For-Do

Ada 2 macam pengulangan for-do, yaitu for-do menaik dan for-do menurun. Berikut ini

For-do menaik

For varnilai_awal to nilai_akhir do

pernyataan

Flowchart for-do menaik

For variabelnilai_awal downto nilai_akhir do

Pernyataan

pernyataan

Var ni...nf

15

var 3…1

Write (‘Halo’)

Kondisi pengulangan for secara tersirat dapat dilihat pada ni (nilai_awal) dan nf

(nilai_akhir); Nilai yang terkandung pada var mula-mula sama dengan nilai_awal, kemudian

bertambah (berkurang) sebanyak satu, kemudian berhenti setelah var lebih besar (lebih kecil)

nilai_akhir.

Karakteristik pengulangan for-do

- Aksi mula-mula dilakukan saat var=nilai_awal dan terakhir saat var=nilai_akhir.

- Var, nilai_awal dan nilai_akhir bertipe bilangan bulat (integer)

- Setiap selesai satu kali pengulangan var berubah +1 (for-do menaik) atau –1 (for-do menurun).

- Pengulangan paling sedikit dilakukan sekali, banyaknya pengulangan adalah selisih nilai_awal

dan nilai_akhir ditambah 1

Contoh

for i1 to 3 doWrite(‘Halo’)

Pada perintah di atas, mula-mula i diberi nilai 1. Kemudian perintah write(‘Halo’)

dikerjakan. Setelah itu i bertambah satu sehingga menjadi 2, dilanjutkan dengan perintah

write(‘Halo’). Proses yang sama diulang lagi hingga i bernilai tiga, perintah write(’Halo’)

dikerjakan. Setelah itu proses pengulangan berhenti di situ.

pernyataan

Var = ni...nf

16

var 3…1

Write (‘Halo’)

Dengan demikian outputnya dapat kita nyatakan seperti berikut :

Halo

Halo

Halo

Kita dapat membuat output yang sama seperti di atas dengan for-do menurun.

for i3 downto 1 do

Write(‘Halo’)

Perbedaannya, pada for-do menaik i berubah dari 1 sebanyak +1 dan berhenti

setelah lebih dari 3, sedangkan pada for-do menurun, i berubah dari 3 sebanyak –1 hingga

akhirnya berhenti saat i kurang dari 1. Coba tentukan bentuk dari algoritma di atas.

17

3. Perulangan While-Do

Secara umum algoritma while adalah :

while <kondisi> do

begin

pernyataan

end

sedangkan bentuk flowchartnya

Teks algoritma dan flowchart di atas menunjukkan bahwa ada pengecekan kondisi

dulu sebelum aksi berikutnya dilakukan. Aksi di bawah kondisi dikerjakan jika kondisinya

atau lebih tepatnya nilai boolean kondisi bernilai benar. Jika kondisi bernilai salah maka

proses akan ‘melompat’ atau mengerjakan aksi yang berada di luar loop.

Contoh soal.

Buat algoritma menampilkan deret 2, 4, 6, …, N. N adalah masukan berupa bilangan genap.

Algoritma deret

Deklarasi

N,x : integer

Deskripsi

<kondisi>?

Aksi

y

t

loop

18

x2

while x<=N do

Write(x)

xx+2

x<=N

x<--2

y

End

begin

x<--x+2

t

write (x)

Mula-mula inputkan nilai N, kemudian x diberi nilai 2 (proses inisialisasi). Setelah

itu x dibandingkan dengan N, jika pernyataan (x<=N) bernilai benar maka x ditampilkan,

lalu x ditambah 2 dan menghasilkan x baru. Setelah itu arus data kembali ke atas untuk

menguji apakah pernyataan x<=N bernilai benar. Jika iya, maka proses yang sama dengan

sebelumnya dilakukan kembali. Demikian seterusnya hingga pernyataan x<=N bernilai

salah.

19

Untuk input N = 8, tabel penyimpanan datanya dapat kita nyatakan sebagai berikut.

Perintah Kondisi x N Output

x2 2

Blok pengulangan

x<=N Write(x) /

output

xx+2

true 2 4

true 4 6

true 6 8

true 8 10

false

Jika N adalah 10 maka output algoritma deret : 2, 4, 6, 8

4. Perulangan Repeat-Until

Secara umum algoritma repeat-until adalah

repeat

aksi

until <kondisi>

20

sedangkan bentuk flowchartnya

Aksi

<kondisi>

y

t

Secara umum teks dan flowchart di atas berarti bahwa aksi tidak dikerjakan lagi jika kondisi

bernilai benar.

Algoritma while-do dengan repeat-until sebenarnya hampir sama, perbedaannya

hanya terletak pada penempatan kondisinya. Pada while-do pengecekan kondisi diletakkan

di awal loop, sedangkan pada repeat-until pengecekan kondisi dilakukan di akhir loop. Itu

sebabnya pada algoritma while-do aksi bisa jadi tidak dilakukan sama sekali jika sejak

awal kondisinya sudah bernilai salah. Sedangkan pada pada repeat-until aksi sekurang-

kurangnya dilakukan sebanyak satu kali. (Perhatikan flowchart)

loop