การควบคุมทิศ
ทางการทางาน
ของโปรแกรม
KRUTO
KRUTO
ในบทที่ผ่านมาเราเขียนโปรแกรมโดยเรียกใช้
คาสั่งประกาศสร้างตัวแปร กาหนดค่าให้กับตัวแปรคาสั่ง
คานวณประเภทต่าง ๆ และมีการเรียกใช้ฟังก์ชัน โดย
โปรแกรมจะทางานเรียงลาดับตั้งแต่คาสั่งแรกไปจนถึงคาสั่ง
สุดท้าย ซึ่งในบางครั้งเราอาจจะไม่ต้องการให้เป็นเช่นนั้น ใน
บทนี้เราจะมารุ้จักวิธีการเขียนโปรแกรมเพื่อควบคุมทิศ
ทางการทางานของโปรแกรม เพื่อให้ดปรแกรมทางานในแบบ
ที่เราต้องการ
KRUTO
ควบคุมทิศทางการทางานของโปรแกรม
ในทางปฏิบัตินั้นสภาพของปัญหาที่เราต้องเขียนดปรแกรมขึ้นมา
เพื่อแก้ใขความซับซ้อน ซึ่งคงจะไม่ใช่โปรแกรมที่ทางานเรียงกันไปตั้งแต่ต้น
จนจบโปรแกรมที่ควบคุมทิศทางการทางานได้ อย่างเช่น ถ้าข้อมูลที่รับเข้า
มาเป็นเลขคู่ให้ทางานอย่างหนึ่ง แต่ถ้าเป็นเลขคี่ให้ทางานอีกอย่างหนึ่งหรือ
กาหนดทางานซ้าคาสั่งเดิมซึ่งจาทาให้โปรแกรมของเราทางานได้อย่างมี
ประสิทธิภาพมากยิ่งขึ้น
ในภาษา C แบ่งลักษณะการควบคุมทางงานของโปรแกรมออกเป็น
2ประเภทหลักๆ คือ การควบคุมทิศทางแบบเลือกทาและควบคุมทิศทาง
แบบวนรอบ ซึ่งแต่ละประเภทก็จะมีคาสั่งที่ภาษา C กาหนดไว้ให้นาไปใช้
งาน
KRUTO
ควบคุมทิศทางแบบเลือกทา
การควบคุมทิศทางแบบเลือกทาก็ คือ การเขียนโปรแกรม
ให้มีการตัดสินใจ สามารถเลือกได้ว่าจะทาหรือไม่ทาตามคาสั่ง
ขึ้นอยู่กับเงื่อนไขที่กาหนดขึ้นมา โดยคาสั่งสาหรับการควบคุม
ทิศทางแบบเลือกทาในภาษาC แบ่งออกเป็น 4ประเภท
KRUTO
คาสั่ง IF
การเลือกทาโดยใช้คาสั่ง if จะใช้ในกรรีที่มีทางเลือกให้
ทางานอยู่เพียงทางเลือกเดียว ผลจากการตรวจสอบเงื่อนไขก็คือ ทา
หรือไม่ทาตามคาสั่งนั้น รูปแบบการเขียนคาสั่ง if แสดงดังต่อไปนี้
KRUTO
แผนภาพจาลองการทางานของคาสั่ง if แสดงดังรูปต่อไปนี้
สาหรับการเขียนโปรแกรมโดยใช้คาสั่ง if ตรวจสอบเงื่อนไข
เพื่อทางาน แสดงตัวอย่างดังต่อไปนี้
KRUTO
Ex.ถ้าคะแนนที่ป้อนเข้ามาในโปรแกรมมากกว่าหรือเท่ากับ 50 ซึ่งทาให้
เงื่อนไขของคาสั่งif เป็นจริงโปรแกรมก็จะแสดงข้อความ you passed….
ขึ้นมาบนหน้าจอ
KRUTO
เมื่อสั่งรันโปรแกรมจะจะปรากฏข้อความขึ้นมาให้เราป้อนคะแนน ดังรูป
ถ้าคะแนนที่ป้อนเข้ามาในโปรแกรมมากกว่าหรือเท่ากับ 50 ซึ่งทาให้เงื่อนไข
ของคาสั่ง if เป็นจริงโปรแกรมก็จะแสดงข้อความ you passed….
ขึ้นมาบนหน้าจอ
KRUTO
EX. โปรแกรมแสดงตัวเลขไล่จาก 10 ลงมายัง 0 โดยใช้ลูปแบบ do –while
เมื่อสั่งรันโปรแกรมจะปรากฏผลการทางานดังนี้
KRUTO
คาสั่ง if-else
คาสั่ง if – else จะใช้ในกรณีที่มีทางเลือกให้ทางาน โดยรูปแบบการ
เรียกใช้งานคาสั่ง แสดงดังต่อไปนี้
การทางานของคาสั่ง if –else จะเริ่มจากการตรวจสอบ
เงื่อนไข ถ้าผลออกมาเป็นจริง(false) คาสั่งของ else จะถูกทางานแทน ดัง
แสดงในแผนภาพจาลองต่อไปนี้
KRUTO
ตัวอย่างการเขียนโปรแกรม โดยใช้คาสั่ง if – else แสดงดังต่อไปนี้
EX. โปรแกรมตรวจสอบคะแนนโดยเพิ่มส่วนของ else ลงไป ถ้าคะแนนสอบผ่าน
เกณฑ์จะแจ้งข้อความหนึ่ง แต่ถ้าไม่ผ่านจะแจ้งอีกข้อความหนึ่ง
KRUTO
เมื่อสั่งรันโปรแกรม โดยทดลองป้อนจำนวนที่ทำให้เงื่อนไขของ if ให้ผลเป็นเท็จ โปรแกรม
จะทางานตามคาสั่งของelse ให้การทางานออกมาดังรูปต่อไปนี้
KRUTO
ควบคุมทิศทางแบบวนรอบ
การควบคุมทิศทางแบบวนรอบ หรือที่เรียกว่า การทางานแบบวนลูป ก็
คือ การที่เราเขียนโปรแกรมให้ทาซ้าตาแหน่งเดิม โดยมีการกาหนดเงื่อนไขเพื่อให้
โปรแกรมวนรอบทางาน คาสั่งในภาษา C ที่ใช้สาหรับควบคุมทิศทางแบบวนรอบ
ได้แก่ หัวข้อต่อไปนี้
KRUTO
จะเริ่มการทางานจากการตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริงตึงจะ
ทางานตามคาสั่งของ while เมื่อทางานเสร็จแล้วจะวนกลับไปตรวจสอบเงื่อนไขใหม่
เป็นอย่างนี้ไปเรื่อย ๆ รูปแบบการเขียนคาสั่ง while แสดงดังต่อไปนี้
คาสั่ง while
KRUTO
ตัวอย่ำงกำรเขียนโปรแกรม โดยใช้คำสั่ง if – else แสดงดังต่อไปนี้
EX. โปรแกรมตรวจสอบคะแนนโดยเพิ่มส่วนของ else ลงไป ถ้าคะแนนสอบผ่าน
เกณฑ์จะแจ้งข้อความหนึ่ง แต่ถ้าไม่ผ่านจะแจ้งอีกข้อความหนึ่ง
KRUTO
เมื่อสั่งรันโปรแกรม โดยทดลองป้อนจานวนที่ทาให้เงื่อนไขของ if ให้ผล
เป็นเท็จ โปรแกรมจะทางานตามคาสั่งของelse ให้การทางานออกมาดังรูปต่อไปนี้
KRUTO
การควบคุมทิศทางแบบวนรอบ หรือที่เรียกว่า การทางานแบบวนลูป ก็
คือ การที่เราเขียนโปรแกรมให้ทาซ้าตาแหน่งเดิม โดยมีการกาหนดเงื่อนไขเพื่อให้
โปรแกรมวนรอบทางาน คาสั่งในภาษา C ที่ใช้สาหรับควบคุมทิศทางแบบวนรอบ
ได้แก่ หัวข้อต่อไปนี้
ควบคุมทิศทางแบบวนรอบ
KRUTO
จะเริ่มการทางานจากการตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริงตึงจะ
ทางานตามคาสั่งของ while เมื่อทางานเสร็จแล้วจะวนกลับไปตรวจสอบเงื่อนไขใหม่
เป็นอย่างนี้ไปเรื่อย ๆ รูปแบบการเขียนคาสั่ง while แสดงดังต่อไปนี้
คาสั่ง while
KRUTO
แผนภำพจำลองกำรทำงำนของลูป while แสดงดังต่อไปนี้
KRUTO
คาสั่ง if – else if จะใช้ในเวลาที่มีทางเลือกให้มากกว่า 2 ทางเลือก
โดยแต่ละทางเลือกมีเงื่อนไขต่างกัน ดังนั้นเราต้องเรียกใช้คาสั่งif หลายครั้ง เพื่อ
กาหนดเงื่อนไขสาหรับแต่ละทางเลือก รูปแบบการเขียนคาสั่ง if – else if แสดง
ดังต่อไปนี้
คาสั่ง if – else if
KRUTO
การทางานจะเริ่มตัวแปรภาษา C ตรวจสอบเงื่อนไขแรก ถ้าผล
ออกมาเป็นจริงก็จะทางานตามคาสั่งของif ถ้าผลออกมาเป็นเท็จ ตัวแปรภาษา C จะ
ตรวจสอบเงื่อนไขที่สอง ซึ่งถ้าผลออกมาเป็นจริงก็จะทางานตามคาสั่งของ else if นั้น
ถ้าเป็นเท็จตัวแปลภาษา C ก็จะไปตรวจสอบเงื่อนไขอื่น ๆ เรียงตามลาดับต่อไปจน
ครบทุกเงื่อนไข ถ้าผลยังคงเป็นเท็จ ตัวแปลภาษา C จะทางานตามคาสั่งที่กาหนดไว้
ใน else
KRUTO
แผนภำพจำลองกำรทำงำนของคำสั่ง if – else if แสดงดังตัวอย่าง
KRUTO
จะใช้คาสั่ง if ซ้อน if จะใช้กับปัญหาที่มีเงื่อนไขสับซ้อน อย่างเช่น
กาหนดว่าต้องเป็นจานวนคู่และไม่เกิน 50 หรือเงื่อนไขต้องเป็นเพศชายไม่เกิน 20 ปี
เป็นต้น แสดงดังรูปต่อไปนี้
คาสั่ง if ซ้อน if
KRUTO
EX. โปรแกรมตรวจสอบราคาอุปกรณ์ฮาร์ดแวร์และเทคโนโลยี โดยแสดง
เมนูใหเช้ผู้ใช้เลือกแล้วโปรแกรมจะแสดงราคาของเมนูนั้นขึ้นมาให้
KRUTO
เมื่อทดลองการรันโปรแกรมจะปรากฏผลการทางานดังรูปต่อไปนี้
KRUTO
คาสั่ง switch….case
จะใช้ในกรณีที่มีทางเลือกให้ทางานหลายทางเลือกโดยใช้เงื่อนไข
ร่วมกัน ซึ่งตัวแปรภาษา C จะตรวจสอบเงื่อนไขเพียงครั้งเดียว ผลจากการ
ตรวจสอบเงื่อนไขจะถูกนาไปพิจารณาอีกครั้งว่าจะทางานทางเลือกใด
รูปแบบการเขียน แสดงดังตัวอย่าง
KRUTO
แผนภาพจาลองการทางานของคาสั่ง switch…case แสดงดังตัวอย่าง
KRUTO
EX. โปรแกรมคานวณเกรด โดยให้ผู้ใช้ป้อนคะแนนเข้ามา โปรแกรมจะ
คานวณเกรดแล้วแจ้งผลออกทางหน้าจอ
KRUTO
คาสั่ง do – while
คาสั่งวนลูปแบบ do – while จะคล้ายกับ while ถ้าเงื่อนไขเป็น
จริงจึงจะวนกลับไปทางานตามคาสั่งของ do ก่อนหนึ่งรอบแล้วจึงตรวจสอบ
เงื่อนไขที่ while เป็นอย่างนี้ไปจนกว่าผลการตรวจสอบเงื่อนไขจะเป็นเท็จ
จึงจะเลิกทางาน แสดงดังรูปต่อไปนี้
KRUTO
แผนภาพจาลองการทางานของลูปแบบ do – while แสดงดังต่อไปนี้
KRUTO
คาสั่ง for
ใช้สาหรับการควบคุมทิศทางให้ทางานแบบวนรอบ มี
ลักษณะพิเศษกว่าคาสั่งลูปแบบอื่น ๆ ตรงที่ for เหมาะกับกรรีที่รู้จานวน
แน่นอนแล้วว่า ต้องการให้วนลูปทางานกี่รอบ รูปแบบการเรียกใช้คาสั่ง
for ก็ต่างจากคาสั่งลูปอื่น ๆ ดังนี้
KRUTO
แผนภาพจาลองการทางานของลูปแบบ for แสดงดังต่อไปนี้
KRUTO
คาสั่งประกอบการควบคุมทิศทางแบบต่าง ๆ
คาสั่ง break
ถูกนาไปใช้ร่วบกับคาสั่งแบบเลือกทาหรือวนรอบ เพื่อสั่งให้
โปรแกรมหยุดการทางานของคาสั่งแบบเลือกทาหรือวนรอบที่กาลัง
ทางานอยู่ ตัวอย่างการใช้คาสั่ง break แสดงดังต่อไปนี้
KRUTO
EX. โปรแกรมที่มีการใช้คาสั่ง break ซ้อนอยู่ในคาสั่ง if
KRUTO
เมื่อสั่งรันโปรแกรม ถ้าเงื่อนไขของคาสั่ง if เป็นเท็จ โปรแกรมจะ
ทางานตามคาสั่ง continue นั่นคือหยุดการทางานในรอบปัจจุบันกลับไป
เริ่มการทางานในรอบใหม่ จึงทาให้ข้อความ the number can’t be
divided by 10.จะไม่ถูกแสดงขึ้นมาให้เห็นบนหน้าจอ ดังรูปต่อไปนี้
KRUTO
คาสั่ง exit()
คาสั่ง exit() จะใช้สาหรับออกจากการทางานของโปรแกรม
รูปแบบการเรียกใช้คาสั่ง exit() แสดงดังต่อไปนี้
KRUTO
Ex. โปรแกรมหาผลหารของตัวเลข 2 จานวน โดยที่มีการใช้
คาสั่ง exit() เพื่อจบการทางานของโปรแกรม ถ้าตัวหารที่รับเข้าเป็น 0
KRUTO
เมื่อสั่งรันโปรแกรมให้ทดลองป้อนตัวเลขเข้าไปในโปรแกรม โดยกาหนด
ตัวหารเป็น 0 เช่น 7/0 เพื่อดุผลการทางานของโปรแกรม ดังแสดงในรูปต่อไปนี้

การควบคุมทิศทางการทำงานของโปรแกรม