4.3 การเขียนโปรแกรมแบบวนซ้ำ
การเขียนโปรแกรมแบบวนซ้ำ (Repetition) หรือ กลุ่มคําสั่งในการวนรอบการทํางาน (Loop) ซึ่งกลุ่มคําสั่งเหล่านี้จะทําซ้ำ (วน Loop) เมื่อเงื่อนไขเป็นจริง (True) ซึ่งชุดคําสั่งโครงสร้างแบบทําซ้ำ ประกอบด้วยคําสั่ง รูปแบบการวนซ้ำแบ่งออกเป็น 3 รูปแบบ ได้แก่
4.1.1 การวนซ้ำโดยใช้ For
คําสั่งวนซ้ำแบบ For จะมีลักษณะการทํางานแบบวนซ้ำที่รู้จํานวนรอบที่แน่นอน ซึ่งจะใช้ตัวแปร 1 ตัวในการนับจํานวนรอบว่าครบจํานวนรอบที่กําหนดหรือไม่ ตัวแปรที่ทําหน้าที่เป็นตัวนับในการวนซ้ำสามารถนับได้ทั้งแบบเดินหน้าและแบบถอยหลัง (การเพิ่มค่าขึ้นครั้งละ 1 ค่าหรือมากกว่า หรือการลดค่าลงครั้งละ 1 ค่า หรือน้อยกว่า สามารถแสดงขั้นตอนการทํางานได้ดังผังงานในรูปที่ 4.1
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:
ผลรันโปรแกรม 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:
ผลรันโปรแกรม 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:
ผลรันโปรแกรม 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:
ผลรันโปรแกรม 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:
ผลรันโปรแกรม 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
คําสั่ง while มีรูปแบบดังนี้
คําสั่ง while จะทําชุดคําสั่งและคําสั่งเปลี่ยนแปลงค่าที่อยู่ในบล็อก { } ถ้าเงื่อนไขยังมีค่าเป็นจริง คําสั่งที่อยู่ในบล็อก { } จะต้องมีคําสั่งในการเปลี่ยนแปลงค่า เพื่อเปลี่ยนค่าตัวแปรให้มีค่าเป็นเท็จมิฉะนั้นแล้วโปรแกรมจะทําคําสั่งที่อยู่ในบล็อกแบบไม่มีที่สิ้นสุด
ตัวอย่าง การใช้งานเป็นดังชุดคําสั่งต่อไปนี้ตัวอย่าง การใช้งาน
ผลลัพธ์ที่ได้จากการทําคําสั่งจะเป็นดังนี้
ในลูปแรก n มีค่าเท่ากับ 7 ทําให้เงื่อนไขเป็นจริง โปรแกรมจะทํางานในลูปซึ่งจะทําให้ n มีค่าเป็น 2 ต่อมาโปรแกรมตรวจสอบเงื่อนไขเพื่อทําลูปที่สอง พบว่าเงื่อนไขเป็นจริงเมื่อทํางานลูปที่สองทําให้ n มีค่าเป็น -3 เมื่อโปรแกรมตรวจสอบเงื่อนไขพบว่าเงื่อนไขเป็นเท็จจึงไม่ทําลูปที่สาม การทํางาน จึงจบแค่สองลูป
ตัวอย่างโปรแกรมที่ 4.6 การใช้ while
เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ TestWhile.php แสดงค่าตัวเลข 1 ถึง 10
Source Code:
ผลรันโปรแกรม 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
คําสั่ง do - while มีรูปแบบ คําสั่งดังนี้
ข้อแตกต่างของคําสั่ง while กับคําสั่ง do - while คือ คําสั่ง do - while ทําคําสั่ง
ในบล็อก { } อย่างน้อยหนึ่งครั้งแล้วจึงทําการตรวจสอบเงื่อนไข ขณะที่คําสั่ง while ทําการตรวจสอบเงื่อนไขก่อนซึ่งหากมีค่าเป็นจริงถึงจะทําคําสั่งในบล็อก { }
ตัวอย่างโปรแกรมที่ 4.7 การใช้คําสั่ง do - while
เขียนคําสั่งโปรแกรมภาษาพีเอชพี ตามตัวอย่าง บันทึกไฟล์ชื่อ TestDoWhile.php แสดงค่าตัวเลข 1 ถึง 10
Source Code:
ผลรันโปรแกรม 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