Struktur Perulangan Sesi 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 I := I div 2; J := J + 1; 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: dimana : for counter := nilaiawal to nilaiakhir do pernyataan atau for counter := nilaiawal downto nilaiakhir do pernyataan 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 Properti Nilai Edit1, Edit2, Edit3, Edit4 Text (kosongkan) Label1 Caption Batas atas Label2 Caption Batas bawah Label3 Caption Total Label4 Caption Rata-rata BitBtn1 Kind bkok BitBtn2 Kind bkcancel Form1 Caption Program Penghitung Total & Rata-Rata Klik ganda pada BitBtn1, kemudian masukkan kode berikut : procedure TForm1.BitBtn1Click(Sender: TObject); var ba, bb, i, total : integer; ba := StrToInt(Edit1.Text); bb := StrToInt(Edit2.Text); total := 0; i := ba; while i <= bb do total := total + i; i := i + 1; Edit3.Text := IntToStr(total); Edit4.Text := FloatToStr(total/(bb-ba+1)); Sedangkan kode program untuk BitBtn2 adalah sebagai berikut : procedure TForm1.BitBtn2Click(Sender: TObject); Close; 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 Properti Nilai Edit1, Edit2 Text (kosongkan) Label1 Caption Nilai awal Label2 Caption Nilai akhir SpeedButton1 Flat Glyph TRUE arrow2d.bmp Form1 Caption Program Genap BitBtn1 Kind bkclose Klik ganda pada SpeedButton1, kemudian masukkan kode berikut : procedure TForm1.SpeedButton1Click(Sender: TObject); var nawal, nakhir, g: integer; 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); 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 Properti Nilai Edit1, Edit2 Text (kosongkan) Label1 Caption Batas Label2 Caption Kelipatan BitBtn1 Kind Caption bkok Proses BitBtn2 Kind Caption bkclose Tutup Form1 Caption Program Kelipatan Tiga Kode program event OnClick untuk BitBtn1 adalah sebagai berikut: procedure TForm1.BitBtn1Click(Sender: TObject); var i, batas : integer; 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); 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); //#8 berarti tombol backspace if not( Key in ['0'..'9',#8] ) then ShowMessage('Maaf, yang dimasukkan harus berupa bilangan bulat positif saja.'); Key := #0 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: Komponen Properti Nilai Edit1 Text (kosongkan) Label1 Caption Batas ListBox1 Font Name Courier New BitBtn1 Kind Caption bkyes Cetak BitBtn2 Kind bkclose Form1 Caption 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
ListBox1.Clear; teks:=''; batas := StrToInt(Edit1.Text); for i:=1 to batas do for j:=1 to i do teks := teks + '*'; ListBox1.Items.Add(teks); teks:=''; 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