3.1 การเขียนโปแรกมแบบเลือกทำ

การเขียนโปรแกรม แบบเลือกทำ (Selection)

          จากโปรแกรมที่ได้ศึกษามา เป็นการทำงานทีละคำสั่งตามลำดับขั้น สามารถเขียนเป็นผังงาน (Flowchart) ได้ดังภาพ 5-1


 ภาพ 5-1 ผังงานการทำตามลำดับคำสั่ง

           ในการใช้งานทั่วไปนั้นบางขั้นตอนจะมีเงื่อนไขการทำงานต่าง ๆ ให้เลือกทำ ซึ่งจะต้องทำการทดสอบเงื่อนไขเพื่อแยกแยะการเลือกทำงานให้เป็นไปตามความต้องการ ถ้าเงื่อนไขเป็นจริงจะทำอะไร ถ้าเงื่อนไขเป็นเท็จจำให้ทำอะไร และเมื่อจบการทำสอบเงื่อนไขแล้วจะทำอะไรต่อไป เขียนเป็นผังงานได้ดังภาพ 5-2

ภาพ 5-2 ผังงานการทำตามเงื่อนไข

 

การใช้ประโยคคำสั่ง ifelse

          ประโยคคำสั่ง ifelse ใช้สำหรับการเขียนโปรแกรมเลือกทำตามเงื่อนไขที่กำหนด มีรูปแบบที่สอดคล้องกับผังงาน ดังนี้

if (เงื่อนไข)

       ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไขเป็นจริง ;

Else

       ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไขเป็นเท็จ ;

 

          ความหมาย

          ถ้าผลของการทดสอบเงื่อนไขเป็นจริง (True) ให้ทำงานตามประโยคคำสั่งหลังเงื่อนไข แต่ถ้าผลของการทดสอบเงื่อนไขไม่เป็นจริง (False) ให้ทำงานตามประโยคคำสั่งหลัง else

          ลักษณะของเงื่อนไข (Condition) เป็นการนำค่าข้อมูลที่เป็นแบบเดียวกันสองค่า มาเปรียบเทียบความสัมพันธ์กัน โดยใช้เครื่องหมายความสัมพันธ์ (Relational Operators) ดังต่อไปนี้

 

เครื่องหมาย

ความหมาย

< 

<=

> 

>=

= =

!=

น้อยกว่า (less than)

น้อยกว่า หรือเท่ากัน (less than or equal)

มากกว่า (greater than)

มากกว่า หรือเท่ากับ (greater than or equal)

เท่ากัน (equal)

ไม่เท่ากัน (not equal)

 

          ผลลัพธ์ที่ได้จากการเปรียบเทียบจะเป็นจริง (True) หรือเป็นเท็จ (False) เท่านั้น แต่ในผังงานอาจเขียนแทนด้วย Y หมายถึง ใช่ (Yes) และ N หมายถึง ไม่ใช่ (No)

          ตัวอย่างการเขียนเงื่อนไข

เงื่อนไข

เป็นจริงถ้า

เป็นเท็จถ้า

A < B

 

A >= B

 

A = = B

A != B

ค่าของ A น้อยกว่าค่าของ B

 

ค่าของ A มากกว่าหรือเท่ากันกับค่าของ B

ค่าของ A เท่ากันกับค่าของ B

ค่าของ A ไม่เท่ากันกับค่าของ B

ค่าของ A มากกว่าหรือเท่ากันกับค่าของ B

ค่าของ A น้อยกว่าค่าของ B

 

ค่าของ A ไม่เก่ากันกับค่าของ B

ค่าของ A เท่ากันกับค่าของ B

 

ตัวอย่างการเขียนประโยคคำสั่ง if else

          ถ้ากำหนดเงื่อนไขการทำงาน ดังนี้

          - ทดสอบว่าค่า A เท่ากับ B จริงหรือไม่

                   - ถ้าจริง (Y) ให้แสดงข้อความ “A เท่ากับ B

                   - ถ้าไม่จริง (N) ให้แสดงข้อความ “A ไม่เท่ากับ B

          เขียนเป็นผังงานได้ดังภาพ 5-3

 

 ภาพ 5-3 ผังงานการทำตามเงื่อนไขคำสั่ง ifelse

จากผังงานเขียนเป็นประโยคคำสั่งได้ดังนี้

 

if (A = = B)

     printf (“A is equal to B. \n”);

else

           printf (“A is not equal to B. \n”);

 

ถ้าเปลี่ยนเงื่อนไขการทำงานเป็นตรงกันข้าม ดังนี้

- ทดสอบว่าค่า A ไม่เท่ากับ B จริงหรือไม่

          - ถ้าจริง (Y) ให้แสดงข้อความ “A ไม่เท่ากับ B

          - ถ้าไม่จริง (N) ให้แสดงข้อความ “A เท่ากับ B

เขียนประโยคคำสั่งได้ ดังนี้

 

if (A = = B)

     printf (“A is equal to B. \n”);

else

           printf (“A is not equal to B. \n”);

 เขียนเป็นผังงานได้ดังภาพ 5-4

ภาพ 5-4 ผังงานการทำตามเงื่อนไข

           จากผังงานสังเกตได้ว่า ถ้าเปลี่ยนเงื่อนไขเป็นตรงข้ามกัน ก็สามารถสลับด้านจริงและเท็จ (Y และ N) ได้เลย

 

หมายเหตุ   ถ้าต้องการให้ทำประโยคคำสั่งหลายประโยค ให้ใช้ประโยคคำสั่งรวม (Compound

               Statement) ซึ่งมีรูปแบบดังนี้

 

 การใช้ประโยคคำสั่ง if

          ประโยคคำสั่ง if ใช้สำหรับให้ทำประโยคคำสั่งเฉพาะกรณีที่เงื่อนไขเป็นจริง และไม่ต้องทำอะไรเมื่อเงื่อนไขเป็นเท็จ มีรูปแบบดังนี้

If (เงื่อนไข)

             ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไขเป็นจริง ;

 

          เขียนเป็นผังงานได้ดังภาพ 5-5

ภาพ 5-5 ผังงานของคำสั่ง if

          การใช้ประโยคคำสั่งแบบนี้อาจทำให้สับสนได้ เนื่องจากเมื่อเงื่อนไขเป็นจริงก็จะทำคำสั่งแล้วไปทำงานตามคำสั่งในบรรทัดถัดไป แต่ถ้าเงื่อนไขเป็นเท็จให้ทำคำสั่งบรรทัดถัดไป

          ตัวอย่าง ถ้ากำหนดเงื่อนไขการทำงาน ดังนี้

                   -  ทดสอบว่าไม่มีเงินในมือ (ค่า M เท่ากับ 0) จริงหรือไม่

                             - ถ้าจริง ให้หยิบเงินจากกระเป๋า 20 บาท

                   - จบการทดสอบแล้ว ให้แสดงข้อความ “พร้อมที่จะจ่าย”

          เขียนประโยคคำสั่งได้ ดังนี้

If (M = = 0)

   {

         Printf (“Get money”);

         M = 20 ;

    }

    Printf (“Ready to pay. \n”);

 

          จากตัวอย่าง ถ้าค่าของ M ไม่เท่ากับ 0 ก็แสดงข้อความออกมา

หมายเหตุ   การใช้ประโยคคำสั่ง if ควรพยายามใช้อย่างระมัดระวัง เนื่องจากเขียนได้หลายรูปแบบ

               ดังนั้น ควรใช้ ifelse จะดีกว่า เพราะจะทำการให้การตรวจสอบโปรแกรมง่ายกว่า

               และโอกาสผิดพลาดน้อยกว่า

 

การเขียนโปรแกรมแบบหลายเงื่อนไข

          1.  เมื่อมีเงื่อนไขหลายอย่างซ้อนกัน

                   อาจใช้ประโยคคำสั่ง ifelse ซ้อนกัน ตามรูปแบบ ดังนี้

If (เงือนไข)

    {

         If (เงื่อนไข 2 )

                     ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไข 1 และ 2 เป็นจริง ;

         Else

                     ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไข 1 เป็นจริง แต่เงื่อนไข 2 เป็นเท็จ ;

     }

Else

     {

          If (เงื่อนไข 3)

                     ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไข 1 เป็นเท็จ และเงื่อนไข 3 เป็นจริง ;

          Else

                     ประโยคคำสั่งที่ให้ทำถ้าเงื่อนไข 1 และ 3 เป็นเท็จ ;

      }

 

คำอธิบาย

          - ถ้าเงื่อนไขที่ 1 เป็นจริง ให้ทดสอบเงื่อนไขที่ 2 ต่อ

                   ถ้าเงื่อนไขที่ 2 เป็นจริง ให้ทำงานตามประโยคคำสั่งหลังเงื่อนไขที่ 2

                   แต่ถ้าเงือนไขที่ 2 เป็นเท็จ ให้ทำงานตามประโยคคำสั่งหลัง else

          - ถ้าเงื่อนไขที่ 1 เป็นเท็จ ให้ทดสอบเงื่อนไขที่ 3 ต่อ

                   ถ้าเงื่อนไขที่3 เป็นจริง ให้ทำงานตามประโยคคำสั่งหลังเงื่อนไขที่ 3

                   แต่ถ้าเงื่อนไขที่ 3 เป็นเท็จให้ทำงานตามประโยคคำสั่งหลัง else

          - จบการทดสอบเงื่อนไขทั้งหมดให้ทประโยคคสั่งถัดไป (ถ้ามี)

เขียนเป็นผังงานได้ดังภาพ 5-6

 

Comments