บทความนี้อธิบายรูปแบบของการใช้ชุดคำสั่งสำหรับการตรวจสอบเงื่อนไขเพื่อสร้างทางเลือกในการเขียนโปรแกรม ทั้งนี้การเขียนโปรแกรมภาษา C++ ใช้เครื่องหมาย { และ } เป็นเครื่องหมายบ่งบอกบล็อกของการทำงานแต่ละบล็อก นั่นหมายความว่า ชุดคำสั่งในแต่ละบล็อกมีขั้นตอนการทำงานเรียงจากบนลงล่างเสมอ โดยกระทำทีละ 1 และสามารถเลือกทำคำสั่งด้วยการสร้างเงื่อนไข นอกจากนี้สามารถให้ทำซ้ำในส่วนของคำสั่งที่ต้องการได้ด้วยการทำซ้ำซึ่งจะกล่าวถึงในบทความตอนถัดไป
ถ้าเป็นแบบนี้ให้ทำสิ่งนี้
เงื่อนไขแบบที่ 1 เป็นการตรวจสอบเงื่อนไขกรณีที่ถ้าสิ่งที่ต้องการตรวจสอบเป็นจริง ให้กระทำสิ่งใด เช่น ถ้าอิ่มแล้วให้แสดงอิ๊มอิ่ม สามารถเขียนได้ดังนี้
ตัวแปรอิ่มแล้ว = true
ถ้า ตัวแปรอิ่มแล้ว == true
แสดง("อิ๊มอิ่ม")
ในกรณีนี้รูปแบบ C++ คือ
if ( เงื่อนไข )
สิ่งที่ทำเมื่อเงื่อนไขเป็นจริง
หรือกรณีที่มีคำสั่งหลายคำสั่งที่ต้องทำเมื่อเงื่อนไขเป็นจริง
if ( เงื่อนไข ) {
สิ่งที่ทำเมื่อเงื่อนไขเป็นจริง
}
bool bFull = true;
void setup() {
Serial.begin(115200);
if (bFull)
Serial.println("...อิ๊มอิ่ม...");
}
void loop() {
}
เงื่อนไขในกรณีที่ถ้าจริงฉันจะทำอย่างหนึ่งถ้าไม่จริงฉันจะทำอีกอย่างหนึ่ง เช่น ถ้าฉันอิ่มฉันจะร้องโวยวาย แต่ถ้าฉันไม่อิ่มฉันจะกินต่อไป เขียนได้ดังนี้
ตัวแปรอิ่มแล้ว = true
ถ้า ตัวแปรอิ่มแล้ว == true
แสดง("ฉันจะร้องโวยวาย")
อื่น ๆ
แสดง("ฉันกินต่อก่อนนะ")
ในรูปแบบของ C++ คือ
if ( เงื่อนไข )
สิ่งที่ทำเมื่อเป็นจริง
else
สิ่งที่ทำเมื่อเงื่อนไขเป็นเท็จ
bool bFull = true;
void setup() {
Serial.begin(115200);
if (bFull)
Serial.println("ฉันจะโวยวาย");
else
Serial.println("ฉันกินต่อก่อนนะ");
}
void loop() {
}
ถ้ากรณีที่มีคำสั่งที่ต้องทำมีมากกว่า 1 คำสั่งต้องใช้ { และ } กำหนดบล็อกของการทำงาน
ถ้าเป็นจริงให้ทำสิ่งนี้ไม่จริงแต่เป็นแบบนี้ให้ทำสิ่งนั้น
กรณีที่มีเงื่อนไขดังนี้ ถ้าคะแนนมากกว่า 80 ให้แสดงว่า ดีมากเลย ถ้ามากกว่า 60 แสดงว่า พอได้ ๆ ถ้ามากกว่า 30 แสดงว่า พอไหว แต่ถ้าไม่ใช่เลยให้แสดงว่า พอเถอะ จะเขียนอย่างไร
มาดูตัวอย่างแรก
คะแนน = 80
ถ้า คะแนน > 80
แสดง("ดีมากเลย")
ถ้า คะแนน > 60
แสดง("พอได้ ๆ")
ถ้า คะแนน > 30
แสดง("พอไหว")
อื่น ๆ
แสดง("พอเถอะ")
ลองแปลงเป็น C++
int score = 80;
void setup() {
Serial.begin(115200);
Serial.println("\n\n");
if (score > 80)
Serial.println("..ดีมากเลย..");
if (score > 60)
Serial.println("..พอได้ ๆ..");
if (score > 30)
Serial.println("...พอไหว...");
else
Serial.println("พอเถอะ");
}
void loop() {
}
ผลลัพธ์เป็นดังนี้
จากผลลัพธ์จะพบว่าแสดง 2 กรณี คือ มากกว่า 60 และมากกว่า 30 แต่ความต้องการจริง คือ ให้แสดงกรณีของ พอได้ ๆ ดังนั้นต้องเปลี่ยนรูปแบบของการเขียนเป็นดังนี้
if (เงื่อนไข1)
สิ่งที่ทำกรณีเงื่อนไข1เป็นจริง
else if (เงื่อนไข2)
สิ่งที่ทำกรณีที่เงื่อนไข 2 เป็นจริง และกรณี 1 เป็นเท็จ
else if (เงื่อนไข3)
สิ่งที่ทำกรณีที่เงื่อนไข3 เป็นจริงและเงื่อนไข2 เป็นเท็จ
…
else if (เงื่อนไขn)
สิ่งที่ทำเมื่อเงื่อนไขn เป็นจริงและเงื่อนไขก่อนหน้านี้เป็นเท็จ
กรณีที่มีการทำเมื่อไม่มีเงื่อนไขใดเป็นจริงให้ใช้ตามรูปแบบต่อไปนี้
if (เงื่อนไข1)
สิ่งที่ทำกรณีเงื่อนไข1เป็นจริง
else if (เงื่อนไข2)
สิ่งที่ทำกรณีที่เงื่อนไข 2 เป็นจริง และกรณี 1 เป็นเท็จ
else if (เงื่อนไข3)
สิ่งที่ทำกรณีที่เงื่อนไข3 เป็นจริงและเงื่อนไข2 เป็นเท็จ
…
else if (เงื่อนไขn)
สิ่งที่ทำเมื่อเงื่อนไขn เป็นจริงและเงื่อนไขก่อนหน้านี้เป็นเท็จ
else
สิ่งที่ทำเมื่อไม่มีกรณีใดเป็นจริง
ดังนั้น โค้ดที่ควรจะเป็นจะต้องเขียนดังนี้
int score = 80;
void setup() {
Serial.begin(115200);
Serial.println("\n\n");
if (score > 80)
Serial.println("..ดีมากเลย..");
else if (score > 60)
Serial.println("..พอได้ ๆ..");
else if (score > 30)
Serial.println("...พอไหว...");
else
Serial.println("พอเถอะ");
}
void loop() {
}
นอกจากนี้ยังมีการใช้ if ที่ซ้อนเข้าไปใน if หรือเรียกว่า nest-if ซึ่งขอละเอาไว้ เมื่อใดมีตัวอย่างจะอธิบายอีกครั้ง เนื่องจากรูปแบบไม่แตกต่างกัน เพียงกรณีที่เป็นจริงมีการตรวจสอบเงื่อนไขซ้อนด้านใน
สรุป
จากรูปแบบของการเขียนโปรแกรมแบบกระทำตามเงื่อนไขด้วยคำสั่ง if สามารถเขียนในรูปแบบย่อได้คือ
(เงื่อนไข)?(กรณีที่เป็นจริง):(กรณีที่เป็นเท็จ)
นอกจากนี้ยังมีคำสั่ง switch ที่เป็น if อีกรูปแบบหนึ่ง แต่สามารถเขียนด้วย if แทนได้ ผู้เขียนจึงข้ามรูปแบบนี้ไปก่อน สุดท้ายขอให้สนุกกับการเขียนโปรแกรมครับ
(C) 2020-2021, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุง 2021-05-30, 2021-09-23