hand-peaceSwitch

written by คีตภัทร แก้วพลงาม 630710316

คำสั่ง switch ใช้เพื่อดำเนินการคำสั่งหนึ่งจากหลายเงื่อนไข ทำงานคล้ายกับคำสั่ง if-else-if มาเรียนรู้เรื่องนี้ไปพร้อม ๆ กันนะคะ

ข้อสังเกตเกี่ยวกับ switch case:

1. default เป็นคำสั่งที่ไม่จำเป็นต้องมีก็ได้ แต่ถ้ามี default ต้องอยู่เป็นคำสั่งสุดท้ายเสมอ

2. switch มี default ได้เพียงตัวเดียวเท่านั้น หากมีมากกว่าหนึ่งจะทำให้เกิดข้อผิดพลาดแบบ Fatal error

3. แต่ละ case จะมีคำสั่ง break เพื่อใช้หยุดการทำงานของลำดับคำสั่งใน case นั้น

4. คำสั่ง break ใน switch มีหรือไม่มีก็ได้ แต่ถ้าไม่มี คำสั่งหลังจากที่เจอค่า case ที่ตรงกันจะถูกดำเนินการทั้งหมด

5. สามารถซ้อนคำสั่ง switch ด้วย switch อีกตัวได้(Nested switch) แต่โปรแกรมจะซับซ้อนและอ่านยากขึ้น

6. ใช้เครื่องหมายเซมิโคลอน (;) แทนเครื่องหมายโคลอน (:) ได้ โดยจะไม่ทำให้เกิดข้อผิดพลาดใด ๆ

PHP Switch Flowchart

เรามาดูการทำงานของคำสั่ง switch-case จาก flowchart ในรูปข้างบนกันค่ะเพื่อน ๆ

1. โปรแกรมจะเริ่มตรวจสอบค่า expression ใน switch ก่อน เพื่อดูว่ามีเงื่อนไขตรงกับ case ใดบ้าง

2. แต่ละ case จะทำการเปรียบเทียบค่ากับ expression นั่นก็คือ ถ้ามีค่าที่ตรงกับกรณีใดอยู่ก็จะดำเนินการคำสั่งในกรณีนั้น และออกจากการทำงานด้วยคำสั่ง break แต่ถ้าไม่มีกรณีไหนตรง จะข้ามไปตรวจสอบในกรณีถัดไป

3. ถ้าในทุกกรณีไม่มีกรณีไหนที่ตรงเลย ระบบจะไปทำงานที่ default (ถ้ามี)

4. หลังจากประมวลผลใน switch-case เสร็จ โปรแกรมจะดำเนินการคำสั่งนอก switch-case ต่อไป

ตัวอย่างที่ 1: switch ที่มีคำสั่ง break และ default ใน PHP

เมื่อพบคำสั่ง break จะออกจากบล็อก switch และหยุดการทำงานของโค้ดที่เหลือทันที ในกรณีอื่นๆ จะไม่ตรวจสอบเงื่อนไขอีก default ไม่จำเป็นต้องมี break เพราะการทำงานของบล็อกจะสิ้นสุดที่ตรงนั้นโดยอัตโนมัติ

chevron-rightOutputhashtag

Choice is 2

จากตัวอย่างโค้ดที่ 1

· กำหนดให้ตัวแปร $x เท่ากับ 2

· คำสั่ง switch จะทำการเปรียบเทียบค่าของ $x กับแต่ละกรณีใน case

· ในกรณีที่ตรงกัน ค่าของ $x เท่ากับ 2 จะทำการแสดงผลว่า "Choice is 2" มีคำสั่ง break หลังจากกรณีนี้ โปรแกรมจะหยุดการทำงานของ switch

· กรณีอื่น ๆ คือ case 1 และ case 3 จะไม่ถูกทำงาน เนื่องจากไม่ตรงกัน

· default จะไม่ทำงานเช่นกัน เพราะมีกรณีที่ตรงกันอยู่แล้ว

ตัวอย่างที่ 2: switch ที่ไม่มีคำสั่ง break และ default ใน PHP

จะทำการรันโค้ดต่อเนื่องจาก case ที่ตรงเงื่อนไขไปยัง case ถัดไป (fall-through) แม้ว่าจะไม่มีเงื่อนไขไหนตรงกันมันก็จะรันจนจบบล็อก switch หากไม่มี default และไม่มี case ใดตรง โปรแกรมจะไม่ทำงาน

chevron-rightOutputhashtag

x equals 0

x equals 1

x equals 2

จากตัวอย่างโค้ดที่ 2

· กำหนดให้ตัวแปร $x เท่ากับ 0

· คำสั่ง switch จะตรวจสอบค่าของ $x ใน

case 0: คือเมื่อ $x เท่ากับ 0 จะแสดงผลว่า "x equals 0" ไม่มีคำสั่ง break จึงทำงานต่อไป

case 1: แสดงผลว่า "x equals 1" ไม่มีคำสั่ง break จึงทำงานต่อไป

case 2: แสดงผลว่า "x equals 2".

· การทำงานของโค้ดนี้จะทำต่อเนื่องเพราะไม่มีการใช้คำสั่ง break

ตัวอย่างที่ 3: switch ที่มีมากกว่า 1 case ในบล็อกโค้ดเดียวกัน

เมื่อ switch มีหลาย case ในบล็อกเดียวกัน โปรแกรมจะทำงานในบล็อกโค้ดเดียวกันในทุก case ที่ไม่มี break ก่อน และจะหยุดการทำงานเมื่อพบคำสั่ง break

chevron-rightOutputhashtag

The week feels so long!

จากตัวอย่างที่ 3

· กำหนดให้ตัวแปร $d เท่ากับ 3

· คำสั่ง switch จะตรวจสอบค่าของ $d ในกรณีที่ตรงกัน นั่นก็คือ case 1, 2, 3, 4 และ 5 เมื่อ $d เท่ากับ 3 จะแสดงผล "The week feels so long!" และใช้คำสั่ง break เพื่อหยุดการทำงานของ switch

· case 6, 0 จะไม่ถูกตรวจสอบเพราะมีค่าที่ตรงกันแล้ว

· default จะไม่ทำงานเช่นกัน

ได้เห็นตัวอย่างกันไปแล้ว เป็นอย่างไรกันบ้างคะ เรื่อง Switch ไม่ยากเลยใช่ไหม? งั้นเรามาต่อกันที่การเปรียบเทียบในแต่ละภาษากันเลยค่ะ

เปรียบเทียบ switch case ในภาษา PHP, Java, C, Python และ JavaScript

ภาษา PHP

  • ใช้ $ เพื่อประกาศตัวแปร คือ $day

  • ใช้ echo เพื่อแสดงผล

  • ประเภทของค่าที่ใช้สามารถใช้ตัวเลขและสตริง

  • ใช้วงเล็บปีกกา {} เพื่อกำหนดบล็อกคำสั่งใน switch

chevron-rightOutputhashtag

ในโค้ดของภาษา php ได้กำหนดค่าให้ตัวแปร $day เท่ากับ 4 โดยจะทำการเปรียบเทียบเงื่อนไขกับค่าในแต่ละ case

case 6 คือ ถ้า $day มีค่าเท่ากับ 6 จะแสดงผลว่า "Today is Saturday" และหยุดการทำงานด้วยคำสั่ง break

case 7 คือ ถ้า $day มีค่าเท่ากับ 7 จะแสดงผลว่า "Today is Sunday" และหยุดการทำงานด้วยคำสั่ง break

default คือ ถ้า $day ไม่ตรงกับค่าของ case ใดเลย และในโค้ดนี้ $day = 4 ไม่ตรงกับทั้ง 6 และ 7 จึงทำงานใน default และแสดงผลว่า "Looking forward to the Weekend" นั่นเองค่ะ

ภาษา Java

  • ประกาศ data type ก่อนชื่อ คือ int day

  • ใช้ System.out.println เพื่อแสดงผล

  • ประเภทของค่าที่ใช้สามารถใช้ int, char, byte, short, และ String

  • ใช้วงเล็บปีกกา {} เพื่อกำหนดบล็อกคำสั่งใน switch

chevron-rightOutputhashtag

The week feels so long!

จากโค้ดภาษา Java จะทำการประกาศคลาส main ก่อน ซึ่งเป็นคลาสหลักของโปรแกรม และกำหนดให้ตัวแปร day เท่ากับ 4

คำสั่ง switch(day) จะตรวจสอบค่าของ day และเปรียบเทียบกับค่าในแต่ละ case

case 6 คือ ถ้าค่า day เท่ากับ 6 จะแสดงผลว่า "Today is Saturday" และหยุดการทำงานด้วยคำสั่ง break

case 7 คือ ถ้าค่า day เท่ากับ 7 จะแสดงผลว่า "Today is Sunday" และหยุดการทำงานด้วยคำสั่ง break

default คือ ถ้าค่า day ไม่ตรงกับกรณีใดๆ ในโค้ดนี้ day = 4 โปรแกรมจะทำงานใน default และแสดงผลว่า "Looking forward to the Weekend"

ภาษา C

  • ประกาศ data type ก่อนชื่อ คือ int day

  • ใช้ printf เพื่อแสดงผล

  • ประเภทของค่าที่ใช้สามารถใช้ int, char, และค่าทั้งหมดที่เป็น Numeric Types เช่น enum

  • ใช้วงเล็บปีกกา {} เพื่อกำหนดบล็อกคำสั่งใน switch

chevron-rightoutputhashtag

The week feels so long!

ในภาษา C จะต้องนำเข้าไลบรารี #include <stdio.h> และ int main() ซึ่งเป็นฟังก์ชันหลักของโปรแกรม หลังจากนั้นก็จะประกาศตัวแปร day เท่ากับ 4

switch (day) ทำการตรวจสอบค่าของ day และเปรียบเทียบในแต่ละ case

case 6 คือ ถ้าค่า day เท่ากับ 6 จะแสดงผลว่า "Today is Saturday" และหยุดการทำงานด้วยคำสั่ง break

case 7 คือ ถ้าค่า day เท่ากับ 7 จะแสดงผลว่า "Today is Sunday" และหยุดการทำงานด้วยคำสั่ง break

default คือ ถ้าค่า day ไม่ตรงกับกรณีใดๆ เลย ในโค้ดนี้ day = 4 โปรแกรมจะทำงานใน default และแสดงผลว่า "Looking forward to the Weekend"

return 0 จะทำการคืนค่า 0 เพื่อบ่งบอกว่าโปรแกรมทำงานเสร็จสิ้นแล้วนั่นเองค่ะ

ภาษา Python

ใน Python จะไม่มีคำสั่ง switch case แต่มีฟีเจอร์ที่เรียกว่า match-case ซึ่งจะทำงานคล้ายกับ switch case

  • ไม่ต้องประกาศ data type ก่อนชื่อ คือ day = 4

  • ใช้ print() เพื่อแสดงผล

  • ประเภทของค่าที่ใช้สามารถใช้ int, str, และค่าอื่น ๆ สามารถเปรียบเทียบได้

  • ไม่ใช้วงเล็บปีกกา {} แต่ใช้การย่อหน้าเพื่อกำหนดบล็อกคำสั่งใน match-case

chevron-rightoutputhashtag

The week feels so long!

มาถึงภาษา Python กันแล้วนะคะ โดยในโค้ดได้กำหนดฟังก์ชัน runDay ซึ่งมันจะทำงานเมื่อถูกเรียกใช้ ถัดไปทำการประกาศตัวแปร day เท่ากับ 4

match day ทำการตรวจสอบค่าของ day และเปรียบเทียบกับค่าใน case

case 6 คือ ถ้าค่า day เท่ากับ 6 จะแสดงผลว่า "Today is Saturday"

case 7 คือ ถ้าค่า day เท่ากับ 7 จะแสดงผลว่า "Today is Sunday"

case _ คือ ตัว underscore(_) เป็นการแทนค่าใดๆ ที่ไม่ตรงกับกรณีก่อนหน้า ในโค้ดนี้ day = 4 ซึ่งไม่ตรงกับกรณีใดเลย จะทำการแสดงผลว่า "Looking forward to the Weekend"

บรรทัดสุดท้ายของโค้ดเป็นการเรียกใช้งานฟังก์ชัน runDay เพื่อใช้ประมวลผลโปรแกรมนั่นเองค่ะ

ภาษา JavaScript

  • ใช้ let, var หรือ const เพื่อประกาศตัวแปร

  • ใช้ console.log() เพื่อแสดงผล

  • ประเภทของค่าที่ใช้สามารถใช้ตัวเลขและสตริงใน switch

  • ใช้วงเล็บปีกกา {} เพื่อกำหนดบล็อกคำสั่งใน switch

chevron-rightoutputhashtag

Grade is excellent

เดินทางมาถึงภาษาสุดท้ายกันแล้วนะคะ นั่นก็คือภาษา JavaScript โดยโค้ดนี้จะทำการประกาศตัวแปร grade เป็น 'A' และตัวแปร result ซึ่งเป็นตัวแปรที่ใช้ออกผลลัพธ์

switch (grade) เป็นการเริ่มต้นคำสั่ง switch เพื่อตรวจสอบ grade ในแต่ละ case

case 'A' คือ ถ้า grade เท่ากับ 'A' จะให้ค่า result เป็น "Grade is excellent" และหยุดการทำงานของ switch ด้วยคำสั่ง break

case 'B' คือ ถ้า grade เท่ากับ 'B' จะให้ค่า result เป็น "Grade is good" และหยุดการทำงานด้วยคำสั่ง break

case 'C' คือ ถ้า grade เท่ากับ 'C' จะให้ค่า result เป็น "Grade is Average" และหยุดการทำงานด้วยคำสั่ง break

case 'D' คือ ถ้า grade เท่ากับ 'D' จะให้ค่า result เป็น "Grade is Poor" และหยุดการทำงานด้วยคำสั่ง break

default คือ ถ้า grade ไม่ตรงกับกรณีใด ๆ เลย จะให้ค่า result เป็น "NO grades achieved"

console.log(result) เป็นการแสดงผลค่าของ result ออกมา ในโค้ดนี้ตรงกับ case 'A' ผลลัพธ์จึงเป็น Grade is excellent

อ่านมาถึงตรงนี้แล้วเพื่อน ๆ คงจะพอเข้าใจเกี่ยวกับเรื่องนี้มากขึ้นนะคะ แต่ถ้านำโค้ดแต่ละภาษามาเปรียบเทียบข้าง ๆ กันดูล่ะ

เปรียบเทียบแต่ละโค้ดในภาษา PHP, Java, C, Python และ JavaSript

ดังนั้นจะสรุปความแตกต่างได้ว่า

  • การประกาศตัวแปรใน PHP ใช้ $, Java กับ C ต้องระบุ data type, Python ไม่ต้องระบุ และ JavaScript ใช้ let, var หรือ const

  • การแสดงผลใน PHP ใช้ echo, Java ใช้ System.out.println, C ใช้ printf, Python ใช้ print()และ JavaScript ใช้ console.log()

  • การใช้บล็อกคำสั่งใน switch สำหรับ PHP, Java, C และ JavaScript ใช้วงเล็บปีกกา ส่วน Python ใช้การย่อหน้า

  • ประเภทของค่าที่ใช้ในแต่ละภาษามีการรองรับที่แตกต่างกันเห็นได้จากตาราง

ตารางเปรียบเทียบความแตกต่างในภาษา PHP, Java, C และ Python

คุณสมบัติของแต่ละภาษา
PHP
Java
C
Python
JavaScript

Data type

$

ระบุ

ระบุ

ไม่ระบุ

let, var หรือ const

การแสดงผลลัพธ์

echo

System.out.println

printf

print()

console.log()

ประเภทของค่าที่ใช้

ตัวเลขและสตริง

int, char, byte, short, และ String

int, char, และค่าทั้งหมดที่เป็น Numeric Types เช่น enum

int, str, และค่าอื่น ๆ ที่สามารถเปรียบเทียบได้

ตัวเลขและสตริง

กำหนดบล็อกคำสั่ง

{}

{}

{}

ย่อหน้า

{}

Slide

Video

Reference

Last updated