การเลือกทำแบบ switch
การเขียนโปรแกรมที่ต้องมีการเลือกทำหลายทางเลือก เราสามารถนำประโยคคำสั่ง if-else มาซ้อนกันได้ แต่ถ้าเงื่อนไขที่ต้องตัดสินใจขึ้นกับตัวแปรเดียว เราสามารถใช้คำสั่ง switch..case แทนได้ คำสั่ง switch นี้มีความซับซ้อนน้อยกว่าการนำ if-else มาเขียนซ้อนกัน และสามารถเปลี่ยนเงื่อนไขได้ง่ายอีกด้วย ตัวอย่างเช่น ถ้าเขียนโปรแกรมเป็นลักษณะเมนูดังต่อไปนี้ และให้ผู้ใช้โปรแกรมเลือกวิธีการคำนวณเข้าไปโดยป้อนค่าอินพุตเข้าไป เราสามารถเขียนโปรแกรมโดยนำค่าอินพุตที่ได้รับเข้าไปเก็บไว้ในตัวแปรตัวหนึ่ง และใช้คำสั่ง switch เลือกว่ามีค่าเท่ากับค่าใด (1,2,3,4) จากนั้นให้ไปทำงานตามที่เลือก ประโยคคำสั่ง switch..case มีรูปแบบดังนี้
คำสั่ง switch นี้จะนำค่าใน variable มาตรวจสอบว่าเท่ากับค่าคงที่ค่าใดหลัง case จากนั้น โปรแกรมจะไปทำ statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึงคำสั่ง break แต่ถ้าไม่เท่าค่าคงที่ค่าใดเลย โปรแกรมจะไปทำ statement หลัง default แต่ถ้าหากไม่มีคำสั่ง break โปรแกรมจะทำงานตามคำสั่งทุกๆ case แม้ว่าตัวแปรในswitch จะไม่ตรงกับ case สำหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปรนิพจน์ หรือฟังก์ชันก็ได้ สำหรับในแต่ละ case สามารถมีคำสั่งได้มากกว่าหนึ่งคำสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่มีคำสั่งโปรแกรมจะไปทำงานใน case ถัดไป ค่าคงที่หลัง case จะต้องเป็นแบบ char, byte, short หรือ เครื่องหมายโคลอน (:)
รูปแบบ
switch (variable)
{
case constant_1 : statement;
break;
case constant_2 : statement;
break;
case constant_3 : statement;
break;
............................... .................
case constant_n : statement;
break;
default : statement
}
case จากนั้น โปรแกรมจะไปทำ statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึงคำสั่ง break แต่ถ้าไม่เท่าค่าคงที่ค่าใดเลย โปรแกรมจะไปทำ statement หลัง default แต่ถ้าหากไม่มีคำสั่ง break โปรแกรมจะทำงานตามคำสั่งทุกๆ case แม้ว่าตัวแปรในswitch จะไม่ตรงกับ case สำหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปรนิพจน์ หรือฟังก์ชันก็ได้ สำหรับในแต่ละ case สามารถมีคำสั่งได้มากกว่าหนึ่งคำสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่มีคำสั่งโปรแกรมจะไปทำงานใน case ถัดไป ค่าคงที่หลัง case จะต้องเป็นแบบ char, byte, short หรือ
คำสั่ง switch นี้จะนำค่าใน variable มาตรวจสอบว่าเท่ากับค่าคงที่ค่าใดหลัง case จากนั้น โปรแกรมจะไปทำ statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึงคำสั่ง break แต่ถ้าไม่เท่าค่าคงที่ค่าใดเลย โปรแกรมจะไปทำ statement หลัง default แต่ถ้าหากไม่มีคำสั่ง break โปรแกรมจะทำงานตามคำสั่งทุกๆ case แม้ว่าตัวแปรในswitch จะไม่ตรงกับ case สำหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปรนิพจน์ หรือฟังก์ชันก็ได้ สำหรับในแต่ละ case สามารถมีคำสั่งได้มากกว่าหนึ่งคำสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่มีคำสั่งโปรแกรมจะไปทำงานใน case ถัดไป ค่าคงที่หลัง case จะต้องเป็นแบบ char, byte, short หรือ เครื่องหมายโคลอน (:)
รูปแบบ
switch (variable)
{
case constant_1 : statement;
break;
case constant_2 : statement;
break;
case constant_3 : statement;
break;
............................... .................
case constant_n : statement;
break;
default : statement
}
case จากนั้น โปรแกรมจะไปทำ statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึงคำสั่ง break แต่ถ้าไม่เท่าค่าคงที่ค่าใดเลย โปรแกรมจะไปทำ statement หลัง default แต่ถ้าหากไม่มีคำสั่ง break โปรแกรมจะทำงานตามคำสั่งทุกๆ case แม้ว่าตัวแปรในswitch จะไม่ตรงกับ case สำหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปรนิพจน์ หรือฟังก์ชันก็ได้ สำหรับในแต่ละ case สามารถมีคำสั่งได้มากกว่าหนึ่งคำสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่มีคำสั่งโปรแกรมจะไปทำงานใน case ถัดไป ค่าคงที่หลัง case จะต้องเป็นแบบ char, byte, short หรือ
หากชุดคำสั่งที่ผ่านมา ถ้าหากค่าใน number มีค่าเท่ากับ 1 คอมพิวเตอร์จะพิมพ์คำว่า You entered 1.ถ้าหากมีค่าเท่ากับ 3 จะพิมพ์คำว่า You entered 3. แต่ถ้าหากไม่เท่ากับ 1, 2, 3 จะทำสเตตเมนต์หลัง default เราอาจสรุปได้ว่าคำสั่ง switch นี้จะนำค่าใสตัวแปรที่อยู่หลัง switch ไปเปรียบกับค่าคงที่ค่าต่างๆ ถ้าเท่ากับค่าคงที่ค่าใด โปรแกรมจะไปทำคำสั่งหรือชุดคำสั่งที่อยู่หลังค่าคงที่นั้น แต่ถ้าไม่เท่ากับค่าคงที่ค่าใดเลย โปรแกรมจะทำคำสั่งที่อยู่ต่อจาก default
สำหรับตัวแปรที่ใช้เลือกทำที่อยู่ตามหลัง switch จะต้องเป็นตัวแปรประเภทจำนวนเต็ม ซึ่งจะทำให้คอมพิวเตอร์สามารถเดาค่าได้ และค่าคงที่ต้องเป็นตัวแปรประเภทเดียวกับตัวแปรที่ตามหลัง case การทำงานของคำสั่ง case อาจเขียนเป็นผังงานได้ดังนี้
สำหรับตัวแปรที่ใช้เลือกทำที่อยู่ตามหลัง switch จะต้องเป็นตัวแปรประเภทจำนวนเต็ม ซึ่งจะทำให้คอมพิวเตอร์สามารถเดาค่าได้ และค่าคงที่ต้องเป็นตัวแปรประเภทเดียวกับตัวแปรที่ตามหลัง case การทำงานของคำสั่ง case อาจเขียนเป็นผังงานได้ดังนี้