การเขียนโปรแกรมแบบโครงสร้างแบบทำซ้ำ while

          การเขียนโปรแกรมเพื่อนำไปใช้งานด้านต่างๆ ไม่ว่าจะเป็นงานด้านธุรกิจ วิทยาศาสตร์ คณิตศาสตร์ และอื่นๆ จะต้องอาศัยความรู้และประสบการณ์ในการเขียนโปรแกรม ซึ่งแต่ละคนมีความเชี่ยวชาญและความชำนาญในการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ที่แตกต่างกัน การที่จะเป็นโปรแกรมเมอร์มืออาชีพได้จะต้องอาศัยใจรักที่อยากจะพัฒนาและฝึกฝนในการเขียนโปรแกรม หากต้องการเป็นโปรแกรมเมอร์จึงควรเริ่มจากการศึกษาหลักการพื้นฐานของวิธีการเขียนโปรแกรมให้เข้าใจ เพราะการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ต่างๆ มีหลักการคล้ายกัน สิ่งที่แตกต่างกันของแต่ละภาษาก็คือ รูปแบบคำสั่งที่ใช้ในการรับข้อมูล การประมวลผล และการแสดงผล ถ้าสามารถเขียนโปรแกรมด้วยภาษาหนึ่งได้แล้ว การเขียนโปรแกรมในภาษาอื่นจึงไม่ใช่เรื่องยาก เพียงแต่จะต้องศึกษารูปแบบการเขียนของภาษานั้นเพิ่มเติม การหัดเขียนโปรแกรมเพื่อนำไปใช้งานในด้านต่างๆ เช่น การจัดการฐานข้อมูล การวิเคราะห์ข้อมูล การแก้ปัญหาในวิชาคณิตศาสตร์ วิทยาศาสตร์ และการสร้างชิ้นงานจะช่วยให้มีความรู้และทักษะในการเขียนโปรแกรมมากขึ้น

  1. คำสั่ง while

          การวนซ้ำ (Loop) หมายถึง กลุ่มของคำสั่งที่ต้องการประมวลผลซ้ำหลายครั้ง ทั้งนี้ขึ้นอยู่กับเงื่อนไขที่กำหนดไว้ โปรแกรมภาษา C มีคำสั่งวนซ้ำอยู่ 3 คำสั่ง ได้แก่ คำสั่ง while, คำสั่ง do … while และคำสั่ง for

รูปแบบของคำสั่ง whileได้แก่

                   while(condition)

                {    statement1;

                     statement2;

                }

โดยที่  condition         คือ   เงื่อนไขที่ถูกกำหนดขึ้น
            statement       คือ    คำสั่งที่ต้องการให้โปรแกรมประมวลผล
          การทำงานของคำสั่ง while จะเริ่มต้นด้วยการตรวจสอบเงื่อนไข (condition) ถ้าผลการตรวจสอบเป็นจริงหรือมีค่าไม่เท่ากันศูนย์ คำสั่ง (statement) ที่อยู่ภายใต้เครื่องหมาย { } ทุกคำสั่งจะได้รับการประมวลผล 1 ครั้ง แล้วโปรแกรมจะกลับไปตรวจสอบเงื่อนไข ถ้าผลการตรวจสอบยังคงเป็นจริงอยู่ โปรแกรมก็จะประมวลผลคำสั่งหลังเงื่อนไขอีก 1 รอบ และทำซ้ำในลักษณะนี้จนกระทั่งผลการตรวจสอบเป็นเท็จ (มีค่าเท่ากับ 0) จึงจะยุติการทำงานในลูป

รูปที่ 1 ผังงานแสดงการทำงานของโครงสร้างแบบทำซ้ำ while และ for

ตัวอย่างที่ 1 แสดงเลขจำนวนเต็มที่เรียงต่อกันไปโดยใช้ while


   main()
   {      int digit = 0;
  while(digit <= 9)
  {  printf(“%d\n”, digit);
      digit++;
  }
    }

          จากตัวอย่าง กำหนดค่าเริ่มต้นให้ digit มีค่าเป็น 0 จากนั้นจะตรวจสอบเงื่อนไข (digit <= 9) ว่าเป็นจริงหรือไม่ ถ้าเป็นจริงก็จะทำคำสั่งทั้ง 2 คำสั่ง ซึ่งจะมีการเพิ่มค่า digit ขึ้นทีละ 1 จนกระทั่งค่า n เป็น 10 ทำให้เงื่อนไข (digit <= 9) เป็นเท็จจึงออกจากลูป (ทำซ้ำทั้งสิ้น 10 รอบ คือ รอบที่ digit มีค่าเท่ากับ 0 จนถึง digit เท่ากับ 9)

ตัวอย่างที่ 2 การคำนวณหาค่าแฟคทอเรียลโดยใช้ while


main()
   {      int n, fac = 1;
  printf(“Enter positive number”);
  scanf(“%d”,&n);
  while(n>=1)
  {  fac = fac * n;
      n = n-1;
  }
  printf(“%d”,fac);
    }

          จากตัวอย่าง มีการกำหนดค่าเริ่มต้นให้กับตัวแปร facเป็น 1 แล้วรับค่า n จากผู้ใช้ หลังจากนั้นจะตรวจสอบเงื่อนไข (n>1) ว่าเป็นจริงหรือไม่ ถ้าเป็นจริงก็จะทำคำสั่งทั้ง 2 คำสั่ง ซึ่งจะมีการลดค่า n ลงทีละ 1 จนกระทั่งค่า n เป็น 1 ดังนั้น ถ้า n = 5 จะได้

            5! = 5 x 4 x 3 x 2 x 1 = 120

ตัวอย่างที่ 3


main()
{     int i=0, x=0;
      while(i<20)
      {   if(i%5 == 0)
          {   x += i;
printf(“%d\n”, x);
          }
          i++;
      }
printf(“\nx = %d”, x);
printf(“\ni = %d”, i);
printf(“\n”);
      system(“pause”);
}


เอกสารอ้างอิง

น้อย สุวรรณมณี และคณะ.(2553). หนังสือเรียนแม็ค การงานอาชีพและเทคโนโลยีชั้นมัธยมศึกษาปีที่ 4-6 เล่มที่ 3. (หน้า 91).กรุงเทพฯ : แม็ค.

สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี (สสวท.) กระทรวงศึกษาธิการ(2553). เทคโนโลยีสารสนเทศและการสื่อสารชั้นมัธยมศึกษาปีที่ 4-6(หน้า หน้า 204-210).กรุงเทพฯ :

สกสค.ลาดพร้าว.ฝ่ายตำราวิชาการคอมพิวเตอร์. (2553). การเขียนโปรแกรมคอมพิวเตอร์ (ภาษาซี)(หน้า 156-159).

กรุงเทพฯ : ซีเอ็ดยูเคชั่น.อาณัติ  รัตนถิรกุล. (2553).สร้างระบบ e-Learning ด้วย moodle.กรุงเทพฯ : ซีเอ็ดยูเคชั่น.

มาริสา สินยอด และ วรรษมล  ดวงตานนท์. การวนซ้ำโดยใช้คำสั่ง while.
http://basic-c.weebly.com/3585363436193623360936193629361035953
65736353604365736233618358836353626363336563591-while.html.
[ระบบออนไลน์].(11ธันวาคม2557).