วันจันทร์ที่ 14 มีนาคม พ.ศ. 2554

คำสั่ง for

สวัสดีค่ะ ในบทความนี้ฉันจะพูดถึงคำสั่งที่ใช้วนลูปคำสั่งสุดท้ายกันนะค่ะ มือเก่าที่เข้ามาอ่านน่าจะพอเดาได้นะค่ะว่าคำสั่งอะไร คำสั่งที่ว่านั้นก็คือคำสั่ง for ค่ะ ซึ่งคำสั่งนี้ถ้าเราเข้าใจได้ดีจะทำให้ใช้งานมันได้สะดวกสบายขึ้น คำสั่งนี้มีเงื่อนไขในการใช้งานอยู่พอสมควรเราลองมาดูกันเลยนะค่

คำสั่ง 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 ;
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 


1 ความคิดเห็น:

  1. casino slots online,nfl games,nba finals 2021
    The best and worst is for 안동 출장안마 the money. 구미 출장샵 The best and worst is for the money. In the 광주 출장샵 future, there are no more The 경기도 출장샵 casino games 평택 출장마사지 that are played and

    ตอบลบ