คำสั่ง for มีรูปแบบดังนี้
จากรูปแบบของการใช้งานคำสั่งนี้จะเห็นว่าในวงเล็บของคำสั่ง for นั้นมี 3 ส่วนที่ต้องกำหนด คือ
1. ค่าตัวแปรเริ่มต้น ใช้กำหนดค่าเริ่มต้นของตัวแปรที่จะใช้ในการควบคุม การวนลูป
2. เงื่อนไข ใช้กำหนดเงื่อนไขการวนลูป
3. เปลี่ยนแปลงค่าตัวแปร ใช้ในการเพิ่มหรือลดค่าของตัวแปรที่ใช้ในการควบคุมการวนลูป จะเห็นว่าการใช้งานนั้นต่างจาก คำสั่ง while โดยที่คำสั่ง for นั้นจะมีการกำหนดค่าและเงื่อนไขต่างๆ ลงไปเลยทันทีเพื่อใช้ในการควบคุมการวนลูปตามที่เราต้องการ ลองมาดูตัวอย่างกันดีกว่านะค่ะ
อธิบายโปรแกรม จากโค้ดโปรแกรมนี้จะเป็นการคำนวณหาค่าผลบวกของ 1 ถึง 10 (1+2+3+4+5+6+7+8+9+10) ซึ่งใช้ลูป for นะครับโดยมีการกำหนดตัวแปร i ไว ้เป็น 1 เมื่อเริ่มเข้ามาที่ลูป ส่วนเงื่อนไขคือ i <= 10 คือ เราต้องการให้ลูปนี้วนไป 10 ครั้ง ส่วน i++ เป็นการเพิ่มค่า i ทีละ 1 เมื่อจบรอบการทำงานในแต่ละรอบนั่นเอง ลองไล่ โค้ดดูนะค่ะ
i = 1, sum = 0 + 1 จบรอบแรก sum = 1
i = 2, sum = 1 + 2 จบรอบที่สอง sum = 3
i = 3, sum = 3 + 3 จบรอบที่สาม sum = 6
i = 4, sum = 6 + 4 จบรอบที่สี่ sum = 10
i = 5, sum = 10 + 5 จบรอบที่ห้า sum = 15
i = 6, sum = 15 + 6 จบรอบที่หก sum = 21
i = 7, sum = 21 + 7 จบรอบที่เจ็ด sum = 28
i = 8, sum = 28 + 8 จบรอบที่แปด sum = 36
i = 9, sum = 36 + 9 จบรอบที่เก้า sum = 45
i = 10, sum = 45 + 10 จบรอบที่สิบ sum = 55
จะเห็นว่าในรอบสุดท้ายคือ รอบที่สิบนั้นค่า i++ ยังคงทำงานอยู่คือ จะได้ค่า i ค่าสุดท้ายเป็น 11 แต่พอนำไปเช็คที่เงื่อนไขแล้วทำให้เงื่อนไขนั้นผิดเพราะ i <= 10 นั่นเองจึง ทำให้ออกจากลูป นอกจากนี้ยังมีการใช้งานในรูปแบบอื่นอีกซึ่งฉันจะยกมาเป็นกฏให้ดูกันนะค่ะ
กฎการใช้คำสั่ง for
1. ค่าที่เพิ่มขึ้นในแต่ละรอบของตัวแปรควบคุมนั้นจะเป็นเท่าไรก็ได้ เช่น
for(int x=0 ; x<=100 ; x=x+5)
2. ค่าของตัวแปรควบคุมอาจถูกกำหนดให้ลดลงก็ได้ เช่น
for(int x=100 ; x>0 ; x- -)
3. ตัวแปรควบคุมอาจเป็นชนิด character ได้ เช่น
for(char ch =’a’ ; ch<=’z’ ; ch++)
4. ตัวแปรควบคุมสามารถมีได้มากกว่า 1 ตัวแปร เช่น
for(int x=0,y=0 ; x+y<100 ; x++,y++)
5 . ถ้ามีการละบางส่วนหรือทุกส่วนของพารามิเตอร์ในวงเล็บจะเป็นการสั่งให้ for ทำงานไม่รู้จบ เช่น
for( ; ; )
System.out.println(“ Hello”);
6. ในคำสั่ง for สามารถมีคำสั่ง for ซ้อนอยู่ภายในได้อีก เช่น
for(int x=1 ; x<=3 ; x++)
{
System.out.println(“ x = ”+x);
for(int y=1 ; x<=5 ; y++)
System.out.println(“ y = ”+y);
}
เป็นอย่างไรกันบ้างค่ะกฏการใช้งานทั้ง 6 ข้อซึ่งจะทำให้เรานำไปใช้งานในรูปแบบอื่นได้อีก ผมแนะนำว่าท่านที่ยังไม่คุ้นเคยก็ให้ฝึกฝนเขียนกันเลยนะค่ะจะได้รู้ผิดรู้ถูกและ เป็นการเพิ่มทักษะให้กับตัวเองด้วยนะค่ะ สำหรับคำสั่งในการวนลูปก็คงจะมีเพียงเท่านี้แหละครับที่ใช้งานกันบ่อยๆ ก่อนที่จะจบบทความฉันมีแบบทดสอบให้มาทำกันเล่นๆ นะครับให้ลองดูภาพต่อไปนี้ค่ะ
ในสามรูปนี้ให้เราลองเขียนโปรแกรมโดยใช้เครื่องหมาย * พิมพ์ออกมาเป็นรูปตามแบบ โดยมีข้อกำหนดว่าให้ใช้เครื่องหมาย * ได้แค่ดวงเดียวในโปรแกรม นะค่ะ ห้ามลักไก่ใช้ System.out.println(“ * * * * * ”); ออกมาแบบนี้นะค่ะ ใช้ได้แค่ดวงเดียวเท่านั้น แล้วให้มันพิมพ์ออกมาเป็นรูปดังกล่าวรูปใดรูปหนึ่งโปรแกรมละ 1 รูป ลองทำกันเล่นๆ ดูนะค่ะถือว่าเป็นการฝึกฝนการเขียนโปแกรมไปในตัว ถ้าใครอยากได้เฉลยก็ไปโพสต์บอกผมไว้ที่ webboard นะค่ะ
ดูตัวอย่าง การบวกเลขตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i,ans;
ans=0;
for(i=1;i<=100;i++){
ans=ans+i;
}
printf("answer is %d",ans);
}
ในที่นี้เราทำการกำหนดให้ตัวแปร i เป็นตัวแปรนับ ส่วน ans เป็นตัวแปรที่ใช้เก็บค่าคำตอบ ในบรรทัด for นั้นไม่มีปัญหาอะไรยกเว้น ที่เราเจอ i++ นั่นก็หมายถึง i+1 นั่นเอง คือ ในloop นี้เราจะทำการเพิ่มตัวนับ i ไปทีละ 1 สมมตินะครับสมมติ ว่าหากเราต้องการจะ แสดงเฉพาะเลขคี่ที่อยู่ระหว่าง 1 ถึง 100 เราจะทำอย่างไร ดูต่อค่ะ
ดูตัวอย่าง การแสดงเฉพาะเลขคี่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=1;i<=100;i=i+2){
printf("Odd number is %d\n",i);
}
}
นั่นคือเราก็วน loop เหมือนเดิมเพียงแต่ในแต่ละรอบนั้นเราทำการเพิ่มค่า i ไปทีละ 2 ซึ่งเดิมค่า i มีค่าเท่ากับ 1 พอ compiler มา check ว่า 1<=100 นั้นจริงไหม ปรากฎว่าจริงก็ให้ทำงานในloop ต่อ โดยมีการเพิ่มค่า i=i+2 นั่นหมายความว่าตอนนี้ i มีค่าเป็น 1+2 ก็คือ 3 นั่นเอง ในรอบต่อมาเราก็แสดงค่า 3 ทำเช่นนี้ไปเรื่อยๆ เราก็จะได้เฉพาะเลขคี่ 1,3,5,7,...,99
สมมตินะครับสมมติ ว่าหากเราต้องการจะ แสดงเฉพาะเลขคู่ที่อยู่ระหว่าง 1 ถึง 100 เราจะทำอย่างไร ดูต่อค่ะ
ดูตัวอย่าง การแสดงเฉพาะเลขคู่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=2;i<=100;i=i+2){
printf("Odd number is %d\n",i);
}
}
เช่นเคยค่ะไม่ค่อยแตกต่างอะไรกับการ แสดงเฉพาะเลขคี่ แต่จะต่างกันตรงการเริ่มต้นค่าให้กับตัวนับค่ะ นั่นคือเราทำการเริ่มต้นค่า ตัวนับด้วย 2 นั่นคือตัวแปร i จะมีค่าเริ่มต้นเป็น 2 ในการวน loop รอบแรกค่ะจากนั้นก็เหมือนเดิมในแต่ละรอบ ค่า i จะถูกเพิ่มทีละ 2 ครับ ดังนั้นสุดท้ายเราก็จะได้ 2,4,6,8,10,...,100 ไปตามระเบียบ
และหากเราต้องการจะแสดงเฉพาะเลขคู่นี่แหละแต่ต้องการให้ แสดง ถอยหลัง คือ แสดง 100,98,96,94,...,8,6,4,2 จะทำได้อย่างไร
ดูตัวอย่าง การแสดงเฉพาะเลขคู่(ถอยหลัง)ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100#include<stdio.h>
main()
{
int i,ans;
ans=0;
for(i=1;i<=100;i++){
ans=ans+i;
}
printf("answer is %d",ans);
}
ในที่นี้เราทำการกำหนดให้ตัวแปร i เป็นตัวแปรนับ ส่วน ans เป็นตัวแปรที่ใช้เก็บค่าคำตอบ ในบรรทัด for นั้นไม่มีปัญหาอะไรยกเว้น ที่เราเจอ i++ นั่นก็หมายถึง i+1 นั่นเอง คือ ในloop นี้เราจะทำการเพิ่มตัวนับ i ไปทีละ 1 สมมตินะครับสมมติ ว่าหากเราต้องการจะ แสดงเฉพาะเลขคี่ที่อยู่ระหว่าง 1 ถึง 100 เราจะทำอย่างไร ดูต่อค่ะ
ดูตัวอย่าง การแสดงเฉพาะเลขคี่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=1;i<=100;i=i+2){
printf("Odd number is %d\n",i);
}
}
นั่นคือเราก็วน loop เหมือนเดิมเพียงแต่ในแต่ละรอบนั้นเราทำการเพิ่มค่า i ไปทีละ 2 ซึ่งเดิมค่า i มีค่าเท่ากับ 1 พอ compiler มา check ว่า 1<=100 นั้นจริงไหม ปรากฎว่าจริงก็ให้ทำงานในloop ต่อ โดยมีการเพิ่มค่า i=i+2 นั่นหมายความว่าตอนนี้ i มีค่าเป็น 1+2 ก็คือ 3 นั่นเอง ในรอบต่อมาเราก็แสดงค่า 3 ทำเช่นนี้ไปเรื่อยๆ เราก็จะได้เฉพาะเลขคี่ 1,3,5,7,...,99
สมมตินะครับสมมติ ว่าหากเราต้องการจะ แสดงเฉพาะเลขคู่ที่อยู่ระหว่าง 1 ถึง 100 เราจะทำอย่างไร ดูต่อค่ะ
ดูตัวอย่าง การแสดงเฉพาะเลขคู่ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100
#include<stdio.h>
main()
{
int i ;
for(i=2;i<=100;i=i+2){
printf("Odd number is %d\n",i);
}
}
เช่นเคยค่ะไม่ค่อยแตกต่างอะไรกับการ แสดงเฉพาะเลขคี่ แต่จะต่างกันตรงการเริ่มต้นค่าให้กับตัวนับค่ะ นั่นคือเราทำการเริ่มต้นค่า ตัวนับด้วย 2 นั่นคือตัวแปร i จะมีค่าเริ่มต้นเป็น 2 ในการวน loop รอบแรกค่ะจากนั้นก็เหมือนเดิมในแต่ละรอบ ค่า i จะถูกเพิ่มทีละ 2 ครับ ดังนั้นสุดท้ายเราก็จะได้ 2,4,6,8,10,...,100 ไปตามระเบียบ
และหากเราต้องการจะแสดงเฉพาะเลขคู่นี่แหละแต่ต้องการให้ แสดง ถอยหลัง คือ แสดง 100,98,96,94,...,8,6,4,2 จะทำได้อย่างไร
#include<stdio.h>
main()
{
int i ;
for(i=100;i>=1;i=i-2){
printf("Odd number is %d\n",i);
}
}
นั่นคือในบรรทัด for เรากำหนดค่าเริ่มต้นเป็น 100 ที่สำคัญคือเงื่อนไขเดิมเรากำหนดเป็น น้อยกว่าเท่ากับ แต่ในที่นี้เรากำหนดเป็นว่า i มากกว่าเท่า 1 loop จึงจะยังทำงานต่อ และที่สำคัญเช่นเดียวกันคือเราทำการลดค่า i ไปทีละ 2 ครับ เท่านี้เราก็จะได้ ค่า 100,98,96,...,4,2 แล้วค่ะขอให้ลองไล่โปรแกรมดูสักนิด แล้วก็จะเข้าใจโดยกระจ่างเองค่ะ
แหล่งที่มา :: Java