§Pengulangan / looping adalah pelaksanaan suatu instruksi berulang kali. Di dalam algoritma, pengulangan dapat dilakukan sejumlah kali, atau sampai kondisi berhenti pengulangan tercapai.
§Struktur Pengulangan
Bentuk Umum:
Bentuk Umum:
<inisialisasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
§<inisialisasi>: aksi yang dilakukan sebelum pengulangan dilakukan untuk pertama kalinya.
§Badan pengulangan: bagian algoritma yang diulang
§<terminasi>: aksi yang dilakukan setelah pengulangan selesai dilaksanakan
§<inisialisasi> dan <terminasi> tidak selalu ada, namun pada berbagi kasus inisialisasi umumnya diperlukan awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang digunakan.
Macam struktur pengulangan
Struktur FOR pengulangan tanpa kondisi (unconditional looping) jumlah pengulangan sudah diketahui sebelum eksekusi
Struktur FOR pengulangan tanpa kondisi (unconditional looping) 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)
Struktur FOR
Struktur pengulangan FOR digunakan untuk mengulang statemen atau satu blok statemen berulang kali.
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)
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)
§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
Contoh: Mencetak tulisan ‘Informatika’ sebanyak 5 kali
Algoritma CETAK_INFORMATIKA
{ Mencetak ‘Informatika’ sebanyak 5 kali }
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
for k¬1 to 5 do { ulangi sebanyak 5 kali }
write(‘Informatika’)
endfor
Algoritma CETAK_INFORMATIKA
{ Mencetak ‘Informatika’ sebanyak 5 kali }
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
for k¬1 to 5 do { ulangi sebanyak 5 kali }
write(‘Informatika’)
endfor
§Contoh: Mencetak tulisan ‘Informatika’ sebanyak 5 kali
§Algoritma CETAK_INFORMATIKA
§ { Mencetak ‘Informatika’ sebanyak 5 kali
}
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
§for k¬1 to 5 do { ulangi sebanyak 5 kali
}
write(‘Informatika’)
endfor
write(‘Informatika’)
endfor
§Contoh: Mencetak tulisan ‘Informatika’ sebanyak 5 kali
§Algoritma CETAK_INFORMATIKA
§ { Mencetak ‘Informatika’ sebanyak 5 kali
}
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
§for k¬1 to 5 do { ulangi sebanyak 5 kali
}
write(‘Informatika’)
endfor
write(‘Informatika’)
endfor
Program CETAK_INFORMATIKA;
{ Mencetak ‘Informatika’ sebanyak 5 kali }
(* DEKLARASI *)
var
k : integer;
(* DESKRIPSI *)
begin
for k := 1 to 5 do
writeln(‘Informatika’);
(*endfor*)
end.
{ Mencetak ‘Informatika’ sebanyak 5 kali }
(* DEKLARASI *)
var
k : integer;
(* DESKRIPSI *)
begin
for k := 1 to 5 do
writeln(‘Informatika’);
(*endfor*)
end.
§Struktur FOR dapat digunakan sebagai penyelesaian karena jumlah pengulangan sudah ditentukan sebelumnya (5 kali)
§Badan pengulangan hanya berisi satu instruksi, yaitu write(‘Informatika’)
§k adalah peubah pencacah yang bertipe integer
§pada mulanya k bernilai 1, nilai k selalu bertambah 1 setiap kali pengulangan dilakukan, sampai akhirnya k mencapai 5
§Jumlah pengulangan yang dilakukan: 5 – 1 + 1 = 5
kali
Keluaran dari algoritmaCETAK_INFORMATIKA adalahstring ‘Informatika’ sebanyak 5kali:
Informatika
Informatika
Informatika
Informatika
Informatika
Contoh:
Menghitung jumlah
angka-angka dari 1
sampai N.
jumlah = 1 + 2 + 3 +
... + 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
Informatika
Informatika
Informatika
Informatika
Contoh:
Menghitung jumlah
angka-angka dari 1
sampai N.
jumlah = 1 + 2 + 3 +
... + 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
Algoritma PENJUMLAHAN_DERET
{ Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah bilangan bulat positif yang dibaca dari piranti
masukan }
{ Menjumlahkan deret 1 + 2 + 3 + ... + N, dengan N adalah bilangan bulat positif yang dibaca dari piranti
masukan }
DEKLARASI
k : integer { pencacah pengulangan }
N, jumlah : integer
DESKRIPSI :
§read(N) { banyaknya suku deret }
jumlah ¬ 0for k¬1 to N do { ulangi sebanyak N
kali }
jumlah ¬ jumlah + k
endfor
write(jumlah)
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.
{ 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.
§Contoh: Mencetak angka 5, 4, …, 1
§Algoritma CETAK_ANGKA_TURUN
{ Mencetak 5, 4, ..., 1 ke piranti keluaran }
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
for k¬5 downto 1 do
write(k)
endfor
{ Mencetak 5, 4, ..., 1 ke piranti keluaran }
DEKLARASI
k : integer { pencacah pengulangan }
DESKRIPSI :
for k¬5 downto 1 do
write(k)
endfor
§Pada algoritma
CETAK_ANGKA_TURUN,
angka-angka yang dicetak bersesuaian dengan nilai pencacah pengulangan. Keluaran dari algoritma adalah angka 5 yang turun sampai ke angka 1:
5 4 3 2 1
CETAK_ANGKA_TURUN,
angka-angka yang dicetak bersesuaian dengan nilai pencacah pengulangan. Keluaran dari algoritma adalah angka 5 yang turun sampai ke angka 1:
5 4 3 2 1
Program
CETAK_ANGKA_TURUN;
{ Mencetak 5, 4, ..., 1 ke piranti keluaran }
(* DEKLARASI *)
var
k : integer;
(* DESKRIPSI *)
begin
for k := 5 downto 1 do
write(k,’ ‘);
(*endfor*)
end.
{ Mencetak 5, 4, ..., 1 ke piranti keluaran }
(* DEKLARASI *)
var
k : integer;
(* DESKRIPSI *)
begin
for k := 5 downto 1 do
write(k,’ ‘);
(*endfor*)
end.