Blok, Perulangan, dan Percabangan
Versi ramah cetak
Kemampuan suatu program untuk melakukan tugas kompleks dilakukan dengan menggabungkan perintah sederhana menjadi struktur kontrol. Dalam bahasa Java, ada 6 struktur tersebut, yaitu blok, perulangan
while
, perulangan do... while
, perulangan for
, pernyataan if
, dan pernyataan switch
.Masing-masing struktur ini sebetulnya merupakan pernyataan tunggal yang berdiri dengan sendirinya, tetapi di dalamnya terdiri dari satu atau lebih perintah sehingga keseluruhannya menjadi suatu struktur perintah.
Blok
Blok adalah pernyataan sederhana yang dimulai dengan { dan diakhiri dengan }. Tujuannya untuk mengelompokkan beberapa perintah sehingga lebih dimengerti. Misalnya
{ perintah }
Pernyataan blok biasanya terdapat dalam struktur kontrol, tetapi sebetulnya tanpa struktur kontrol pun, blok tetap berlaku. Contoh sederhana penggunaan blok ini adalah dalam subrutin main() yang kita lakukan pada contoh-contoh sebelumnya.
Berikut ini adalah 2 contoh penggunaan blok.
{ System.out.println("Hallo"); System.out.println("Dunia"); } { // blok ini digunakan untuk menukar isi variable x dan y int temp; temp = x; x = y; y = temp; }
Pada blok kedua, kita mendeklarasikan variable baru
temp
. Dalam blok kedua ini, variabel apapun yang dideklarasikan tidak akan dapat diakses dari luar blok ini. Variabel ini disebut variabel lokal, karena hanya bisa diakses dari dalam blok.Ketika komputer menjalankan program ini, komputer akan mempersiapkan memori untuk menyimpan variabel yang dideklarasikan di dalam blok ini. Ketika blok ini selesai dijalankan, komputer akan melepas memori yang digunakan dalam blok ini untuk digunakan oleh bagian program lain.
Konsep "scope" atau jangkauan pada konsep pemrograman, mengacu pada bisa atau tidaknya suatu variabel dilihat oleh bagian program lain. Jangkauan suatu variabel menyatakan di bagian mana variabel ini valid atau dengan kata lain bisa diakses. Jangkauan variabel dalam suatu blok terbatas hanya pada blok tersebut.
Blok sendiri sebetulnya bukan merupakan struktur kontrol. Program akan berjalan seperti biasa dari atas kebawah seperti biasa. Secara umum struktur kontrol dibagi menjadi 2 bagian, yaitu : perulangan dan percabangan.
Perulangan
Sebagai contoh untuk membahas tentang perulangan, kita lihat pernyataan
while
, yang memiliki bentuk sepertiwhile (suatu_kondisi) { perintah }
Semantik pada pernyataan
while
tersebut adalah sebagai berikut. Ketika komputer sampai pada pernyataan while
, komputer akan melakukan perhitungan pada suatu_kondisi
. Apabila suatu_kondisi
bernilai true, blok yang berisi perintah akan dilakukan. Setelah komputer sampai pada bagian akhir blok, komputer akan menghitung kembali suatu_kondisi
. Jika masih bernilai true, maka blok tersebut akan dieksekusi, dan jika tidak, program akan melompat ke bagian program berikutnya setelah blok berakhir. Atau dengan kata lain, jika suatu_kondisi
bernilai false, blok perintah tidak akan dieksekusi.Berikut ini adalah contoh untuk menulis bilangan 1 hingga 5.
int angka = 1; // inisialisasi variabel, kita mulai dengan mengisi variabel angka dengan 1 while (angka <= 5) { System.out.println(angka); // cetak isi angka di layar angka = angka + 1; // tambah angka dengan 1 } System.out.println("Selesai...");
Variabel angka kita inisialiasi (persiapkan) dan kita isi mula-mula dengan 1. Ketika program sampai pada pernyataan while, program akan mengevaluasi apakah
angka <= 5
. Pada saat program baru dimulai, angka masih bernilai 1, sehingga pernyataan angka <=5
bernilai true. Dalam hal ini perintah di dalam blok akan dieksekusi, yaitu mencetak angka ke layar, kemudian menambah angka dengan 1. Sekarang angka bernilai 2.Setelah sampai pada akhir blok, program akan kembali pada awal pernyataan while. Sekarang angka bernilai 2, dan karena 2 masih kurang dari atau sama dengan 5, program akan kembali mengeksekusi perintah dalam blok. Begitu seterusnya hingga angka bernilai 6. Pada saat ini program akan berhenti melakukan perulangan dan berhenti melakukan eksekusi perintah di dalam blok tersebut, kemudian melakukan perintah berikutnya, yaitu menampilkan kata "Selesai...".
Percabangan
Pernyataan
if
memperintahkan komputer untuk memilih salah satu aksi yang akan dilakukan, tergantung pada suatu kondisi tertentu. Bentuknya dapat ditulis sebagai berikutif (suatu_kondisi) perintah_1; else perintah_2;
Perintah_1 dan perintah_2 juga bisa berbentuk blok, sehingga pernyataan di atas dapat ditulis juga sebagai berikut
if (suatu_kondisi) { perintah_1; } else { perintah_2; }
Ketika komputer sampai pada pernyataan
if
, komputer akan menghitung apakah suatu_kondisi
bernilai true. Jika iya, maka blok perintah berikutnya akan dieksekusi, dalam hal ini perintah_1
. Jika tidak, maka blok setelah pernyataan else
akan dieksekusi, yaitu perintah_2
.Sebagai contoh, mari kita kembali pada contoh program untuk membalik nilai x dan y, dengan syarat x harus lebih besar dari y. Dalam hal ini, setelah program ini dieksekusi, nilai x akan selalu bernilai lebih kecil dari y, karena jika nilai x lebih besar, nilai x akan ditukar dengan nilai y.
if (x > y) { // jika x lebih besar dari y // blok ini digunakan untuk menukar isi variable x dan y int temp; temp = x; x = y; y = temp; }
Contoh berikut adalah program untuk menentukan apakah suatu bilangan merupakan bilangan genap atau bilangan ganjil. Dengan menggunakan operator %, yaitu sisa pembagian, kita dapat menentukan apabila sisa pembagian suatu bilangan dengan 2 adalah 0, maka bilangan tersebut merupakan bilangan genap. Jika tidak, maka bilangan tersebut adalah bilangan ganjil.
if ((x % 2) == 0) { System.out.println(x + " adalah bilangan genap"); } else { System.out.println(x + " adalah bilangan ganjil"); }
Kita akan bahas tentang struktur kontrol di bagian berikutnya. Semoga bagian ini yang merupakan bagian pendahuluan tentang struktur kontrol dapat dimengerti sehingga kita bisa mempelajari konsep yang lebih kompleks lagi.
Penyataan percabangan kedua yang dimiliki Java adalah
switch
. Pernyataan switch
lebih jarang digunakan, tetapi sering bermanfaat apabila kita ingin menuliskan percabangan multi arah.Pernyataan switch memiliki bentuk sebagai berikut
switch (ekspresi) { case nilai1: perintah1 break; case nilai2: perintah2 break; case nilai3: perintah3 break; default: perintah_lain }
Di sini pernyataan switch akan mencari nilai
ekspresi
yang sesuai dengan nilai-nilai yang didaftarkan pada pernyataan case
. Jika salah satu nilai ditemui, maka program akan melompat ke cabang case
tersebut dan melakukan perintah yang terdapat di sana. Jika tidak ditemui, maka program akan melompat ke perintah yang terdapat pada pernyataan default
.Catatan ekspresi hanya bisa berbentuk nilai bilangan bulat (int, short, dan sejenisnya) atau karakter, sehingga kita tidak bisa menggunakan switch untuk mengevaluasi ekspresi yang berbentuk
String
.Pernyataan
break
di atas sebetulnya tidak harus selalu ada. Tetapi, perintah break
di sini memerintahkan komputer agar segera keluar dari blok switch
apabila perintah tersebut telah selesai dilaksanakan.Apabila perintah
break
tidak diberikan, maka program akan terus mengeksekusi perintah lain meskipun sudah berada di luar nilai yang tertera dalam pernyataan casenya.Misalnya, lihat kode berikut ini :
switch (N) case 1: System.out.println("Angka tersebut bernilai 1"); break; case 2: case 3: case 4: case 5: System.out.println("Angka tersebut bernilai 2, 3, 4, atau 5"); break; case 6: case 7: case 8: System.out.println("Angka tersebut bernilai 6, 7, atau 8"); break; default: System.out.println("Angka tersebut tidak bernilai 1 - 8"); }
Salah satu aplikasi di mana pernyataan switch berguna adalah untuk memproses menu. Menu memiliki beberapa pilihan dan user akan diminta untuk memilih suatu pilihan. Kita dapat menggunakan switch untuk menginstruksikan komputer untuk melakukan tugas tertentu sesuai dengan menu yang dipilih oleh user.
Jika Anda ingat pernyataan
main()
pada program Java, pernyataan main memiliki parameter String[] args
, di mana args merupakan argumen yang diberikan pada saat program dijalankan melalui konsol. Biasanya argumen yang diberikan berupa opsi bagaimana program harus dilaksanakan. Di sini pernyataan switch juga berguna untuk memilih bagaimana program akan berjalan.Jika Anda terbiasa atau pernah bergaul dengan Linux, maka tidak asing untuk menemukan perintah pada Linux seperti "ls -l" atau "tar xfz blabla". Di sini ls atau tar adalah nama program dan "-l" atau "xfz blabla" adalah argumen yang diberikan pada saat program dijalankan.
Pernyataan kosong
Pernyataan kosong sebenarnya merupakan blok kosong, atau sama dengan {} tanpa perintah apa-apa di dalamnya. Dalam Java, pernyataan kosong juga berarti tanda ; sehingga apabila Anda menulis kode seperti
Pernyataan kosong sebenarnya merupakan blok kosong, atau sama dengan {} tanpa perintah apa-apa di dalamnya. Dalam Java, pernyataan kosong juga berarti tanda ; sehingga apabila Anda menulis kode seperti
if (x > 0); perintah1
maka perintah1 akan tetap dilaksanakan walaupun x <= 0.
Perintah kosong sering merupakan sumber kesalahan dan salah satu fitur yang sulit untuk dicari kesalahannya pada saat debugging. Misalnya perintah berikut
for (i = 1; i <= 10; i++); System.out.println("hallo");
Anda berharap untuk mencetak kata hallo 10x di layar, pada kenyataannya hanya 1 hallo yang dicetak. Kenapa? Karena tanda ";" setelah for menyatakan bahwa program tidak melakukan apa-apa di dalam perulangan. Perintah
System.out.println("hallo")
tidak berada di dalam perulangan for, sehingga perintah ini hanya dijalankan 1x saja.Pernyataan-pernyataan lain
Hingga saat ini kita sudah membahas hampir semua pernyataan yang Java sediakan. Ada beberapa yang akan kita bahas kemudian, tetapi pernyataan-pernyataan ini merupakan pernyataan lanjutan Java, seperti
Hingga saat ini kita sudah membahas hampir semua pernyataan yang Java sediakan. Ada beberapa yang akan kita bahas kemudian, tetapi pernyataan-pernyataan ini merupakan pernyataan lanjutan Java, seperti
return
yang digunakan untuk membuat subrutin sendiri, atau try...catch
dan throw
untuk mengontrol alur kesalahan apabila ditemui di tengah program (atau dengan kata lain eksepsi atau pengecualian), dan synchronized
untuk mengatur kontrol untuk multi-threading.
Tidak ada komentar:
Posting Komentar