บทที่ 7 การเขียนโปรแกรม แบบวนรอบท้าซ...
TRANSCRIPT
บทท 7 การเขยนโปรแกรมแบบวนรอบทาซ า (Loop)
รายวชา สธ 113 การออกแบบโปรแกรมทางธรกจเบองตน
อ.อภพงศ ปงยศ
Overview
การวนรอบทาซา (Loop)
คาสง while Statement
คาสง do-while Statement
คาสง for Statement
คาสง break และ continue
2
การวนรอบทาซ า (Loop)
ในการเขยนโปรแกรม จะมการประมวลผลซา (Loop หรอ Iteration) เพอให โปรแกรมทางานตาม Statement หรอการประมวลผลทกาหนดไว ซากนมากกวา 1 ครง โดยไมจ ำเปนทจะตองเขยน Statement นน ซ ำไปซ ำมำในโคด
การทางานจะทางานตาม Statement ไปจนหมด แลวถาหากเงอนไขทกาหนดไวใหทาซายงเปนจรง โปรแกรมจะวนกลบไปทางานตาม Statement อกรอบจนกวาเงอนไขทกาหนดไวจะเปนเทจ จงจะออกจากคาสงทาซา
3
สวนประกอบของ Iteration
มอย 3 ประเภท 1) Initialization คอ การกาหนดคำเรมตนของตวแปรทจะเปนเงอนไขในการ
iterationเชน x = 1
2) Testing คอ การทดสอบวา เงอนไขททาการ Iteration นนยงเปนจรงหรอไม จะมการทา Iteration ไปเรอยๆ หากเงอนไขยงเปนจรง
เชน x < 20 3) Incrementing เปนการเปลยนแปลงคาของตวแปรทใชเปนเงอนไขในการ
Iterationเชน x = x + 1 หรอ x++
4
ประเภทของ Iteration Statement
คอ วธการทาใหโปรแกรมทางานเปน Loop ได
ในภาษา C มอย 4 ชนดดวยกน คอwhile statement
do-while statement
for statement
break and continue statement
5
While Statement
มการตรวจสอบเงอนไขกอน หากเงอนไขเปนจรง โปรแกรมจะเรมทาตาม Statement ทกาหนดไว แลวกลบไปเรมตนใหม จนกวาเงอนไขจะเปนเทจ ถงจะหยดการทางาน แลวออกไปจาก Loop
6
while (condition)
{
statement1;
statement2;
...
statementN;
}
while statement flowchart
7
expr Statement 1
Statement 2
Entry
True
False
Exit
Example 1: พมพเลข 1 ถง 10 โดยใช while loop
8
Print count from 1 to 10
1 2 3 4 5 6 7 8 9 10
Example 2: เลอกการทางานของ ATM จากตวเลข Menu ทกาหนดไว หากเลอกตวเลขนอกเหนอทกาหนดไว จะตองใสตวเลขทเลอกใหม (while)
9
Example 2: Output
10
1. Withdraw
2. Show Balance
3. Transfer
Enter your choice (1-3): 5
Please input your choice correctly.
1. Withdraw
2. Show Balance
3. Transfer
Enter your choice (1-3): 1
Withdraw
do while Statement
จะแตกตางจาก while Statement ตรงทโปรแกรมจะเรมทางานตาม Statement ทระบไว โดยไมมการเชคเงอนไขกอน จากนนเมอทางานเสรจแลวหนงรอบถงจะเชคเงอนไข หากเงอนไขเปนจรง จะวนกลบไปทาซา แตหากเงอนไขเปนเทจจะจบการทางานแลวออกจาก Loop ทนท
11
do {
statement1;
statement2;
...
statementN;
} while (condition);
do while statement flowchart
12
expr
Statement 1
Statement 2
Entry
True
FalseExit
Example 3: พมพเลข 1 ถง 10 โดยใช do while loop
13
Print count from 1 to 10
1 2 3 4 5 6 7 8 9 10
Example 4: เลอกการทางานของ ATM จากตวเลข Menu ทกาหนดไว หากเลอกตวเลขนอกเหนอทกาหนดไว จะตองใสตวเลขทเลอกใหม (do-while)
14
Example 4: Output
15
1. Withdraw
2. Show Balance
3. Transfer
Enter your choice (1-3): 4
Please input your choice correctly.
1. Withdraw
2. Show Balance
3. Transfer
Enter your choice (1-3): 2
Show Balance
for Statement
ในการเขยนโปรแกรม เมอตองการใหมการประมวลผลซา (Loop) โดยทเราทรำบจ ำนวนของกำรท ำซ ำ เราสามารถใช for Loop แทน while Loop ได
เชน ทาการคานวณคาเฉลยของกลมตวเลขจานวน 10 คา
16
แตกยงสามารถใชงาน while หรอ do while ไดอยเชนกน
for statement syntax
17
for (initial; condition; incrementing) {
statement 1;
statement 2;
…
statement n;
}
เมอ
initial: การกาหนดคาเรมตนตวแปรทใชในการคมการวนรอบ
condition: เงอนไขของการวนรอบ
incrementing: การเปลยนแปลงคาของตวแปรควบคมแตละรอบ
for จะแตกตางจาก while และ do while ทใน while(condition) จะมเพยงเงอนไขทจะทาซาเทานนสวนคาเรมตนและการเปลยนแปลงคาของตวแปรควบคมการทาซาจะอยทอน เชนการกาหนดคาเรมตนจะอย ภายนอกกอนเขา Loop หรอ การเปลยนแปลงคาของตวแปรอยภายใน Statement ทอยในลป เปนตน
for statement syntax [cont.]
สามารถเปรยบเทยบกบการใช while ไดดงนinitial;
while (condition) {
statement1;
…
statementn;
incrementing;
}
18
for statement flowchart
ตวอยาง สาหรบ
for (counter = 1; counter <=10; counter = counter+1) {
statement;
}
19
Entry
counter = 1
counter <= 10
statement
counter = counter + 1
Exit
True
False
Example 5: พมพเลข 1 ถง 10 โดยใช for loop
20
Print count from 1 to 10
1 2 3 4 5 6 7 8 9 10
ตวดาเนนการสาหรบกาหนดคาแบบยอ
ในการเพมคาของตวแปรควบคมแตละรอบ หรอสวนสดทายของคาสงใน while, do while, for เราสามารถใชตวดาเนนการสาหรบกาหนดคา (Assignment Operator) แบบยอได
21
ตวดาเนนการ ตวอยางการใชงาน ความหมาย คาทได
+= c += 7 c = c + 7 c เทากบ 10
-= d -= 4 d = d – 4 d เทากบ 1
*= e *= 5 e = e * 5 e เทากบ 20
/= f /= 3 f = f / 3 f เทากบ 2
%= g %= 9 g = g % 9 g เทากบ 3
เมอกาหนดให c = 3, d = 5, e = 4, f = 6, g = 12
ตวดาเนนการสาหรบกาหนดคาแบบยอ [cont.] นอกการจากนน ยงมตวดาเนนการ ++ และ – สาหรบเพมและลดคาทละ 1 การ
ใชงานมสองแบบ คอ วางขางหนา และ วางขางหลงตวแปร หากวางขางหนาตวแปร ตวแปรจะถกเพมหรอลดคากอน จะถกนาคาไปใชงาน หากวางขางหลงตวแปร ตวแปรจะถกคาไปใชงานกอน แลวจงถกเพมหรอลดคา
22
ตวดาเนนการ ตวอยางการใชงาน ความหมาย
++ ++a เพมคา a ขน 1 แลวจงนาคา a ไปใช
++ a++ ใชคา a ปจจบน แลวเพมคา a ขน 1
-- --b ลดคา b ลง 1 แลวจงนาคา b ไปใช
-- b-- ใชคา b ปจจบน แลวลดคา b ลง 1
คาสง break และ continue
break และ continue ใชในการเปลยนแปลงเสนทางการทางานของโปรแกรม
แตหากเปนไปได ควรหลกเลยงการใชงาน break และ continue เพอใหโปรแกรมมโครงสรางทด
23
break statement
การใชงาน break ในประโยคคาสงทาซา while, do while, for หรอ switch จะทาใหออกจากประโยคคาสงทาซาทนท
จะใช break เพอใหโปรแกรมกระโดดขามไปทางานในสวนทเหลอทอยนอก Loop ทนท
24
Example 6: เปนการเขยนโปรแกรม แสดง counter โดยใช for loop หาก counter มคาเทากบ 5 จะตองออกจาก for loop ทนท
25
1 2 3 4
Broke out of loop at x = 5
continue statement
การใชงาน continue ในประโยคคาสงทาซา while, do while, for จะมผลทาใหการทางานกระโดดขามคาสงทเหลออยใน Loop แลวกลบไปเรมทางานในรอบตอไปใหมทนท
สาหรบ while และ do while เงอนไขของการวนรอบ จะถกทดสอบทนท
สาหรบ for ตวแปรนบจะถก ลด/เพม คา แลวทาการทดสอบเงอนไขการวนรอบ
26
Example 7: เปนการเขยนโปรแกรมแสดง counter โดยใช for loop แตเมอ counter มคาเทากบ 5 จะใหกระโดดขามคาสง printf ออกไป แลวไปเพม counter จากการทางานของ for loop ทนท
271 2 3 4 6 7 8 9 10
Used continue to skip printing the value 5