การเลือกทำแบบหลายทางเลือกด้วยคำสั่ง switch
การเลือกทำสายงานใดสายงานหนึ่งนั้น นอกจากการใช้คำสั่ง if เพื่อกำหนดเงื่อนไขเพื่อให้โปรแกรมเลือกที่จะทำงานสายงานใดแล้ว ในภาษาซี ยังมีคำสั่ง switch อีกคำสั่งหนึ่ง เพื่ออำนวยความสะดวกแก่ผู้เขียนโปรแกรม ในการที่นำมาใช้แทนคำสั่ง if ที่ซ้อนกันหลาย ๆ ชั้น โดยที่คำสั่ง switch จะนำค่าของตัวแปรที่อยู่หลังคำสั่ง switch มาเปรียบเทียบกับค่าที่อยู่หลัง case แต่ละคำสั่ง ถ้าตรงกัน ก็จะทำสายงานที่อยู่ใน case นั้น ๆ แต่ถ้าไม่ตรงกับ case ใด ๆ เลย จะทำหลังคำสั่ง default โดยมีรูปแบบประโยคคำสั่งดังนี้
ประโยค switch หนึ่งประโยคจะมีกี่ case ก็ได้ หรือไม่มีเลยก็ได้ และอาจมี default เป็นตัวเลือกเสริม
คอมไพล์เลอร์จะทำการตรวจสอบ
1. (ตัวแปร) จะต้องเป็นตัวแปรชนิด int หรือประเภทข้อมูลอื่น ๆ ที่มีลักษณะเป็นจำนวนเต็มเช่น char , short , long จะเป็น string , float , double หรือ long double ไม่ได้
2. ค่าคงที่ ในแต่ละ case จะต้องเป็นข้อมูลชนิด char , short , int , long เท่านั้น
3. ค่าคงที่ในแต่ละ case จะไปซ้ำกับค่าคงที่ใน case อื่น ไม่ได้
4. ห้ามมี default มากกว่าหนึ่ง
คอมไพล์เลอร์จะทำการตรวจสอบ
1. (ตัวแปร) จะต้องเป็นตัวแปรชนิด int หรือประเภทข้อมูลอื่น ๆ ที่มีลักษณะเป็นจำนวนเต็มเช่น char , short , long จะเป็น string , float , double หรือ long double ไม่ได้
2. ค่าคงที่ ในแต่ละ case จะต้องเป็นข้อมูลชนิด char , short , int , long เท่านั้น
3. ค่าคงที่ในแต่ละ case จะไปซ้ำกับค่าคงที่ใน case อื่น ไม่ได้
4. ห้ามมี default มากกว่าหนึ่ง
ประโยคคำสั่ง break เป็นคำสั่งที่ใช้ในการหลุดออกจากเงื่อนไข โดยไม่ต้องทำงานจนจบบล๊อกของคำสั่ง
การนำคำสั่ง break มาซ้อนไว้ใน case ต่าง ๆ ของคำสั่ง switch จะช่วยให้โปรแกรมไม่ล่วงล้ำเข้าไปทำใน case ที่อยู่ถัดไป แต่ถ้าไม่มีประโยคคำสั่ง break เมื่อทำ case ใด ๆ เสร็จเรียบร้อยแล้ว คอมไพล์เลอร์ก็จะให้ไปทำใน case ที่อยู่ถัดไปเรื่อย ๆ จนกว่าจะจบบล๊อกของประโยค
คำสั่ง switch จากนั้นจะทำงานต่อไป ในประโยคคำสั่งที่อยู่ถัดไป
นอกจากนี้คำสั่ง break ยังใช้เพื่อให้หลุดออกจากวงรอบของการทำซ้ำ for , do , while และไปทำงานในคำสั่งต่อไปที่ถัดไปจากวงรอบการทำซ้ำ ดังกล่าวได้ด้วย เช่น
การนำคำสั่ง break มาซ้อนไว้ใน case ต่าง ๆ ของคำสั่ง switch จะช่วยให้โปรแกรมไม่ล่วงล้ำเข้าไปทำใน case ที่อยู่ถัดไป แต่ถ้าไม่มีประโยคคำสั่ง break เมื่อทำ case ใด ๆ เสร็จเรียบร้อยแล้ว คอมไพล์เลอร์ก็จะให้ไปทำใน case ที่อยู่ถัดไปเรื่อย ๆ จนกว่าจะจบบล๊อกของประโยค
คำสั่ง switch จากนั้นจะทำงานต่อไป ในประโยคคำสั่งที่อยู่ถัดไป
นอกจากนี้คำสั่ง break ยังใช้เพื่อให้หลุดออกจากวงรอบของการทำซ้ำ for , do , while และไปทำงานในคำสั่งต่อไปที่ถัดไปจากวงรอบการทำซ้ำ ดังกล่าวได้ด้วย เช่น
ผลที่ได้จากการRun ดังนี้
ประโยคคำสั่ง continue เป็นคำสั่งที่ใช้ควบคู่กับคำสั่งวนรอบทำซ้ำ โดยเมื่อโปรแกรมทำงานตามคำสั่งนี้ จะกระโดดไปเริ่มต้นใหม่ทันที คำสั่งนี้มักใช้คู่กับคำสั่ง for , while หรือ do
ผลที่ได้จากการ Run ดังนี้
ตัวอย่างโปรแกรม
โปรแกรมรับระดับผลการเรียนหรือเกรดมาจากแป้นพิมพ์ แล้วนำมาพิจารณาตรวจสอบว่า เกรดที่รับเข้ามานั้นตรงกับตัวอักษรใดแล้วแสดงผลดังนี้
ถ้าเป็น A แสดงข้อความ "Excellent"
ถ้าเป็น B แสดงข้อความ "Good"
ถ้าเป็น C แสดงข้อความ "So so"
ถ้าเป็น D แสดงข้อความ "Fails"
ถ้าเป็น E แสดงข้อความ "Get lost"
ถ้าเป็นตัวอักษรอื่น ๆ แสดงข้อความ "Invalid data"
สามารถนำมาเขียนผังงานได้ดังนี้
โปรแกรมรับระดับผลการเรียนหรือเกรดมาจากแป้นพิมพ์ แล้วนำมาพิจารณาตรวจสอบว่า เกรดที่รับเข้ามานั้นตรงกับตัวอักษรใดแล้วแสดงผลดังนี้
ถ้าเป็น A แสดงข้อความ "Excellent"
ถ้าเป็น B แสดงข้อความ "Good"
ถ้าเป็น C แสดงข้อความ "So so"
ถ้าเป็น D แสดงข้อความ "Fails"
ถ้าเป็น E แสดงข้อความ "Get lost"
ถ้าเป็นตัวอักษรอื่น ๆ แสดงข้อความ "Invalid data"
สามารถนำมาเขียนผังงานได้ดังนี้
จากผังงานนำมาเขียนโค้ดได้ดังนี้
ผลที่ได้จากการ Run มี 6 กรณีคือ
ตัวอย่าง 7.10
โปรแกรมรับตัวเลข 1 ถึง 6 มาจากแป้นพิมพ์โดยถ้าผู้ใช้ป้อนเลขใด ก็ให้แสดงตัวเลขที่เขาป้อนเข้ามาสามารถนำมาเขียนผังงานได้ดังนี้
โปรแกรมรับตัวเลข 1 ถึง 6 มาจากแป้นพิมพ์โดยถ้าผู้ใช้ป้อนเลขใด ก็ให้แสดงตัวเลขที่เขาป้อนเข้ามาสามารถนำมาเขียนผังงานได้ดังนี้
จากผังงานนำมาเขียนโค้ดได้ดังนี้
ผลที่ได้จากการ Run มี 6 กรณี แต่ขอแสดงเพียง 2 กรณีคือกรณีป้อนเลข 2 และ เลข 6 ดังนี้
ตัวอย่าง 7.11
โปรแกรมแสดงเมนูให้ผู้ใช้เลือกตัวอักษรตัวแรกของชื่อสีที่ชอบแล้วแสดงผลให้ทราบว่าชอบสีอะไร ดังนี้
R หมายถึง ชอบสีแดง (Red)
Y หมายถึง ชอบสเหลือง (Yellow)
B หมายถึง ชอบสีน้ำเงิน (Blue)
P หมายถึง ชอบสีม่วง (Purple)
G หมายถึง ชอบสีเขียว (Green)
W หมายถึง ชอบสีขาว (White)
ถ้าเลือกตัวอักษรอื่นให้แสดงข้อความว่า No color in rangeสามารถนำมาเขียนผังงานได้ดังนี้
โปรแกรมแสดงเมนูให้ผู้ใช้เลือกตัวอักษรตัวแรกของชื่อสีที่ชอบแล้วแสดงผลให้ทราบว่าชอบสีอะไร ดังนี้
R หมายถึง ชอบสีแดง (Red)
Y หมายถึง ชอบสเหลือง (Yellow)
B หมายถึง ชอบสีน้ำเงิน (Blue)
P หมายถึง ชอบสีม่วง (Purple)
G หมายถึง ชอบสีเขียว (Green)
W หมายถึง ชอบสีขาว (White)
ถ้าเลือกตัวอักษรอื่นให้แสดงข้อความว่า No color in rangeสามารถนำมาเขียนผังงานได้ดังนี้
จากผังงานนำมาเขียนโค้ดได้ดังนี้
ผลที่ได้จากการ Run
ตัวอย่าง 7.12
โปรแกรมเลือกคำนวณหาพื้นที่สามเหลี่ยม หรือพื้นที่สี่เหลี่ยม โดยสร้างเมนู (MENU) ให้ผู้ใช้เลือกตอบ
ถ้าเลือก 1 ให้คำนวณหาพื้นที่สามเหลี่ยม โดยรับความยาวฐาน และ สูงมาจากแป้นพิมพ์
ถ้าเลือก 2 ให้คำนวณหาพื้นที่สี่เหลี่ยม โดยรับความยาวฐาน และ สูงมาจากแป้นพิมพ์
ถ้าเลือก อื่น ๆ ใหแสดงข้อความว่า Your choice is incorrect
จากโจทย์ นำมาเขียนผังงานได้ดังนี้
โปรแกรมเลือกคำนวณหาพื้นที่สามเหลี่ยม หรือพื้นที่สี่เหลี่ยม โดยสร้างเมนู (MENU) ให้ผู้ใช้เลือกตอบ
ถ้าเลือก 1 ให้คำนวณหาพื้นที่สามเหลี่ยม โดยรับความยาวฐาน และ สูงมาจากแป้นพิมพ์
ถ้าเลือก 2 ให้คำนวณหาพื้นที่สี่เหลี่ยม โดยรับความยาวฐาน และ สูงมาจากแป้นพิมพ์
ถ้าเลือก อื่น ๆ ใหแสดงข้อความว่า Your choice is incorrect
จากโจทย์ นำมาเขียนผังงานได้ดังนี้
จากผังงานนำมาเขียนโค้ดได้ดังนี้
ผลที่ได้จากการ Run มีสามกรณีคือ