คำสั่งเลือกทำอย่างใดอย่างหนึ่ง (if-else) จากคำสั่ง if ที่ผ่านมาจะใช้ในการเขียนโปรแกรมที่ใช้บอกว่าจะเลือกทำหรือไม่ ถ้าเงื่อนไขเป็นจริงจะทำตามคำสั่งหรือ statement หลัง if ในกรณีที่คอมพิวเตอร์จะต้องเลือกทำอย่างใดอย่างหนึ่งโดยตรวจสอบเงื่อนไขที่กำหนด จะใช้คำสั่ง
if-else โดยถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหลัง if แต่ถ้าเงื่อนไขเป็นเท็จจะทำคำสั่งหลัง else โดยมีรูปแบบดังนี้
ตัวอย่าง โปรแกรมคำนวณราคาต้นทุนสินค้า ถ้าหากผลิตมากกว่า 10 ชิ้นจะราคาชิ้นละ 7 บาท แต่ถ้าไม่เกิน 10 ชิ้นจะราคาชิ้นละ 8 บาท
ตัวอย่างโปรแกรมคำนวณต้นทุนสินค้าด้วยคำสั่ง if-else
ตัวอย่าง โปรแกรมตรวจสอบว่าเป็นเลขคู่หรือเลขคี่ ซึ่งทำได้โดยเอา 2 ไปหาร แล้วดูว่าหารได้ลงตัวหรือไม่ (mod) ถ้าหากหารได้ลงตัวเศษจะเป็น 0 หมายความว่าเป็นเลขคู่ ดังนี้
โปรแกรมตรวจสอบว่าเป็นเลขคู่หรือเลขคี่ โดยใช้คำสั่ง if-elseจากโปรแกรมตรวจสอบเลขคู่เลขคี่ จะสังเกตเห็นได้ว่าการตรวจสอบเงื่อนไขนั้นสามารถเขียนเป็นนิพจน์ได้
คำสั่งเลือกทำที่มีมากกว่าสองทางเลือก (if-else if -else)
ในการใช้คำสั่งเลือกทำ ถ้าหากมีเงื่อนไขให้เลือกมากกว่าสองทางเลือก เราจะเพิ่มคำสั่ง else if เข้ามาด้วย ซึ่งมีรูปแบบดังนี้
การใช้คำสั่งเลือกทำแบบหลายทางเลือก การทดสอบเงื่อนไขจะทดสอบตั้งแต่บนลงล่าง ตัวอย่างเช่น
ถ้ามีข้อมูลอยู่ในตัวแปร x , y , z เครื่องจะแจ้งว่าค่าใดเป็นค่าที่มากที่สุด โดยในขั้นตอนแรกจะเปรียบเทียบว่า x มากกว่า y และ x มากกว่า z หรือไม่ ถ้าจริงคอมพิวเตอร์จะบอกว่า x มีค่ามากที่สุด ถ้าไม่ใช่ จะเปรียบเทียบว่า y มากกว่า x และ y มากกว่า z หรือไม่ ถ้าจริงคอมพิวเตอร์จะบอกว่า y มีค่ามากที่สุด ถ้าไม่ใช่คอมพิวเตอร์จะบอกว่า z มีค่ามากที่สุด
ตัวอย่าง โปรแกรมที่มีคำสั่งเลือกทำหลายทางเลือก โดยให้ใส่ค่าคะแนนตั้งแต่ 0-100 แล้วบอกว่าผลการสอบเป็นอย่างไร
ตัวอย่างโปรแกรมคิดผลการสอบ
คำสั่ง 2 ทางเลือกเป็นพื้นฐานของคำสั่งเงื่อนไขในภาษาคอมพิวเตอร์นั้น คำสั่งประเภทนี้จะต้องมีเงื่อนไขการตัดสินใจ เพื่อใช้หาคำตอบว่าจะไปทางไหน ถ้าเงื่อนไขเป็นจริงก็จะไปทำคำสั่งทางหนึ่ง แต่ถ้าเงื่อนไขเป็นเท็จก็จะไปทำคำสั่งอีกทางหนึ่ง ผังการทำงานของคำสั่ง 2 ทางเลือก
If…else คำสั่ง if…else นี้ จะต้องใช้เงื่อนไขเพื่อใช้เลือกว่าจะทำคำสั่งไหน ตามรูปที่ 6-4 แสดง ผังการทำงานของคำสั่ง if…else ถ้าเงื่อนไขเป็นจริงก็จะไปทำคำสั่งที่ 1 แต่เงื่อนไขเป็นเท็จก็จะไปทำคำสั่งที่ 2 ซึ่งไม่มีโอกาสที่จะทำทั้งสองคำสั่งได้เลย
มีรูปแบบบางอย่างที่ผู้ใช้จะต้องจำให้ได้ สำหรับคำสั่ง if…else ซึ่งมีดังนี้
- เงื่อนไจจะต้องอยู่ในวงเล็บเท่านั้น
- ไม่มีเครื่องหมาย ; หลังจบคำสั่ง if และ else แต่เมื่อจบคำสั่งที่ 1 และ คำสั่งที่ 2 จะต้องมีเครื่องหมาย ; ตามปรกติ ดังแสดงในรูปที่ 6-5
if (i= =3)
a++;
Else
a–;
รูปที่ 6-5 แสดงตัวอย่างของคำสั่ง if…else
- หลังคำสั่ง if หรือ else อาจจะมีหรือไม่มีคำสั่งก็ได้
- ทั้งคำสั่งที่ 1 และคำสั่งที่ 2 สามารถมีได้เพียง 1 คำสั่งเท่านั้น แต่ถ้าผู้ใช้ต้องการให้มีหลายคำสั่ง จะต้องใส่เข้าไปในวงเล็บ หรือแบบ Compound Statement ดังแสดงในรูปที่ 6-6
If(i==3)
{
J++;
d–;
printf(“%d%d”,j,d);
}/*if*/
Else
{
j–;
d++;
printf(“%d%d”,j,d);
}/*else*/
If (i==3)
{
B++;
Printf(“%d”,b);
}/*if*/
Else
Printf(“%d”,j);
If คำสั่ง if ก็คือ คำสั่ง if…else แต่ที่ไม่มี else เพราะคำสั่งทางเป็นเท็จไม่มี หรือจากรูปที่ 6-4 ไม่มีคำสั่งที่ 2 นั่งเอง ซึ่งก็คือจะต้องเป็นจริงเท่านั้นจึงจะทำคำสั่งได้ จากรูปที่ 6-7แสดงให้ เห็นการเปลี่ยนจากคำสั่ง if…else เป็นคำสั่ง if
Nested if เป็นคำสั่ง if…else มีคำสั่ง if…else หรือคำสั่ง if ซ้อนอยู่ด้านในอีกทีหนึ่งผังการทำงานของ Nested if และชุดคำสั่งได้แสดงในรูปที่ 6-8 ซึ่งการซ้อนนั้นสามารถมีได้ไม่จำกัด แต่ถ้ามีมากกว่า 3 ชั้น จะทำให้การทำความเข้าใจในโปรแกรมนั้นยาก
ในโปรแกรม 6-3 คือโปรแกรมที่ปรับปรุงจากโปรแกรมที่ 6-2 โดยใช้คำสั่ง Nested if
เพื่อให้โปรแกรมนั้นสามารถแสดงผลได้ถูกต้องมากที่สุด
if(เงื่อนไขที่ 1)
else
คำสั่งที่ 3
if(เงื่อนไขที่ 2)
คำสั่งที่ 1
else
คำสั่งที่ 2
ก. ผังการทำงาน
ข. ข.ชุดคำสั่ง
รูปที่ 6-8 แสดงผังการทำงาน และคำสั่งของ Nested i
โปรแกรม 6-4 คำสั่ง Nedsted if
ปัญหาของคำสั่ง else
ปัญหาของคำสั่ง 2 ทางเลือกนั้นก็คือ การจับคู่ระหว่างคำสั่ง if กับคำสั่ง else ปัญหานี้ อาจจะเกิดขึ้นมาจากความไม่เข้าใจของผู้ใช้ ซึ่งส่งผลให้โปรแกรมที่เขียนทำงานไม่ตรงตามที่ผู้ใช้ต้องการการจับคู่ของ 2 คำสั่งนี้คือ ภาษา C จะจับคู่ระหว่างคำสั่ง if กับ else ที่ใกล้กันที่สุดเป็นคู่กัน วิธีการปกป้องคือ ให้เขียนชุดคำสั่งเป็นแบบ Compound statement
ก ชุดคำสั่ง
ข. ผังการทำงาน
รูปที่ 6-9
แสดงการจับคู่ที่ไม่ตรงตามความต้องการของผู้ใช้
ก. ชุดคำสั่ง
ข. ผังการทำงาน
รูปที่ 6-10
แสดงการจับคู่ที่ถูกต้องตามความต้องการของผู้ใช้