วันพฤหัสบดีที่ 6 มกราคม พ.ศ. 2554

คำสั่งควบคุมในการทำซ้ำ

คำสั่งควบคุมในการทำซ้ำ
            ใช้ในการทำคำสั่งเดิมซ้ำๆกันโดยมีเงื่อนไขควบคุมจำนวนครั้งในการทำซ้ำ  ดังตัวอย่าง
ตัวอย่างที่1 การพิมพ์ข้อความ Hello World! จำนวน 5 ครั้งแบบไม่ใช่คำสั่งการทำซ้ำ
 
#include <stdio.h>
main()
 {
   printf("Hello World!\n");
   printf("Hello World!\n");
   printf("Hello World!\n");
   printf("Hello World!\n");
   printf("Hello World!\n");
 }

สามารถใช้คำสั่งควบคุมการทำซ้ำได้ซึ่งอธิบายในส่วนต่อไป   สิ่งที่จำเป็นของคำสั่งการวนซ้ำคือ
         1.เงื่อนไขโดยพิจารณาจากตัวแปรหรือพารามิเตอร์ที่ใช้ควบคุมว่าต้องวนซ้ำหรือไม่
          2.ประโยคหรือคำสั่งที่ต้องการวนซ้ำ เช่น ในกรณีข้างบนเป็น printf("Hello World!\n");
          3. การเปลี่ยนแปลงค่าพารามิเตอร์หรือตัวแปรที่ใช้ควบคุมเพื่อนำไปพิจารณาในเงื่อนไขข้อแรกอีกครั้ง

5.1   คำสั่ง while  (The while  Statement)
                  คำสั่ง while  เป็นคำสั่งที่ใช้ในการวนรอบ  ซึ่งจะมีการตรวจสอบค่าเงื่อนไข กรณีไม่เท่ากับศูนย์ (จริง)  จะมีการทำคำสั่ง (Statement) ในแต่ละรอบ  กรณีผลลัพธ์เท่ากับศูนย์ (เท็จ) จะไม่ทำกลุ่มคำสั่ง (Statement) สามารถเขียน Flowchart ได้ดังนี้
Flowchart ของคำสั่ง while
รูปแบบของคำสั่ง สามารถเขียนสรุปได้ดังนี้
คำสั่ง while
         รูปแบบ   :    While (loop repetition condition)
                        statement;

    

ตัวอย่างที่ 2:        การพิมพ์ข้อความ Hello World! จำนวน 5 ครั้งแบบใช้คำสั่งการทำซ้ำแบบ while
#include <stdio.h>
main()
 {              n = 5
                count = 0;
                while (count < n)
                {
                   printf("Hello World!\n");
                   count = count + 1;
                }
}

จากตัวอย่างดังกล่าวดังกล่าวแยกเป็น 3 ส่วนตามที่ได้กล่าวไว้ข้างต้น

1.พารามิเตอร์และเงื่อนไขที่ใช้ในการควบคุม  ในกรณีนี้พารามิเตอร์คือ count และเงื่อนไขคือ count < n  โดยก่อนหน้านั้นมีการกำหนดค่าเริ่มต้นไว้ก่อนคือ count = 0;n = 5;
 
2.ประโยคหรือคำสั่งที่ต้องการวนซ้ำ เช่น ในกรณีข้างบนเป็น printf("Hello World!\n");

3.การเปลี่ยนแปลงค่าพารามิเตอร์  เนื่องจากต้องการให้แสดง Hello World!  5  ครั้ง  เมื่อมีการกระทำโดยการพิมพ์คำว่า Hello World!   1 ครั้ง  ก็ให้มีการเพิ่มการนับลงไปในตัวแปร count
โดยประโยค count = count + 1;  ทำให้ค่าของ count ิ่มขึ้น 1

4.ซึ่งหลังจากนั้นก็จะกลับไปเช็คเงื่อนไขข้อที่ 1 ถ้านับได้น้อยกว่า 5 คือ 0 ,1,2,3,4 ก็จะมีการพิมพ์ Hello World!  ออกทางหน้าจอ  เมื่อcount เป็น 5 ก็จะออกจากการวนซ้ำเพราะเงื่อนไข( 5 < 5) เป็นเท็จ





5.2   คำสั่ง for (for Statement)
                  คำสั่ง for เป็นคำสั่งที่ใช้ในวนรอบอีกชนิดหนึ่ง  ซึ่งการทำงานของการวนรอบ จะขึ้นกับส่วนสำคัญ 3 ส่วน คือ           
1.  ค่าเริ่มต้นของ ตัวแปรควบคุมการวนรอบ(ในการควบคุมแบบ while ค่านี้ถูกกำหนดไว้ก่อน)
2.      ส่วนทดสอบเงื่อนไข
3.      ส่วนเปลี่ยนแปลงค่าของตัวแปรควบคุมการวนรอบ

และอีกส่วนที่สำคัญคือคือประโยคหรือกลุ่มคำสั่งที่ต้องการทำซ้ำ
คำสั่ง for
                  รูปแบบ :                    for (initialization expression;
                        loop repetition condition;
                       update expression)
                 
                 

ตัวอย่างที่ 3:        การพิมพ์ข้อความ Hello World! จำนวน 5 ครั้งแบบใช้คำสั่งการทำซ้ำแบบ for
#include <stdio.h>
main()
 {              n = 5
                count = 0;
                for (count = 0; count <n; count += 1)
                   {
                      printf("Hello World!\n");
                    }
}

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

5.3   คำสั่ง do-while (do-while Statement)
                  จากการศึกษาคำสั่ง while และ for  จะต้องมีการตรวจสอบค่าของเงื่อนไขก่อนว่าเป็นจริงหรือเท็จ  ก่อนที่จะทำคำสั่ง (กลุ่มคำสั่ง) ภายในลูป  แต่การทำงานบางลักษณะจะต้องทำคำสั่งภายในลูป ก่อนอย่างน้อย 1 ครั้ง  ซึ่งการทำงานในลักษณะที่กล่าวนี้สามารถใช้คำสั่ง do-while
คำสั่ง do-while
                                    รูปแบบ:   do
                        statement;
                  while (loop repetition condition);

                      

ตัวอย่างที่ 4:        การพิมพ์ข้อความ Hello World! จำนวน 5 ครั้งแบบใช้คำสั่งการทำซ้ำแบบ do while
#include <stdio.h>
main()
 {              n = 5
                count = 0;
                do
                {
                   printf("Hello World!\n");
                   count = count + 1;
                }
                while (count < n) 
}

ซึ่งไม่ว่าอย่างไรประโยค         printf("Hello World!\n");
                    count = count + 1;

ต้องกระทำอย่างน้อย 1 ครั้ง เพราะเป็นการกระทำก่อนเช็คเงื่อนไข  ซึ่งต่างกับ while และ for ซึ่งในกรณีที่เงื่อนไขเป็นเท็จตั้งแต่ครั้งแรก  ประโยคดังกล่าวไม่ถูกนำมากระทำ

เช่น    ทดลองเขียนโปรแกรมในคอมพิวเตอร์และคอมพาย์ใหม่โดยเปลี่ยนค่าเริ่มต้นของ count ให้เท่ากับ 5หรือ6     
ให้สังเกตว่า              กรณีของ while และ forประโยคที่อยู่ภายในคำสั่ง ไม่ถูกกระทำ  ส่วนกรณีของ do while ประโยคที่กล่าวมาทั้ง 2 ถูกนำมากระทำโดยพิมพ์คำว่า hello world บนหน้าจอก่อนที่จะเช็คเงื่อนไข

คำสั่ง do while จึงเหมาะกับบางกรณีที่ไม่ต้องการตรวจสอบเงื่อนไขก่อนเช่นการอ่านค่าจาก keyboard ที่ต้องการให้ผู้ใช้กดแป้นพิมพ์ก่อนแล้วจึงอ่านค่า

ตัวอย่างที่ 5             /* Find first even number input */
                                    do
                                                status = scanf("%d”,&num);
                                    while ( status > 0 && (num%2) ! = 0);

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

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