integer; begin PemrogDasarSMK X Smt2
Bab 4 Struktur Kontrol Perulangan 129
a := 10; while a 20 do
begin writeln‘nilai dari a adalah: , a;
a := a + 1; end;
end. Hasil:
nilai dari a adalah: 10 nilai dari a adalah: 11
nilai dari a adalah: 12 nilai dari a adalah: 13
nilai dari a adalah: 14 nilai dari a adalah: 15
nilai dari a adalah: 16 nilai dari a adalah: 17
nilai dari a adalah: 18 nilai dari a adalah: 19
Perulangan dengan struktur FOR DO
Perulangan dengan pencacah, yaitu menggunakan struktur FOR DO dimasukkan dalam pembahasan pada kegaiatan Belajar ini. Struktur ini digunakan untuk mengulang statement atau
satu blok statement berulang kali sejumlah yang ditentukan. Bentuk umum :
for nama_variabel := nilai_awal to nilai_akhir do {untuk pencacah naik} Pernyataan;
atau for nama_variabel := nilai_awal downto nilai_akhir do
{untuk pencacah turun} Pernyataan;
Untuk lebih jelasnya, perhatikan contoh kode program berikut, beserta hasilnya.
Program FORDO: Var I : integer;
Begin For I := 1 to 5 Do
Writeln‘Pascal’;
130 Pemrograman Dasar SMK Kelas X Sem 2
End. Output :
Pascal Pascal
Pascal Pascal
Pascal
Penulisan pernyataan yang akan diproses berulang kali tersebut dapat juga ditulis dalam bentuk blok pernyataan diawali dengan BEGIN dan diakhiri dengan END, walaupun hanya berisi sebuah
statement saja, sebagai berikut :
Contoh 2 Program Ulang;
Var I : integer; Begin
For I := 1 to 5 Do Begin
Writel n‘Belajar Pascal’;
Writeln “Sampai Bisa’; End;
End. Output:
Belajar Pascal Sampai Bisa
Belajar Pascal Sampai Bisa
Belajar Pascal Sampai Bisa
Belajar Pascal Sampai Bisa
Belajar Pascal Sampai Bisa
Dalam menyelesaiakan suatu permasalahan kita bisa menggunakan salah satu bentuk perulangan, apakah While Do ataupun For Do. Manakah yang lebih baik? Keduanya mempunyai
Bab 4 Struktur Kontrol Perulangan 131
kelebihan dan kekurangan sendiri-sendiri. Ada permasalahan yang dapat diubah dalam dua bentuk eprulangan tapi ada yang lebih mudah menggunakan bentuk For Do, tapi ada juga yang hanya
bisa digunakan bentuk While Do. Perhatikan dua contoh pertama pada bagian mengamati.
program whiledo var i : integer;
begin i := 1;
while i = 5 do begin
writeln ‘Pascal’;
i:=i+1; end;
end. Program FORDO:
Var I : integer; Begin
For i:= 1 to 5 Do Writeln‘Pascal’;
End.
Kedua program di atas mempunyai keluaran yang sama yaitu mencetak ‘Pascal’ sebanyak 5 kali, yaitu untuk i=1 sampai 5. Dalam While Do,
- pertama i diberi nilai 1,
- Periksa apakah i = 5? Iya maka tuliskan ‘Pascal’ kemudian nilai i ditambah 1 menjadi 2
- Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=3
- Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=4
- Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=5
- Periksa apakah i=5? Iya , maka tuliskan Pascal, i=i+1=6
- Periksa apakah i=5?Tidak, maka STOP
Di sini i berfungsi sebagai iterator dan 5 sebagai nilai sentinel. Dalam struktur FOR DO, iterator dan sentinel diringkas dalam bentuk for i:=1 to 5, di mana i
otomatis bertambah naik, mulai dari nilai awal 1 menjadi 5. Oleh karena itu struktur For Do disebut perulangan dengan pencacah.
Contoh berikut kode program dengan dua struktur berbeda untuk masalah yang sama.
Contoh 3.
Buatlah program untuk mementukan suku ke-n dari barisan berikut. 2,7,12,17,22, ....
Jawab: Barisan di atas adalah barisan aritmatika di mana selisih tiap suku berturutan adalah 5. Dengan
struktur For Do.
Program Barisan;
132 Pemrograman Dasar SMK Kelas X Sem 2
var i,n,suku:integer; begin
readlnn; suku:=2;
for i:=2 to n do suku:=suku+5;
writeln‘suku ke- ‘, n,’ adalah : ’, suku; end.
Dari kode program di atas dapat dilihat bahwa suku pertama adalah 2, sehingga dinyatakan nilai awal suku:=2. Berikutnya untuk suku kedua, ketiga dan seterusnya i=2, 3, 4, .. dihitung nilai suku
setelahnya adalah suku sebelumnya ditambah 5 suku:=suku+5. Berikut ini programnya dengan struktur WHILE DO.
Program Barisan; var i,n,suku:integer;
begin readlnn;
suku:=2; i:=2
While i=n do Begin
suku:=suku+5; i:=i+1;
End; writeln‘suku ke- ‘, n,’ adalah : ’, suku;
end. Contoh 4.
Buatlah program untuk menentukan suku terbesar yang kurang dari n dari barisan 2, 4, 8, 16, ....
Jawab: Masalah ini kurang cocok diselesaikan dengan struktur FOR DO karena banyaknya perulangan
tidak diketahui dengan pasti sehingga sulit mementukan ioterator dan nilai sentinelnya. Dengan menggunakan struktur While Do dapat diperoleh solusi sebagai berikut.
Program Barisan2; var n,suku:integer;
begin