06-pengulangan-atau-looping-1.pdf
DESCRIPTION
loopingTRANSCRIPT
-
Algoritma Pemrograman
Pertemuan Ke-6 (Pengulangan atau Looping [1])
1
-
Sub Pokok Bahasan
Pendahuluan
Struktur Pengulangan
Pengulangan tanpa kondisi dan dengan kondisi
Struktur FOR (menaik dan menurun)
2
-
Pendahuluan
Pengulangan (looping) adalah pelaksanaan suatu
instruksi berulangkali
Di dalam algoritma, pengulangan dapat dilakukan
sejumlah kali, atau sampai kondisi berhenti
pengulangan tercapai
3
-
Struktur Pengulangan
Bentuk Umum: awal pengulangan
badan pengulangan
akhir pengulangan
: aksi yang dilakukan sebelum pengulangan dilakukan untuk pertama kalinya.
badan pengulangan: bagian algoritma yang diulang
: aksi yang dilakukan setelah pengulangan selesai dilaksanakan
dan tidak selalu harus ada, namun pada berbagi kasus inisialisasi umumnya diperlukan
awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang digunakan
4
-
Macam struktur pengulangan
pengulangan tanpa kondisi (unconditional looping): Struktur FOR jumlah pengulangan sudah diketahui sebelum eksekusi
Struktur WHILE pengulangan dengan kondisi (conditional looping): jumlah pengulangan tidak diketahui sebelum eksekusi
program. Yang dapat ditentukan hanya kondisi berhenti Struktur REPEAT pengulangan (instruksi-instruksi di dalam badan
pengulangan diulangi sampai kondisi berhenti terpenuhi)
5
-
Struktur FOR
Jumlah pengulangan diketahui atau dapat ditentukan
sebelum eksekusi.
Untuk mencacah sudah jumlah pengulangan diperlukan
sebuah peubah (variable) pencacah (counter). Peubah ini
nilainya selalu bertambah satu setiap kali pengulangan
dilakukan
Jika cacah pengulangan sudah mencapai jumlah yang
dispesifikasikan, maka proses pengulangan berhenti
Bentuk umum struktur FOR:
Menaik (ascending)
Menurun (descending)
6
-
Struktur FOR: menaik
for pencacah nilai_awal to nilai_akhir do
aksi
endfor
pencacah menggunakan tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah)
aksi satu atau lebih instruksi yang diulang.
nilai_awal harus lebih kecil atau sama dengan nilai_akhir (jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki)
pada awalnya pencacah diinisialisasikan dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali aksi pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir
jumlah pengulangan yang terjadi = nilai_akhir nilai_awal + 1
7
-
Contoh 1: Mencetak tulisan Informatika sebanyak 5 kali
Algoritma CETAK_INFORMATIKA Jumlah pengulangan sudah { Mencetak Informatika sebanyak 5 kali } ditentukan sebelumnya (5 kali)
DEKLARASI Badan pengulangan hanya berisi k : integer { pencacah pengulangan } satu instruksi, yaitu
write(Informatika) DESKRIPSI :
k adalah peubah pencacah yang for k1 to 5 do {ulangi sebanyak 5 kali} bertipe integer
write(Informatika) pada mulanya k bernilai 1, nilai k
endfor selalu bertambah 1 setiap kali pengulangan dilakukan, sampai akhirnya k mencapai 5
Program CETAK_INFORMATIKA; Jumlah pengulangan yang { Mencetak Informatika sebanyak 5 kali } dilakukan:
(* DEKLARASI *) 5 1 + 1 = 5 kali
var Keluaran dari algoritma CETAK_INFORMATIKA adalah k : integer; string Informatika sebanyak 5 kali:
(* DESKRIPSI *) Informatika begin Informatika
for k := 1 to 5 do Informatika writeln(Informatika); Informatika
(*endfor*) Informatika end.
8
-
Contoh 2:
Algoritma PENJUMLAHAN_DERET Menghitung jumlah angka- { Menjumlahkan deret 1 + 2 + 3 + ... + N, angka dari 1 sampai N dengan N adalah bilangan bulat positif
yang dibaca dari piranti masukan } jumlah = 1 + 2 + 3 + ... + N
Nilai N dibaca terlebih DEKLARASI
dahulu dari piranti masukan. k : integer { pencacah pengulangan } Misalnya, jika N = 5, maka N, jumlah : integer jumlah angka dari 1 sampai
DESKRIPSI : 5 adalah deret: read(N) { banyaknya suku deret }
1 + 2 + 3 + 4 + 5 = 15 jumlah 0 for k1 to N do {ulangi sebanyak N kali}
jumlah jumlah + k
endfor
write(jumlah)
9
-
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 suku deret : ); readln(N);
jumlah := 0;
for k := 1 to N do
jumlah := jumlah + k;
(*endfor*)
writeln(jumlah);
end.
10
-
Contoh 3: Algoritma HITUNG_RATA_RATA { Menghitung rata-rata N buah bilangan
bulat yang dibaca dari piranti
masukan. N > 0. }
DEKLARASI Menghitung nilai rata-rata dari k : integer { pencacah pengulangan } N buah data bilangan bulat
N : integer { jumlah data, > 0 } yang dibaca dari piranti
x : integer {bilangan bulat yang dibaca} masukan. Nilai rata-rata adalah
jumlah : integer jumlah seluruh nilai dibagi
rata : real dengan banyaknya nilai
Misalkan, N = 5 dan data DESKRIPSI :
bilangan yang dibaca berturut- read(N) { banyaknya suku deret }
turut adalah 12, 10, 6, 2, jumlah 0 4, maka nilai rata-ratanya for k1 to N do {ulangi sebanyak N kali} adalah:
read(x) (12 +10 + 6 + 2 + 4)/5 jumlah jumlah + x = 34/5 endfor = 6.8 rata jumlah/N
write(rata)
11
-
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;
for k := 1 to N do
begin
write(Bilangan ke-,k, : );readln(x);
jumlah := jumlah + x;
end;
rata := jumlah/N;
writeln(rata);
end.
12
-
Struktur FOR: menurun
for pencacah nilai_akhir downto nilai_awal do
aksi
endfor
pencacah menggunakan tipe data yang memilki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah.
aksi adalah satu atau lebih instruksi yang diulang)
nilai_akhir harus lebih besar atau sama dengan nilai_awal (Jika nilai_akhir lebih kecil dari nilai_awal, maka badan pengulangan tidak dimasuki)
pada awalnya pencacah diinisialisasikan dengan nilai_akhir. Nilai pencacah secara otomatis berkurang satu setiap kali aksi diulangi, sampai akhirnya nilai pencacah sama dengan nilai_awal.
jumlah pengulangan yang terjadi = nilai_akhir nilai_awal + 1
13
-
Contoh: Mencetak angka 5, 4, , 1
Algoritma CETAK_ANGKA_TURUN
{Mencetak 5, 4, ..., 1 ke piranti keluaran}
DEKLARASI Pada algoritma k : integer { pencacah pengulangan }
CETAK_ANGKA_TURUN, DESKRIPSI :
angka-angka yang dicetak for k5 downto 1 do bersesuaian dengan nilai write(k)
endfor pencacah pengulangan.
Keluaran dari algoritma Program CETAK_ANGKA_TURUN; {Mencetak 5, 4, ..., 1 ke piranti keluaran} adalah angka 5 yang turun (* DEKLARASI *) sampai ke angka 1: var
54321 k : integer;
(* DESKRIPSI *)
begin
for k := 5 downto 1 do
write(k, );
(*endfor*)
end. 14