Sesi
Struktur Percabangan
2
Perintah pencabangan dapat dikelompokkan dalam dua macam yaitu if then, memiliki beberapa variasi if then else, nested if, dll dan case of, bisa juga digunakan untuk nested case of meskipun jarang digunakan.
2.1 Statement if Bentuk sederhana statement if : if (ekspresi) then pernyataan
Contoh : if (bigNumber < smallNumber) then bigNumber := smallNumber;
Kode diatas membandingkan bigNumber dan smallNumber. Jika bigNumber lebih kecil dari smallNumber, maka nilai bigNumber digantikan oleh nilai dari smallNumber itu. Bentuk statement if else : if (ekspresi) then pernyataan else pernyataan
Statement else digunakan untuk memberikan pilihan aksi lain jika ekspresi pada statement if bernilai salah (FALSE). Contoh : if J <> 0 then begin Hasil := I+J; Jumlah := Jumlah + 1; end else Hasil := I;
DAD – Sesi 2: Struktur Percabangan
1
Perlu dicatat bahwa SETIAP PERNYATAAN yang lebih dari satu baris, harus berada dalam blok begin...end (artinya diawali dengan begin dan diakhiri dengan end.) Perlu dicatat juga bahwa statement SEBELUM else tidak boleh pakai tanda titik koma (;) diakhirnya, kecuali else pada statement case (lihat bagian 2.2).
2.2 Statement case Bentuk sederhana statement case : case selectorExpression of kasus1: pernyataan1; ... kasusN: pernyataanN; end;
Dimana selectorExpression harus merupakan ekspresi yang bertipe ordinal (bukan string) dan masing-masing kasus merupakan salah satu dari: Angka, konstanta, atau ekspresi lainnya yang bisa di evaluasi oleh kompiler tanpa harus mengekesekusi program. Subrange/jangkauan, seperti: 1..10, ‘a’..’f’, dsb. Daftar, seperti: 2,3,5,7 atau x,y,z. Setiap case juga bisa memiliki klausa else di akhirnya dengan bentuk: case selectorExpression of kasus1: pernyataan1; ... kasusN: pernyataanN; else pernyataan end;
Contoh: case I of 1..5: Caption := 'Low'; 6..9: Caption := 'High'; 0, 10..99: Caption := 'Out of range'; else Caption := ''; end;
DAD – Sesi 2: Struktur Percabangan
2
Pernyataan tersebut sama dengan pernyataan: if I in [1..5] then Caption := 'Low' else if I in [6..10] then Caption := 'High' else if (I = 0) or (I in [10..99]) then Caption := 'Out of range' else Caption := '';
Kira-kira, mana yang lebih Anda sukai?
2.3 Komponen ComboBox, CheckBox, RadioButton Siapkan aplikasi baru, kemudian masukkan 4 buah Label, 1 Edit, 2 RadioButton, 1 ComboBox, 3 buah CheckBox, dan 2 BitBtn. Atur propertinya sesuai dengan tabel berikut: Komponen BitBtn1 BitBtn2 Label1 Label2 Label3 Label4 RadioButton1 RadioButton2 CheckBox1 CheckBox2 CheckBox3 ComboBox1
Properti Kind Kind Caption Caption Caption Caption Caption Caption Caption Caption Caption Items Style
Nilai bkOK bkCancel Nama Jenis Kelamin Pekerjaan Hobby Pria Wanita Membaca Olah Raga Jalan-jalan (lihat String List editor) csDropDownList
Gambar 1. String List Editor.
Rancanglah agar tampak seperti gambar berikut ini:
DAD – Sesi 2: Struktur Percabangan
3
Gambar 2. Program Biodata.
Untuk pengisian kode program, anda klik ganda pada BitBtn2, kemudian isikan kode berikut : procedure TForm1.BitBtn2Click(Sender: TObject); begin Edit1.Clear; ComboBox1.ItemIndex := -1; RadioButton1.Checked := FALSE; RadioButton2.Checked := FALSE; CheckBox1.Checked := FALSE; CheckBox2.Checked := FALSE; CheckBox3.Checked := FALSE; end;
Untuk BitBtn1, lakukan hal yang sama (klik ganda), kemudian diisi dengan kode program berikut : procedure TForm1.BitBtn1Click(Sender: TObject); var jenis, hobi: string; begin if RadioButton1.Checked then jenis := 'Pria' else if RadioButton2.Checked then jenis := 'Wanita' else jenis := 'Waria'; hobi := ''; if CheckBox1.Checked then hobi := hobi + 'Membaca ';
DAD – Sesi 2: Struktur Percabangan
4
if CheckBox2.Checked then hobi := hobi + 'Olah Raga '; if CheckBox3.Checked then hobi := hobi + 'Jalan-jalan'; ShowMessage('Anda seorang '+jenis+#13+ 'Yang bernama '+Edit1.Text+#13+ 'Pekerjaan '+ComboBox1.Text+#13+ 'Hobi '+hobi); end;
Simpan dan jalankan programnya.
Penjelasan: Perhatikan kode program berikut : if RadioButton1.Checked then jenis := 'Pria' else if RadioButton2.Checked then jenis := 'Wanita' else jenis := 'Waria';
Pada kode perintah tersebut, dilakukan pemeriksaan apakah RadioButton1 status check-nya bernilai TRUE atau tidak. Jika TRUE maka variabel jenis diisi dengan teks ‘Pria’. Jika FALSE, dilakukan pemeriksaan untuk RadioButton2. Jika nilai check-nya TRUE maka jenis diisi dengan teks ‘Wanita’ . Jika kedua kondisi tersebut tidak ada yang memenuhi maka jenis diisi dengan ‘Waria’. Pada kode program berikutnya if CheckBox1.Checked then hobi := hobi + 'Membaca '; if CheckBox2.Checked then hobi := hobi + 'Olah Raga '; if CheckBox3.Checked then hobi := hobi + 'Jalan-jalan';
Program melakukan pemeriksaan nilai check dari CheckBox1 s/d CheckBox3. Jika bernilai TRUE maka variabel hobi akan disambung dengan teks sesuai checkbox yang bersangkutan.
DAD – Sesi 2: Struktur Percabangan
5
2.4 Komponen RadioGroup & Case Of Siapkah aplikasi baru. Masukkan 3 buah Label, 3 Edit, dan 1 RadioGroup. Atur propertinya sebagai berikut: Komponen Form1 Label1 Label2 Label3 Edit1, Edit2, Edit3 RadioGroup1
Caption Caption Caption Caption Text Items
Properti
Kalkulator Bilangan 1 Bilangan 2 Hasil (kosongkan) Tambah Kurang Kali Bagi
Nilai
Rancanglah agar tampak seperti gambar berikut ini:
Gambar 3 Program Perhitungan Sederhana
Untuk pengisian kode program, anda klik ganda pada RadioGroup1, kemudian isikan kode berikut : procedure TForm1.RadioGroup1Click(Sender: TObject); var bil1, bil2, hasil: real; begin bil1 := StrToFloat(Edit1.Text); bil2 := StrToFloat(Edit2.Text); hasil := 0; case RadioGroup1.ItemIndex of 0: begin hasil := bil1 + bil2; end; 1: begin hasil := bil1 - bil2; end; 2: begin hasil := bil1 * bil2;
DAD – Sesi 2: Struktur Percabangan
6
end; 3: begin hasil := bil1 / bil2; end; end; Edit3.Text := FloatToStr(hasil); end;
Penjelasan:
Berbeda dengan penggunaan if, penggunaan case of hanya berlaku untuk variabel yang bertipe integer atau karakter. Namun kelebihan case of adalah lebih mudah pembacaan kasusnya jika kasus yang terjadi sangat banyak. Sekarang, bagaimana jika user belum mengisikan bilangan 1 dan/atau bilangan 2? Tentunya program akan error. Oleh karena itu, ada baiknya diperiksa dulu apakah user sudah mengisi bilangan 1 dan 2 atau belum. Cobalah modifikasi kode program sebelumnya menjadi seperti di bawah ini: procedure TForm1.RadioGroup1Click(Sender: TObject); var bil1, bil2, hasil: real; begin if (Edit1.Text<>'') and (Edit2.Text<>'') then begin bil1 := StrToFloat(Edit1.Text); bil2 := StrToFloat(Edit2.Text); case RadioGroup1.ItemIndex of 0: begin hasil := bil1 + bil2; end; 1: begin hasil := bil1 - bil2; end; 2: begin hasil := bil1 * bil2; end; 3: begin hasil := bil1 / bil2; end; else hasil := 0.0; end; Edit3.Text := FloatToStr(hasil); end else ShowMessage('Bilangan 1 dan Bilangan 2 keduanya harus diisi dulu!!!') end;
DAD – Sesi 2: Struktur Percabangan
7
Penjelasan:
Pada kode program perbaikan tersebut, bisa dilihat bahwa ekspresi dalam statemen if bisa terdiri lebih dari satu, dipisahkan dengan operator and. Operator tersebut mensyaratkan bahwa kedua ekspresi harus dipenuhi agar program di dalamnya (diantara blok begin...end) bisa dijalankan. Selain itu, kita bisa juga menggunakan operator or dan not, yang cara kerjaya sesuai dengan namanya.
2.5 Pengisian Item ListBox Secara Dinamis Siapkan 1 Edit, 2 BitBtn dan 1 ListBox. Isilah propertinya berdasarkan tabel di bawah ini: Edit1 BitBtn1 BitBtn2
Komponen
Form1
Properti Text Glyph Kind Caption Caption
Nilai (kosongkan) (sesuai gambar) bkRetry Reset Pengisian Data ListBox Dinamis
Aturlah agar tampak seperti gambar di bawah ini:
Gambar 4. Rancangan form listbox dinamis.
Untuk pengisian kode program, anda klik ganda pada BitBtn1, kemudian isikan kode berikut : procedure TForm1.BitBtn1Click(Sender: TObject); begin ListBox1.Items.Add(Edit1.Text); Edit1.SetFocus; end;
Klik ganda juga BitBtn2, untuk kemudian masukkan kode berikut : procedure TForm1.BitBtn2Click(Sender: TObject);
DAD – Sesi 2: Struktur Percabangan
8
begin Edit1.Clear; ListBox1.Items.Clear; Edit1.SetFocus; end;
Penjelasan:
Program tersebut akan memasukkan teks yang terdapat pada Edit1 ke dalam ListBox1. Artinya kita bisa menentukan isi ListBox secara dinamis pada saat runtime.
DAD – Sesi 2: Struktur Percabangan
9