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