Jump
statement digunakan untuk mentransfer kontrol eksekusi dari suatu bagian ke
bagian lain dalam program. Beberapa statement yang termasuk dalam jenis ini
sebaiknya diminimalkan penggunaaanya, contohnya goto, continue, dan break.
Alasannya adalah karena penggunaan statement-statement tersebut mengurangi kejelasan flow program. Selain itu pula,
kemungkinan terjadinya bug juga semakin besar terutama jika
bagian-bagian yang akan dilompati tersebut memiliki bagian inisiasi dan
terminasi.
a.
Break
Statement
ini digunakan untuk “melompat”
keluar dari while, for, dan switch statement yang sudah dibahas sebelumnya.
Berikut ini adalah satu contoh penggunaan break:
using System;
namespace csharpku
{
class ContohBreak
{
public static void Main()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("i=" + i);
if (i == 5)break;
}
Console.ReadLine();
}
}
}
Dalam
contoh di atas, walaupun bentuk perulangan for di atas dispesifikasikan untuk
dijalankan sebanyak 10 kali, pada saat nilai mencapai 5, break dijalankan.
Akibatnya, eksekusi akan “melompat”
keluar dari badan perulangan. Jadi pada kenyataannya, perulangan hanya
dilakukan sebanyak 6 kali.
Tips:
gunakan model for semacam ini untuk melakukan perulangan yang jumlah maksimum
iterasinya sudah diketahui di awal dan ada kondisi-kondisi tertentu yang
mungkin menyebabkan iterasi berhenti sebelum mencapai jumlah maksimumnya.
Dengan cara ini, iterasi pasti akan berhenti setelah dijalankan n-kali. Bila
yang digunakan adalah bentuk while (kondisi) kemungkinan terjadinya infinite
loop lebih besar.
b.
Continue
Continue
dapat digunakan dalam semua struktur perulangan, misalnya for dan while.
Statement continue ini berfungsi untuk melanjutkan eksekusi program ke iterasi
berikutnya dengan “melompati”
statement-statement berikutnya dalam badan loop. Perhatikan contoh berikut:
using System;
namespace csharpku
{
class ContohContinue
{
public static void Main()
{
for (int i = 0; i < 10; i++)
{
if (i == 5) continue;
Console.WriteLine("i=" + i);
}
Console.ReadLine();
}
}
}
Pada
contoh di atas, bila i==5, perintah continue akan dijalankan. Akibatnya
statement berikutnya dalam badan loop
(Console.WriteLine) akan diabaikan dan eksekusi program akan dilanjutkan
pada iterasi berikutnya (i=6).
c.
goto
Goto
digunakan untuk melanjutkan eksekusi program di label yang sudah didefinisikan
sebelumnya. Jika jump statement lainnya penggunaannya terbatas, goto ini
termasuk yang lebih “bebas”,
dalam arti kata ia bisa digunakan untuk melakukan lompatan ke bagian mana saja
dari program kecuali melompat ke dalam suatu blok.
Berikut
adalah contoh penggunaan goto:
using System;
namespace csharpku
{
class ContohGoto
{
public static void Main()
{
for (int i = 0; i < 10; i++)
{
if (i == 5) goto selesai; Console.WriteLine("i=" + i);
}
selesai:
Console.ReadLine();
}
}
}
Statement
ini termasuk yang agak kontroversial. Hampir semua buku kuliah dan dosen akan
mengharamkan penggunaan goto dalam program. Tidak sedikit orang yang “protes”
terhadap penyertaan statement ini dalam C#. Well, itu di luar wilayah bahasan
blog ini. :)
d.
return
Seperti
halnya dalam bahasa turunan C lainnya, perintah return digunakan untuk
mengembalikan kontrol eksekusi ke pemanggil. Misalnya method A memanggil method
B, pada saat perintah return dijalankan dalam method B, maka kontrol eksekusi
akan dikembalikan ke method A dan perintah selanjutnya yang akan dijalankan
adalah perintah berikutnya dalam method A. Contoh:
using System;
namespace csharpku
{
class ContohReturn
{
public static void FungsiB()
{
Console.WriteLine("FungsiB");
Console.WriteLine("Akan
menjalankan return ...");
return;
}
public static void FungsiA()
{
Console.WriteLine("FungsiA");
Console.WriteLine("Akan
memanggil FungsiB");
FungsiB();
Console.WriteLine("Melanjutkan perintah
FungsiA berikutnya");
}
public static void Main()
{
FungsiA(); Console.ReadLine();
}
}
}
Ada
dua jenis penggunaan return, yaitu return dengan menyertakan suatu nilai dan
return tanpa nilai. Return tanpa nilai digunakan dalam method yang tipe nilai
kembaliannya void, dengan kata lain method tersebut tidak mengembalikan nilai.
Dalam hal ini return hanya berfungsi untuk mengembalikan kontrol eksekusi ke
pemanggil.
Jenis
penggunaan yang kedua, return dengan menyertakan nilai, selain mengembalikan
kontrol eksekusi, juga akan mengembalikan nilai tersebut ke pemanggil. Tipe
nilai yang dikembalikan oleh return harus sama dengan tipe nilai kembalian dari
method.
e.
Throw
Penggunaan
throw ini berkaitan dengan penanganan error (try statement) dalam C#.
Throw digunakan untuk membangkitkan exception dalam program. Untuk lebih
jelasnya perhatikan contoh berikut.
using System;
namespace csharpku
{
class ContohThrow
{
public static void Main()
{
try
{
Console.Write("Ketik nama
Anda: "); string nama = Console.ReadLine(); if (nama != "risman")
throw new System.ApplicationException("Nama tidak dikenal");
Console.Write("Selamat,
Anda termasuk orang terkenal ;)");
}
catch (ApplicationException ae)
{
Console.WriteLine("Exception:
" + ae.Message);
}
Console.ReadLine();
}
}
}
Dalam
program di atas proses utamanya diletakkan dalam blok try, kemudian
disertai oleh blok catch. Ini berarti jika ada exception yang
ditimbulkan dalam blok try, eksekusi program akan melompat ke block catch (jika
tipe exceptionnya sesuai).
Selain
dihasilkan/dibangkitkan oleh sistem, misalnya DivideByZeroException dan
IndexOutOfRangeException, exception juga bisa dibangkitkan oleh aplikasi. Pada
contoh di atas, kondisi nama!=”risman”
itu sendiri pada dasarnya bukan merupakan exception namun aplikasi
ingin memperlakukan itu sebagai exception. Untuk keperluan inilah perintah
throw digunakan. Jadi jika nama!=”risman”,
maka aplikasi akan membangkitkan exception sehingga eksekusi
program akan melompat ke bagian penanganan exception (blok catch).
Exception dijelaskan
secara lebih detail pada Posting berikutnya: Debugging dan Penanganan Error.
0 komentar
Post a Comment