Está en la página 1de 11

Algoritma Pemrograman

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

S1 Teknik Informatika-Unijoyo

Sub Pokok Bahasan


Struktur WHILE Struktur REPEAT WHILE vs REPEAT

S1 Teknik Informatika-Unijoyo

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
S1 Teknik Informatika-Unijoyo 3

Contoh 1: Mencetak tulisan Informatika sebanyak 5 kali

Algoritma CETAK_INFORMATIKA
{ Mencetak kali } Informatika sebanyak 5

Program CETAK_INFORMATIKA;
{ Mencetak Informatika sebanyak 5 kali }

DEKLARASI k :

integer

pencacah

pengulangan }

(* DEKLARASI *) var k : integer; (* DESKRIPSI *) begin k := 1; while k <= 5 do begin writeln(Informatika); k := k + 1; end; end.

DESKRIPSI : k 1 while k 5 do
kali }

{ ulangi sebanyak 5

write(Informatika) kk+1 endwhile { kondisi berhenti:

k > 5}

S1 Teknik Informatika-Unijoyo

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 angkaangka dari 1 sampai N. Nilai N dibaca terlebih dahulu dari piranti masukan Misalnya, jika N = 5, maka jumlah angka dari 1 sampai 5 adalah deret
1 + 2 + 3 + 4 + 5 = 15

DEKLARASI k : integer { pencacah pengulangan } N : integer jumlah : integer DESKRIPSI : read(N) { banyaknya suku deret } jumlah 0 k 1 { inisialisasi } while k N do jumlah jumlah + k k k + 1 endwhile { kondisi berhenti: k > N } write(jumlah)

S1 Teknik Informatika-Unijoyo

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.

S1 Teknik Informatika-Unijoyo

Algoritma HITUNG_RATA_RATA

Contoh 3:

Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. N > 0 }

Menghitung nilai rata-rata dari N buah data bilangan bulat yang dibaca dari piranti masukan. Nilai ratarata adalah jumlah seluruh nilai dibagi dengan banyaknya nilai Misalkan, N = 5 dan data bilangan yang dibaca berturut-turut adalah 12, 10, 6, 2, 4, maka nilai rataratanya:
(12 + 10 + 6 + 2 + 4)/5 = 34/5 = 6.8

DEKLARASI k : integer { pencacah pengulangan } N : integer { jumlah data, > 0 } X : integer {bilangan bulat yang dibaca} jumlah : integer rata : real DESKRIPSI : read(N) { banyaknya suku deret } jumlah 0 k 1 { inisialisasi } while k N do read(x) jumlah jumlah + x k k + 1 endwhile { kondisi berhenti: k > N } rata jumlah/N write(rata)

S1 Teknik Informatika-Unijoyo

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.
S1 Teknik Informatika-Unijoyo 8

Perihal WHILE

Kesalahan yang biasa terjadi pada penggunaan struktur WHILE adalah tidak menuliskan instruksi yang mengubah peubah kondisi, misalnya tidak menuliskan instruksi kk+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)

S1 Teknik Informatika-Unijoyo

Algoritma JUMLAH_DAN_KALI

Contoh 4:

{Menjumlahkan atau mengalikan sebuah bilangan dengan 10, bergantung kepada nilai x (genap atau ganjil)}

Dalam algoritma JUMLAH_DAN_KALI, ditetapkan bahwa dari masukan nilai integer x, jika x ganjil, maka peubah M yang telah diinisialisasi dengan 1 ditambah 10, dan jika x genap maka M dikali 10 Pengulangan ini akan terus dilakukan selama x tidak sama dengan 0

DEKLARASI M : integer x : integer DESKRIPSI : M 1 { inisialisasi M dengan 1 } read(x) while x 0 do {lakukan komputasi selama x tidak nol } if x mod 2 = then { x ganjil } M M+10 else M M*10 endif read(x) endwhile { x = 0 } write(M)

S1 Teknik Informatika-Unijoyo

10

Program JUMLAH_DAN_KALI; { Menjumlahkan atau mengalikan sebuah bilangan 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.

dengan

10,

S1 Teknik Informatika-Unijoyo

11

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
S1 Teknik Informatika-Unijoyo 12

Contoh 1: Mencetak tulisan Informatika sebanyak 5 kali


Algoritma CETAK_INFORMATIKA
{ Mencetak Informatika sebanyak 5 kali }

DEKLARASI k : integer { pencacah pengulangan } DESKRIPSI : k1 { inisialisasi } repeat write(Informatika) kk+1 until k > 5 Program CETAK_INFORMATIKA; var k : integer; begin k := 1; repeat begin writeln(Informatika); k := k + 1; end; until k > 5; end.
S1 Teknik Informatika-Unijoyo

Badan pengulangan berisi dua instruksi: write(Informatika) dan kk+1 Kondisi berhenti pengulangan adalah k > 5, artinya jika k masih 5, maka badan pengulangan masih boleh dimasuki k harus terdefinisi nilainya sebelum pengulangan dilaksanakan pertama kali. Karena itu, pada bagian inisialisasi, k diisi dengan nilai 1 Instruksi yang mengubah nilai peubah kondisi adalah instruksi kk+1. Instruksi ini mencacah jumlah pengulangan, sehingga jika k > 5, pengulangan dihentikan
13

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)
S1 Teknik Informatika-Unijoyo 14

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.
S1 Teknik Informatika-Unijoyo 15

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)
S1 Teknik Informatika-Unijoyo 16

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.
S1 Teknik Informatika-Unijoyo 17

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
S1 Teknik Informatika-Unijoyo 18

WHILE vs REPEAT: Jumlah Pengulangan


Algoritma PERBANDINGAN_WHILE_REPEAT {Algoritma untuk menunjukkan perbandingan pengulangan WHILE dan REPEAT tentang jumlah pengulangannya} DEKLARASI x : integer DESKRIPSI : x 7 while x < 5 do write(x) x x + 1 endwhile Algoritma PERBANDINGAN_WHILE_REPEAT {Algoritma untuk menunjukkan perbandingan pengulangan WHILE dan REPEAT tentang jumlah pengulangannya} DEKLARASI x : integer DESKRIPSI : x 7 repeat write(x) x x + 1 until x > 5

Hasil dari algoritma tidak ada (karena badan pengulangan tidak pernah dimasuki)

Hasil dari algoritma adalah 8 (karena badan pengulangan telah dimasuki satu kali)
19

S1 Teknik Informatika-Unijoyo

Summary
Struktur WHILE dan REPEAT digunakan pada aksi yang jumlah pengulangan tidak diketahui sebelum eksekusi program. Yang dapat ditentukan hanya kondisi berhenti pengulangan Struktur WHILE digunakan pada kasus yang mengharuskan terlebih dahulu pemeriksaan kondisi objek sebelum objek tersebut dimanipulasi Struktur REPEAT digunakan pada kasus yang terlebih dahulu memanipulasi objek, baru kemudian memeriksa kondisi objek tersebut

S1 Teknik Informatika-Unijoyo

20

10

Daftar Pustaka
Jogiyanto HM [1989]. Turbo Pascal, Yogyakarta: Andi Offset. Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman (Hibah Kompetisi A1), Bangkalan: Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika.

S1 Teknik Informatika-Unijoyo

21

11

También podría gustarte