Statement switch

6.9 Statement switch

Kadang-kadang kita perlu membandingkan suatu hal dengan berbagai kemungkinan dan mengambil keputusan yang berbeda untuk tiap kemungkinan. Sebagai contoh adalah kutipan yang telah muncul sebelumnya:

[kutipan program] if( nom or = = 100232)

Console.Wr it eLine( “ Anda m endapat m obil! ” ) ; else if( nom or = = 302) Console. Wr it eLine( “ Anda m endapat m ot or ! ” ) ; else if( nom or = = 994530243) Console. Wr it eLine( “ Anda m endapat r adio! ” ) else Console. Wr it eLine( “ Anda belum ber unt ung. . . ” )

[/kutipan program]

Sebagai alternatif, kita bisa menggunakan statement switch. Inilah formatnya:

[format] [format]

case [ expr ession k onst an 1] : [ st at em ent - st at em ent ] ; break;

case [ expr ession k onst an 2] : [ st at em ent - st at em en t ] ; break;

case [ expr ession k onst an 3] : [ st at em ent - st at em en t ] ; break;

case [ expr ession k onst an n] : [ st at em ent - st at em en t ] ; break;

def au lt : / / opsional, boleh ada boleh t idak [ st at em ent - st at em en t ] ; break;

} [/format]

Pertama-tama, [expression] akan dievaluasi. Nilainya akan dibandingkan dengan berbagai [expression konstan] yang ada. Jika nilainya sama, maka [statement- statement] yang bersangkutan akan dijalankan. Jika tidak ada yang cocok dan terdapat label default, maka [statement-statement] di bawah label default akan dijalankan. break digunakan untuk keluar dari statement switch.

Ada beberapa keterbatasan yang dimiliki statement switch. Hasil dari [expression] dan [expression konstan] hanya dapat berupa integer. Lalu [expression konstan] hanya dapat berupa nilai yang dapat diperhitungkan saat program dicompile, artinya tidak boleh ada unsur variabel dan pemanggilan method.

Inilah kutipan program yang telah kita bahas, dikonstruksi ulang menggunakan statement switch:

[kutipan program] sw it ch( nom or ) {

case 100232: Console.Wr it eLine( “ Anda m endapat m obil! ” ) ; break;

case 302: Console. Wr it eLine( “ Anda m endapat m ot or ! ” ) ; brea k;

case 994530243: Console. Wr it eLine( “ Anda m endapat r adio! ” ) ; break;

def au lt : Console. Wr it eLine( “ Anda belum ber unt ung. . . ” ) ; break;

} [/kutipan program]

Kita juga dapat membuat sebuah [statement-statement] yang digunakan oleh berbagai kondisi, caranya sebagai berikut:

[kutipan program] sw it ch( k ar ak t er ) {

case ‘a’: case ‘i’: case ‘u’: case ‘e’: case ‘o’: case ‘A’: case ‘I ’: case ‘U’: case ‘E’: case ‘O’:

Console. Wr it eLine( “ { 0} adalah v ok al. ” , k ar ak t er ) ; break;

def au lt : Console. Wr it eLine( “ { 0} buk an v ok al. ” , k ar ak t er ) ; break;

} [/kutipan program]

switch juga termasuk statement sehingga bisa berada di tempat-tempat sah statement. switch dapat digabung dengan switch lain, dengan if-else, dan dengan konstruksi-konstruksi bahasa lainnya.

6.10 goto

Kita dapat membuat label di program kita. Dengan statement goto kita dapat melompat ke label yang telah kita buat. Format untuk membuat label adalah sebagai berikut:

[format] [ lab el] : [/format]

Label merupakan identifier, sehingga terdapat beberapa aturan penamaan (bab 3.9). Ini adalah format untuk statement goto:

[format] got o [ label] ; [/format]

Contoh penggunaannya adalah sebagai berikut:

[kutipan program]

// program yang tak akan pernah selesai int hitungMundur = 5; Console.WriteLine(“Bersiap-siaplah...”);

Loop1 : Console.ReadLine(); Console.WriteLine(“{0}...”, hitungMundur--); // nilai hitungMundur dikurangi 1 if(hitungMundur >= 0)

goto Loop1;

Loop2 : Console. Wr it eLine( “ Waaa! ! ! ” ) ; got o Loop2; [/kutipan program]

Konstruksi bahasa menggunakan goto sangat tidak disarankan, sebab penggunaannya yang berlebihan membuat alur program susah diikuti. Secara teoritis, apapun yang dapat dibuat dengan goto dapat dibuat menggunakan konstruksi bahasa lain. Loop seperti contoh program di atas dapat dibuat dengan cara yang lebih baik (diajarkan di bab lain).

goto juga bisa digunakan untuk pergi ke label switch lain, seperti contoh berikut:

[kutipan program] switch(favorit) {

case 1: Console.WriteLine(“Saya suka Beckham...”); goto case 2;

case 2: Console.WriteLine(“Saya suka Manchester United...”); goto case 3;

case 3: Console.WriteLine(“Saya suka Inggris...”); break;

default: Console.WriteLine(“Saya tidak suka sepak bola”); break;

} [/kutipan program]

Jika favorit nilainya 1, maka case 1, case 2, dan case 3 akan terkunjungi. Jika favorit nilainya 2, hanya statement-statement dalam case 2 dan case 3 yang akan dijalankan. Jika nilai favorit adalah 3 yang akan dijalankan hanya statement-statement dalam case 3. Untuk nilai lainnya, statement-statement dalam default yang akan dijalankan.

[tes]

[/tes]