Sesi
Struktur Perulangan
3
Bentuk pengulangan (looping) dalam Delphi sesuai dengan bahasa Pascal yakni ada tiga antara lain: For, While do dan Repeat until.
3.1 Pernyataan while do Pada pernyataan while, pengujian terhadap loop dilakukan di bagian awal (sebelum tubuh loop). Bentuk umum dari pernyataan while adalah : while (ekspresi) do pernyataan
Dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Berikut ini ada contoh program yang memanfaatkan pernyataan while: while (I > 0) or (J < 100) do begin I := I div 2; J := J + 1; end;
3.2 Pernyataan repeat ... until Bentuk umum dari repeat..until adalah: repeat pernyataan1; ... ; pernyataanN; until (ekspresi);
Pada pernyataan repeat..until, tubuh loop berupa pernyataan, dengan pernyataan bisa berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Pada pernyataan repeat, mula-mula pernyataan dijalankan. Selanjutnya, kondisi ekspresi diuji, seandainya bernilai benar (TRUE), maka pernyataan dijalankan lagi, kemudian ekspresi diperiksa kembali, dan seterusnya. Kalau kondisi bernilai salah (FALSE) pada saat dites, maka pernyataan tidak dijalankan lagi. Contoh program yang memanfaatkan pernyataan repeat..until adalah sebagai berikut:
DAD – Sesi 3: Struktur Pengulangan
1
repeat I := I div 2; J := J + 1; until (I = 0) or (J >= 100);
3.3 Pernyataan for Bentuk umum dari pernyataan for adalah sebagai berikut: for counter := nilaiAwal to nilaiAkhir do pernyataan
atau for counter := nilaiAwal downto nilaiAkhir do pernyataan
dimana : counter merupakan suatu variabel bertipe ordinal (bukan string). nilaiAwal dan nilaiAkhir merupakan suatu ekspresi yang bisa diisikan ke counter. pernyataan merupakan kode program yang dieksekusi selama pengulangan, tanpa mengubah nilai counter. setiap for penambahan/pengurangan nilai counter adalah satu. Contoh penggunaan kedua bentuk for tersebut adalah sebagai berikut: writeln(‘Menulis abjad’); for c := ‘A’ to ‘Z’ do write(c); writeln(‘Menulis angka mundur’); for i := 9 downto 0 do write(i);
3.4 Contoh Program Penggunaan While Pada contoh program berikut akan menghitung nilai total dan rata-rata dari total tersebut berdasarkan nilai batas atas dan batas bawah yang dimasukkan oleh user. Buatlah aplikasi baru dan masukkan 4 buah Label, 4 Edit, dan 2 BitBtn. Aturlah tampilannya seperti pada gambar berikut ini.
DAD – Sesi 3: Struktur Pengulangan
2
Gambar 1. Rancangan program penghitung Nilai Total dan Rata-rata.
Sesuaikan nilai masing-masing properti berdasarkan pada tabel berikut ini: Komponen Edit1, Edit2, Edit3, Edit4 Label1 Label2 Label3 Label4 BitBtn1 BitBtn2 Form1
Properti Text Caption Caption Caption Caption Kind Kind Caption
Nilai
(kosongkan) Batas atas Batas bawah Total Rata-rata bkOK bkCancel Program Penghitung Total & Rata-Rata
Klik ganda pada BitBtn1, kemudian masukkan kode berikut : procedure TForm1.BitBtn1Click(Sender: TObject); var ba, bb, i, total : integer; begin ba := StrToInt(Edit1.Text); bb := StrToInt(Edit2.Text); total := 0; i := ba; while i <= bb do begin total := total + i; i := i + 1; end; Edit3.Text := IntToStr(total); Edit4.Text := FloatToStr(total/(bb-ba+1)); end;
Sedangkan kode program untuk BitBtn2 adalah sebagai berikut : procedure TForm1.BitBtn2Click(Sender: TObject); begin Close; end;
DAD – Sesi 3: Struktur Pengulangan
3
Gambar 2. Tampilan program penghitung Nilai Total dan Rata-rata setelah dieksekusi.
Penjelasan:
penggunaan LOOPING pada contoh di atas dimulai dari batas atas (ba) sampai dengan batas bawah (bb). Dari nilai-nilai tersebut, dihitung total dengan rumus ba+(ba+1)+(ba+2)+...+(bb). Sedangkan nilai rata-ratanya dihitung dengan cara membagi nilai total tersebut dengan selisih batas atas dan batas bawah (bb-ba).
3.5 Contoh Program Penggunaan Repeat-Until Pada contoh program berikut, kita akan memasukkan angka-angka yang habis di bagi 2 saja (genap), mulai dari nilai awal sampai nilai akhir, ke dalam listbox. Masukkan 2 Label, 2 Edit, 1 SpeedButton, dan 1 ListBox. Sesuaikan rancangan aplikasinya seperti gambar di bawah ini:
Gambar 3. Rancangan program.
DAD – Sesi 3: Struktur Pengulangan
4
Aturlah nilai masing-masing propertinya sebagai berikut: Komponen Edit1, Edit2 Label1 Label2 SpeedButton1
Properti Text Caption Caption Flat Glyph Caption Kind
Form1 BitBtn1
(kosongkan) Nilai awal Nilai akhir TRUE arrow2d.bmp Program Genap bkClose
Nilai
Klik ganda pada SpeedButton1, kemudian masukkan kode berikut : procedure TForm1.SpeedButton1Click(Sender: TObject); var nawal, nakhir, g: integer; begin nawal := StrToInt(Edit1.Text); nakhir := StrToInt(Edit2.Text); //inisialisasi g := nawal; ListBox1.Clear; repeat if (g mod 2=0) then ListBox1.Items.Add(IntToStr(g)); g := g + 1; until (g>nakhir); end;
Gambar 4. Tampilan program setelah dieksekusi.
DAD – Sesi 3: Struktur Pengulangan
5
Penjelasan:
Setiap nilai mulai dari nilai awal sampai nilai akhir akan dievaluasi apakah bilangan genap atau ganjil. Caranya dengan menggunakan operator mod. Jika sisa bagi suatu angka setelah di-mod dengan 2 sama dengan nol, berarti angka tersebut adalah angka genap. Sebaliknya, angka ganjil. Sebagai latihan, coba buat listbox baru yang akan menampung juga angka ganjilnya, sehingga seakan-akan program akan “memilah-mliah” bilangan menjadi dua bagian (ganjil dan genap).
3.6 Contoh Program Penggunaan For Pada program berikutnya, kita akan menampilkan angka-angka kelipatan tiga mulai dari 3 sampai batas yang ditentukan oleh user. Siapkan aplikasi baru dengan form seperti gambar berikut:
Gambar 5. Form Program Kelipatan Tiga.
Komponen Edit1, Edit2 Label1 Label2 BitBtn1 BitBtn2 Form1
Text Caption Caption Kind Caption Kind Caption Caption
Properti
Nilai (kosongkan) Batas Kelipatan bkOK Proses bkClose Tutup Program Kelipatan Tiga
Kode program event OnClick untuk BitBtn1 adalah sebagai berikut: procedure TForm1.BitBtn1Click(Sender: TObject); var i, batas : integer; begin batas := StrToInt(Edit1.Text); Edit2.Clear; for i:=1 to batas do
DAD – Sesi 3: Struktur Pengulangan
6
if i mod 3 = 0 then Edit2.Text := Edit2.Text + ' ' + IntToStr(i); end;
Gambar 6. Tampilan Program Kelipatan Tiga setelah dieksekusi.
Penjelasan:
Input batas pada contoh program dimaksudkan untuk batasan pengulangan. Artinya pengulangan dimulai dari angka satu sampai batas dari input yang dimasukkan. Selanjutnya dalam pengulangan dilakukan pemeriksaan apakah nilai i dibagi 3 sisanya 0 atau tidak. Jika sisa 0 maka bilangan tersebut termasuk kelipatan tiga. Jika tidak, proses dilajutkan ke bilangan berikutnya. Di dalam for, penambahan counter dilakukan secara otomatis, hal ini berbeda dengan while do dan repeat until. Sebagai tambahan, masukkan kode berikut ke dalam event OnKeyPress milik Edit1: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin //#8 berarti tombol backspace if not( Key in ['0'..'9',#8] ) then begin ShowMessage('Maaf, yang dimasukkan harus berupa bilangan positif saja.'); Key := #0 end; end;
bulat
Penjelasan:
Event OnKeyPress adalah event terjadi ketika user menekan tombol pada keyboard-nya. Itu artinya, kode program di atas akan dijalankan setiap kali user menekan tombol keyboard dalam Edit1.
DAD – Sesi 3: Struktur Pengulangan
7
3.7 Nested Loop (Pengulangan Bertingkat) Contoh-contoh sebelumnya hanya menggunakan perintah loop sekali saja. Pada contoh kita kali ini loop yang digunakan bertingkat, artinya dalam perintah loop terdapat perintah loop lagi. Agar anda tidak penasaran, cobalah program yang satu ini. Siapkan form dengan 1 Label, 1 Edit, 1 ListBox dan 2 buah BitBtn seperti gambar berikut ini:
Gambar 7. Program Pencetak Bintang.
Atur nilai masing-masing propertinya sebagai berikut: Edit1 Label1 ListBox1
Komponen
BitBtn1 BitBtn2 Form1
Properti Text Caption Font Name Kind Caption Kind Caption
(kosongkan) Batas
Nilai
Courier New bkYes Cetak bkClose Pencetak Bintang
Ketikkan kode program berikut pada event OnClick komponen BitBtn1: procedure TForm1.BitBtn1Click(Sender: TObject); var i, j, batas: integer; teks: string;
DAD – Sesi 3: Struktur Pengulangan
8
begin ListBox1.Clear; teks:=''; batas := StrToInt(Edit1.Text); for i:=1 to batas do begin for j:=1 to i do teks := teks + '*'; ListBox1.Items.Add(teks); teks:=''; end; end;
Gambar 8. Tampilan program Pencetak Bintang setelah dieksekusi.
Latihan:
Buat program seperti pada contoh nested loop, namun bintangnya terbalik (dari yang terbesar ke terkecil).
DAD – Sesi 3: Struktur Pengulangan
9