Halo dan selamat datang. Dalam kuliah ini, saya ingin berbicara tentang pernyataan switch.
Ini adalah alternatif dari pernyataan
if, tetapi biasanya hanya digunakan dalam situasi tertentu.
Tetapi ia memiliki beberapa sintaks keren yang bagus untuk melakukan beberapa pengulangan dalam pernyataan if Anda.
Jadi operator kondisional dan pernyataan if than
else memudahkan penulisan program yang memilih antara dua alternatif.
Sangat mudah untuk mengajukan pertanyaan dan membuat keputusan.
Namun, seringkali, sebuah
program harus memilih salah satu dari beberapa alternatif.
Dan ini pada dasarnya
akan menjadi if else if else if else if else if.
Ini berantakan karena Anda jelas dapat mengimplementasikan ini dengan pernyataan if ketika
Anda memiliki beberapa alternatif, tetapi
Anda dapat memiliki ratusan if lainnya. Jadi itu membosankan, rawan kesalahan,
dan itu benar-benar menyusahkan. Ini seperti menulis sekumpulan kode boilerplate.
Jadi alternatif untuk sintaks ini dan semua yang dapat Anda
lakukan di sakelar dapat Anda lakukan di if.
Tapi ini lebih bersih dan lebih mudah dan sebenarnya jauh lebih efisien juga.
Jadi ketika nilai suatu variabel berhasil dibandingkan dengan nilai yang berbeda, gunakan
pernyataan switch.
Dan apa artinya ini jika Anda memiliki pernyataan if dan kemudian Anda memiliki pernyataan else if, else if, else
if, else if, else if, else if, gunakan pernyataan switch.
Sekarang jika ekspresi Boolean itu sedikit lebih rumit.
Anda tidak dapat menggunakan pernyataan switch. Anda hanya
dapat menggunakan pernyataan switch saat membandingkan nilai, seperti konstanta.
Ekspresinya tidak bisa serumit itu.
Tetapi jauh lebih nyaman dan sangat efisien untuk menggunakan pernyataan switch, dan sebagian besar
bahasa juga memiliki konstruksi ini. Dan lihat itu sangat bagus. Satu hal yang
Anda perhatikan banyak bahasa akan dibangun berdasarkan c.
Jika Anda telah memprogram sebelumnya,
Anda akan melihat dan terbiasa dengan banyak
konstruksi ini karena awalnya muncul dalam bahasa c atau be, bahasa sebelumnya.
Jadi, inilah sintaks dari pernyataan switch. Anda memiliki kata kunci sakelar.
Dan kemudian di dalam sakelar, Anda memiliki tanda kurung kiri dan
kanan ini, yang merupakan ekspresinya. Jadi itu terlihat seperti pernyataan if
di awal kecuali alih-alih kata kunci if, Anda memiliki kata kunci switch.
Anda kemudian memiliki braket kiri.
Tanda kurung kiri diperlukan. Braket kiri itu memulai badan sakelar.
Dan Anda melihat braket kanan akhir di bagian paling bawah, yang mengakhiri badan sakelar.
Hal lain yang penting di sini adalah kasus kata kunci ini.
Kasus sebenarnya seperti pernyataan if
itu sendiri. Jadi switch
sebenarnya akan melihat ekspresi, bukan
apakah itu benar atau salah.
Switch bisa saja hanya melihat variabel atau sesuatu.
Dan kemudian itu akan mengevaluasi variabel itu dalam pernyataan kasus.
Jadi jika nilai 1 sama dengan ekspresi,
jika nilai n sama dengan ekspresi.
Tetapi Anda dapat melihat ini
sebagai sakelar yang berada di tingkat atas dan kemudian kasus masing-masing
menjadi pernyataan if, membandingkan nilai dengan ekspresi di sakelar.
Jadi kasus juga kata kunci. Anda juga melihat usus besar setelah kasus ini.
Jadi Anda memiliki kasus dan kemudian Anda memiliki nilai Anda.
Dan kemudian di dalam sana, Anda dapat memiliki beberapa pernyataan program.
Dan pada akhirnya, Anda memiliki kata kunci break. Itu kata kunci lain. Jadi ada tiga
kata kunci di sini, sebenarnya empat. Ada kata kunci switch, kata kunci case, kata kunci break
dan kemudian default di bagian bawah.
Jadi ini adalah hal-hal penting untuk diperhatikan. Kami akan membahas contoh terperinci,
tetapi Anda dapat memiliki kasus yang berbeda. Dan sekali lagi, ini hanya melakukan seperti jika lain, jika lain, jika lain, jika lain.
Jadi jika nilai satu adalah ekspresi yang sama, jalankan kodenya.
Lain jika nilai dua sama dengan
ekspresi, evaluasi itu. Lain jika nilai tiga sama dengan ekspresi, evaluasi itu.
Lain jika nilai n sama dengan ekspresi, jalankan kode di dalam blok itu.
Dan blok untuk kasus dimulai dengan titik dua dan diakhiri dengan jeda.
Dan jika Anda tidak memiliki jeda di sana,
itu akan jatuh melalui kasus-kasus lain. Kita akan membicarakannya lagi.
Dan hal terakhir di sini yang penting adalah kata kunci default ini. Ini pada dasarnya adalah the else,
else if, else if, else if dan then else di bagian bawah.
Jadi ini diatur jika tidak ada kasus lain yang mengevaluasi ekspresi.
Jadi mari kita bicara tentang beberapa detail yang saya sebutkan.
Ekspresi terlampir dalam tanda kurung berhasil dibandingkan dengan nilai-nilai.
Jadi sekali
lagi, jika kita kembali ke sintaks, ekspresi dibandingkan dengan semua nilai.
Dan jika itu sama dengan salah satu nilai, Anda mengeksekusi kode di dalam nilai itu.
Kasus harus konstanta sederhana atau ekspresi konstan, ekspresi
yang mengevaluasi ke konstanta.
Jadi Anda dapat mengaktifkan x plus y karena
jika x adalah 5 itu hanya akan mengaktifkan 10 dan itu akan membandingkan nilainya dengan 10.
Tapi biasanya, Anda mengaktifkan variabel yang sama dengan beberapa jenis angka.
Jika ditemukan kasus yang nilainya sama dengan nilai ekspresi, maka pernyataan
yang mengikuti kasus tersebut akan dieksekusi.
Jika lebih dari satu pernyataan dimasukkan, pernyataan tersebut tidak harus ditutup dalam kurung kurawal.
Jadi itu hanya mengatakan bahwa
ketika lebih dari satu pernyataan dimasukkan, tidak ada
kurung kurawal yang diperlukan untuk pernyataan kasus.
Ingat, untuk pernyataan if, kita harus selalu memiliki
kurung kurawal itu, bukan itu masalahnya. Anda bisa meletakkannya satu demi satu, kuncinya adalah jeda di sana.
Pernyataan break menandakan akhir dari kasus tertentu
dan menyebabkan eksekusi pernyataan dihentikan, ia
melompat keluar.
Jika Anda tidak memiliki istirahat di sana, kasus berikutnya akan gagal.
Jadi, Anda ingin memasukkan pernyataan break di akhir setiap kasus. Ketika Anda tidak menyertakan jeda, biasanya
itu berarti ada bug atau sesuatu.
Satu-satunya alasan Anda ingin menyertakan jeda adalah jika Anda memiliki beberapa kondisi
yang ingin Anda jalankan kodenya. Jadi jika Anda memiliki banyak kasus,
pada dasarnya mengatakan jika ekspresinya adalah
kasus ini, kasus ini atau kasus itu, kemudian lakukan
hal yang sama,
maka Anda akan mengambil jeda.
Jadi berhati-hatilah dengan jeda karena jeda dapat menyebabkan masalah
apakah blok tertentu sedang dieksekusi atau tidak dalam kasus berikutnya.
Kasus opsional khusus yang disebut default dijalankan jika nilai ekspresi
tidak cocok dengan salah satu kasus. Ini sama dengan jatuh melalui yang lain itu terjadi
jika tidak ada kasus yang benar.
Jadi, inilah contoh yang bagus di mana kami membuat sakelar untuk mengevaluasi enum.
Dalam hal ini, kami memiliki tipe enum yang disebut hari kerja,
yang hanya ditentukan oleh semua hari kerja.
Dan kemudian kami membuat variabel tipe enum hari kerja dan kami mengaturnya ke hari Senin dan kemudian
kami mengaktifkannya hari ini.
Jadi tergantung pada nilai hari ini, variabel, salah
satu pernyataan kasus akan dieksekusi.
Jika hari ini sama dengan hari Minggu, maka akan dicetak hari ini
adalah hari Minggu lalu lompat keluar.
Jika hari ini sama dengan hari Senin, maka akan dicetak hari ini adalah hari Senin dan lompat keluar.
Jika tidak sama dengan salah satu
dari mereka, itu akan pergi ke kasus default. Jadi mari kita jalankan contoh ini dalam blok kode.
Di sini kami memiliki kode sampel kami. Dan Anda akan melihat bahwa karena hari
ini sama dengan Senin, kasus
Senin akan dievaluasi dan Anda akan melihat keluaran hari ini adalah Senin.
Jadi mari kita lanjutkan dan buat kode ini dan jalankan. Dan itulah yang akan kita lihat, hari ini
adalah hari Senin.
Karena apa yang terjadi di sini adalah hari ini akan menjadi hari Senin. Anda menempatkan ini ekspresi
yang ingin Anda evaluasi variabel hari ini lalu mengevaluasinya.
Hal utama yang perlu diingat di sini adalah
Anda memiliki tanda kurung untuk memulai pernyataan sakelar pada baris 16 dalam
tanda kurung akhir untuk mengakhiri nama sakelar pada baris 29.
Anda dapat memiliki beberapa baris di dalam setiap pernyataan kasus tanpa menggunakan tanda kurung.
Sekarang mari kita lihat apa yang terjadi jika
kita menghilangkan pernyataan break setelah hari Senin.
Karena ingat, break akan langsung keluar dari case. Tetapi jika kita
menghapusnya, apa yang akan terjadi adalah
itu akan jatuh hingga Selasa dan Anda akan melihat kedua
printf dieksekusi untuk hari Senin dan hari ini adalah Selasa.
Jadi sekarang ketika kita menjalankan program, kita
lihat hari ini adalah hari Senin, hari ini adalah hari Selasa.
Itulah pentingnya pernyataan break.
Istirahat melompat keluar.
Jadi ini mungkin berguna jika Anda menginginkan hasil yang sama untuk hari Senin dan Selasa.
Jadi misalnya kadang-kadang Anda akan melihat
pernyataan kasus seperti ini, kasus Selasa karena Anda menginginkan keluaran yang
sama dan tidak peduli variabelnya sama dengan apa.
Jadi Anda mungkin melihat hal-hal seperti itu, tetapi ketika Anda memiliki pernyataan kasus
terpisah yang memiliki eksekusi berbeda, Anda harus menambahkan jeda itu di sana.
Jadi kita hanya melihat pada hari Minggu, Senin dan Selasa.
Apa yang terjadi jika kita menetapkan nilai hari ini sama dengan hari Minggu
karena tidak ada kasus yang akan cocok dengan itu.
Nah, apa yang akan terjadi adalah itu akan jatuh melalui default dan itu akan mencetak apa pun.
Jadi mari kita coba jalankan ini lagi.
Dan kita lihat hari ini adalah hari Minggu.
Maaf, setel ke variabel yang salah. Saya ingin mengaturnya, katakan
saja, Rabu. Kami memiliki kasus untuk hari Minggu.
Jadi sekarang kita akan melihat bahwa itu benar-benar mencetak apa pun karena tidak
cocok dengan kasus apa pun.
Jadi yang harus Anda lakukan untuk beralih adalah benar-benar menghafal sintaks.
Ekspresi masuk ke dalam tanda kurung itulah yang akan Anda evaluasi.
Kasus harus cocok dengan ekspresi. Jadi biasanya, Anda melakukan variabel karena
itu harus berupa konstanta atau ekspresi yang mengevaluasi nilai konstanta tertentu.
Dan kemudian Anda memiliki kasing untuk setiap hal dan kemudian semua kasing default, dan jangan lupa tentang jedanya.
Mari kita kembali dan berbicara sedikit lebih banyak dan contoh lain dari
konstruk switch dengan case.
Dalam contoh berikut ini, ini sedikit berbeda.
Apa yang kami lakukan di sini adalah kami mendapatkan data dari pengguna dan kemudian mengaktifkannya.
Jadi dalam contoh ini di fungsi utama kami, ini
mulai membuat beberapa float dan kemudian membuat operator karakter dan kemudian meminta
pengguna untuk memasukkan nilai, operator, dan nilai dua.
Dan itu menggunakan penentu format untuk membedakan, dan semuanya memiliki alamat ampersand.
Tergantung pada karakter yang Anda masukkan untuk operator, apakah itu plus minus atau bintang, itulah
yang ingin Anda sertakan dalam kotak sakelar Anda.
Jadi jika pengguna memasukkan nilai
tambah, maka Anda lihat di kolom berikutnya di sini, konstruksi sakelar, operator pengaktifannya.
Ini akan membandingkan nilai operator, nilai operator variabel untuk masing-masing
pernyataan kasus ini. Dan Anda akan melihat bahwa pernyataan
kasus ini memiliki tanda kutip tunggal karena kami membandingkan karakter.
Jadi Anda dapat
membandingkan angka, variabel dengan nilai konstanta tertentu atau karakter dengan konstanta tertentu.
Dan kemudian di dalam setiap pernyataan kasus, kami mencetak format tertentu.
Nilai satu ditambah nilai dua, nilai satu dikurangi nilai dua.
Kami benar-benar melakukan perhitungan di cetakan kami.
Dan sekali lagi Anda melihat pernyataan break penting
yang melompat keluar, dan itu diperlukan jika Anda tidak ingin jatuh melalui kasus lainnya.
Anda juga memperhatikan bahwa dalam pernyataan kasus terakhir di mana ia memiliki garis miring ke depan pembagi,
kami memiliki pernyataan if.
Kami tidak memiliki tanda kurung di sekitar kasus
karena kami dapat memiliki beberapa pernyataan dalam setiap kasus tanpa tanda kurung.
Jadi kasus terakhir yang kami katakan jika nilai dua sama dengan 0, kami
melakukan sedikit pemeriksaan untuk memastikan kami tidak membagi dengan 0.
Dan jika kita tidak membagi dengan 0, maka kita akan benar-benar melakukan pembagian kita.
Dan kemudian di akhir kasus itu, kami memiliki istirahat lagi.
Kasus default kami mengatakan Anda memasukkan operator yang tidak kami ketahui cara menanganinya.
Tetapi pernyataan switch sangat efisien.
Sangat cepat untuk menulis setiap kali Anda membandingkan banyak
nilai yang berbeda dengan variabel tertentu dan kemudian Anda ingin melakukan hal yang berbeda.
Hal terakhir yang ingin saya sebutkan adalah pernyataan go to dalam kaitannya dengan pengambilan keputusan.
Ini bukan pernyataan keputusan
langsung, itu lebih dari melompat ke baris kode yang berbeda, menggunakan label,
tetapi tersedia di c, dan itulah mengapa saya ingin menyebutkannya.
Ada dua bagian pernyataan go to, label dan kata kunci go to.
Sekarang bagi Anda yang telah memprogram sebelumnya
di Fortran atau beberapa bahasa dasar lainnya, Anda mungkin akan mengenali ini dan
Anda mungkin cukup sering menggunakannya.
Sekarang datang ke c, tidak perlu
benar-benar menggunakannya. Ada beberapa kasus di
mana saya melihatnya cukup berguna, yang akan saya jelaskan sebentar lagi, tetapi go to melompat ke
beberapa kode, dan Anda bisa pergi ke baris kode apa pun.
Salah satu alasan orang tidak suka menggunakannya karena sangat sulit untuk diikuti.
Saat Anda memelihara sebuah program dan jika itu berurutan, Anda akan mengikuti baris
demi baris, pernyataan if dalam loop while.
Sudah cukup buruk ketika Anda memiliki pernyataan if di loop while.
Tapi sekarang jika Anda memiliki sesuatu di mana pada dasarnya Anda berada di baris 27
dari kode sumber Anda dan Anda akan melompat ke baris 800 tanpa alasan selain hanya pergi ke kata kunci,
tiba-tiba Anda melewatkan banyak kode, dan itu sangat sulit untuk dipertahankan dan diikuti.
Jadi dua bagian yang harus dituju dan nama labelnya. Label diberi nama mengikuti
konvensi yang sama untuk penamaan variabel, karakter alfanumerik, Anda tidak dapat memulai dengan
angka, Anda dapat memulai dengan garis bawah.
Anda bisa mulai dengan garis bawah.
Pada dasarnya, Anda hanya menggunakan kata kunci go to dan Anda pergi ke beberapa
pengenal, bagian dua. Bagian kedua adalah label di suatu tempat.
Jadi untuk benar-benar melompat ke baris kode itu, Anda harus memberi label pada baris kode itu.
Harus ada pernyataan yang mengatakan bagian dua.
Sekarang saya akan menunjukkan contoh ini, tetapi Anda benar-benar tidak boleh
menggunakan ini karena masalah yang terkait dengan pemeliharaan.
Namun, saya ingin menyebutkannya jika Anda telah memprogram sebelumnya dan Anda terbiasa menggunakannya.
Di c, Anda tidak terlalu perlu menggunakannya.
Ada satu kasus penggunaan yang saya lihat mungkin berguna.
Saya bekerja tempo hari dengan sesama programmer, dan
dia memiliki banyak loop bersarang atau
pernyataan if bersarang.
Tapi loop mungkin benar-benar contoh yang lebih baik. Loop, ingat, kode berulang. Dia memiliki banyak loop bersarang.
Dan di loop bersarang paling dalam, seperti yang kelima, dia
ingin melompat keluar dari semua loop karena dia memiliki beberapa kondisi.
Jadi dia biasa pergi ke untuk melompat keluar dari semua loop itu.
Sekarang cara lain untuk melompat keluar dari loop menggunakan kata kunci
rem, tetapi rem hanya akan melompat keluar dari yang paling dalam.
Jadi benar-benar tidak ada cara yang efektif tanpa dia mengatur banyak
flag dan memiliki banyak pernyataan if untuk keluar dari setiap loop,
jadi dia biasa pergi ke. Dan itu adalah satu kasus yang menurut
saya cukup berguna karena mengurangi jumlah kode yang harus Anda tulis dan cukup jelas tentang apa yang terjadi.
Anda baru saja melompat keluar dari semua loop bersarang karena
Anda memenuhi kondisi tertentu.
Dan itu satu kasus. Tetapi untuk sebagian besar, Anda tidak benar-benar perlu
pergi ke dan untuk alasan yang saya sebutkan itu sangat bermasalah, sulit untuk mengikuti kode ketika Anda melompat-lompat.
Tapi go to sama seperti Anda menggunakannya seperti yang Anda gunakan dalam bahasa lain.
Anda memiliki kata kunci go to dengan nama label.
Dan apa yang akan terjadi pada kode Anda adalah Anda akan melompat ke baris kode tersebut dengan label.
Jadi Anda dapat melewati semua jenis kode.
Jadi dalam contoh ini di sini, kami memiliki label yang disebut top, dan
memiliki titik dua. Begitulah cara Anda mengetahui bahwa itu adalah label.
Dan top memiliki beberapa pernyataan. Dan di bagian paling
bawah, Anda memiliki pernyataan if. Dan Anda mengatakan jika char sama dengan y, pergi ke atas.
Jadi sekali lagi, Anda melihat bagaimana Anda bisa melompat-lompat dalam kode Anda dan itu membuatnya sangat sulit untuk diikuti.
Jadi pada dasarnya jangan menggunakannya, kecuali jika Anda memiliki banyak, banyak, banyak loop bersarang dan Anda
ingin melompat keluar dari semua loop. Terima kasih.