การวนซ้ำด้วยคำสั้ง For
การควบคุมการทำซ้ำด้วยคำสั่ง for
การซ้ำแบบ for หรือ loop for จะเป็นการให้โปรแกรมทำซ้ำจนกว่าค่าตัวแปรจะครบตามที่ตั้งไว้หรือทำตามเงื่อนไขที่กำหนด เริ่มแรกโปรแกรมจะกำหนดค่าเริ่มต้นให้กับตัวแปรเริ่มต้น (initialization) จากนั้นจะตรวจสอบเงื่อนไข ถ้าหากเงื่อนไขเป็นจริงจะทำสเตตเมนต์ที่ตามมา และปรับค่าตัวแปรควบคุม โดยรูปแบบของคำสั่งเป็นดังนี้
รูปแบบ
ในส่วนของ condition บางครั้งจะเรียกตัวแปรควบคุมลูป ( loop control variable ) เริ่มต้นคำสั่งจะทำส่วนกำหนดค่าเริ่มต้น (initial value) จากนั้นจะตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ ถ้าเงื่อนไขเป็นจริงจะทำตามสเตตเมนต์ที่จะทำซ้ำแล้วกลับมาทำส่วน update ซึ่งส่วนมากแล้วจะเป็นการเพิ่มค่าหรือลดค่าตัวแปร จากนั้นจะตรวจสอบเงื่อนไขใหม่โดยทำแบบนี้ไปจนกว่าเงื่อนไขจะเป็นเท็จ สเตตเมนต์ที่ทำซ้ำอาจเป็นสเตตเมนต์รวม (Compound Statement) ก็ได้ แต่ต้องอยู่ภายในเครื่องหมาย { กับ }
สำหรับในส่วนของการกำหนดค่าเริ่มต้น และ update มักจะเขียนเป็นคำสั่งเดียว แต่ถ้าหากต้องการใช้หลายคำสั่งจะใช้เครื่องหมาย comma คั่นระหว่างคำสั่ง
ตัวอย่างเช่น ถ้าเขียนคำสั่งดังต่อไปนี้
การซ้ำแบบ for หรือ loop for จะเป็นการให้โปรแกรมทำซ้ำจนกว่าค่าตัวแปรจะครบตามที่ตั้งไว้หรือทำตามเงื่อนไขที่กำหนด เริ่มแรกโปรแกรมจะกำหนดค่าเริ่มต้นให้กับตัวแปรเริ่มต้น (initialization) จากนั้นจะตรวจสอบเงื่อนไข ถ้าหากเงื่อนไขเป็นจริงจะทำสเตตเมนต์ที่ตามมา และปรับค่าตัวแปรควบคุม โดยรูปแบบของคำสั่งเป็นดังนี้
รูปแบบ
ในส่วนของ condition บางครั้งจะเรียกตัวแปรควบคุมลูป ( loop control variable ) เริ่มต้นคำสั่งจะทำส่วนกำหนดค่าเริ่มต้น (initial value) จากนั้นจะตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ ถ้าเงื่อนไขเป็นจริงจะทำตามสเตตเมนต์ที่จะทำซ้ำแล้วกลับมาทำส่วน update ซึ่งส่วนมากแล้วจะเป็นการเพิ่มค่าหรือลดค่าตัวแปร จากนั้นจะตรวจสอบเงื่อนไขใหม่โดยทำแบบนี้ไปจนกว่าเงื่อนไขจะเป็นเท็จ สเตตเมนต์ที่ทำซ้ำอาจเป็นสเตตเมนต์รวม (Compound Statement) ก็ได้ แต่ต้องอยู่ภายในเครื่องหมาย { กับ }
สำหรับในส่วนของการกำหนดค่าเริ่มต้น และ update มักจะเขียนเป็นคำสั่งเดียว แต่ถ้าหากต้องการใช้หลายคำสั่งจะใช้เครื่องหมาย comma คั่นระหว่างคำสั่ง
ตัวอย่างเช่น ถ้าเขียนคำสั่งดังต่อไปนี้
เริ่มโปรแกรมจะใส่ค่าเริ่มต้น 1 ลงในตัวแปร number จากนั้นจะทดสอบเงื่อนไขว่าเงื่อนไขเป็นจริงหรือไม่ ถ้าเป็นจริงจะทำสเตตเมนต์และเพิ่มค่า number ขึ้นหนึ่งค่า
ในการเพิ่มค่าให้กับตัวแปรควบคุมจะเพิ่มขึ้นเป็นลำดับ โดยอาจเป็นตัวเลข 1,2,3,… หรืออักษร ‘A’,’B’,’C’, ก็ได้ดังนั้น การประกาศประเภทของตัวแปรควบคุมจะต้องให้สอดคล้องกับค่าของข้อมูลด้วย
ถ้าหากเขียนคำสั่ง for ดังต่อไปนี้
ในการเพิ่มค่าให้กับตัวแปรควบคุมจะเพิ่มขึ้นเป็นลำดับ โดยอาจเป็นตัวเลข 1,2,3,… หรืออักษร ‘A’,’B’,’C’, ก็ได้ดังนั้น การประกาศประเภทของตัวแปรควบคุมจะต้องให้สอดคล้องกับค่าของข้อมูลด้วย
ถ้าหากเขียนคำสั่ง for ดังต่อไปนี้
โปรแกรมจะพิมพ์ค่า counter ตั้งแต่ 1 ถึง 10 โดยเริ่มแรกใส่ค่าให้กับตัวแปร counter ซึ่งเป็นตัวแปรเริ่มต้นก่อน จากนั้นจะตรวจสอบเงื่อนไขว่า counter น้อยกว่าหรือเท่ากับ 10 จริงหรือไม่ ถ้าจริงจะพิมพ์ค่าใน counter และเพิ่มค่า counter ขึ้นอีกหนึ่งค่า จากนั้นจะตรวจสอบเงื่อนไขใหม่ โดยการทำงานสามารถเขียนผังงานได้ดังนี้
โปรแกรมที่ 3.10 Squares.java ตัวโปรแกรมแสดงตัวเลข 1 ถึง 10 ที่มีค่ายกกำลังสองจากโปรแกรมชุดคำสั่งในลูปจะเป็นคำสั่งแสดงผล โดย จะใช้รหัส \t ในการควบคุมการเว้นวรรค ซึ่งจะทำให้ผลลัพธ์ที่ได้ เป็นดังต่อไปนี้
การประกาศตัวแปรควบคุมลูป สามารถประกาศในคำสั่ง for เลยได้ และถ้าหากการตรวจสอบเงื่อนไขในคำสั่ง for เป็นเท็จตั้งแต่เริ่มต้นจะทำให้ไม่มีการทำคำสั่งใดๆ ในลูปเลย ตัวอย่างเช่นการเขียน สเตตเมนต์ต่อไปนี้
จากชุดคำสั่งด้านบนจะกำหนดค่าเริ่มต้นให้ count มีค่าเป็น 11 แต่เมื่อตรวจสอบเงื่อนไข count <= 10 แล้วได้ผลลัพธ์เป็นเท็จ โปรแกรมจะออกนอกลูปทันที
ในการเขียนโปรแกรมทำซ้ำ เราสามารถลดค่าให้กับตัวแปรได้เช่น ถ้าหากเขียนชุดคำสั่งดังต่อไปนี้โปรแกรมจะพิมพ์ 100 จนถึง 1
สำหรับการเพิ่มค่าหรือลดค่าให้กับตัวควบคุมลูป สามารถเพิ่มค่าขึ้นครั้งละหลายๆค่าตามต้องการได้ ตัวอย่างเช่นการเขียนคำสั่งต่อไปนี้จะพิมพ์ 0 ถึง 100 โดยเพิ่มค่าให้กับตัวแปรควบคุมลูปครั้งละ 5 ค่า
ถ้าหากต้องการให้สเตตเมนต์ที่จะทำงานซ้ำเป็นสเตตเมนต์รวม จะต้องเขียนสเตตเมนต์เป็นบล็อกโดยเขียนในเครื่องหมาย { และ } ดังตัวอย่างชุดคำสั่งต่อไปจะเป็นการเขียนโปรแกรมให้คอมพิวเตอร์แสดงตัวเลขยกกำลังสองของค่า 0 ถึง 100
ในการเขียนโปรแกรมทำซ้ำ เราสามารถลดค่าให้กับตัวแปรได้เช่น ถ้าหากเขียนชุดคำสั่งดังต่อไปนี้โปรแกรมจะพิมพ์ 100 จนถึง 1
สำหรับการเพิ่มค่าหรือลดค่าให้กับตัวควบคุมลูป สามารถเพิ่มค่าขึ้นครั้งละหลายๆค่าตามต้องการได้ ตัวอย่างเช่นการเขียนคำสั่งต่อไปนี้จะพิมพ์ 0 ถึง 100 โดยเพิ่มค่าให้กับตัวแปรควบคุมลูปครั้งละ 5 ค่า
ถ้าหากต้องการให้สเตตเมนต์ที่จะทำงานซ้ำเป็นสเตตเมนต์รวม จะต้องเขียนสเตตเมนต์เป็นบล็อกโดยเขียนในเครื่องหมาย { และ } ดังตัวอย่างชุดคำสั่งต่อไปจะเป็นการเขียนโปรแกรมให้คอมพิวเตอร์แสดงตัวเลขยกกำลังสองของค่า 0 ถึง 100
การกำหนดค่าตัวแปรเริ่มต้นในคำสั่ง for และการเขียนนิพจน์เปลี่ยนแปลงตัวแปรควบคุม สามารถกำหนดมากกว่าหนึ่งตัวได้ โดยใช้เครื่องหมาย (;) คั่นระหว่างตัวแปร ดังตัวอย่างการเขียนต่อไปนี้