07 pengulangan atau looping 2

19
Algoritma Pemrograman Pertemuan Ke-7 (Pengulangan atau Looping [2]) 1

Upload: satria-w

Post on 03-Dec-2015

53 views

Category:

Documents


7 download

DESCRIPTION

yjfyj

TRANSCRIPT

Page 1: 07 Pengulangan Atau Looping 2

Algoritma Pemrograman

Pertemuan Ke-7 (Pengulangan atau Looping [2])

1

Page 2: 07 Pengulangan Atau Looping 2

Sub Pokok Bahasan

Struktur WHILE

Struktur REPEAT

WHILE vs REPEAT

2

Page 3: 07 Pengulangan Atau Looping 2

Struktur WHILE

while kondisi do

aksi

endwhile

aksi (atau runtunan aksi) dilaksanakan berulang kali selama kondisi bernilai true. Jika kondisi bernilai false, badan pengulangan tidak akan dilaksanakan, yang berarti pengulangan selesai

Pengulangan harus berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa logika algoritma tersebut salah

Pengulangan berhenti apabila kondisi bernilai false. Agar kondisi suatu saat bernilai false, maka di dalam badan pengulangan harus ada instruksi yang mengubah nilai peubah kondisi

3

Page 4: 07 Pengulangan Atau Looping 2

Contoh 1: Mencetak tulisan ‘Informatika’ sebanyak 5 kali

Program CETAK_INFORMATIKA; Algoritma CETAK_INFORMATIKA { Mencetak ‘Informatika’ sebanyak { Mencetak ‘Informatika’ sebanyak 5

5 kali } kali }

(* DEKLARASI *) DEKLARASI

var k : integer { pencacah

pengulangan } k : integer;

DESKRIPSI : (* DESKRIPSI *) k←1

begin while k ≤ 5 do { ulangi sebanyak 5 k := 1;

kali } while k <= 5 do write(‘Informatika’) begin k←k+1

writeln(’Informatika‘); endwhile { kondisi berhenti: k > 5} k := k + 1;

end;

end.

4

Page 5: 07 Pengulangan Atau Looping 2

Contoh 2: Algoritma PENJUMLAHAN_DERET

{ Menjumlahkan deret 1 + 2 + 3 + ... + N,

dengan N adalah bilangan bulat positif

yang dibaca dari piranti masukan.

Jumlah deret dicetak ke piranti

keluaran } Menghitung jumlah angka- angka dari 1 sampai N. DEKLARASI Nilai N dibaca terlebih k : integer { pencacah pengulangan } dahulu dari piranti N : integer masukan jumlah : integer

Misalnya, jika N = 5, maka DESKRIPSI : jumlah angka dari 1 read(N) { banyaknya suku deret } sampai 5 adalah deret jumlah ← 0

1 + 2 + 3 + 4 + 5 = 15 k ← 1 { inisialisasi }

while k ≤ N do

jumlah ← jumlah + k

k←k+1

endwhile { kondisi berhenti: k > N }

write(jumlah)

5

Page 6: 07 Pengulangan Atau Looping 2

Program PENJUMLAHAN_DERET;

{Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah

bilangan bulat positif yang dibaca dari piranti

masukan}

(* DEKLARASI *)

var

k, N, jumlah : integer;

(* DESKRIPSI *)

begin

write(‘Masukkan banyaknya bilangan : ‘); readln(N);

k := 1;

jumlah := 0;

while k <= N do

begin

jumlah := jumlah + k;

k := k + 1;

end;

writeln(jumlah);

end.

6

Page 7: 07 Pengulangan Atau Looping 2

Algoritma HITUNG_RATA_RATA { Menghitung rata-rata N buah bilangan Contoh 3:

bulat yang dibaca dari piranti masukan.

N>0}

DEKLARASI

k : integer { pencacah pengulangan }

N : integer { jumlah data, > 0 } Menghitung nilai rata-rata X : integer {bilangan bulat yang dibaca} dari N buah data bilangan jumlah : integer bulat yang dibaca dari rata : real piranti masukan. Nilai rata-

DESKRIPSI : rata adalah jumlah seluruh read(N) { banyaknya suku deret } nilai dibagi dengan jumlah ← 0 banyaknya nilai k ← 1 { inisialisasi }

Misalkan, N = 5 dan data while k ≤ N do bilangan yang dibaca

read(x) berturut-turut adalah 12, 10, jumlah ← jumlah + x 6, 2, 4, maka nilai rata- k←k+1 ratanya:

endwhile { kondisi berhenti: k > N } (12 + 10 + 6 + 2 + 4)/5 rata ← jumlah/N

= 34/5 write(rata) = 6.8

7

Page 8: 07 Pengulangan Atau Looping 2

Program HITUNG_RATA_RATA;

{ Menghitung rata-rata N buah bilangan bulat yang dibaca dari

piranti masukan. N > 0 }

(* DEKLARASI *)

var

k, N, x, jumlah : integer;

rata : real;

(* DESKRIPSI *)

begin

write(‘Masukkan banyaknya suku deret : ‘);

readln(N);

jumlah := 0;

k := 1;

while k <= N do

begin

write(‘Bilangan ke-’,k,’ : ‘);readln(x);

jumlah := jumlah + x;

k := k + 1;

end;

rata := jumlah/N;

writeln(rata);

end.

8

Page 9: 07 Pengulangan Atau Looping 2

Perihal WHILE

Kesalahan yang biasa terjadi pada penggunaan struktur WHILE adalah tidak menuliskan instruksi yang mengubah peubah kondisi, misalnya tidak menuliskan instruksi k←k+1. Sehingga pengulangan

tidak pernah memenuhi kondisi pengulangan berhenti

WHILE juga dapat digunakan sebagai penggunaan FOR. (WHILE juga dapat digunakan untuk proses yang jumlah pengulangannya tidak dapat ditentukan)

9

Page 10: 07 Pengulangan Atau Looping 2

Algoritma JUMLAH_DAN_KALI {Menjumlahkan atau mengalikan sebuah Contoh 4:

bilangan dengan 10, bergantung kepada

nilai x (genap atau ganjil)}

DEKLARASI

M : integer

x : integer Dalam algoritma JUMLAH_DAN_KALI, DESKRIPSI :

ditetapkan bahwa dari M←1 { inisialisasi M dengan 1 }

read(x) masukan nilai integer x, while x ≠ 0 do {lakukan komputasi jika x ganjil, maka peubah

selama x tidak nol } M yang telah diinisialisasi if x mod 2 = then { x ganjil } dengan 1 ditambah 10, dan

M ← M+10 jika x genap maka M

else dikali 10 M ← M*10

Pengulangan ini akan terus endif

dilakukan selama x tidak read(x)

endwhile { x = 0 } sama dengan 0 write(M)

10

Page 11: 07 Pengulangan Atau Looping 2

Program JUMLAH_DAN_KALI;

{ Menjumlahkan atau mengalikan sebuah bilangan dengan 10,

bergantung kepada nilai x (genap atau ganjil) }

(* DEKLARASI *)

var

M, x : integer;

(* DESKRIPSI *)

begin

M := 1;

write(‘Masukkan bilangan : ‘); readln(x);

while x <> 0 do

begin

begin

if x mod 2 = 1 then

M := M + 10

else

M := M * 10;

end;

write(‘Masukkan bilangan : ‘); readln(x);

end;

writeln(M);

end.

11

Page 12: 07 Pengulangan Atau Looping 2

Struktur REPEAT

repeat

aksi

until kondisi

Notasi ini mendasarkan pengulangan pada kondisi boolean. Aksi di dalam badan pengulangan diulang sampai kondisi boolean bernilai true. Dengan kata lain, jika kondisi boolean masih false, pengulangan masih terus dilakukan. Karena proses pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus ada aksi yang mengubah nilai peubah kondisi

Struktur REPEAT mempunyai makna yang sama dengan WHILE, dan dalam beberapa masalah kedua struktur tersebut komplemen satu sama lain

12

Page 13: 07 Pengulangan Atau Looping 2

Contoh 1: Mencetak tulisan ‘Informatika’ sebanyak 5 kali

Algoritma CETAK_INFORMATIKA { Mencetak ‘Informatika’ sebanyak 5 kali }

DEKLARASI

k : integer { pencacah pengulangan } • Badan pengulangan berisi dua

DESKRIPSI : instruksi: k←1 { inisialisasi } write(‘Informatika’) dan

repeat k←k+1

write(‘Informatika’) • Kondisi berhenti pengulangan k←k+1 adalah k > 5, artinya jika k

masih ≤ 5, maka badan until k > 5

pengulangan masih boleh dimasuki Program CETAK_INFORMATIKA;

• k harus terdefinisi nilainya var sebelum pengulangan k : integer; dilaksanakan pertama kali.

begin Karena itu, pada bagian k := 1; inisialisasi, k diisi dengan nilai 1 repeat • Instruksi yang mengubah nilai begin peubah kondisi adalah instruksi

writeln(‘Informatika’); k←k+1. Instruksi ini mencacah

jumlah pengulangan, sehingga k := k + 1; jika k > 5, pengulangan end; dihentikan

until k > 5;

end.

13

Page 14: 07 Pengulangan Atau Looping 2

Contoh 2: Menghitung 1 + 2 + 3+ … + N

Nilai N dibaca terlebih dahulu (N > 0).

Algoritma PENJUMLAHAN_DERET

{ Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah

bilangan bulat positif yang dibaca dari piranti masukan.

Jumlah deret dicetak ke piranti keluaran }

DEKLARASI

k : integer { suku deret }

N : integer { banyaknya suku deret, N > 0 }

jumlah : integer { jumlah deret }

DESKRIPSI :

read(N) { banyaknya suku deret } jumlah ← 0 { inisialisasi jumlah deret }

k ← 1 { suku deret yang pertama }

repeat jumlah ← jumlah + k { jumlah deret sekarang }

k ← k + 1 { suku deret berikutnya }

until k > N

write(jumlah)

14

Page 15: 07 Pengulangan Atau Looping 2

Program PENJUMLAHAN_DERET;

{ Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah

bilangan bulat positif yang dibaca dari piranti masukan }

(* DEKLARASI *)

var

k, N, jumlah : integer;

(* DESKRIPSI *)

begin

write(‘Masukkan banyaknya bilangan : ‘); readln(N);

k := 1;

jumlah := 0;

repeat

begin

jumlah := jumlah + k;

k := k + 1;

end;

until k > N;

writeln(jumlah);

end.

15

Page 16: 07 Pengulangan Atau Looping 2

Contoh 3: Menghitung nilai rata-rata N buah data bilangan

bulat yang dibaca dari piranti masukan

Algoritma HITUNG_RATA_RATA { Menghitung rata-rata N buah bilangan bulat yang dibaca dari

piranti masukan. N > 0 }

DEKLARASI

k : integer { pencacah banyak bilangan }

N : integer { banyak bilangan, N > 0 }

x : integer { bilangan bulat yang dibaca }

jumlah : integer { pencatat jumlah bilangan }

rata : real { rata-rata bilangan }

DESKRIPSI :

read(N) jumlah ← 0 { inisialisasi }

k ← 1 { inisialisasi pencacah banyak bilangan }

repeat

read(x) jumlah ← jumlah + x

k←k+1

until k > N rata ← jumlah/N

write(rata)

16

Page 17: 07 Pengulangan Atau Looping 2

Program HITUNG_RATA_RATA;

{ Menghitung rata-rata N buah bilangan bulat yang dibaca dari

piranti masukan. N > 0 }

(* DEKLARASI *)

var

k, N, x, jumlah : integer;

rata : real;

(* DESKRIPSI *)

begin

write(‘Masukkan banyaknya suku deret : ‘);

readln(N);

jumlah := 0;

k := 1;

repeat

begin

write(‘Bilangan ke-’,k,’ : ‘);readln(x);

jumlah := jumlah + x;

k := k + 1;

end;

until k > N;

rata := jumlah/N;

writeln(rata);

end.

17

Page 18: 07 Pengulangan Atau Looping 2

WHILE vs REPEAT

Seperti halnya pada struktur WHILE, struktur REPEAT juga dapat digunakan untuk masalah yang jumlah pengulangannya tidak diketahui atau tidak dapat ditentukan

Pemilihan struktur WHILE atau REPEAT bergantung pada karakteristik dari persoalan. Ada permasalahan yang hanya benar bila menggunakan struktur WHILE, tetapi bisa fatal bila menggunakan REPEAT

Perbedaan antara struktur REPEAT dan WHILE:

struktur REPEAT kondisi pengulangan diperiksa pada akhir pengulangan. Jadi, instruksi di dalam badan pengulangan dilaksanakan dulu, baru kemudian pengetesan kondisi dilakukan. Sehingga badan pengulangan dilaksanakan paling sedikit satu kali

struktur WHILE kondisi pengulangan diperiksa di awal pengulangan. Jadi, instruksi di dalam badan pengulangan hanya dapat dilaksanakan bila pengetesan kondisi menghasilkan nilai true. Sehingga, badan pengulangan mungkin tidak akan pernah dilaksanakan bila kondisi pengulangan pertama kali bernilai false

18

Page 19: 07 Pengulangan Atau Looping 2

WHILE vs REPEAT: Jumlah Pengulangan

Algoritma PERBANDINGAN_WHILE_REPEAT Algoritma PERBANDINGAN_WHILE_REPEAT

{Algoritma untuk menunjukkan {Algoritma untuk menunjukkan

perbandingan pengulangan WHILE perbandingan pengulangan WHILE

dan REPEAT tentang jumlah dan REPEAT tentang jumlah

pengulangannya} pengulangannya}

DEKLARASI DEKLARASI

x : integer x : integer

DESKRIPSI : DESKRIPSI : x←7 x←7

while x < 5 do repeat

write(x) write(x) x←x+1 x←x+1

endwhile until x > 5

Hasil dari algoritma tidak ada Hasil dari algoritma adalah 8

(karena badan pengulangan tidak (karena badan pengulangan telah

pernah dimasuki) dimasuki satu kali)

19