วันพฤหัสบดีที่ 10 กุมภาพันธ์ พ.ศ. 2554

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

                ในบทที่ผ่านมาเราเขียนโปรแกรมโดยเรียกใช้คำสั่งประกาศสร้างตัวแปร กำหนดค่าให้กับตัวแปรคำสั่งคำนวณประเภทต่าง ๆ และมีการเรียกใช้ฟังก์ชัน โดยโปรแกรมจะทำงานเรียงลำดับตั้งแต่คำสั่งแรกไปจนถึงคำสั่งสุดท้าย ซึ่งในบางครั้งเราอาจจะไม่ต้องการให้เป็นเช่นนั้น ในบทนี้เราจะมารุ้จักวิธีการเขียนโปรแกรมเพื่อควบคุมทิศทางการทำงานของโปรแกรม เพื่อให้ดปรแกรมทำงานในแบบที่เราต้องการ
                ควบคุมทิศทางการทำงานของโปรแกรม
                ในทางปฏิบัตินั้นสภาพของปัญหาที่เราต้องเขียนดปรแกรมขึ้นมาเพื่อแก้ใขความซับซ้อน ซึ่งคงจะไม่ใช่โปรแกรมที่ทำงานเรียงกันไปตั้งแต่ต้นจนจบโปรแกรมที่ควบคุมทิศทางการทำงานได้ อย่างเช่น ถ้าข้อมูลที่รับเข้ามาเป็นเลขคู่ให้ทำงานอย่างหนึ่ง แต่ถ้าเป็นเลขคี่ให้ทำงานอีกอย่างหนึ่งหรือกำหนดทำงานซ้ำคำสั่งเดิมซึ่งจำทำให้โปรแกรมของเราทำงานได้อย่างมีประสิทธิภาพมากยิ่งขึ้น
ในภาษา C แบ่งลักษณะการควบคุมทางงานของโปรแกรมออกเป็น 2ประเภทหลักๆ คือ การควบคุมทิศทางแบบเลือกทำและควบคุมทิศทางแบบวนรอบ ซึ่งแต่ละประเภทก็จะมีคำสั่งที่ภาษา C กำหนดไว้ให้นำไปใช้งาน
                ควบคุมทิศทางแบบเลือกทำ
                การควบคุมทิศทางแบบเลือกทำก็ คือ การเขียนโปรแกรมให้มีการตัดสินใจ สามารถเลือกได้ว่าจะทำหรือไม่ทำตามคำสั่ง ขึ้นอยู่กับเงื่อนไขที่กำหนดขึ้นมา โดยคำสั่งสำหรับการควบคุมทิศทางแบบเลือกทำในภาษาC แบ่งออกเป็น 4ประเภท
                คำสั่ง IF
                การเลือกทำโดยใช้คำสั่ง 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 แสดงดังต่อไปนี้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น