อ.อรวรรณ เชาวลิต orawan@su.ac.th For คำสั่งวนซ้ำ อ.อรวรรณ เชาวลิต orawan@su.ac.th
For(1) เป็นคำสั่งให้มีการทำงานเป็นวงจรซ้ำ เหมือนกับ do-while โดยมีรูปแบบคำสั่งดังนี้ Expression -> คำสั่งที่ใช้สำหรับกำหนดค่าเริ่มต้นให้กับตัวแปรที่จำทำหน้าที่ควบคุมวงจรของคำสั่ง for Condition -> เงื่อนไขที่ใช้ในการควบคุมการทำงานของตัวแปรที่ทำหน้าที่ควบคุมวงจร โดยถ้าเงื่อนไขจริงจะทำในวงจรถ้าเงื่อนไขไม่จริงจะออกจากวงจร Increment -> คำสั่งที่จำกำหนดให้เพิ่มขึ้นของตัวแปรที่จำทำหน้าที่ควบคุมวงจรในแต่ละรอบ Statement -> คำสั่งใดๆในภาษา C ถ้ามีมากกว่า 1 คำสั่งต้องกั้นบล็อกให้กับกลุ่มคำสั่งเหล่านั้นด้วย { } for (expression; condition; increment) statement;
ตั้งค่าเริ่มต้นต่างๆ คำสั่งหรือกลุ่มคำสั่ง ผังงาน สำหรับประโยคควบคุม for Loop ค่าของนิพจน์ทดสอบ ตั้งค่าเริ่มต้นต่างๆ เท็จ คำสั่งหรือกลุ่มคำสั่ง ที่ทำซ้ำ เปลี่ยนค่า counter จริง ออกจาก for loop
แสดงการพิมพ์ค่า 1 ถึง 100 ออกมาทางหน้าจอภาพโดยใช้คำส่ง for #include <stdio.h> main() { int x; for (x=1;x<=100; x++ ) printf("%d \n",x); } return 0;
กฎในการใช้คำสั่ง for for (x=0;x<=100;x=x+5) printf(“%d\n”,x); 1 ค่าที่เพิ่มขึ้นในแต่ละรอบของตัวแปรควบคุมนั้นจะเป็นเท่าไรก็ได้เช่น for (x=0;x<=100;x=x+5) printf(“%d\n”,x); หมายความว่า จะพิมพ์ค่า x จาก 5,10,15 ไปเรื่อยๆจนถึง 200 นั่นคือ ค่าx เพิ่มขึ้นครั้งละ 5
กฎในการใช้คำสั่ง for for (x=100; x>0 ; x--) printf(“%d\n”,x); 2 ค่าที่เพิ่มขึ้นของตัวแปรควบคุมถูกกำหนดให้ลดลงได้เช่น for (x=100; x>0 ; x--) printf(“%d\n”,x); หมายความว่า จะพิมพ์ค่า x จาก 100,99,98 ไปเรื่อยๆจนถึง 0 นั่นคือ ค่าของx จะถูกกำหนดให้ลดลงรอบละ 1
กฎในการใช้คำสั่ง for for (ch=‘a’; ch<=‘z’ ; ch++) 3 ตัวแปรควบคุมอาจเป็นชนิด character เช่น for (ch=‘a’; ch<=‘z’ ; ch++) printf(“ASCII = %c DECIMAL =%d\n”, ch, ch ); หมายความว่า ให้พิมพ์รหัส ASCII กับค่า DECIMALL ของตัวอักษร a ถึง z ออกมาให้บนหน้าจอ
กฎในการใช้คำสั่ง for for (x=0; y=0;x+y<100;++x ;++y) 4 ตัวแปรควบคุมสามารถมีได้มากกว่า 1 ตัวแปร เช่น for (x=0; y=0;x+y<100;++x ;++y) printf(“%d\n”,x+y); หมายความว่า ตัวแปร x,y จำทำหน้าที่เป็นตัวควบคุมการทำงานของวงจรทั้ง 2 ตัวโดยจะหยุดทำงานเมื่อ x + y มีค่ามากกว่า 100 จะเพิ่มขึ้นครั้งล่ะ 1 เสมอ
กฎในการใช้คำสั่ง for for (x=0;x!=10) { scanf(“%d”,&x); 5 ถ้ามีการละส่วนของ increment ในรูปแบบจะทำให้เกิดการทำงานเป็นวงจนโดยค่าของตัวแปรควบคุมจะไม่เปลี่ยนแปลงและจะออกจากการทำงานเป็นวงจรเมื่อเงื่อนไขเป็นเท็จเหมือนเดิม for (x=0;x!=10) { scanf(“%d”,&x); printf(“ PRINT %d\n”,x); }
กฎในการใช้คำสั่ง for for (;;) printf(“This loop will run forever \n”); 6 ถ้ามีการละครั้ง expression, condition, increment เลยจะเป็นการสั่งให้ทำงานในวงจร for โดยไม่รู้จบก็ทำได้โดยใช้คำสั่ง break เข้ามาช่วย เช่น for (;;) printf(“This loop will run forever \n”); หมายความว่า คอมพิวเตอร์จะพิมพ์ This loop will run forever ออกมาไม่รู้จบ
กฎในการใช้คำสั่ง for for (;;){ ch = getch(); if (ch == ‘A’) break; } 6 (ต่อ) for (;;){ ch = getch(); if (ch == ‘A’) break; } printf(“ you typed is ‘A’ ”); หมายความว่า จะมีการรับค่ามาเก็บไว้ในตัวแปร ch ไม่รู้จบจนกว่าวค่าใน ch เป็นค่า A จะออก จากวงจรลงมาพิมพ์คำว่า you typed is ‘A’
กฎในการใช้คำสั่ง for for (x=1;x<=3;x++){ printf(“x =%d \n”,x); for (y=1;y<=5;y++) printf(“y=%d \n”,y); }
คำสั่ง break เป็นคำสั่งที่ให้ออกจากการทำงานของคำสั่ง case หรือจากการทำงานเป็นวงจร เพื่อให้ไปทำงานยังคำสั่งที่อยู่ต่อจากคำสั่งที่ให้ทำงานนั่นคือจะเป็นคำสั่งที่ใช้ภายในคำสั่ง switch, for , do while นั่นเอง ตัวอย่าง main() { int t; for (t=0;t<100;t++){ printf(“%d \n”,t); if (t==10) break;} printf(“END OF JOB”); } ในวงจร for จริงๆ ต้อง loop 100 ครั้งแต่เนื่องจากคำสั่ง if การทำงาน จึงวนไม่ถึง 100 ครั้ง จะวน t มีค่าเท่ากับ 10 ก็จะออกจากคำสั่ง loop ด้วย break มาทำคำสั่ง printf โดยพิมพ์ค่า END OF JOB มาให้
คำสั่ง Continue เป็นคำสั่งที่ให้กลับไปทำยังคำสั่งแรกของคำสั่งควบคุม for, while ,do while ใหม่ ตัวอย่าง จงพิมพ์ค่าเลขคู่จาก 0 ถึง 10 ออกมาบนหน้าจอภาพ main() { x=0 => 0 int x; x=1 for(x=0;x<=10;x++){ x=2=>2 if(x%2 != 0) continue; x=3 printf(“%d \n”,x); x=4=>5 }
โปรแกรมรับค่าตัวเลขจากแป้นพิมพ์และแสดงค่าตัวเลขที่รับมาจากหน้าจอ เป็นจำนวนสิบรอบ #include <stdio.h> void main() { int x; int i; for(i=0;i<=10;i++){ printf("Enter number %i =",i); scanf("%d",&x); printf(“Your number =%d \n",x); }