ครั้งที่ 4 “for statement”
เมื่อไหร่จึงใช้คำสั่ง for - เมื่อต้องการทำงานซ้ำ ๆ - เมื่อรู้ว่าจะต้องทำซ้ำกี่ครั้ง
หากมีเพียง 1 คำสั่ง ไม่ต้องเขียน { } รูปแบบคำสั่ง for for(ตัวนับ = ค่าเริ่มต้น; เงื่อนไข; เปลี่ยนค่าตัวนับ) { คำสั่ง 1; คำสั่ง 2; คำสั่ง 3; …........ ……… } หากมีเพียง 1 คำสั่ง ไม่ต้องเขียน { }
คำสั่ง for (for Statement) (ต่อ) i = 1; i<=10; i++ Statement 1 Statement 3 Statement 2
Ex1 จงเขียนโปรแกรมแสดงการพิมพ์ค่า 1 – 100 ออกทางหน้าจอโดยใช้คำสั่ง for #include<stdio.h> void main() { int i; for (i=1; i <= 100; i++) printf(“%d\n”,i); }
กฎการใช้คำสั่ง for 1.การเพิ่มค่าในแต่ละรอบจะเป็นเท่าไรก็ได้ เช่น for(x = 0; x<=100; x+= 5) printf(“%d\n”,x); 2.ในส่วนของการเปลี่ยนค่า นอกจากการเพิ่มค่า (increment) สามารถกำหนดให้มีการลดค่าของตัวแปรที่ใช้ในการวนรอบได้ for(x = 100; x>0; x--)
กฎการใช้คำสั่ง for (ต่อ) 3.ตัวแปรที่ใช้ในการวนรอบอาจกำหนดให้เป็นชนิด char ได้ for(ch = ‘a’; ch<=‘z’; ch++) printf(“character = %c\n”,ch); 4.ตัวแปรที่ใช้ในการวนรอบ (ควบคุมการทำงาน) มีได้มากกว่า 1 ตัว for(x = 0,y=0; x+y<100; x++,y++) printf(“%d\n”,x+y);
Ex2 จากโปรแกรม จะได้ผลลัพธ์เป็นอย่างไร #include <stdio.h> #include <conio.h> void main() { int count; clrscr(); for (count = 1; count <=10; count+=2) printf("%d\n", count); getch(); } ตอบ
count=1;count<=5;count++ Flowchart count=1;count<=5;count++ print count Start Stop
Ex3 จากโปรแกรม จะได้ผลลัพธ์เป็นอย่างไร #include <stdio.h> #include <conio.h> void main() { int count; clrscr(); for (count = 10; count >= 0; count -= 2) printf( "%2d\n",count ); getch(); } ตอบ
Flowchart ? Start
Ex 4 จงเขียนโปรแกรมเพื่อแสดงข้อความ “I love BC322” ให้ปรากฏบนจอภาพทั้งหมด 20 บรรทัด #include<stdio.h> int main() {
Ex5 จากโปรแกรม จะได้ผลลัพธ์เป็นอย่างไร #include <stdio.h> #include <conio.h> void main() { char ch; clrscr(); for (ch = 'a'; ch <= 'z'; ch++) printf( "%c", ch ); } รหัสแอสกี (ASCII) Dec Char 97 a 98 b 99 c 120 x 121 y 122 z ตอบ
Ex6 จงเขียนโปรแกรมเพื่อให้ได้ผลลัพธ์ดังนี้ Z X V T R P N L J H F D B
Ex7 ผลลัพธ์ที่ได้จากโปรแกรมนี้เป็นอย่างไร #include <stdio.h> #include <conio.h> int main() { int i; clrscr(); for (i = 1; i <= 5; i++) printf( "2 * %d = %2d\n", i, 2 * i ); return 0; }
Ex8 กรณีที่มีหลายคำสั่งใน loop for #include <stdio.h> #include <conio.h> int main() { int i, square; clrscr(); for (i = 1; i <= 5; i++) square = i * i; printf( "Square of %d is %2d\n", i, square ); } return 0; Square of 1 is 1 Square of 2 is 4 Square of 3 is 9 Square of 4 is 16 Square of 5 is 25
Ex9 /* Print 1 - 50 */ /* Each line contains 5 numbers */ #include <stdio.h> #include <conio.h> #define MAX 50 int main() { int num; clrscr(); for (num = 1;num <= MAX;num++) printf("%4d", num); if (num % 5 == 0) printf( "\n" ); } return 0; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Ex10 จงเขียนโปรแกรมเพื่อแสดงเลขคู่ 2-100 โดย 1 บรรทัดแสดงตัวเลข 5 ตัว 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
Solution Ex10
Ex11 จงเขียนโปรแกรมเพื่อรับน้ำหนักของเพื่อน 20 คน แล้วหาค่าน้ำหนักรวม Input Enter weight 1 : 45 Enter weight 2 : 69 ... … Enter weight 20 : 80 Output Summary of Weights = 1560 kg.
Flowchart ? START
Solution Ex11
ข้อควรระวัง คำสั่ง (Statements) ผลลัพธ์ (Output) int i, product; 1 2 3 for (i = 1; i <= 3; i++) printf( “%d\n”, i ); 4 ให้ระมัดระวังการใช้ เครื่องหมาย ; for (i = 1; i <= 3; i++); printf(“%d\n”, i); for (i = 1; i <= 3; i++) { product = 2 * i; printf(“%d\n”, product); } 2 4 6 อย่าให้การเว้นระยะ ย่อหน้า (indentation) ทำให้เกิดความสับสนได้ for (i = 1; i <= 3; i++) product = 2 * i; printf(“%d\n”, product); 6
คำสั่ง break; คำสั่งที่ให้หลุดออก case หรือ จบการทำงานเป็น loopใช้กับคำสั่ง switch..case, for, หรือ เป็น loop ไม่จบสิ้น #include<stdio.h> int main() { int i; for(i=0;i<100;i++) printf(“i = %d\n”,i); break; if (i == 10) printf(“Continue\n”); } printf(“End of job\n”); return 0; ถ้านำไปวางไว้ใน loop เจอเมื่อไหร่ หลุดออกจาก loop ทันที ถึงแม้จะยังทำ ไม่เสร็จ
ใส่เครื่องหมาย { } ครอบได้ Nested for Statement for (……………) for (…………….) { ……………… } ใส่เครื่องหมาย { } ครอบได้
Ex12 /* Nested for */ #include <stdio.h> #include <conio.h> void main() { int in, out; clrscr(); for ( out = 1; out <= 3; out++ ) printf( "out %d\n", out ); for ( in = 1; in <= 5; in++ ) printf( "in %d\n", in ); printf( "\n" ); } out 1 in 1 in 2 in 3 in 4 in 5 out 2 out 3
Ex13 จงหาผลลัพธ์ของโปรแกรมต่อไปนี้ #include <stdio.h> #include <conio.h> void main() { int row, col; clrscr(); for ( row = 1; row <= 3; row++ ) for ( col = 1; col <= 5; col++ ) printf( "%c", '*' ); printf( "%c", '\n' ); }
Ex14 จงเขียนโปรแกรมเพื่อให้ได้ผลลัพธ์ดังนี้ * ** ***
Solution Ex14
Ex15 จงเขียนโปรแกรมเพื่อให้ได้ผลลัพธ์ดังนี้ A AB ABC ABCD
Solution Ex15