Loop
3.1 Lebih Lanjut Tentang ListBox
KONSEP:
Kontrol ListBox memiliki sejumlah metode dan properti yang dapat dipakai di
dalam kode untuk memanipulasi isi ListBox.
Pada bab sebelumnya, Anda telah mengenal
kontrol ListBox, yang menampilkan
sejumlah item dan user dapat memilih satu atau lebih item dari list yang ada.
Pada bab ini, Anda menggunakan kontrol ListBox
untuk menampilkan keluaran. Banyak algoritma yang akan Anda lihat pada bab ini
menghasilkan daftar data dan kemudian menampilkannya pada kontrol ListBox.
Ingat bahwa Anda menambahkan item-item ke
properti Items dari kontrol ListBox,
dan item-item itu akan ditampilkan pada ListBox.
Pada saat perancangan, Anda dapat menggunakan jendela Properties untuk
menambahkan item-item ke properti Items
dari kontrol. Anda dapat pula menuliskan kode yang menambahkan item-item ke
suatu ListBox. Untuk menambahkan
sebuah item pada suatu kontrol ListBox
dengan kode, Anda perlu memanggil metode Items.Add
dari kontrol itu. Berikut adalah bentuk umum dari metode:
NamaListBox .Items.Add( Item );
NamaListBox adalah nama dari kontrol ListBox. Item adalah nilai yang akan ditambahkan pada properti Items. Sebagai contoh, di dalam CD yang
menyertai buku ini, Anda akan menjumpai sebuah projek dengan nama List Nama. Gambar 3.1 menunjukkan form aplikasi. Seperti ditunjukkan
pada gambar di sisi kiri, nama dari kontrol ListBox adalah kotakListNama
dan nama dari kontrol Button adalah tombolTambah. Pada saat aplikasi
dijalankan, ketika Anda mengklik tombolTambah,
nama-nama yang ditunjukkan pada gambar di sebelah kanan pada kontrol kotakListNama.
Gambar 3.1 Aplikasi List Nama
Berikut adalah kode untuk event handler tombolTambah_Click:
1
2
3
4
5
6
7
|
private void tombolTambah_Click(object
sender, EventArgs e)
{
kotakListNama.Items.Add("Kris");
kotakListNama.Items.Add("Alisia");
kotakListNama.Items.Add("Justin");
kotakListNama.Items.Add("Holi");
}
|
Anda juga dapat menambahkan nilai-nilai
dengan tipe lain. Di dalam CD yang menyertai buku ini, Anda akan menjumpai
sebuah projek dengan nama List Nilai. Gambar 3.2 menunjukkan form
aplikasi. Seperti ditunjukkan pada gambar di sebelah kiri, nama dari ListBox adalah kotakListNilai dan nama dari kontrol Button adalah tombolTambah.
Pada saat aplikasi dijalankan, ketika Anda mengklik kontrol tombolTambah, nilai-nilai yang
ditunjukkan pada gambar di sebelah kanan akan ditambahkan pada kontrol kotakListNilai.
Gambar 3.2 Aplikasi List Nilai
Berikut adalah kode untuk event handler tombolTambah_Click:
1
2
3
4
5
6
7
|
private void tombolTambah_Click(object
sender, EventArgs e)
{
kotakListNama.Items.Add(10);
kotakListNama.Items.Add(20);
kotakListNama.Items.Add(30);
kotakListNama.Items.Add(40);
}
|
Properti Items.Count
Kontrol ListBox
memiliki properti Items.Count yang
melaporkan banyak item yang disimpan pada ListBox.
Jika ListBox kosong, properti Items.Count bernilai 0. Sebagai contoh,
asumsikan bahwa suatu aplikasi memiliki sebauh kontrol ListBox dengan nama kotakListKaryawan.
Statemen if berikut menampilkan
sebuah kotak pesan jika tidak ada item pada ListBox:
if (kotakListKaryawan.Items.Count == 0)
{
MessageBox.Show("Tidak ada item di dalam list!");
}
Properti Items.Count
memuat sebuah nilai integer. Asumsikan bahwa banyakKaryawan merupakan suatu variabel int, statemen berikut menugaskan banyak item pada kotakListKaryawan kepada variabel banyakKaryawan:
banyakKaryawan = kotakListKaryawan.Items.Count;
Metode Items.Clear
Kontrol ListBox
memiliki metode Items.Clear yang
menghapus semua item pada properti Items.
Berikut adalah bentuk umum dari metode ini:
NamaListBox.Items.Clear();
Sebagai contoh, asumsikan suatu aplikasi
memiliki sebuah kontrol ListBox
dengan nama kotakListKaryawan.
Statemen berikut menghapus semua item dari list:
kotakListKaryawan.Items.Clear();
3.2 Loop while
KONSEP: Loop while menyebabkan sebuah
statemen atau beberapa statemen dieksekusi secara berulang sepanjang suatu
ekspresi Boolean bernilai true.
Loop while
memiliki dua bagian: (1) sebuah ekspresi Boolean yang diuji untuk mendapat
nilai true atau false dan (2) sebuah statemen atau beberapa statemen yang
dieksekusi secara berulang sepanjang ekspresi Boolean bernilai true. Gambar 3.3 menunjukkan logika
dari sebuah loop while.
Gambar 3.3 Logika dari sebuah loop while
Simbol diamond merepresentasikan ekspresi
Boolean yang diuji. Perhatikan apa yang terjadi jika ekspresi bernilai true: Satu atau lebih statemen
dieksekusi dan eksekusi program mengalir kembali ke titik tepat di atas simbol
diamond. Ekspresi Boolean diuji kembali, dan jika masih bernilai true, maka proses akan berulang. Jika
ekspresi Boolean bernilai false, program akan keluar dari loop. Setiap kali
loop mengeksekusi statemennya atau statemen-statemennya, Anda dapat mengatakan
bahwa loop beriterasi, atau melakukan iterasi.
Berikut adalah bentuk umum dari loop while:
while (EkspresiBoolean)
{
statemen;
statemen;
dan seterusnya
}
Baris pertama disebut dengan klausa while. Klausa while diawali dengan kata while,
yang diikuti dengan sebuah ekspresi Boolean yang diapit di dalam kurung. Awal
dari baris kedua adalah kurung kurawal pembuka. Blok statemen yang ada setelah
kurung kurawal pembuka dikenal dengan tubuh loop.
Ketika loop while dieksekusi, ekspresi Boolean akan diuji. Jika ekspresi
Boolean bernilai true, maka setiap
statemen yang ada di dalam tubuh loop akan dieksekusi, dan kemudian loop
dimulai kembali. Jika ekspresi Boolean bernilai false, maka loop akan berakhir dan program memulai eksekusi pada
statemen yang ada setelah loop.
Anda mengatakan bahwa statemen-statemen di
dalam tubuh loop secara kondisional dieksekusi karena ia dieksekusi bila kondisi
terpenuhi (ekspresi Boolean berniali true).
Jika Anda menuliskan sebuah loop while
yang hanya memiliki satu statemen di dalam tubuhnya, Anda tidak perlu
menggunakan kurung kurawal. Loop semacam itu dapat dituliskan dengan bentuk
umum berikut:
while (EkspresiBoolean)
statemen;
Ketika sebuah loop while yang dituliskan seperti format ini dieksekusi, ekspresi
Boolean akan diuji. Jika ia bernilai true,
satu-satunya statemen yang ada pada baris berikutnya akan dieksekusi, dan
kemudian loop akan dimulai lagi. Jika ekspresi Boolean bernilai false, maka loop akan berhenti.
Meskipun kurung kurawal tidak diharuskan
ketika hanya ada satu statemen di dalam tubuh loop, adalah hal baik untuk
menggunakannya, seperti ditunjukkan dalam bentuk umum berikut:
while (EkspresiBoolean )
{
statemen;
}
Ketika Anda mempelajari sejumlah statemen if
pada bab sebelumnya, Anda mengetahui bahwa ini merupakan gaya pemrograman yang
baik karena bisa menghindarkan dari kebingungan. Jika Anda memiliki lebih dari
satu statemen di dalam tubuh loop, statemen-statemen itu harus diapit di dalam
kurung kurawal. Jika Anda terbiasa mengapit statemen-statemen yang dieksekusi
secara kondisonal menggunakan kurung kurawal, maka Anda semakin terbiasa
menggunakannya meski bila hanya ada satu statemen di dalam tubuh loop.
Anda tentu memerhatikan bahwa
statemen-statemen di dalam tubuh loop diindentasi. Sama seperti statemen if, indentasi ini membuat kode lebih
mudah dibaca dan didebug. Dengan mengidentasi statemen-statemen di dalam tubuh
loop, Anda dapat memisahkannya secara visual dari kode yang lain.
Lihat contoh berikut. Di dalam CD yang
menyertai buku ini, Anda akan menemukan sebuah projek dengan nama Demo Loop while. Gambar 3.4 menunjukkan
form aplikasi. Seperti ditunjukkan pada gambar kiri, nama kontrol Button adalah tombolGo. Saat aplikasi dijalankan, ketika Anda mengklik kontrol tombolGo, kotak pesan akan ditampilkan
seperti ditunjukkan pada gambar kanan. Ketika Anda mengklik tombol OK untuk
menutup kotak pesan tersebut, pesan kotak lain ditampilkan. Kotak pesan seperti
ini ditampilkan lima kali. Berikut adalah kode untuk event handler tombolGo_Click:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private void tombolGo_Click(object
sender, EventArgs e)
{
//Mendeklarasikan sebuah variabel untuk mencacah iterasi loop
int cacah = 1;
//Menampilkan “Halo” pada sebuah kotak pesan lima kali
while (cacah <= 5)
{
//Menampilkan kotak pesan
MessageBox.Show("Halo");
//Menambahkan 1 pada cacah
cacah = cacah + 1;
}
}
|
Amati kode lebih dekat. Pada baris 4, sebuah
variabel int dengan nama cacah
dideklarasikan dan diinisialisasi dengan nilai 1. Sebuah loop while diawali pada baris 7. Perhatikan
bahwa loop while menguji ekspresi cacah <= 5. Statemen-statemen di
dalam tubuh loop while dieksekusi
secara berulang sepanjang variabel cacah
bernilai kurang dari 5. Di dalam tubuh loop, baris 10 menampilkan “Halo” pada
sebuah kotak pesan, dan kemudian baris 13 menambahkan satu pada variabel cacah. Ini merupakan statemen terakhir
di dalam tubuh loop. Jadi, setelah statemen tersebut dieksekusi, loop akan
diawali kembali. Ia menguji ekspresi Boolean kembali, dan jika masih bernilai true, statemen-statemen di dalam tubuh
loop akan dieksekusi. Siklus ini berulang sampai ekspresi Boolean, cacah <= 5 bernilai false, seperti diilustrasikan pada
Gambar 3.5. Diagram alir untuk loop ini ditampilkan pada Gambar 3.6.
Gambar 3.4 Aplikasi Demo Loop while
Gambar 3.5 Loop while
Gambar 3.6 Diagram alir untuk loop while
Loop while adalah Loop Prauji
Loop while dikeal sebagai loop prauji, yang
berarti bahwa ia menguji kondisinya sebelum melakukan iterasi. Karena pengujian
dilakukan di awal loop, Anda perlu melakukan beberapa langkah sebelum loop
dieksekusi untuk memastikan loop dieksekusi sedikitnya sekali. Perhatikan
deklarasi dari variabel cacah di
dalam program Demo Loop while:
int cacah = 1;
Variabel cacah
diinisialisasi dengan nilai 1. Jika cacah
telah diinisialisasi dengan sebuah nilai yang lebih besar dari 5, seperti
ditunjukkan pada contoh berikut, loop tidak akan pernah dieksekusi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private void tombolGo_Click(object
sender, EventArgs e)
{
//Mendeklarasikan sebuah variabel untuk mencacah iterasi loop
int cacah = 6;
//Loop ini tidak akan pernah dieksekusi
while (cacah <= 5)
{
//Menampilkan kotak pesan
MessageBox.Show("Halo");
//Menambahkan 1 pada cacah
cacah = cacah + 1;
}
}
|
Karakteristik penting dari loop while ini
adalah bahwa loop tidak akan pernah beriterasi jika ekspresi Boolean bernilai false pada awalnya. Jika Anda ingin
memastikan bahwa loop while
dieksekusi minimal sekali, Anda perlu menginisialisasinya dengan data relevan
sedemikian rupa sehingga ekspresi Boolean diawali dengan nilai true.
Variabel Pencacah
Pada aplikasi Demo Loop while, variabel cacah diinisialisasi dengan nilai 1, dan kemudian 1 ditambahkan
pada variabel cacah pada tiap
iterasi. Loop dieksekusi sepanjang cacah
bernilai kurang dari atau sama dengan 5. Variabel cacah dipakai sebagai variabel pencacah, yang berarti bahwa ia
secara reguler diinkremen pada tiap iterasi loop. Pada dasarnya, variabel cacah menjejak jumlah iterasi loop yang
telah dilakukan. Variabel pencacah umumnya dipakai untuk mengendalikan banyak
iterasi dari loop.
Tutorial 3.1 akan memberikan latihan
penulisan loop dan penggunaan variabel pencacah. Dalam tutorial ini, Anda akan
menuliskan sebuah loop while yang
menghitung besar bunga yang dihasilkan tiap bulannya pada suatu akun bank untuk
sejumlah bulan tertentu.
Tutorial 3.1: Menggunakan Loop untuk Menghitung Saldo Akun
Pada
tutorial, Anda menyelesaikan aplikasi Saldo
Akhir. Projek telah diciptakan bagi
Anda dan ditempatkan di dalam CD yang menyertai buku ini. Form aplikasi
ditampilkan pada Gambar 3.7a.
Ketika Anda
menyelesaikan aplikasi, user dapat memasukkan saldo awal dari akun ke dalam
kontrol teksSaldoAwal dan jumlah
bulan dari akun untuk menerima bunga ke dalam kontrol teksBulan. Ketika user mengklik kontrol tombolHitung, aplikasi akan menghitung saldo akun di akhir periode.
Suku bunga bulanan yang diberikan adalah 0.005, dan bunga uang dihitung tiap
bulan.
Langkah 1: Awali Visual Studio (atau Visual Studio Express). Buka
projek dengan nama Saldo Akhir di dalam CD yang menyertai buku
ini.
Langkah 2: Buka forn Form1
pada mode Designer. Form
ditunjukkan, berikut dengan nama-nama dari kontrol-kontrol penting, pada Gambar
3.7.
Langkah 3: Sekarang, Anda akan menciptakan event handler Click untuk kontrol-kontrol Button. Di akhir tutorial ini, Program 3.1.
menunjukkan kode utuh untuk form. Pada mode Designer, klik ganda pada kontrol tombolHitung. Ini akan membuka editor kode, dan Anda akan melihat
sebuah event handler kosong dengan nama tombolHitung_Click.
Sempurnakan kode event handler ini dengan menuliskan kode yang ditunjukkan pada
baris 22-59 pada Program 3.1. Amati kode lebih dekat:
Baris 23: Statemen ini mendeklarasikan sebuah konstanta decimal dengan nama SUKU_BUNGA, yang ditetapkan dengan
nilai 0.05. Ini adalah suku bunga bulanan.
Baris 26-28:
Statemen-statemen ini mendeklarasikan variabel-variabel berikut:
· saldo: sebuah variabel
decimal untuk memuat saldo akun.
· bulan: sebuah variabel int
untuk memuat banyak bulan dimana akun akan menerima bunga tiap bulannya.
· cacah: sebuah variabel int yang dipakai untuk menjejak bulan
ketika loop beriterasi. Perhatikan bahwa variabel cacah diinisialisasi dengan nilai 1.
Baris 31: Statemen if
ini mencoba untuk mengkonversi teksSaldoAwal.Text
menjadi sebuah decimal. Jika
konversi berhasil, hasilnya disimpan di dalam variabel saldo, dan program berlanjut mengeksekusi baris 33. Jika konversi
tidak berhasil, program akan melompat ke klausa else pada baris 55, dan baris 58 menampilkan pesan error Nilai tak valid untuk saldo awal.
Baris 34: Statemen if
ini mencoba untuk mengkonversi teksBulan.Text
menjadi sebuah int. Jika konversi
berhasil dilakukan, hasilnya akan disimpan di dalam variabel bulan, dan program
berlanjut mengeksekusi baris 36. Jika konversi tidak berhasil, program melompat
ke klausa else pada baris 49, dan
baris 52 menampilkan pesan error Nilai
tak valid untuk bulan.
Baris 37: Ini adalah awal dari sebuah loop while. Loop dieksekusi
sepanjang ekspresi cacah <= bulan
bernilai true.
Baris 39-43: Statemen-statemen ini adalah tubuh loop. Baris 40
menghitung bunga bulanan dan menambahkannya pada variabel saldo. Baris 43 menambahkan 1 pada variabel cacah.
Baris 47: Statemen ini dieksekusi setelah loop menyelesaikan
semua iterasinya. Ia mengkonversi nilai
dari variabel saldo menjadi suatu
string dan menugaskan string yang dihasilkan kepada properti Text dari kontrol labelSaldoAkhir.
Langkah 4: Kembali ke mode Designer
dan mengklik ganda kontrol tombolBersih.
Pada editor kode, Anda akan mendapati sebuah event handler kosong dengan nama tombolBersih_Click. Sempurnakan event
handler ini dengan menuliskan kode yang ditunjukkan pada baris 64-70 pada
Program 3.1.
Langkah 5: Kembali ke mode Designer
dan klik ganda pada kontrol tombolKeluar.
Pada editor kode, Anda akan melihat sebuah event handler kosong dengan nama tombolKeluar_Click. Sempurnakan event
handler ini dengan menuliskan kode yang ditunjukkan pada baris 75-76 pada
Program 3.1.
Langkah 6: Simpan projek dan jalankan aplikasi. Masukkan suatu
nilai sebagai saldo awal dan masukkan banyak bulan. Klik tombol Hitung untuk mendapatkan saldo akhir.
Selanjutnya, klik tombol Bersih
untuk membersihkan kontrol-kontrol TextBox
dan uji kembali aplikasi dengan nilai-nilai lain.
Gambar 3.7a Form Saldo
Akhir
Program 3.1 Kode utuh untuk Form1
pada aplikasi Saldo Akhir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Saldo_Akhir
{
public
partial class Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void tombolHitung_Click(object sender, EventArgs e)
{
//Konstanta untuk suku bunga bulanan
const
decimal SUKU_BUNGA = 0.005m;
//Variabel-variabel lokal
decimal saldo; //Saldo akun
int
bulan; //Banyak bulan
int
cacah = 1; //Pencacah loop,
diinisialisasi dengan 1
//Mendapatkan saldo awal
if
(decimal.TryParse(teksSaldoAwal.Text, out saldo))
{
//Memabaca jumlah bulan
if (int.TryParse(teksBulan.Text, out bulan))
{
//Loop berikut menghitung saldo akhir
while (cacah <= bulan)
{
//Menambahkan bunga bulan ini pada saldo
saldo = saldo + (SUKU_BUNGA * saldo);
//Menambah satu pada pencacah loop
cacah = cacah + 1;
}
//Menampilkan saldo akhir
labelSaldoAkhir.Text = "Rp. " +
saldo.ToString("n2");
}
else
{
//Jumlah bulan tak valid dimasukkan
MessageBox.Show("Nilai tak valid untuk bulan.");
}
}
else
{
//Saldo awal tak valid dimasukkan
MessageBox.Show("Nilai tak valid untuk saldo awal.");
}
}
private
void tombolBersih_Click(object sender, EventArgs e)
{
//Membersihkan kontrol TextBox dan label
teksSaldoAwal.Text = "";
teksBulan.Text = "";
labelSaldoAkhir.Text = "";
//Membuat fokus ke kontrol teksSaldoAwal
teksSaldoAwal.Focus();
}
private
void tombolKeluar_Click(object sender, EventArgs e)
{
//Menutup form
this.Close();
}
}
}
|
Keluaran
program saat aplikasi dijalankan ditampilkan pada Gambar 3.7b.
Gambar 3.7b Form Saldo
Akhir saat dijalankan
Tutorial 3.2: Memperbaiki Apliksi Saldo Akhir
Pada tutorial ini, Anda akan memperbaiki
aplikasi Saldo Akhir yang telah Anda ciptakan pada Tutorial 3.1. Pertama,
tambahkan sebuah kontrol ListBox
pada form aplikasi, seperti ditunjukkan pada Gambar 3.8. Kemudian modifikasi
even handler tombolHitung_Click
sehingga ia menampilkan saldo akhir tiap bulan pada ListBox. Gambar 3.9 menunjukkan suatu contoh bagaimana form akan
ditampilkan ketika user telah memasukkan 1000 untuk saldo awal dan 8 untuk
banyak bulan.
Gambar 3.9 Contoh keluaran projek Saldo Akhir Diperbaiki
Langkah 1: Awali Visual Studio (atau Visual Studio
Express) dan buka projek dengan nama Saldo
Akhir Diperbaiki.
Langkah 2: Besarkan form sehingga tampak seperti
ditunjukkan pada Gambar 3.8.
Langkah 3: Ciptakan sebuah kontrol ListBox dengan nama kotakListDetil. Ubah ukuran ListBox seperti ditunjukkan pada Gambar
3.8.
Langkah 4: Kembali kode editor kode dan sisipkan kode
yang ditunjukkan pada baris 42-45 pada Program 3.2. Baris-baris baru
ditebalkan. Statemen pada baris 43-45 menambahkan sebuah string pada kontrol kotakListDetil. Jika Anda memeriksa
statemen dengan hati-hati, Anda akan melihat bahwa ia menggunakan penyambungan
untuk menciptakan sebuah string.
Langkah 5: Temukan event handler tombolBersih_Click pada editor kode. Perbarui komentar seperti
ditunjukkan pada baris 69-70, dan sisipkan kode seperti ditunjukkan pada baris
74. Statemen pada baris 74 membersihkan isi dari kontrol kotakListDetil.
Langkah 6: Simpan projek dan jalankan aplikasi.
Seperti ditunjukkan pada Gambar 3.9, masukkan 1000 sebagai saldo awal dan 8
sebagai banyak bulan. Klik tombol Hitung.
Keluaran akan ditunjukkan seperti pada Gambar 3.9.
Program 3.2 Kode utuh untuk Form1
pada aplikasi Saldo Akhir Diperbaiki
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Saldo_Akhir
{
public
partial class Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void tombolHitung_Click(object sender, EventArgs e)
{
//Konstanta untuk suku bunga bulanan
const
decimal SUKU_BUNGA = 0.005m;
//Variabel-variabel lokal
decimal saldo; //Saldo akun
int
bulan; //Banyak bulan
int
cacah = 1; //Pencacah loop,
diinisialisasi dengan 1
//Mendapatkan
saldo awal
if
(decimal.TryParse(teksSaldoAwal.Text, out saldo))
{
//Memabaca jumlah bulan
if (int.TryParse(teksBulan.Text, out bulan))
{
//Loop berikut menghitung saldo akhir
while (cacah <= bulan)
{
//Menambahkan bunga bulan ini pada saldo
saldo = saldo + (SUKU_BUNGA * saldo);
// Menampilkan saldo akhir bulan ini
kotakListDetil.Items.Add("Saldo akhir " +
"untuk bulan
" + cacah + " adalah Rp. " +
saldo.ToString("n1"));
//Menambah satu pada pencacah loop
cacah = cacah + 1;
}
//Menampilkan saldo akhir
labelSaldoAkhir.Text = "Rp. " +
saldo.ToString("n2");
}
else
{
//Jumlah bulan tak valid dimasukkan
MessageBox.Show("Nilai tak valid untuk bulan.");
}
}
else
{
//Saldo awal tak valid dimasukkan
MessageBox.Show("Nilai tak valid untuk saldo awal.");
}
}
private
void tombolBersih_Click(object sender, EventArgs e)
{
//Membersihkan kontrol TextBox, Label
//dan ListBox
teksSaldoAwal.Text = "";
teksBulan.Text = "";
labelSaldoAkhir.Text = "";
kotakListDetil.Items.Clear();
//Membuat fokus ke kontrol teksSaldoAwal
teksSaldoAwal.Focus();
}
private
void tombolKeluar_Click(object sender, EventArgs e)
{
//Menutup form
this.Close();
}
}
}
|
3.3 Operator ++ dan --
KONSEP:
Menginkremen sebuah variabel berarti menambah nilainya, dan mendekremen suatu
variabel berarti mengurangi nilainya. C# menyediakan operator untuk
menginkremen dan operator untuk mendekremen variabel.
Menginkremen sebuah variabel berarti menambah
nilainya, dan mendekremen suatu variabel berarti mengurangi nilainya. Kedua
statemen berikut menginkremen variabel angka
sebesar 1:
angka = angka + 1;
angka += 1;
Dan angka didekremen sebesar 1 pada kedua
statemen berikut:
angka = angka - 1;
angka -= 1;
Penginkremenan dan pendekremenan begitu
sering dijumpai pada banyak program C#. C# menyediakan beberapa operator unary
yang dirancang untuk menginkremen dan mendekremen variabel. Operator inkremen
adalah ++, dan operator dekremen adalah --. Statemen berikut menggunakan
operator ++ untuk menambahkan 1 pada angka:
angka++;
Setelah statemen ini dieksekusi, nilai dari angka ditambah sebesar 1. Statemen
berikut menggunakan operator – untuk mengurangkan 1 dari angka:
angka--;
Pada contoh-contoh ini, Anda telah menuliskan
operator ++ dan -- yang ditempatkan setelah operand (atau di sisi kanan dari
operandnya). Ini dinamakan dengan mode
postfiks. Oprator-operator dapat
pula dituliskan sebelum (atau di sisi kiri) dari operandnya, yang dinamakan
dengan mode prefiks.
++angka;
−−angka;
Ketika Anda menuliskan sebuah statemen
sederhana untuk menginkremen atau mendekremen suatu variabel, seperti yang
ditunjukkan di sini, adalah tidak masalah jika Anda menggunakan mode prefiks
atau mode postfiks. Operator akan melakukan hal yang sama untuk kedua mode
tersebut. Namun, jika Anda menuliskan statemen yang mencampur operator ini
dengan operator lain, maka ada perbedaan dalam cara bagaimana kedua mode
bekerja. Kode kompleks dapat lebih susah dipahami dan didebug. Ketika Anda
menggunakan operator inkremen dan dekremen, Anda akan melakukannya hanya untuk
cara-cara yang mudah dan sederhana untuk dipahami, seperti statemen-statemen
yang telah ditunjukkan.
Operator inkremen dan dekremen sangat umum
digunakan di dalam loop. Segmen kode berikut menunjukkan salah satu contoh.
Pada kode, variabel cacah
diinisialisasi dengan nilai 1. Loop while
yang diawali pada baris 5 beriterasi sepanjang cacah bernilai kurang dari atau sama dengan 5. Statemen pada baris
11 menginkremen cacah. Loop akan
beriterasi 5 kali.
1
2
3
4
5
6
7
8
9
10
11
12
|
//Mendeklarasikan sebuah
variabel untuk menghitung iterasi loop
int cacah = 1;
//Menampilkan “Halo” pada suatu
kotak pesan lima kali
while (cacah <= 5)
{
//Menampilkan kotak pesan
MessageBox.Show("Halo");
//Menginkremen cacah
cacah++;
}
|
3.4 Loop for
KONSEP: Loop
for adalah loop ideal untuk melakukan sejumlah tertentu iterasi dengan banyak
iterasi telah diketahui sebelumnya.
Loop for
secara spesifik dirancang untuk situasi-situasi yang mengharuskan suatu
variabel pencacah untuk mengendalikan banyak iterasi dari loop. Ketika Anda
menuliskan sebuah loop for, Anda
akan menetapkan tiga aksi:
· Inisialisasi: Aksi ini dilakukan
ketika loop dimulai. Ia hanya terjadi sekali.
· Pengujian: Sebuah ekspresi
Boolean diuji. Jika ekspresi ini bernilai true,
maka loop beriterasi. Jika bernilai false,
loop akan berhenti.
· Pembaruan: Aksi ini terjadi di
akhir dari tiap iterasi loop.
Gambar 3.10 menunjukkan bagaimana ketiga aksi
ini dipakai pada logika dari suatu loop for.
Berikut adalah bentuk umum dari loop for:
for (EkspresiInisialisasi; EkspresiPengujian; EkspresiPembaruan)
{
statemen;
statemen;
dan seterusnya…
}
Statemen-statemen yang ada di dalam kurung
kurawal adalah tubuh loop. Statemen-statemen ini dieksekusi setiap kali loop
beriterasi. Seperti struktur kendali, kurung kurawal bersifat opsional jika
tubuh loop hanya memuat satu statemen, seperti ditunjukkan pada bentuk umum
berikut:
for (EkspresiInisialisasi; EkspresiPengujian; EkspresiPembaruan)
statemen;
Baris pertama dari loop adalah header loop.
Setelah katakunci for, ada tiga
ekspresi di dalam kurung, yang dipisahkan dengan titik-koma. (Perhatikan bahwa
tidak ada titik-koma setelah ekspresi ketiga.)
Ekspresi pertama adalah ekspresi inisialisasi.
Ia biasanya dipakai untuk menginisialisasi suatu variabel pencacah untuk nilai
awalnya. Ini adalah aksi pertama yang dilakukan loop, dan hanya dilakukan
sekali. Ekspresi kedua adalah ekspresi
pengujian. Ini adalah sebuah
ekspresi Boolean yang mengendalikan eksekusi loop. Sepanjang ekspresi ini
bernilai true, tubuh loop for adakan dieksekusi. Loop for merupakan loop prauji, jadi
ekspresi pengujian dievaluasi sebelum tiap iterasi dilakukan. Ekspresi ketiga
adalah ekspresi pembaruan, yang dieksekusi di akhir tiap iterasi. Umumnya, ini
merupakan sebuah statemen yang menginkremen variabel pencacah dari loop.
Asumsikan bahwa cacah adalah sebuah variabel int
yang telah dideklarasikan. Berikut adalah sebuah contoh sederhana dari loop for yang menampilkan “Halo” pada sebuah
kotak pesan sebanyak lima kali:
for
(cacah = 1; cacah <= 5; cacah++)
{
MessageBox.Show("Healo");
}
Pada loop ini, ekspresi inisialisasi adalah cacah = 1, ekspresi pengujian adalah cacah <= 5, dan ekspresi pembaruan
adalah cacah++. Tubuh dari loop
memiliki satu statemen, yaitu pemanggilan terhadap metode MessageBox.Show. Ini merupakan simpulan dari apa yang terjadi
ketika loop dieksekusi:
1. Ekspresi inisialisasi
cacah = 1 dieksekusi. Ini menugaskan
1 kepada variabel cacah.
2. Ekspresi cacah <= 5 diuji. Jika ekspresi
bernilai true, lanjut ke Langkah 3.
Jika ekspresi bernilai false, loop
selesai dieksekusi.
3. Statemen MessageBox.Show(“Halo”) dieksekusi.
4. Statemen pembaruan cacah++ dieksekusi. Ini menambahkan 1
pada variabel cacah.
5. Kembali ke Langkah 2.
Gambar 3.11 mengilustrasikan runtun event
ini. Perhatikan bahwa Langkah 2-4 diulangi sepanjang ekspresi pengujian
bernilai true. Gambar 3.12 menunjukkan logika loop sebagai suatu diagram alir.
Lihat sebauh aplikasi yang menggunakan suatu
loop for berikut. Pada CD yang menyertai buku ini, Anda akan mendapati sebuah
projek dengan nama Kuadrat. Tujuan dari aplikasi ini adalah untuk menampilkan
nilai 1 – 10 dan kuadratnya. Gambar 3.13 menunjukkan form aplikasi. Seperti
ditunjukkan pada gambar kiri, nama ListBox
adalah kotakListKeluaran dan nama
dari kontrol Button adalah tombolGo. Saat aplikasi dijalankan,
ketika Anda mengklik kontrol tombolGo,
kontrol kotakListKeluaran
menampilkan keluaran program, seperti ditunjukkan pada gambar di kanan.
Berikut adalah kode untuk event handler tombolGo_Click:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private void tombolGo_Click(object
sender, EventArgs e)
{
//Konstanta untuk nilai maksimum
const int NILAI_MAKS = 10;
//Pencacah loop
int nilai;
//Menampilkan daftar nilai dan kuadratnya
for (nilai = 1; nilai <= NILAI_MAKS; nilai++)
{
kotakListKeluaran.Items.Add("Kuadrat dari " +
nilai + " adalah " + (nilai
* nilai));
}
}
|
Amati kode ini lebih dekat:
· Baris 4 mendeklarasikan sebuah konstanta int dengan nama NILAI_MAKS,
yang ditetapkan menjadi nilai 10. Ini adalah nilai maksimum yang akan dipakai
untuk menghitung kuadrat.
· Baris 7 mendeklarasikan sebuah variabel int dengan nama nilai. Variabel ini dipakai baik
sebagai variabel pencacah maupun pada perhitungan kuadrat.
· Baris 10 merupakan awal dari loop for. Anda dapat melihat dari baris ini
bahwa loop bekerja dengan cara berikut:
Inisialisasi: Variabel nilai diinisialisasi dengan nilai 1.
Pengujian: Ekspresi nilai <= NILAI_MAKS diuji diawal
dari tiap iterasi.
Pembaruan: Ekspresi nilai++ dieksekusi di akhir dari tiap
iterasi.
· Karena konstanta NILAI_MAKS
ditetapkan nilai 10, variabel nilai
akan ditugasi nilai 1 sampai 10 ketika loop beriterasi.
· Baris 12 dan 13: Statemen ini menambahkan satu baris pada ListBox yang menunjukkan nilai sekarang
dari variabel nilai, dan kuadrat
dari nilai itu.
Loop for Adalah Loop Prauji
Karena loop for menguji ekspresi Booleannya sebelum ia memulai iterasi, loop for dikatakan sebagai loop prauji.
Adalah dimungkinkan untuk menuliskan sebuah loop for dengan cara sehingga ia tidak akan pernah beriterasi. Berikut
adalah salah satu contohnya:
for (cacah = 6; cacah <= 5; cacah++)
{
MessageBox.Show("Halo");
}
Karena variabel cacah diinisialisasi dengan suatu nilai yang membuat ekspresi
Boolean bernilai false sebelum loop
dieksekusi, loop ini berhenti ketika ia baru saja dimulai.
Mendeklarasikan Variabel Pencacah
Pada Ekspresi Inisialisasi
Variabel pencacah tidak hanya bisa
diinisialisasi pada ekspresi inisialisasi, tetapi ia juga bisa dideklarasikan
di sana. Kode berikut menunjukkan salah satu contoh:
for (int cacah = 1; cacah <= 5; cacah++)
{
MessageBox.Show("Halo");
}
Pada loop ini, variabel cacah dideklarasikan dan diinisialisasi pada ekspresi inisialisasi.
Jika variabel hanya digunakan di dalam loop, adalah masuk akal untuk
mendefinisikannya pada header loop. Ini membuat tujuan dari variabel lebih
jelas.
Ketika sebuah variabel dideklarasikan para
ekspresi inisialisasi dari sebuah loop for,
skop dari variabel itu dibatasi hanya untuk loop. Ini berarti Anda tidak dapat
mengakses variabel itu pada statemen di luar loop. Sebagai contoh, kode berikut
akan menyebabkan error kompilasi karena statemen pada baris 6 tidak dapat
mengakses variabel cacah.
1
2
3
4
5
6
|
for (int cacah = 1; cacah <=
5; cacah++)
{
MessageBox.Show("Halo");
}
MessageBox.Show("Nilai dari
cacah adalah " + cacah);
|
Bentuk Lain dari Ekspresi Pembaruan
Pada ekspresi pembaruan, variabel cacah umumnya diinkremen sebesar 1. Ini
membuatnya lebih mudah untuk menggunakan operator ++ pada ekspresi inkremen.
Ini bukanlah keharusan. Anda bisa menuliskan ekspresi apa saja yang Anda
inginkan sebagai ekspresi pembaruan. Sebagai contoh, loop berikut menginkremen cacah sebesar 10:
for (int cacah = 0; cacah <= 100; cacah += 10)
{
MessageBox.Show(cacah.ToString());
}
Perhatikan bahwa pada contoh ini, ekspresi
inkremen adalah cacah += 10. Ini
berarti bahwa di akhir tiap iterasi, 10 ditambahkan pada cacah. Selama iterasi pertama, cacah
ditetapkan 0, selama iterasi kedua cacah
ditetapkan 10, selama iterasi ketiga cacah
ditetapkan 20, dan seterusnya.
Mencacah Mundur Dengan Mendekremen Variabel Pencacah
Meskipun variabel pencacah umumnya diinkremen
pada sebuah loop terkendali-cacah, secara alternatif Anda bisa mendekremen
variabel pencacah. Sebagai contoh, lihat kode berikut:
for (int cacah = 10; cacah >= 0; cacah--)
{
MessageBox.Show(cacah.ToString());
}
MessageBox.Show("Keluar loop!");
Pada loop ini, variabel cacah diinisialisasi dengan nilai 10. Loop ini beriterasi sepanjang
cacah lebih besar dari atau sama
dengan 0. Di akhir tiap iterasi, cacah
didekremen sebesar 1.
Selama iterasi pertama, cacah bernilai 10,
selama iterasi kedua cacah bernilai 9, dan seterusnya.
Menghindari Pemodifikasian Variabel Pada Tubuh Loop for
Anda perlu hati-hati agar tidak menempatkan
statemen yang memodifikasi variabel pencacah di dalam tubuh loop for. Semua modifikasi dari variabel
kendali harus dilakukan pada ekspresi pembaruan, yang secara otomatis
dieksekusi di akhir dari tiap iterasi. Jika sebuah statemen di dalam tubuh loop
juga memodifikasi variabel pencacah, maka loop bisa saja tidak akan pernah
berhenti ketika Anda mengharapkannya berhenti. Loop berikut, misalnya,
menginkremen cacah dua kali untuk
tiap iterasi:
for (int cacah = 1; cacah <= 10; cacah++)
{
MessageBox.Show(cacah.ToString());
cacah++; //Salah!
}
Anda telah melihat beberapa contoh loop for. Tutorial 3.3 memberikan Anda
kesempatan untuk menuliskannya sendiri dalam projek. Pada tutorial, Anda akan
menciptakan suatu aplikasi yang menggunakan loop for untuk mengkonversi sejumlah pengukuran dari sistem metrik ke
sistem English.
Tutorial 3.3: Menggunakan Loop for
Teman Anda dibelikan mobil sport Eropa oleh
pamannya yang ada di sana. Teman itu ingin memodifikasi speedometernya agar
dibaca dari kilometer per jam menjadi mil per jam. Anda diminta untuk menuliskan
sebuah program untuk menampilkan tabel konversi dalam km per jam dengan nilai
ekivalennya dalam mil per jam. Formula untuk mengkonversi km per jam menjadi
mil per jam adalah:
MPJ = KPJ * 0.6214
Pada formula, MPJ adalah kecepatan dalah mil
per jam dan KPJ adalah kecepatan dalam km per jam.
Tabel yang akan ditampilkan oleh program Anda
herus menunjukkan kecepatan dari 60 kilometer per jam sampai 130 kilometer per
jam, dengan inkremen 10, berikut dengan nilai-nilai yang dikonversi menjadi mil
per jam. Tabel akan ditampilkan seperti berikut:
KPJ
|
MPJ
|
60
70
80
dan seterusnya
|
37.284
43.498
49.712
|
Setelah melihat tabel ini, Anda
memutuskan bahwa Anda akan menuliskan sebuah loop for yang menggunakan suatu variabel pencacah untuk memuat kecepatan
km per jam. Nilai awal pencacah adalah 60, nilai akhirnya adalah 130, dan Anda
akan menginkremen nilainya sebesar 10 pada ekspresi pembaruan. Di dalam loop,
Anda akan menggunakan variabel pencacah untuk menghitung kecepatan dalam mil
per jam.
Projek, yang diberi nama Konverter Kecepatan, telah disediakan bagi Anda. Form aplikasi ditunjukkan
pada Gambar 3.14. Gambar di kiri menunjukkan nama dari tiap kontrol pada form.
Gambar di kanan menunjukkan bagaimana form ditampilkan setelah user mengklik
tombol Tampilkan Kecepatan.
Langkah 1: Awali Visual Studio (atau Visual Studio
Express). Buka projek dengan nama Konverter
Kecepatan yang ada di dalam CD yang
menyertai buku ini.
Langkah 2: Buka form Form1 pada mode Designer.
Langkah 3: Pada Designer,
klik ganda pada kontrol tombolTampil.
Ini akan membuka editor kode, dan Anda akan melihat sebuah event handler kosong
dengan nama tombolTampil_Click.
Sempurnakan event handler ini dengan menuliskan kode yang ditunjukkan pada
baris 22-41 pada Program 3.3 (di akhir dari tutorial ini).
Langkah 4: Kembali ke mode Designer dan klik ganda pada kontrol tombolKeluar. Pada editor kode, Anda akan melihat sebuah event
handler kosong dengan nama tombolKeluar_Click.
Sempurnakan event handler ini dengan menuliskan kode yang ditunjukkan pada
baris 46-67 pada Program 3.3.
Langkah 5: Simpan projek dan jalankan aplikasi. Klik
tombol Tampilkan Kecepatan dan Anda akan melihat
keluaran yang ditunjukkan pada gambar kanan pada Gambar 3.14. Klik tombol Keluar untuk mengakhiri aplikasi.
Program 3.3 Kode utuh untuk Form1
pada aplikasi Konverter Kecepatan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Konverter_Kecepatan
{
public
partial class Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void tombolTampil_Click(object sender, EventArgs e)
{
//Konstanta-konstanta
const
int KECEPATAN_AWAL = 60;
const
int KECEPATAN_AKHIR = 130;
const
int INTERVAL = 10;
const
double FAKTOR_KONVERSI = 0.6214;
//Variabel-variabel
int
kpj; //Kilometer per jam
double mpj; //Mil per jam
//Menampilkan tabel kecepan
for
(kpj = KECEPATAN_AWAL; kpj <= KECEPATAN_AKHIR; kpj += INTERVAL)
{
//Menghitung mil per jam
mpj = kpj * FAKTOR_KONVERSI;
//Menampilkan konversi
kotakListKeluaran.Items.Add(kpj + " KPJ sama dengan " +
mpj + " MPJ");
}
}
private
void tombolKeluar_Click(object sender, EventArgs e)
{
//Menutup form
this.Close();
}
}
}
|
No comments:
Post a Comment