Penjelasan Peryataan switch
Pernyataan switch adalah adalah pernyataan penyeleksian untuk memanipulasi jalanya aliran program berdasarkan conditional expression, Mengendalikan aliran program agar dapat berjalan secara fleksibel atas keadaan program dan keinginan pengguna. Pernyataan ini akan memilih pilihan yang sesuai dengan ekspresi kondisi.
Pada umumnya penyataan switch tidak jauh berbeda seperti pernyataan penyeleksian IF, yang berbeda adalah; jika pada if, if mengevaluasi kebenaran dari sebuah ekspresi (conditional expression) seperti operasi logika, relasi dan perbandingan yang menghasilkan bilangan boolean 1 (benar) atau 0 (salah).
dan pada switch dikhususkan untuk penyeleksian berdasarkan nilai dari ekspresi. Dalam pernyataan switch, penyeleksian dilakukan dengan memeriksa kondisi nilai dari suatu variabel bertipe integer, char atau enum dan menemukan kesamaan data yang dicari oleh salah satu label case yang ada.
Cara mendirikan Pernyataan switch
Bentuk pernulisan
switch (kondisi ) { case konstanta-1 : … perintah; … perintah; break; case konstanta-2 : … perintah; … perintah; break; default : … perintah; … perintah; break; }
Pernyataan switch dimulai dengan kata kunci switch
dan setelah itu di lanjutkan dengan conditional expression yang diapit dengan sepasang tanda kurung ( )
, conditional expression bisa berbentuk variabel dari integer, variabel dari char atau enum. dan kita juga bisa melakukan operasi aritmetika yang menghasilkan nilai yang berupa integer, char atau enum.
Dan di dalam pernyataan switch ada beberapa case label sebanyak yang dibutuhkan. Penulisan diawali dengan kata kunci case
dan diikuti dengan konstanta nilai yang dicari, Mereka dimasukan di dalam sepasang tanda kurung kurawal {}
.
kata kunci break
merupakan pernyataan lompatan, dan merupakan bagian opsional (dapat tidak digunakan) berfungsi untuk mengeluarkan CPU yang sedang berada dalam pernyataan switch, keluar dan melanjutkan baris setelah keseluruhan pernyataan switch.
Label default
merupakan pilihan yang akan dieksekusi dimana CPU tidak menemukan nilai yang dia cari sesuai dengan nilai pada conditional expression. Label tersebut tidak wajib untuk digunakan dan tempatnya harus berada di bawah.
Contoh Penulisan
switch ( nomer ) { case 1 : cout << " Anda Memilih Angka 1 " ; break ; case 2 : cout << " Anda Memilih Angka 2 " ; break ; case 3 : cout << " Anda Memilih Angka 3 " ; break ; default : cout << " Pilihin default Terpilih " ; break ; }
Bagaimana CPU mengeksekusi Pernyataan switch
Disaat CPU bertemu pernyataan switch, CPU akan memeriksa nilai yang berada pada conditional expression dari switch tersebut. dari situ CPU akan mencari konstanta pada label case yang sesuai dengan nilai yang di cari. Ketika telah ditemukan, maka CPU akan mengeksekusi perintah / pernyataan-pernyataan yang berada di bawah label dengan konstanta yang sesuai.
kata kunci break
merupakan opsional, dapat tidak digunakan. Jika break
tercantum, ketika CPU selesai mengeksekusi pernyataan pada label case
yang terpilih dan bertemu break
maka eksekutor akan dikeluarkan dari pernyataan switch dan melanjutkan baris setelah pernyataan switch. Dan jika break tidak disertakan, maka CPU akan terus berjalan untuk mengeksekusi semua pernyataan termasuk pernyataan yang berada pada label case lain hingga bertemu kurung kurawal penutup }
.
switch ( nomer ) { //jika nomer bernilai 2 case 1 : cout << " Anda Memilih Angka 1 " ; case 2 : // CPU mulai mengeksekusi cout << " Anda Memilih Angka 2 " ; //Dieksekusi case 3 ://dan akan terus mengeksekusi semua pernyataan hingga betemu break atau akhir dari pernyataan switch cout << " Anda Memilih Angka 3 " ; default : cout << " Pilihan default Terpilih " ; }
Jika CPU tidak menemukan case dengan nilai konstanta yang sesuai dengan conditional expression, hal itu berarti CPU akan mengeksekusi perintah di dalam label default
, jika pernyataan switch tidak mempunyai label default
maka pernyataan switch akan diabaikan.
Contoh Program
#include <iostream> using namespace std ; int main() { int nomer ; cout << " Masukkan [1/2/3] : " ; cin >> nomer ; switch ( nomer ) { case 1 : cout << " Anda Memilih Angka 1 " ; break ; case 2 : cout << " Anda Memilih Angka 2 " ; break ; case 3 : cout << " Anda Memilih Angka 3 " ; break ; default : cout << " Pilihan default Terpilih " ; break ; } return 0 ; }
Tambahan:
Pada bahasa pemrogramana C++ kita dimungkinkan untuk mendirikan tapi tidak dapat inisialisasi. mungkin ini terdengar normal karena kita juga bisa mendirikan variabel pada pernyataan penyeleksian if. bukan hal itu yang akan penulis beritahu, ada sesuatu yang unik pada pernyatan switch.
Pendeklarasian beserta inisialisasi variabel, kita dimungkinkan melakukan hal itu di dalam suatu ruang lingkup. Ruang lingkup function, pernyataan majemuk, bahkan pernaytaan if. tapi dalam pernyataan switch kita dimungkinkan untuk mendeklarasi sebuah variabel tapi tidak untuk di inisialisasi.
#include <iostream> using namespace std ; int main() { int nomer ; cout<<" Masukkan [1/2/3] : ";cin>>nomer; switch (nomer){ case 1: char huruf ; huruf = 'a'; cout<<huruf; break; case 2: huruf = 'b'; cout<<huruf; break; case 3: huruf = 'c' ; cout<<huruf; break; default: huruf = 'z' ; cout<<huruf; break; } return 0 ; }
Program di atas akan berjalan tanpa error. dan akan mencetak huruf a, b, c atau z dengan menggunakan variabel yang didirikan di dalam label case 1
. Meskipun aliran eksekusi CPU memilih label case selain label case 1
tapi variabel itu akan tetap dapat digunakan.
Apa yang kita tau sebelumnya adalah, aliran pengeksekusian CPU jika menumukan pernayataan penyeleksian dia akan mengevaluasi conditional expression. Untuk program di atas conditional expressionnya adalah variabel nomer
. Dan akan mengeksekusi perintah di bawah label case
yang memiliki nilai yang sama.
Kenapa variabel huruf tetap dapat digunakan meskipun berbeda case ?
Jawaban yang pertama adalah, karena mereka masih di dalam satu ruang lingkup. Dan kenapa variabel tersebut dapat digunakan meskipun CPU tidak terlihat menyentuhnya.
Disaat anda mendirikan variabel lokal, sebenarnya variabel tidak dibuat saat CPU mengeksekusi variabel tersebut tapi variabel dibuat dan ada ketika CPU bertemu dengan block pembuka ruang lingkup. Sebenarnya variabel tidak butuh untuk dieksekusi, keberadaan dari deklarasi variabel pada C++ sebenarnya hanya untuk memberitau kompilator bahwa variabel akan terlhat setelah baris tersebut.
Dan hal yang lain, kita sebenarnya bisa deklarasi dan inisialisasi secara bersamaan di dalam pernyataan switch. Untuk membuat deklarasi variabel dengan inisialisasi di dalam pernyataan switch kita butuh sepasang block ruang lingkup yaitu sepasang tanda kurung kurawal {}
tapi hal itu akan membatasi keberadaan dari variabel, yang bisa membuat tidak dapat digunakan di luar scope dengan arti lain adalah tidak bisa digunakan di dalam label case lain.
#include <iostream> using namespace std ; int main() { int nomer ; cout<<" Masukkan [1/2/3] : ";cin>>nomer; switch (nomer){ case 1:{ char huruf = 'a' ; cout<<huruf; break; } case 2: huruf = 'b'; cout<<huruf; break; case 3: huruf = 'c' ; cout<<huruf; break; default: huruf = 'z' ; cout<<huruf; break; } return 0 ; }
mntap gan penjelasannya kompilit banget
hehe ane ijin jadiin bahan juga di blog ane ya :),
Terimakasih, harap mohon untuk menyertakan sumbernya ya…
situs web paling lengkap dan kompleks untuk bahasa pemograman C++
mantappp jangan lupa untuk selalu update min !
mudadh dipahami dan memunahan