บทความในตอนนี้จะเป็นตอนต่อจากตอนที่แล้วนะครับ ซึ่งในตอนที่แล้วเราได้กล่าวถึงคำสั่งแบบ simple if ไปโดยเป็นการ ตรวจสอบเงื่อนไขว่าถ้าเป็นจริงจะเข้าไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ แต่ถ้าเป็นเท็จจะข้ามไป สำหรับในตอนนี้ เราจะพูดถึงเงื่อนไขในแบบที่ 2 คือ if...else กันต่อเลยนะครับ
2 .แบบ 2 เงื่อนไข (if...else) มีรูปแบบดังนี้

จากรูปแบบของคำสั่งจะเห็นว่าจะมีลักษณะการเขียนคล้ายกับแบบ simple if แต่จะมีการเพิ่มเติมคำว่า else เข้าไปด้วย ซึ่งการทำงานของคำสั่งแบบนี้นั้นจะทำการตรวจ สอบเงื่อนไขที่ if ก่อนว่าเป็นจริงหรือเท็จ โดยถ้าเป็นจริงจะไปทำงานในกลุ่มคำสั่งที่เรากำหนดไว้ใน if แต่ถ้าเป็นเท็จก็จะไปทำงานในกลุ่มคำสั่งที่อยู่ในส่วนของ else ซึ่งจะ เป็นเหมือนมีทางเลือก 2 ทางนั่นเอง ลองมาดูแผนภาพของคำสั่งแบบ if...else กันนะครับ

ดูจากแผนภาพแล้วจะเห็นว่าเมื่อเงื่อนไขเป็นจริงจะวิ่งเข้ามาทำตามกลุ่มคำสั่งที่เรากำหนดไว้ในกลุ่มแรก แต่ถ้าเงื่อนไขเป็นเท็จก็จะวิ่งเข้ามาที่กลุ่มคำสั่งของ else ในกลุ่มที่ 2 จากนั้นจึงค่อยมาทำที่คำสั่งในส่วนถัดมาของโปรแกรมต่อไป ลองมาดูตัวอย่างที่เป็นโปรแกรมกันเลยครับ

อธิบายโปรแกรม จากโปรแกรมได้ประกาศตัวแปรไว้ 3 ตัวคือ x = 8 , y = 2 และตัวแปร z จากนั้นมาเจอคำสั่ง if โดยมีเงื่อไข ว่า x มากกว่าหรือเท่ากับ y ถ้าเงื่อนไขเป็นจริงจะเข้ามาทำคำสั่งภายในส่วนของ if ทันที คือให้หาค่าของ x-y และแสดงผลออกมา แต่ถ้าเงื่อนไขเป็นเท็จจะข้ามาทำส่วนของ else ของโปรแกรมคือ หาค่าของ x+y และแสดงผลออกมา เมื่อรันโปรแกรมนี้แล้วจะได้ผลลัพธ์คือ z = 10 นะครับ ให้ลองเปลี่ยนค่า x ให้น้อยกว่าค่า y ดูนะครับ แล้วลองรันโปรแกรมดูใหม่ครับว่า ผลออกมาจะเป็นอย่างไร?
สำหรับคำสั่งประเภท if..else ก็มีรูปแบบการใช้งานดังที่กล่าวมาแล้ว สำหรับในบทความตอนต่อไปเราจะมาเรียนรู้คำสั่งสุดท้ายของประเภท if กันนะครับนั่นคือ Nested if ติดตามตอนต่อไปนะครับ
2 .switch caseการทำงานของ switch ในภาษา C นั้นตัว case นั้นต้องเป็นค่า constant หรือค่าคงที่ครับ ดังนั้นการเขียนจะไม่สามารถเขียนได้สั้นอย่างโค๊ดด้านบนครับ ซึ่งถ้าใช้ switch case นั้นจะเป็นประมาณนี้ครับ
main(){
int num;
scanf("%d", &num);
switch(num){
case 110:
case 109:
case 108:
.... //ยาวไปเรื่อยๆครับ
case 101:
{
printf("Upper");
}
break;
case 100:
case 99:
case 98:
... //ยาวไปเรื่อยๆครับ
case 51:
{
printf("High");
}
break;
default:{
printf("Low");
}
break;
}
}
ประมาณนี้ล่ะครับ แต่จะมีปัญหาเรื่องตัว default เนื่องจาก default นั้นจะ handle ในทุกกรณีที่ไม่ตรงกับค่าใดๆใน case ก่อนหนัาทั้งหมด ดังนั้นจะมีปัญหาเรื่อง ถ้าค่าในส่วนของ Upper นั้นไม่ครอบคลุมทั้งหมดก็จะมาเข้า default ทั้งหมดครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น