Web Application Programming 2ภาควชาวทยาการคอมพว เตอ ร มหาวทยาลย เ ชยงใหม
A.3 โครงสรางแบบวนซ า
เปนโครงสรางทวนท างานไดหลาย ๆ รอบตามตองการ เรยกวา ลป
(Loop) และตองก าหนดเงอนไขเพอใหหยดการวนซ า โดยม 3
รปแบบดงน
B.1. While Loop
B.2. Do While Loop
B.3. For Loop
ภาคการเรยนท 2/2556 204202 IT II 2
B.1 โครงสรางวนซ าแบบ While
เปนโครงสรางทก าหนดใหท าการ วนซ าถาเงอนไขเปนจรง และจะ หยดเมอเงอนไข
เปนเทจ
จะตรวจเงอนไขกอน ถาเงอนไขเปนเทจในคร งแรก จะไมวนเขาลป (Pretesting)
ภาคการเรยนท 2/2556 204202 IT II 3
WHILE condition
Process 1
Process 2
END WHILE
ภาคการเรยนท 2/2556 204202 IT II 4
ตวอยางโครงสราง While
จงเขยนผงโปรแกรมเพอหาคะแนนเฉลยของนกศกษา จ านวน 30 คน
วเคราะหโจทย
วตถประสงคหลก หาคะแนนเฉลยของนกศกษาจ านวน 30 คน
ผลลพธทตองการ คะแนนเฉลย
ขอมลเขา คะแนนของนกศกษา
ภาคการเรยนท 2/2556 204202 IT II 5
วเคราะหโจทย(ตอ)
ตวแปรทเกยวของ X แทน คะแนนของนกศกษา
MEAN แทน คะแนนเฉลยของนกศกษา
I แทน จ านวนนกศกษา (so far)
SUM แทน คะแนนรวมของนกศกษา
การประมวลผล SUM = 0 และ I = 0
while I < 30 ท า
read X
SUM = SUM + X
I = I + 1
end while
MEAN = SUM / I
ภาคการเรยนท 2/2556 204202 IT II 6
STARTSum = 0, I = 0WHILE I < 30
READ XSum = Sum+XI=I+1
END WHILE
Mean = Sum/30
PRINT “Mean is”, MeanSTOP
Flowchart & Pseudo code ของโปรแกรม
ตวอยางขอมลเขา และผลลพธ
ขอมลเขา ผลลพธ
23 30 44 7 48 80 6 32 96 79 67 7 17 10 66 73 21 39 36 51 98 44 16 96 100 99 72 46 41 30
Mean is 58.57
ภาคการเรยนท 2/2556 204202 IT II 7
ลองท าด (แบบฝกหด WHILE)•จงหาผลคณของตวเลขทเรยงกน ตงแต 45 ถง 115
•จงหาผลบวกของตวเลขทเรยงกน และมคาหางกนเทากบ 5 ตงแต 50 ถง 9575
• หาคามากทสดจากตวเลข N ตว ทผใชปอนเขามา
ภาคการเรยนท 2/2556 204202 IT II 8
B.2 โครงสรางวนซ าแบบ Do While
เปนโครงสรางทก าหนดใหท าการวนซ าเมอเงอนไขเปนจรง และจะหยดเมอเงอนไข
เปนเทจ
ไมวาเงอนไขจะเปนอยางไร จะท าค าส ง 1 คร งเสมอ (Post-testing)
ภาคการเรยนท 2/2556 204202 IT II 9
DO
Process 1
Process 2
WHILE condition
ภาคการเรยนท 2/2556 204202 IT II 10
ตวอยางโครงสราง Do While
จงเขยนผงโปรแกรมเพอหาผลบวกของเลขคต งแต 2 ถง 100
การวเคราะหโจทย
วตถประสงคหลก หาผลบวกของเลขคต งแต 2 ถง 100
ผลลพธทตองการ Summation is
ขอมลเขา -
ตวแปรทใช S แทน ผลบวก
I แทน เลขจ านวนค
การประมวลผล S = 0 และ I = 2
Do S = S + I และ I = I + 2 While I <= 100
ภาคการเรยนท 2/2556 204202 IT II 11
Flowchart & Pseudo code ของโปรแกรม
STARTS= 0, I = 2
DO S = S+ II = I + 2
WHILE I <= 100
PRINT “Summation is”, S
STOP
ตวอยางขอมลเขา และผลลพธ
ขอมลเขา ผลลพธ
ไมม Summation is 2550
ภาคการเรยนท 2/2556 204202 IT II 12
แบบฝกหด DO WHILE
จากแบบฝกหดตดเกรดใน Slide IF ELSE (หนา 32)
ใหเพมการท างานโดยใหรบคาคะแนนเพอหาเกรดเรอย ๆ จนกวาผใชจะกรอกคะแนนทมคาตดลบ ใหใชโครงสราง DO WHILE
ภาคการเรยนท 2/2556 204202 IT II 13
ภาคการเรยนท 2/2556 204202 IT II 14
B.3 โครงสรางวนซ าแบบ FOR
เปนโครงสรางทก าหนดจ านวนใหท าการวนซ าทแนนอน
แตกตางจาก 2 รปแบบทกลาวมาแลวทไมจ าเปนตองทราบ จ านวนคร งกอน
แตใชการตรวจสอบเงอนไข
FOR I=1 TO N
Process 1
Process 2
END FOR
ภาคการเรยนท 2/2556 204202 IT II 15
ตวอยางโครงสราง Forจงเขยนผงโปรแกรมเพอหาคา N แฟกทอเรยล (factorial)
การวเคราะหโจทย
วตถประสงคหลก คา N แฟกทอเรยล
ผลลพธทตองการ N! is
ขอมลเขา N
ตวแปรทใช N แทน ตวเลขทตองการหาแฟกทอเรยล
Fact แทน แฟกทอเรยล
I แทน จ านวนนบ
การประมวลผล Fact = 1
ท าซ า For I=1 to N ท า Fact = Fact * I
ภาคการเรยนท 2/2556 204202 IT II 16
Flowchart & Pseudo code ของโปรแกรมSTART
Fact = 1READ N
IF N >= 0 THENIF N != 0 THEN
For I=1 TO N Fact = Fact * I
END For
PRINT “Factorial is”, FactELSE
PRINT “0 Factorial is 1”END IF
ELSE PRINT “Invalid data”
END IF
STOP
ตวอยางขอมลเขา และผลลพธ
ขอมลเขา ผลลพธ
N = 5 Factorial is 120
N = 0 0! = 1
N = -1 Invalid data
N = a Invalid data
ภาคการเรยนท 2/2556 204202 IT II 17
แบบฝกหด FOR
จงใช For ในการ บวกเลขคสะสม เรมจาก เลข 11 ถง 99
จงเขยนอลกอรทมของการการสรางภาพดงน
ภาคการเรยนท 2/2556 204202 IT II 18
ขอควรค านงเวลาออกแบบ Flowchart
การจดภาพ ทศทางของผงงาน◦ทศทางเรมจากบนลงลาง และจากซายไปขวา
◦สญลกษณทใชตองเปนตามมาตรฐาน อาจมขนาดตางๆ กนแตรปรางเปนสดสวนตามความเหมาะสม
◦ ในการโยงความสมพนธใหยดตามความเกยวของของกระบวนการ
◦หลกเลยงการโยงเสนไปมา ในทศทางทตดกน ใหใชสญลกษณ เชอมตอแทน
◦กระบวนการควรเชอมอยางตอเนองจากจดเรมตน ไปยงจดสนสด
ภาคการเรยนท 2/2556 204202 IT II 19
ตวแปรชด (Array) เปนการก าหนดตวแปรส าหรบการเกบขอมลหลาย ๆ คาภายใต ตวแปรชอเดยวกน แตจ าเปนตองระบตวบงช(Subscript) เชน A(0) A(1) A(2) ทงสามตวแปรเกบคา 3 คาภายใตชอตวแปรเดยวกน
การอางคาท าไดโดยระบตวบงช ซงตวบงชอาจอยในรปตวแปรเดยวเชน A(i) โดย i มคาเปน 0-2 เปนตน
ตวแปรชดมทง 1 มต (One Dimension Array) 2 มต (Two Dimension Array) และ หลายมต (Multi Dimension Array)
ทงนขนอยกบชนดของปญหาและการแกปญหาของผ เขยน ในทนจะกลาวเฉพาะตวแปรชดมตเดยวและตวแปรชด 2 มต
ภาคการเรยนท 2/2556 204202 IT II 20
เปนตวแปรทมตวบงชเพยงตวเดยว และสามารถแสดงการแทน
ขอมลของตวแปรเปนลกษณะตารางทมแถว หรอคอลมนเดยวดงรป
ตวแปรชดมตเดยว
ภาคการเรยนท 2/2556 204202 IT II 21
เปนตวแปรทมตวบงชสองตว และสามารถแสดงการแทน
ขอมลของตวแปรเปนลกษณะตารางทมแถวและคอลมน
ตามทระบ โดยตองระบคาแถวแลวค นดวยเครองหมาย ,
จากนนใหระบคาคอลมนดงรป
ตวแปรชดสองมต
ภาคการเรยนท 2/2556 204202 IT II 22
ภาคการเรยนท 2/2556 204202 IT II 23
ตวอยางการเขยนผงโปรแกรมโดยใชตวแปรชดมตเดยว
จงเขยนผงโปรแกรมรบเลขจ านวนเตมบวกชดหนงไมทราบจ านวน แลว
หาวามกจ านวนทมคามากกวาคาเฉลยของเลขชดน หยดอานคาจากตว
แปรชดเมอคาในตวแปรชด นอยกวาหรอเทากบ 0
การวเคราะหโจทย
วตถประสงคหลก จ านวนเลขทมคามากกวาคาเฉลย
ผลลพธทตองการ There are … numbers
ขอมลเขา เลขจ านวนเตมบวก
ตวแปรทใช A(I) แทน เลขจ านวนเตมใด ๆ
N แทน จ านวนเลขทมากกวาคาเฉลย
ภาคการเรยนท 2/2556 204202 IT II 24
การวเคราะหโจทย(ตอ)
ตวแปรทใช I,J แทน จ านวนนบ
SUM แทนผลบวกของเลขจ านวนเตม
M แทน คาเฉลยของเลขจ านวนเตม
การประมวลผล ก าหนด SUM, I, J, N = 0 รบคา A(I)
ท าซ าขณะท A(I) > 0 หา SUM = SUM + A(I)
นบจ านวนขอมล I = I + 1 และรบคา A(I)
หา M = SUM/I
ท าซ าขณะท J < I ถา A(I) > M ให N = N + 1
แลวเพมคา J = J + 1
แสดงคา N
ภาคการเรยนท 2/2556 204202 IT II 25
FLOWCHART
PSEUDOCODE
WHILE J < I
IF A(J) > M THENN = N + 1
END IFJ = J + 1
END WHILEPRINT “There are”, N, “numbers”
STOP
STARTSUM, I, J, N = 0READ A(I)
WHILE A(I) > 0SUM = SUM + A(I)I = I + 1READ A(I)
END WHILE
M = SUM / I
1 2
ภาคการเรยนท 2/2556 204202 IT II 27
ตวอยางการเขยนผงโปรแกรมโดยใชตวแปรชดสองมต
จงเขยนผงโปรแกรมเพอหาผลบวกดานทะแยงของเมตรกซ
ขนาด N x N
การวเคราะหโจทย
วตถประสงคหลก ผลบวกดานทะแยงของเมตรกซขนาด N x N
ผลลพธทตองการ The Summation is
ขอมลเขา ขนาดของเมตรกซ N
เลขจ านวนเตม จ านวน N x N
ตวแปรทใช N แทน จ านวนคอลมนและแถว
S1แทน ผลบวกดานทะแยงดานทหนง
ภาคการเรยนท 2/2556 204202 IT II 28
การวเคราะหโจทย(ตอ)
ตวแปรทใช S2 แทน ผลบวกดานทะแยงดานทสอง
A(I,J) แทนเลขจ านวนเตม
การประมวลผล S1 = S1 + A(I,I)
S2 = S2 + A(I,J)
ภาคการเรยนท 2/2556 204202 IT II 29
FLOWCHART
PSEUDOCODESTART S1, S2 = 0READ NI = OWHILE I < N
J = 0WHILE J < N
READ A(I,J)J = J + 1
END WHILEI = I +1
END WHILEI = 0, J = N – 1
WHILE I < NS1 = S1 + A(I,I)S2 = S2 + A(I,J)I = I + 1 J = J + 1
END WHILEPRINT “Summation is ”, S1 PRINT “Summation is ”, S2
STOP
แบบฝกหด Array
จงเขยนรหสเทยม จากตวอยาง Array ทง 2 ตวอยาง
จงวเคราะหปญหา เขยนผงโปรแกรม และรหสเทยม ของปญหา◦ การหาผลคณของตวเลขทกตวใน Array A ขนาด 2 มต (A[i][j])◦ การบวกเมตรกซ A,B ขนาด M*N
ภาคการเรยนท 2/2556 204202 IT II 31