Salah satu
kelebihan
komputer dibandingkan dengan manusia
adalah kemampuannya untuk melaksanakan
suatu perintah berulangkali tanpa mengenali lelah dan bosan. Di dalam algoritma
pengulangan atau kalang (repetition
atau loop) dapat dilakukan sejumlah kali, atau sampai kondisi berhenti
pengulangan tercapai.
IV.1 Struktur Pengulangan
Struktur pengulangan secara umum
terdiri atas dua bagian :
1. kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini ada yang dinyatakan secara eksplisit oleh pemrogram atau dikelola sendiri
oleh komputer (implisit);
2. badan
(body) pengulangan, yaitu bagian algoritma yang diulang. Disamping itu, struktur
pengulangan biasanya disertai dengan bagian:
1. inisialisasi,
yaitu aksi yang dilakukan sebelum pengulangan
dilakukan pertama kali.
2. terminasi, yaitu aksi yang dilakukan setelah
pengulangan selesai dilaksanakan.
Di dalam algoritma terdapat beberapa macam konstruksi pengulangan yang berbeda. Beberapa konstruksi dapat dipakai untuk
masalah yang sama, namun ada
konstruksi pengulangan yang hanya
cocok dipakai masalah tertentu.
Pernyataan FOR
adalah konstruksi pengulangan tanpa kondisi (uncoditional looping),
artinya instruksi-instruksi di dalam
badan pengulangan diulangi sejumlah kali yang dispesifikasikan oleh
pemrogram. Dalam hal ini, jumlah pengulangan sudah diketahui sebelum konstruksi pengulangan eksekusi.
IV.2 Pernyataan FOR
Konstruksi FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang telah dispesifikasikan.
Jumlah pengulangan dapat diketahui atau dapat ditentukan sebelum eksekusi. Untuk mencacah sudah berapa kali
pengulangan dilakukan, kita memerlukan
sebuah peubah (variabel) 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 pernyataan FOR ada dua macam : menaik (ascending) atau menurun (descending):
FOR menaik
for variable := nilai_awal to
nilai_akhir do
Begin
Pernyataan_1 ;
Pernyataan_2 ;
.
.
Pernyataan_N ;
End;
Keterangan :
(i) Variable haruslah dari tipe data
yang
memiliki
predecessor dan successor, yaitu integer atau karakter.
Tipe riil tidak dapat digunakan sebagai pencacah.
(ii) pernyataan adalah satu atau lebih kecil atau sama dengan nilai_akhir.
Jika nilai_awal lebih
besar dari nilai_akhir, maka badan pengulangan tidak dimasuki.
(iii) Pada
awalnya,
variable diinisialisasi dengan nilai_awal.
Nilai variable secara otomatis bertambah satu
setiap
kali
badan pengulangan dimasuki, sampai
akhirnya nilai variable sama dengan nilai_akhir.
(iv) Jumlah
pengulangan yang terjadi adalah nilai_akhir
– nilai_awal + 1.
·
Contoh mencetak pesan “Hello,
world” sebanyak 10
kali
Sebagai
contoh pertama,
misalkan
kita
mencetak
pesan
“hello,
world”
sebanyak
50 kali, maka algoritmanya adalah :
PROGRAM
CetakBanyak_HelloWorld ;
USES
Wincrt;
VAR
i : integer ;
BEGIN
for
i := 1 to 50 do
Begin
writeln('Hello, World');
End;
END.
·
Contoh mencetak 1 sampai 10
Misalkan kita ingin mencetak
angka 1, 2 …., 8 di layar,
dengan satu angka pada setiap baris. Algoritmanya adalah
sebagai berikut :
PROGRAM
CetakSampai50 ;
USES
Wincrt;
VAR
i : integer ;
BEGIN
for
i := 1 to 50 do
Begin
write(i,' ');
End;
END.
Perhatikan Algoritma
di
atas.
Angka-angka
yang
dicetak
bersesuaian
dengan nilai variable pengulangan. Ketika variable i bernilai 1 dicetak,
ketika variable i bernilai 2,
angka 2 dicetak. Jadi instruksi
yang diulang cukup kita
tulis write(i)
·
Buatlah
sebuah program dengan menggunakan mekanisme For To Do untuk menampilkan bilangan genap dari mulai 1 sampai
dengan 20
PROGRAM
ForGenap;
USES
wincrt;
VAR
i : integer;
BEGIN
For i :=
1 to 20 do
Begin
If
i mod 2 = 0 then
write(Bilangan,' ');
End;
END.
·
Buatlah
program menggunakan mekanisme For To Do
untul menampilkan gambar segitiga samakaki yang tersusun dari 1 sampai 10 symbol ‘*’
.
PROGRAM
ForSegitigaBintang;
USES
Wincrt;
VAR
i,j : integer;
BEGIN
for
i := 1 to 10 do
Begin
for
j := 1 to i do
begin
write('*');
end;
Writeln('');
End;
readln;
END.
·
Buatlah
program menjumlahkan deret bilangan
PROGRAM
PenjumlahanDeret ;
USES
Wincrt;
VAR
i, N, Jumlah : integer ;
BEGIN
Repeat
clrscr;
write('Inputkan Nilai Akhir Deret : ');
readln(N);
Jumlah := 0;
for i := 1 to N do
Begin
write(i,' ');
Jumlah := Jumlah + i;
End;
write(' = ', jumlah);
readln;
Until Keypressed;
END.
·
Buatlah Program untuk
menghitung rata rata Deret
PROGRAM
RatarataDere;
USES
Wincrt;
VAR
i,N,jumlah, index : integer;
rata : real;
BEGIN
repeat
clrscr;
write('Inputkan Nilai Akhir Deret :');
readln(N);
jumlah := 0;
index := 0;
for i := 1 to N do
Begin
write(i,' ');
jumlah := jumlah + i;
index := index + 1;
End;
rata := jumlah/index;
writeln('= ', jumlah) ;
write('rata rata = ', rata:2:2);
readln;
until keypressed;
END.
·
Buatlah program perpangkatan
PROGRAM
Perpangkatan ;
USES
Wincrt;
VAR
i, Pangkat, Bilangan : integer ;
Hasil : LongInt;
BEGIN
Repeat
clrscr;
write('Inputkan Bilangan : ');
readln(Bilangan);
write('Dipangkatkan dengan : ');
readln(pangkat);
Hasil := 1;
for i := 1 to Pangkat do
Begin
Hasil := Hasil * Bilangan;
End;
write('Hasil = ', Hasil);
readln;
Until Keypressed;
END.
For menurun
For Variable
:= NilaiAkhir Downto NilaiAwal do
Begin
Pernyataan1
Pernyataan2
.
.
PernyataanN
End;
Keterangan :
(i) Variable haruslah dari tipe data
yang
memiliki
predecessor dan successor, yaitu integer atau karakter.
Tipe riil tidak dapat digunakan sebagai pencacah.
(ii) pernyataan
adalah satu atau lebih kecil instruksi yang diulang.
(iii) Nilai_akhir
harus
lebih besar
atau
sama dengan
nilai_awal. Jika nilai_akhir lebih kecil dari nilai_awal, maka badan pengulangan tidak dimasuki
(iv) Pada
awalnya
variable dinisialisasi dengan
nilai_akhir.
Nilai variable secara otomatis berkurang satu
setiap
kali
badan pengulangan dimasuki, sampai akhirnya pencacah sama dengan
nilai_awal.
(v) Jumlah
pengulangan yang terjadi adalah nilai_akhir – nilai_awal + 1.
·
Buatlah
sebuah program menggunakan mekanisme perulangan for Downto do untuk menampilkan bilangan bulat dari 20 s/d 1
PROGRAM
DownDeretAngka
;
USES
Wincrt;
VAR
i : integer;
BEGIN
For
i := 20 downto 1 do
Begin
Write(i,' ');
End;
END.
·
Buatlah
sebuah program dengan menggunakan mekanisme for Downto do untuk menampilkan bilangan genap dari mulai
20 sampai dengan 1
PROGRAM
DownGenap;
USES
wincrt;
VAR
i : integer;
BEGIN
For i := 20 Downto 1 do
Begin
If
i mod 2 = 0 then
write(i,' ');
End;
END.