การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

โครงสร้างควบคุม

โครงสร้างแบบวนซ้ำ

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

โครงสร้างควบคุมแบบวนซ้ำ (repetition control structure) ประกอบด้วย

คำสั่ง for

คำสั่ง while

คำสั่ง do-while

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

คำสั่ง for

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

รูปแบบของคำสั่ง for เป็นดังนี้

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

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

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

คำสั่ง while

คำสั่งวนซ้ำที่ง่ายที่สุดคือคำสั่ง while loop โดยการทำงานของคำสั่ง while loop จะทำงานเมื่อเงื่อนไขเป็นจริง และจะสิ้นสุดการทำงานจนกว่าเงื่อนไขจะเป็นเท็จ

รูปแบบของคำสั่ง while เป็นดังนี้

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

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

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

การตรวจสอบค่า เงื่อนไขการวนซ้ำ ของคำสั่ง while ในครั้งแรก และพบว่ามีค่าเป็น เท็จ คำสั่ง จะไม่ประมวลผลเลย

คำสั่ง do-while

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

รูปแบบของคำสั่ง do-while เป็นดังนี้

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

คำสั่ง จะถูกประมวลผลโดยไม่มีเงื่อนไขใด ๆ ในรอบแรก จากนั้นเงื่อนไขการวนซ้ำ จะถูกตรวจสอบค่า และคำสั่ง จะถูกประมวลผลซ้ำอีกทุกครั้งที่ เงื่อนไขการวนซ้ำ มีค่าเป็น จริง และในครั้งแรกที่ เงื่อนไขการวนซ้ำ มีค่าเป็น เท็จ คำสั่ง do-while จึงจะสิ้นสุดลง

การทำงานวนซ้ำประเภทใดเป็นลักษณะตรวจสอบก่อนทำซ้ำ

  ข้อที่ 4)
 จากโปรแกรมข้างต้น ผลลัพธ์คือข้อใด
    1 2 3 4 5 6 7 8 9 10
    2 3 4 5 6 7 8 9 10
    2 4 6 8 10
    10 8 6 4 2

  ข้อที่ 6)
  จากโปรแกรมข้างต้น ผลลัพธ์คือข้อใด
    0 1 .. n
    Hello C…
    Hello C…  Hello C…
    ไม่แสดงข้อความใด ๆ

  ข้อที่ 8)
  กรณีที่ต้องการลูปทำซ้ำ ที่มีจำนวนรอบแน่นอน ควรใช้คำสั่งใด

    for 
    do-while
    while
    ถูกทุกข้อ


  ข้อที่ 9)
  จากชุดคำสั่งข้างต้น อยากทราบว่า การทำงานของลูปมีกี่รอบ
    10 รอบ
    n รอบ
    n+1 รอบ
    0 รอบ


{
for (int i=1; i<=12 ; i++)
printf(“ 2 *  %d = %d \n”, i  , 2*i);

}

จากชุดคำสั่งข้างต้น จงตอบคำถามข้อ 10-11

  ข้อที่ 10)
  จากโปรแกรมข้างต้นการทำรอบที่ 1     จะแสดงผลลัพธ์ข้อใด
    2 * 1  =  2
    2 * 2  =  4
    2 * 3  =  6
    2 * 4  =  8


  ข้อที่ 11)
  จากโปรแกรมข้างต้นการทำรอบที่ 7   จะแสดงผลลัพธ์ข้อใด
    2 * 5  =  10
    2 * 6  =  12
    2 * 7  =  14
    2 * 8  =  16


  ข้อที่ 12)
  หากต้องการย้อนกลับไปทำงานที่ต้นลูปใหม่ โดยละเลยชุดคำสั่งที่อยู่ถัดไป ต้องใช้คำสั่งใด
    case
    continue
    while
    break


   for( j=1; j<=20; j++ ){                      
   printf("%d\t",j);                                      
   if (j==5)    
   { j=j+10; continue; }                    
   }  

   printf("\n\nPress any key back to    program...");

  ข้อที่ 13)
  จากโปรแกรมข้างต้น จะแสดงตัวเลข ตรงกับ ข้อใด
    1 2 3 4 5 15 16 17 18 19 20
    1 2 3 4 5 16 17 18 19 20
    1 2 3 4 5 6 7 8 9 10
    0 2 4 6 8 10


  ข้อที่ 14)
  ของคำสั่ง for ข้อใดที่แสดงว่าตัวแปรควบคุม i มีค่าเริ่มจาก 1 ถึง 10 โดยเพิ่มค่าขึ้นทีละ 1
    for(i = 1; i<10; i++)
    for(i =1; i<=10;i++)
    for(i=10;i>10;i--)
    for(i =1; i>10;i++)


  ข้อที่15)
  การตรวจสอบเงื่อนไขข้อใดที่มีความหมายว่า งานในวงจรจะทำเมื่อ x  มีค่าน้อยกว่าหรือเท่ากับ 5 เท่านั้น
    while(x<=5)
    for(x=10;x>6;x--)
    for(x=5;x<=10;x++)
    Do
          {---}while(x<=5)


  ข้อที่ 16)
  คำสั่งแสดงการวนซ้ำเพื่อแสดงค่าจำนวนเต็ม a ที่มีค่าเป็น 5, 4, 3, 2 และ 1 คือ
    for(a=1; a<=5; a++)
            printf(“%d”,a);
    for(a=1; a>5; a++)
            printf(“%d”,a);
    for(a=5; a<=5; a--)
            printf(“%d”,a);
    for(a=5; a>=1; a--)
            printf(“%d”,a);


  ข้อที่ 17)
  คำสั่งให้กลับไปทำงานยังคำสั่งแรกของคำสั่งควบคุม คือ

    goto
    switch
    break
    continue


  ข้อที่ 18)
  คำสั่งให้ออกจากวงจรการทำงานแบบวนซ้ำ คือ
    goto
    switch
    break
    continue


  ข้อที่ 19)

  โครงสร้างแบบใดมีลักษณะการทำงานการวนรอบเพื่อทำงานซ้ำจะเริ่มต้นจากการทำงานตามคำสั่งของ do ก่อน    หนึ่งรอบ แล้วจึงเริ่มตรวจสอบ เงื่อนไขที่คำสั่ง while
    while
    for
    do while
    switch


#include<stdio.h>
main()
{
     int  x=1;
     int  sum=0;
     while(x <= 10)
          {     sum = sum+x;
               x++;
          }
     printf(“Sum of 1-10 = %d”,sum);

}

  ข้อที่ 20)
   จากโปรแกรม ถ้าเปลี่ยนส่วนของโปรแกรมจาก  while(x <= 10) เป็น while(x <= 15) ผลลัพธ์ที่ได้คืออะไร
    Sum of 1-15 = 78
    Sum of 1-15 = 9
    Sum of 1-15 = 105
    Sum of 1-15 = 12