Pada artikel kali ini kita akan belajar tentang flow control selanjutnya, yakni Switch Statement. Switch
termasuk kedalam pengkondisian yang digunakan untuk membandingkan nilai dari sebuah variable dengan beberapa nilai. Setiap nilai yang dibandingkan dengan variable kita sebut dengan case
, dan variable tersebut diuji secara bergantian (switch). Jika ditemukan nilai yang sama (nilainya TRUE
) maka kode akan dijalankan.
Syntax
Syntax yang digunakan pada Switch ... case
adalah sebagai berikut:
switch (expression)
{
case nilai1:
// statements yang akan dijalankan jika expression == nilai1
break;
case nilai2:
// statements yang akan dijalankan jika expression == nilai2
break;
.
.
.
default:
// statement yang akan dijalankan jika tidak ada nilai yang sama
}
Flowchart
Anbi gambarkan flowchart untuk switch biar lebih jelas ya
Cara Kerja
Lalu bagaimana cara kerja switch case diatas? Bisa Kita lihat, expression
diatas dievaluasi satu kali dan dibandingkan dengan nilai yang ada pada setiap case.
- Jika ada nilai dari salah satu case yang sesuai dengan
expression
maka statements didalam case tersebut akan dijalankan. Contohnya, jikacase
kedua yang nilainya sama, maka kode yang berada didalam case kedua yang dijalankan hingga statement break. Kita sudah belajar tentang break pada artikel sebelumnya, sehingga kita tahu pengkondisian akan berhenti. - Namun jika tidak ada nilai dari semua case diatas yang nilainya sesuai, maka statment default akan dijalankan. Statement default ditulis di akhir blok kode.
- Jika kita tidak menggunakan
break
, semua baris program akan dieksekusi Default
ini sifatnya opsional, kita boleh tidak memberikan statement default jika memang tidak diperlukan
Contoh Program
Untuk lebih jelas lagi mari kita coba kode program dibawah
#include <stdio.h>
int main() {
int x = 2;
switch (x) {
case 1:
printf("Nilai x = 1");
break;
case 2:
printf("Nilai x = 2");
break;
default:
printf("Nilai x bukan 1 ataupun 2");
break;
}
return 0;
}
Output:
Nilai x = 2
Penjelasan
- Kita deklarasikan terlebih dahulu variable yang akan diuji. Disini Anbi menggunakan
x
dengan tipe datainteger
dan bernilai2
- Selanjutnya kita gunakan
variable x
sebagai expression untuk switch - Perhatikan
case 1
, artinya jika nilainya adalah 1, maka jalankan statement untuk mencetak “Nilai x = 1”. Karena nilai x tidak sama dengan 1, maka akan dilewati - Lalu pada
case 2
, artinya jika nilainya adalah 2, maka jalankan statement untuk mencetak “Nilai = 2”. Karena x bernilai 2, maka akan mencetak “Nilai x = 2” - Karena ada break pada statement di case 2, maka kode tidak akan dilanjutkan dan akan keluar dari switch case.
Penutup
Jika diperhatikan kembali, pengkondisian switch case
ini hampir mirip dengan pengkondisian if ... else if ... else
. Lalu kapan kita menggunakan statement switch dan kapan kita menggunakan statement if else? Kita perlu ketahui beberapa perbedaanya terlebih dahulu:
- Statement
If Else
dapat digunakan untuk tipe data integer, character, pointer, floating point dan boolean. Sedangkan StatementSwitch case
hanya bisa digunakan untuk tipe data integer dan character. - Statement
Switch Case
hanya digunakan untuk mengecek data yang bernilai sama. SedangkanIf Else
dapat juga digunakan untuk Logical Expression seperti AND, OR, dan NOT - Dalam segi kecepatan mungkin tidak akan terlihat perbedaanya tergantung jumlah kasus yang akan dievaluasi. Mungkin
Switch Case
lebih cepat dibanding denganIf Else
. Pada StatementIf Else
, program akan menjelajahi semua kondisi yang ada. Compiler padaSwitch Case
menggunakan Branch Table yang menghasilkan metode transfer yang lebih cepat.