4.3 การเขียนโปรแกรมแบบวนซ้ำ

     การเขียนโปรแกรมแบบวนซ้ำ (Repetition) หรือ กลุ่มคําสั่งในการวนรอบการทํางาน (Loop) ซึ่งกลุ่มคําสั่งเหล่านี้จะทําซ้ำ (วน Loop) เมื่อเงื่อนไขเป็นจริง (True) ซึ่งชุดคําสั่งโครงสร้างแบบทําซ้ำ ประกอบด้วยคําสั่ง รูปแบบการวนซ้ำแบ่งออกเป็น 3 รูปแบบ ได้แก่

4.1.1 การวนซ้ำโดยใช้ For

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

รูปที่ 4.1 รูปแบบการทํางานของคําสั่ง For 
4.1.1.1 การทํางานของคําสั่ง For มีรูปแบบของคําสั่งดังนี้

     1. initial value คือ การกําหนดค่าเริ่มต้นให้กับตัวแปร เพื่อใช้ในการควบคุมภายใน ระหว่างการวนซ้ำในแต่ละรอบ
    2. condition คือ การตรวจสอบเงื่อนไขเพื่อตัดสินใจในการวนรอบซ้ำแต่ละรอบ ซึ่งจะยังวนรอบอยู่เมื่อเงื่อนไขเป็นจริง และจะออกจากการวนซ้ำเมื่อเงื่อนไขเป็นเท็จ
    3. chang value คือ ส่วนของการจัดการค่าของตัวแปรเช่น การเพิ่มค่า การลดค่าตัวแปร เพื่อใช้ควบคุมการวนซ้ำ
    4. statement คือ รูปแบบคําสั่งที่ต้องการให้แสดงผลในแต่ละรอบที่วนซ้ำ


     ตัวอย่างเช่น

     โปรแกรมจะใส่ค่าเริ่มต้น 1 ในตัวแปร number จากนั้นจะทดสอบเงื่อนไขว่าเงื่อนไขเป็นจริงหรือไม่ ถ้าเป็นจริงจะทําตามคําสั่งและเพิ่มค่า number ขึ้นหนึ่งค่า

4.1.1.2 ถ้าเขียนคําสั่ง for ดังต่อไปนี้

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

ตัวอย่างโปรแกรมที่ 4.1 การใช้คําสั่ง for เพื่อพิมพ์ตัวเลข 1 ถึง 10

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ Testfor1.php แสดงค่าตัวเลข 1 ถึง 10

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

     ผลรันโปรแกรม Testfor1.php


     อธิบายโปรแกรม Testfor1.php
          บรรทัดที่  1  เปิดแท็กภาษา PHP

          บรรทัดที่  2-4  ขอบเขตของคำสั่ง for กำหนดตัวแปร a มีค่าเริ่มต้นเท่ากับ 1 ตรวจสอบเงื่อนไข ค่า a น้อยกว่า 10 หรือเท่ากับ 10 หรือไม่ ถ้าเป็นจริงให้ทำงานภายในลูปของ for เมื่อทำงานเสร็จ 1 รอบทำการเพิ่มค่า a อีก 1 แล้วทำการตรวจสอบเงื่อนไขใหม่ ถ้าเป็นเท็จจะออกจากลูป for

          บรรทัดที่  4  แสดงค่าของตัวแปร a ในแต่ละรอบที่ลูป for ทำงาน โดยแสดงค่าของตัวแปร a และเว้นระยะข้อความ

          บรรทัดที่  5 ปิดแท็กภาษา PHP

ตัวอย่างโปรแกรมที่ 4.2 การทํางานวนรอบด้วยลูป for

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ Testfor2.php แสดงจํานวนรอบในการทํางาน

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

     ผลรันโปรแกรม Testfor2.java


     อธิบายโปรแกรม Testfor2 .java

          บรรทัดที่ 1 เปิดแท็กภาษา PHP

          บรรทัดที่ 2 กำหนดตัวแปร a เป็นตัวแปรชนิดเลขจำนวนเต็ม มีค่าเท่ากับ 0

          บรรทัดที่ 3 กำหนดตัวแปร r เป็นตัวแปรชนิดเลขจำนวนเต็ม มีค่าเท่ากับ 0

          บรรทัดที่ 4-8 ขอบเขตของคำสั่ง for กำหนดตัวแปร a มีค่าเริ่มต้นเท่ากับ 0 ตรวจสอบเงื่อนไข  ค่า a น้อยกว่า 10 หรือไม่  ถ้าเป็นจริงให้ทำงานภายในลูปของ for เมื่อทำงานเสร็จ 1 รอบ ทำการเพิ่มค่า a อีก 1 แล้วทำการตรวจสอบเงื่อนไขใหม่ ถ้าเป็นเท็จจะออกจากลูป for 

          บรรทัดที่ 5 แสดงค่าของตัวแปร r และตัวแปร a ในแต่ละรอบที่ลูป for ทำงาน โดยแสดงข้อความ "Value of round # " ค่าตัวแปร r " = " ค่าตัวแปร a พร้อมกับให้ขึ้นบรรทัดใหม่

          บรรทัดที่ 6 เมื่อทำงานเสร็จ 1 รอบทำการเพิ่มค่าตัวแปร a อีก 1

          บรรทัดที่ 7 เมื่อทำงานเสร็จ 1 รอบทำการเพิ่มค่าตัวแปร r อีก 1

          บรรทัดที่ 8 ปิดขอบเขตของคำสั่ง for

          บรรทัดที่ 9 ปิดแท็กภาษา PHP

ตัวอย่างโปรแกรมที่ 4.3 การทํางานของคําสั่ง if ร่วมกับคําสั่ง for 

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ Testforif.php เพื่อให้พิมพ์ตัวเลขระหว่าง 1 ถึง 40 ที่หาร 5 ลงตัว

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

     ผลรันโปรแกรม Testforif.php


     อธิบายโปรแกรม Testforif.php

          บรรทัดที่  1  เปิดแท็กภาษา PHP

          บรรทัดที่  2 - 6  ขอบเขตของคำสั่ง for กำหนดตัวแปร a มีค่าเริ่มต้นเท่ากับ 0 ตรวจสอบเงื่อนไข ค่า a น้อยกว่า 40 หรือไม่ ถ้าเป็นจริงให้ทำงานภายในลูปของ for เมื่อทำงานเสร็จ 1 รอบ  ทำการเพิ่มค่า a อีก 1 แล้วทำการตรวจสอบเงื่อนไขใหม่ ถ้าเป็นเท็จจะออกจากลูป for 

          บรรทัดที่  3 - 5  ตรวจสอบเงื่อนไขโดยหาค่าตัวแปร a ที่หารด้วย 5 ลงตัว และให้แสดงค่าตัวเลขนั้น  

          บรรทัดที่  7  ปิดแท็กภาษา PHP

ตัวอย่างโปรแกรมที่ 4.4 การทํางานของคําสั่ง for แบบซ้อน  

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ Testfor2for.php เพื่อให้พิมพ์ตัวเลขที่เก็บในตัวแปร i และ j พิมพ์ทั้งหมด 4 ครั้ง แต่ละครั้งให้ค่าตัวแปร j เพิ่มค่าครั้งละ 1

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

   ผลรันโปรแกรม Testfor2for.php


อธิบายโปรแกรม Testfor2for.php

   บรรทัดที่  1  เปิดแท็กภาษา PHP

   บรรทัดที่  2 - 6  เป็นลูปนอกทำการวนลูปจำนวน 3 ครั้ง โดยกำหนดให้ตัวแปร i มีค่าเริ่มต้นเป็น 1  และเพิ่มขึ้นทีละหนึ่ง

   บรรทัดที่  3 - 5  เป็นลูปในทำการวนลูปจำนวน  4  ครั้ง ในแต่ละรอบของคำสั่ง for ภายนอก โดยกำหนดให้ตัวแปร j มีค่าเริ่มต้นเป็น 1 และเพิ่มขึ้นทีละหนึ่ง

   บรรทัดที่  4  คำสั่งแสดงค่าตัวแปร i และแสดงค่าตัวแปร j โดยจะทำแสดงผลซ้ำทั้งหมด 12 ครั้ง  แสดงแต่ละครั้งให้ขึ้นบรรทัดใหม่

   บรรทัดที่  7  ปิดแท็กภาษา PHP

ตัวอย่างโปรแกรมที่ 4.5 การทํางานของคําสั่ง for แบบซ้อน

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ TestNestedFor.php เพื่อให้พิมพ์ * พิมพ์ทั้งหมด 3 แถว แถวละ 5 ตัว

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

     ผลรันโปรแกรม TestNestedFor.php


     อธิบายโปรแกรม TestNestedFor.php

          บรรทัดที่  1  เปิดแท็กภาษา PHP

          บรรทัดที่  2 - 7  เป็นลูปนอกทำการวนลูปจำนวน 3 ครั้ง

          บรรทัดที่  3 - 5  การวนลูปในแต่ละรอบเท่ากับค่าของ i คือ ลำดับบรรทัดที่ทำการพิมพ์ บรรทัดที่  1 จะพิมพ์เครื่องหมาย “*” จำนวน 5 ครั้ง บรรทัดที่ 2 จะพิมพ์เครื่องหมาย “*” จำนวน 5 ครั้ง และ

          บรรทัดที่  3  จะพิมพ์เครื่องหมาย “*” จำนวน 5 ครั้ง

          บรรทัดที่  6  คำสั่งขึ้นบรรทัดใหม่เมื่อทำลูปในเสร็จ

          บรรทัดที่  8  ปิดแท็กภาษา PHP

4.1.2 การวนซ้ำโดยใช้ while

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

รูปที่ 4.2 แสดงผังงานของคําสั่ง while
คําสั่ง while มีรูปแบบดังนี้

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

ตัวอย่าง การใช้งานเป็นดังชุดคําสั่งต่อไปนี้ตัวอย่าง การใช้งาน


   ผลลัพธ์ที่ได้จากการทําคําสั่งจะเป็นดังนี้

     ในลูปแรก n มีค่าเท่ากับ 7 ทําให้เงื่อนไขเป็นจริง โปรแกรมจะทํางานในลูปซึ่งจะทําให้ n มีค่าเป็น 2 ต่อมาโปรแกรมตรวจสอบเงื่อนไขเพื่อทําลูปที่สอง พบว่าเงื่อนไขเป็นจริงเมื่อทํางานลูปที่สองทําให้ n มีค่าเป็น -3 เมื่อโปรแกรมตรวจสอบเงื่อนไขพบว่าเงื่อนไขเป็นเท็จจึงไม่ทําลูปที่สาม การทํางาน จึงจบแค่สองลูป

ตัวอย่างโปรแกรมที่ 4.6 การใช้ while

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ TestWhile.php แสดงค่าตัวเลข 1 ถึง 10

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

     ผลรันโปรแกรม TestWhile.php


     อธิบายโปรแกรม TestWhile.php

          บรรทัดที่ 1 เปิดแท็กภาษา PHP

          บรรทัดที่ 2 กำหนดตัวแปร i เป็นตัวแปรชนิดเลขจำนวนเต็ม มีค่าเท่ากับ 1

          บรรทัดที่ 3 - 6 วนลูปด้วย while ตรวจสอบค่าตัวแปร i มีค่าน้อยกว่าหรือเท่ากับ 10 หรือไม่ ถ้าเป็นจริงคือ มีค่าน้อยกว่าหรือเท่ากับ 10 จริง ให้แสดงค่าของ i พร้อมกับขึ้นบรรทัดใหม่ และทำการเพิ่มค่า i อีก 1 จนกว่าค่าของ i จะมีค่ามากกว่า 10 จึงจะออกจากลูป while

          บรรทัดที่ 7 ปิดแท็กภาษา PHP

4.1.3 การวนซ้ำโดยใช้ do - while

     คําสั่ง do - while เป็นคําสั่งที่เป็นโครงสร้างแบบทําซ้ำที่มีการทํางานคล้ายกับคําสั่ง while
โดยคําสั่ง do - while สามารถเขียนเป็นผังงาน ได้ดังแสดงในรูปที่ 4.3

รูปที่ 4.3 แสดงผังงานของคําสั่ง do - while

     คําสั่ง do - while มีรูปแบบ คําสั่งดังนี้


     ข้อแตกต่างของคําสั่ง while กับคําสั่ง do - while คือ คําสั่ง do - while ทําคําสั่ง
ในบล็อก { } อย่างน้อยหนึ่งครั้งแล้วจึงทําการตรวจสอบเงื่อนไข ขณะที่คําสั่ง while ทําการตรวจสอบเงื่อนไขก่อนซึ่งหากมีค่าเป็นจริงถึงจะทําคําสั่งในบล็อก { }

ตัวอย่างโปรแกรมที่ 4.7 การใช้คําสั่ง do - while

     เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ TestDoWhile.php แสดงค่าตัวเลข 1 ถึง 10

     Source Code:

คลิกที่ปุ่ม RUN ด้านซ้ายเพื่อแสดงผลลัพธ์

     ผลรันโปรแกรม TestDoWhile.php


     อธิบายโปรแกรม TestDoWhile.php

          บรรทัดที่  1  เปิดแท็กภาษา PHP

          บรรทัดที่  2  กำหนดตัวแปร i เป็นตัวแปรชนิดเลขจำนวนเต็ม มีค่าเท่ากับ 1

          บรรทัดที่  3 - 6 วนลูปด้วย do - while  ให้แสดงค่าของ i และทำการเพิ่มค่า i อีก 1

          บรรทัดที่ 6 ตรวจสอบเงื่อนไข ค่าของ I มีค่าน้อยกว่าหรือเท่ากับ 10 หรือไม่ ถ้าเป็นจริงคือ น้อยกว่าหรือเท่ากับ 10 จริง ให้กลับไปทำงานในบรรทัดที่ 4-5 โดยให้แสดงค่าของ i และทำการเพิ่มค่า i อีก 1 จนกว่าค่าของ i จะมีค่ามากกว่า 10 จึงจะออกจากลูป do - while

          บรรทัดที่  7  ปิดแท็กภาษา PHP