โครงสร้างการเลือกทำ ในภาษา C++ / Selection structure of c++
เขียนโดย
nextsterpp
ในทุกโปรแกรมภาษานั้นสิ่งที่สำคัญที่ ขาดไม่ได้เลยคือการเลือกทำ ทั้งนี้เพื่อเลือกว่าเมื่อเกิดเหตุการณ์ไดแล้วจะทำอะไร ซึ่งหลักการที่เป็นพื้นฐานที่สุดก็คือ เมื่อเหตุการณ์เป็นจริงแล้วทำอะไรบ้าง และในภาษา C++ การเลือกทำจัดได้เป็น 3 โครงสร้างใหญ่ ๆ คือ 1.โครงสร้างการเลือกทำแบบ IF 2. การเลือกทำแบบ IF…ELSE และ 3.การเลือกทำแบบ Switch โดยทั้ง 3 โครงสร้างนั้นอิงหลักการเดียวกัน ซึ่งในบางครั้งอาจเลือกใช้แทนกันได้ ซึ่งจะอธิบายทั้ง 3 โครงสร้างดังต่อไปนี้
1.โครงสร้างการเลือกทำแบบ if คือ " if (ตรรกะ) then {คำสั่งเมื่อตรรกะเป็นจริง} "
เช่น if(1 < 2) then printf(“1 น้อยกว่า 2”); เป็นต้น
ดังนี้เราจะเห็นได้ว่าหากเป็นกรณีที่การเปรียบค่าง่าย ๆ แล้ว เพียงโครงสร้างของ if ก็เพียงพอที่จะใช้ทำการเลือก แต่ในความเป็นจริงแล้วในการเขียนโปรแกรมนั้น ส่วนมากจะมีการเปรียบเทียบ
ในหลาย ๆ ทางเลือกการใช้ if จึงมักถูกใช้ซ้อน ๆ กัน เช่นตัวอย่างการเลือกเพศโดยการรับค่าผ่านตัวแปร sex หากเลือกเป็น 'ช' ให้ไปพิมพ์ออกมาทางหน้าจอว่า 'เพศชาย' และถ้าเลือก 'ญ' ให้พิมพ์ออกมาว่า 'เพศหญิง' การเขียนโปรแกรมในลักษณะนี้ก็เช่น
if (sex == "ช") printf("เพศชาย n");
if (sex == "ญ") printf("เพศหญิง n");
*หมายเหตุ:ส่วนมากการเปรียบเทียบ if หรือ if...else ไม่นิยมเขียน then *
2.โครงสร้างการเลือกทำแบบ if…else เมื่อเราพิจารณาการเลือกทำแบบ if นั้นเราจะเห็นข้อบกพร่องว่า หากการเลือกนั้นไม่ตรงตามที่ระบุไว้ใน if แล้ว โปรแกรมอาจทำงานผิดพลาดได้ ฉะนั้นเพื่อแก้ปัญหาเหล่านี้จึงมีการสร้างโครงสร้างการเลือกอีกแบบหนึ่งคือ
if...else นี้โดยโครงสร้างนั้นมีรูปแบบดังนี้
if (ตรรกะ) then {คำสั่งเมื่อตรรกะเป็นจริง} else {คำสั่งเมื่อตรรกะเป็นเท็จ}
เช่น if(1 < 2) then printf(“1 น้อยกว่า 2”); else printf(“1 ไม่น้อยกว่า 2”); เป็นต้น
และเมื่อหากเรานำไปใช้กับเรื่องเลือกเพศเราจะแก้ปัญหาของการเลือกแบบ if ที่จะเกิดขึ้นเมื่อผู้ใช้ไม่ได้เลือก 'ช' หรือ 'ญ' ได้ดังนี้
if (sex == "ช")
printf("เพศชาย n");
else if (sex == "ญ")
printf("เพศหญิง n");
else printf("ไม่ได้ทำการระบุเพศ n");
3.โครงสร้างการเลือกทำแบบ Switch เมื่อเขียนโปรแกรมไปเรื่อย ๆ อาจพบว่าบางครั้งการเปรียบเทียบค่าอาจมีมากกว่า 2 หรือ 3 ค่า และหากเราใช้ if รหือ if...else ในการเขียนโปรแกรมนั้นก็ทำได้เหมือนกัน
เพียงแต่ว่าบางครั้งอาจทำให้โปรแกรมยุ่งยากและดูยากเกินไป ปัญหาดังนี้แล้ว การเลือกทำแบบหลาย ๆ ทางเลือกแบบ switch จึงเกิดขึ้นโดยมีโครงสร้างเป็น
switch(ค่าเปรียบเทียบ)
{
case ค่าแบบที่ 1 : คำสั่งเมื่อค่าตรงกับแบบที่ 1;
case ค่าแบบที่ 2 : คำสั่งเมื่อค่าตรงกับแบบที่ 2;
default : ค่าปกติ
}
เช่น หากในโปรแกรมเราถ้าผู้ใช้เลือกเป็น 'ช' 'M' หรือ 'm' ให้พิมพ์ออกมาทางหน้าจอว่า 'เพศชาย' และหากเลือก 'ญ' 'F' หรือ 'f' ให้พิมพ์ออกมาว่า 'เพศพญิง' เราสามาถใช้โครงสร้างแบบ switch เขียนให้อ่านง่ายขึ้นได้ดังนี้
switch(getsex)
{
case "ช" : printf(“เพศชาย n”);
case "M" : printf(“เพศชาย n”);
case "m" : printf(“เพศชาย n”);
case "ญ" : printf(“เพศหญิง n”);
case "F" : printf(“เพศหญิง n”);
case "f" : printf(“เพศหญิง n”);
defult : printf(“ไม่ระบุเพศ”);
}
บทความนี้นำเสนอโดย นักศึกษา มหาวิทยาลัยวลัยลักษณ์ MIT11 กลุ่ม 3 {นายวัชรินทร์ หาญศิริรัตนกุล, นายวิมล จันทร์เกิด, นายศุภชัย ตั้งรัศมี} และหากมีโอกาศจะนำเสนอบทความที่ซับซ้อนขึ้นตามลำดับต่อไป
ขอขอบคุณ
แจ้ง Blog ไม่เหมาะสม
16 มี.ค. 53
1,391
7
ความคิดเห็น