การควบคุมทิศทางการทำงานของโปรแกรม � การทำซ้ำ (Repetition)
1
บทที่ 4-2
Repetition in C Programming
2
คำสั่ง for
ตัวแปรดัชนี (index) คือ ตัวที่ใช้ควบคุมการทำงานในวงรอบ
3
คำสั่ง for
for (index initialization; Condition; Update Index)
Statement ;
ตัวอย่างเช่น
หรือ
4
ผลลัพธ์ของ Loop นี้จะแสดงคำว่า RMUTT ทั้งหมด 10 ครั้ง
(รอบที่ 1-10)
ผลลัพธ์ของ Loop นี้จะแสดงคำว่า RMUTT ทั้งหมด 10 ครั้ง
(รอบที่ 10-1)
for (n = 1; n <= 10; n++) printf("RMUTT\n"); |
for (n = 10; n >= 1; n--) printf("RMUTT\n"); |
คำสั่ง for
จะทำให้ไม่เกิดการทำซ้ำคำสั่งต่อจากนี้ เนื่องจาก ; หมายถึง จบหนึ่งคำสั่ง ดังนั้นคำสั่งที่ถูกทำซ้ำคือ คำสั่งที่อยู่ก่อนหน้า ; ซึ่งก็คือ ไม่มีคำสั่งใด ๆ นั่นเอง
5
for (n = 0; n <= 9; n++) { printf("Hello"); printf("World"); } |
for (n=0; n<=9; n++) ; |
คำสั่ง for
**ในที่นี้ Index มี 2 ตัวคือ ตัวแปร x และตัวแปร y **
6
จากตัวอย่าง แสดงให้เห็นว่า ในส่วนของ index initialization สามารถมีตัวแปรดัชนี (index) ได้มากกว่า 1 ตัว และในส่วนของ condition ก็สามารถใส่นิพจน์การคำนวณได้ด้วย
0+0 = 0
1+5 = 6
2+10 = 12
3+15 = 18
4+20 = 24
for (int x=0,y=0; x+y<30; ++x, y+=5) printf("%d+%d = %d\n", x, y, x+y); |
การประยุกต์ใช้งาน Nested for
7
1x1 = 1
1x2 = 2
.
.
1x12 = 12
*มุมขบคิด*
ถ้าต้องการให้โปรแกรมนี้มีการแสดงทีละบรรทัดตามการกด enter จะต้องเปลี่ยนโปรแกรมให้เป็นแบบใด
for (int m = 1; m <= 12; m++) { for (int n = 1; n <= 12; n++) printf("%dx%d = %d\n",m,n,m*n); } |
ตัวอย่างการใช้งาน for
8
การทำงาน
โปรแกรมจะทำการวนรอบเพื่อรับค่าตัวอักษรเรื่อย ๆ จนกว่าตัวอักษรที่รับเข้ามาเป็นอักขระ ‘q’ จึงจะจบการวนรอบ
โปรแกรมนี้แสดงให้เห็นถึง การกำหนดค่าให้กับตัวแปรดัชนี (index) อีกรูปแบบหนึ่ง โดยการใช้ฟังก์ชัน getche( ) และมีการ update ค่าด้วยวิธีการรับค่า มิใช่การเพิ่มหรือลดค่า index
ผลลัพธ์การทำงาน
123abcq
q has been found
1 2 3 4 5 67 8 9 | #include <stdio.h> #include <conio.h> int main(void) { char c; for (c=getche( ); c!=‘q’; c=getche( )); printf("\n q has been found \n"); return(0); } |
ตัวอย่างการใช้งาน for
9
หมายเหตุ
ผลลัพธ์การทำงาน
This is odd number (1)
This is odd number (3)
This is odd number (5)
This is odd number (7)
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main(void) { int i; for (i=1; i<100; i++) { if ((i%2)== 0) continue; printf("This is odd number (%d)\n", i); if (i>5) break; } return(0); } |
ตัวอย่างการใช้งาน for
10
มีลวดหนามยาว 200 เมตร จะล้อมลวดหนามแต่ละด้านอย่างไร ให้มีพื้นที่ที่มากที่สุด และพื้นที่นั้นมีขนาดเท่าไร
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(void) { int x, area, max; printf("Value of x Area\n"); max = 0; for (x=1; x<100; x++) { area = x*(100-x); printf("%d %d\n",x,area); if (area > max) max = area; } printf("Maximum area is %d\n", max); return(0); } |
ผลลัพธ์การทำงาน
Value of x Area
1 99
… …
10 900
11 979
… …
50 2500
… …
58 2436
… …
99 99
Maximum area is 2500
คำสั่ง while
11
คำสั่ง while
while (condition)
Statement ;
ตัวอย่างเช่น
ตัวอย่างเช่น
12
ผลลัพธ์การทำงาน
1. RMUTT
2. RMUTT
3. RMUTT
4. RMUTT
5. RMUTT
n = 1; while (n <= 5) { printf("%d. RMUTT\n", n); n++; } |
ตัวอย่างการใช้งาน while
13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(void) { int sum, n; sum = 0; n = 1; while (n <= 10) { sum = sum+n; n++; } printf("Summation of 1-10 is : %d", sum); return(0); } |
ผลลัพธ์การทำงาน
Summation of 1-10 is 55
คำสั่ง do-while
14
ตัวอย่างการใช้งาน do-while
do {
statement in do-while
} while (condition);
ตัวอย่างเช่น
15
ผลลัพธ์การทำงาน
1. RMUTT
2. RMUTT
3. RMUTT
4. RMUTT
5. RMUTT
n = 1; do { printf("%d. RMUTT\n", n); n++; } while (n <= 5); |
ตัวอย่างการใช้งาน do-while
16
do { printf("****Menu****\n"); printf(" 1. Show odd\n"); printf(" 2. Show even\n"); printf(" 3. Exit\n"); printf(" Please enter number [1-3] : "); scanf("%d", &choice); … } while (choice != 3); |
สรุปการควบคุมทิศทางการทำงานของโปรแกรม � การทำซ้ำ
17
i = 1;
while (i <= 5)
{
printf("RMUTT");
i++;
}
i = 1;
do {
printf("RMUTT");
i++;
} while (i<=5);
for(i=1; i<=5; i++)
{
printf("RMUTT");
}
การควบคุมทิศทางการทำงานของโปรแกรม � การทำซ้ำ (Repetition)
18
จบบทที่ 4-2