Download - หน่วยที่ 5 · 1.3 รหัสเทียมแต่ละคำสั่งควรเขียนเป็นบรรทัด 1.4 รหัสเทียมไม่ไดข้ึ้นกบัภำษำใดภำษำหน่ึง
การเขยนรหสเทยม
1. ความหมายของรหสเทยม 2. ลกษณะของรหสเทยม 3. รปแบบการเขยนรหสเทยม 4. การเขยนรหสเทยมจากล าดบขนตอนของวธการประมวลผล 5. การเขยนรหสเทยมจากขนตอนการท างานดวยค าสงควบคมแบบตางๆ
1. บอกความหมายของรหสเทยมได 2. บอกลกษณะของรหสเทยมได 3. บอกรปแบบการเขยนรหสเทยมได 4. เขยนรหสเทยมจากล าดบขนตอนของวธการประมวลผลได 5. เขยนรหสเทยมจากขนตอนการท างานดวยค าสงควบคมแบบตางๆได
สาระการเรยนร
จดประสงคการเรยนร
หนวยท 5
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
116
การเขยนรหสเทยม
สาระส าคญ
เครองมอทชวยในการเขยนโปรแกรมใหมประสทธภาพอกอยางหนงคอ การเขยนรหสเทยม เปนอกขนตอนหนงทชวยท าใหการเขยนโปรแกรมนนงายขน หลงจากทเขยนผงงานเสรจ ผเขยนโปรแกรมสามารถเขยนรหสเทยมได โดยใชภาษางายๆทไมมกฎเกณฑตายตว เพออธบายขนตอนการท างานของโปรแกรมอยางละเอยด
1. ความหมายของรหสเทยม รหสเทยม (Pseudocode) คอ รหสค ำส งทมลกษณะกำรเขยนใกลเคยงกบภำษำองกฤษม
โครงสรำงทเกอบจะเปนภำษำโปรแกรมคอมพวเตอร รหสเทยมไมมกฎในการเขยนตายตว โดยมากขนอยกบความถนดของผใช (ปญญำพล หอระตะ.2545:16) แตมขอตกลงบางอยางรวมกนเปนสากล สวนประกอบทส าคญของรหสเทยม ไดแก ชอ, ค าสงก าหนดงาน, ค าสงควบคม, กลมของค าสง และขอบนทกหรอค าอธบาย
1. ลกษณะของรหสเทยม
รหสเทยม เปนเครองมออกชนดหนงทชวยในกำรเขยนโปรแกรม มลกษณะดงน 1.1 จดเรมตนใชค ำวำ “Begin” จดสนสดใชค ำวำ “End” 1.2 ใชค ำทเขำใจไดงำย 1.3 รหสเทยมแตละค ำสงควรเขยนเปนบรรทด 1.4 รหสเทยมไมไดขนกบภำษำใดภำษำหนง 1.5 มยอหนำเพอควำมสะดวกตอกำรตรวจสอบ 1.6 เขยนจำกบนลงลำง 1.7 ไมเขยนหมำยเลขก ำกบแตละขนตอน ลกษณะของรหสเทยม อธบำยขนตอนวธกำรท ำงำน
Begin 1. เรมตนกำรท ำงำน Read Width , Length 2. รบคำ Width , Length Area = Width * Length 3. ค ำนวณคำ Area = Width * Length Print Area 4. แสดงผลคำ Area End 5. จบกำรท ำงำน
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
117
3. รปแบบการเขยนรหสเทยม มรปแบบทส าคญดงน
ตารางท 5-1 รปแบบการเขยนรหสเทยม (อ าภา กลธรรมโยธน.2550:76) ล าดบท ขนตอนการท างาน รปแบบรหสเทยม ความหมาย
1 การรบขอมล Read อานคาจากแฟมขอมล Get รบคาทางแปนพมพหรออปกรณน าเขาอน
2 การค านวณ +,-,*,/,^ เครองหมายการกระท าทางคณตศาสตร DIV หารปดเศษ MOD หารเอาเศษ
3 การแสดงผลขอมล Print แสดงผลลพธออกทางเครองพมพ Write การบนทกขอมลลงแฟมขอมล Put,Output,Display การแสดงผลลพธออกทางจอภาพ
4 การก าหนดคา Initialize,Set ก าหนดคาเรมตนใหกบตวแปรทใช
= เกบคาผลลพธซงอยขวาของเครองหมาย Save,Store ก าหนดคาใหกบตวแปร
5 การเปรยบเทยบ If…Else… การเปรยบเทยบคา
6 การท างานวนรอบ While/Do …While ทดสอบเงอนไขถาจรงท าการวนรอบ ถาไมจรงกขามไปท างานทค าสงถดไป
4. การเขยนรหสเทยมจากล าดบขนตอนของวธการประมวลผล
การเขยนรหสเทยมจากล าดบขนตอนของวธการประมวลผลหรอจากผงงาน เปนขนตอน
การท างานในลกษณะของขอความแลวเปลยนค าอธบายขนตอนการท างานจากผงงานเปนรหสเทยม (อ าภา กลธรรมโยธน.2550:76)
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
118
ตวอยางท 1 จงเขยนรหสเทยม จากล าดบขนตอนการท างานของผงงาน แสดงตามภาพท 5-1
ตารางท 5-2 การเขยนรหสเทยมจากภำพท 5-1 ของตวอยางท 1 ล าดบขนตอนของวธการประมวลผล รหสเทยม
1. เรมตนกำรท ำงำน Begin
2. รบคำ A,B Read A,B
3. ค ำนวณ C = A * B C = A * B
4. แสดงผลคำ C Print C
5. จบกำรท ำงำน End
Start
Read A,B
C = A * B
Print C
Stop
ภำพท 5-1 ผงงำนประกอบกำรเขยนรหสเทยม 1(ทมำ : อรรณพ ทองธรกล.2555)
Input
Process
Output
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
119
ตวอยางท 2 จงเขยนรหสเทยม จากล าดบขนตอนการท างานของผงงาน เพอค านวณหาพนท ของรปสามเหลยม แสดงตามภาพท 5-2 Process
ตารางท 5-3 การเขยนรหสเทยมจากภาพท 5-2 ของตวอยางท 2 ล าดบขนตอนของวธการประมวลผล รหสเทยม
1. เรมตนกำรท ำงำน Begin
2. รบคำ ควำมสง,ควำมยำวของฐำน Read h , l
3. ค ำนวณพนทสำมเหลยม = ½*ฐำน*สง Area = ½* h * l
4. แสดงผลคำ พนทของรปสำมเหลยม Print Area
5. จบกำรท ำงำน End
Start
Read l,h
Area = ½*l*h
Print Area
Stop
ภำพท 5-2 ผงงำนประกอบกำรเขยนรหสเทยม 2 (ทมำ : อรรณพ ทองธรกล.2555)
Input
Output
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
120
Yes
No
ตวอยางท 3 จงเขยนรหสเทยม จากล าดบขนตอนการท างานของผงงาน เพอค านวณหาอายเฉลย ของพนกงาน แสดงตามภาพท 5-3 Process Output
ตารางท 5-4 การเขยนรหสเทยมจากภาพท 5-3 ของตวอยางท 3 ล าดบขนตอนของวธการประมวลผล รหสเทยม
1. เรมตนกำรท ำงำน Begin
2. ก ำหนดคำเรมตนใหกบ i,sum i = 0,sum = 0
3. รบคำจ ำนวนพนกงำนทงหมด (n) Read n
4. รบคำอำยของพนกงำนแตละคน (age) Get age
5. สะสมจ ำนวนพนกงำนทละคน(i) สะสมอำยของพนกงำนแตละคน (sum)
i = i + 1
sum = sum + age
6. เงอนไข ถำจรงกลบไป 4 ถำเทจไป 7 While (i<n)
Start
Read n
i=0,sum=0
Input
age
i=i+1,
sum=sum+age
i<n?
avg=sum/n
Print avg
Stop
ภำพท 5-3 ผงงำนประกอบกำรเขยนรหสเทยม 3
(ทมำ : อรรณพ ทองธรกล.2555)
Decision
Process
Input
Input
Initialize
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
121
N
Yes
Yes
Yes
Process
No
No
No No
7. ค ำนวณหำอำยเฉลย avg = sum / n
8. แสดงผลคำอำยเฉลย Print “ Age Average =”,avg
9. จบกำรท ำงำน End
ตวอยางท 4 จงเขยนรหสเทยม จากล าดบขนตอนการท างานของผงงาน เพอค านวณหารายไดสทธของพนกงานแตละคน โดยมเงอนไขในการค านวณภาษ แสดงตามภาพท 5-4 ถำไดเงนเดอนไมเกน 10,000 บำท ไมคดภำษ ถำเงนเดอนสวนท 10,001-15,000 บำท คดภำษ 5% ของเงนเดอนสวนทเกน 10,000 ถำเงนเดอนสวนท 15,001-20,000 บำท คดภำษ 10% ของเงนเดอนสวนทเกน 15,000 ถำเงนเดอนสวนท 20,001 บำทขนไปคดภำษ 15% ของเงนเดอนสวนทเกน 20,000
Start
n
i=0
id,name,sal
sal<10000? tax = sal*0%
sal<15000? tax =
(sal-10000)*5%
sal<20000?
tax=
(salary-5000)
*10%+250
tax = (sal-20000)*15%+250+500
A
B
Input
Decision
Decision
Decision
Connect
Connect to next page
Initialize
Input Process
Connect
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
122
ภำพท 5-4 ผงงำนประกอบกำรเขยนรหสเทยม 4 (ทมำ : อรรณพ ทองธรกล.2555)
Y Connect Yes
No
Process Output Process Decision
ตารางท 5-5 การเขยนรหสเทยมจากภาพท 5-4 ของตวอยางท 4 ล าดบขนตอนของวธการประมวลผล รหสเทยม
1. เรมตนกำรท ำงำน Begin
2. ก ำหนดคำเรมตนใหกบ i i = 0
3. รบคำจ ำนวนพนกงำนทงหมด (n) Read n
4. รบขอมล รหส,ชอ,เงนเดอน ของพนกงำนทละคน
Get id,name,salary
5. ทดสอบเงอนไขถำ เงนเดอน ไมเกน 10,000 ไมคดภำษ
if (salary<10000)tax = 0
6. ทดสอบเงอนไขถำ เงนเดอน ไมเกน 15,000 คดภำษ 5% ของสวนทเกน 10,000
else if (salary<15000)
tax=(salary-10000)*5%
7. ทดสอบเงอนไขถำ เงนเดอน ไมเกน 20,000 คดภำษ 10% ของสวนทเกน 15,000
else if (salary<20000)
tax=(salary-15000)*10%+250
8. ทดสอบเงอนไขถำ เงนเดอน 20,001 ขนไป คดภำษ 15% ของสวนทเกน 20,000
else tax=(salary-
20000)*15%+250+500
9. ค ำนวณหำเงนสทธ=เงนเดอน-ภำษ net = salary - tax
net = sal-tax
i = i + 1
i<n?
Stop
Print id,name,sal,tax,net
A
B
Connect
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
123
Connect from previous page
Connect to next page
Initialize
Connect
10. แสดงคำ รหส,ชอ,เงนเดอน,ภำษ,เงนสทธ-ของพนกงำนแตละคน
id,name,salary,tax,net
11. เพมคำนบจ ำนวนพนกงำนรอบละ 1 i = i + 1
12. ทดสอบเงอนไข (i<n) ถำเปนจรงใหกลบไปท ำงำนในขอ 4 ถำเปนเทจใหจบกำรท ำงำน
while(i<n)
13. จบกำรท ำงำน End
ตวอยางท 5 จงเขยนรหสเทยมจากล าดบขนตอนการท างานของผงงาน เพอคดตดเกรดและค านวณหา จ านวนเกรดของนกเรยนโดยมขอมลน าเขาคอ รหส ชอนกเรยน จ านวนวชาทเรยน คะแนนแตละวชา ใหแสดงเกรดและจ านวนเกรดละกวชา โดยมเงอนไขดงน แสดงตามภาพท 5-5 ถาคะแนน ตงแต 80 ขนไป ไดเกรด 4 ถาคะแนน 70-79 ไดเกรด 3
ถาคะแนน 60-69 ไดเกรด 2 ถาคะแนน 50-59 ไดเกรด 1 ถาคะแนนต ากวา 50 ไดเกรด 0
Start
id,name
i=0,g4=0,g3=0,g2=0,g1=0,g0=0
Input n
score
A
B
ภำพท 5-5 ผงงำนประกอบกำรเขยนรหสเทยม 5 (ทมำ : อรรณพ ทองธรกล.2555)
Input
Input
Input
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
124
Yes
Yes
Connect
Connect
N
Connect
No
Output
Output
Yes
Yes
Yes
No
No
No
No
Decision Decision
Decision Y
Decision Y
Process
ตารางท 5-6 การเขยนรหสเทยมจากภาพท 5-5 ของตวอยางท 5
score>=80? Grade
4
g4=g4+1
score>=70? Grade
3
g3=g3+1
score>=60? Grade
2
g2=g2+1
score>=50? Grade
1
g1=g1+1
Grade 0
g0=g0+1
i=i+1
i < n ?
id,name,g4,g3,g2,g1,g0
Stop
A
B
ภำพท 5-5 ผงงำนประกอบกำรเขยนรหสเทยม 5 (ทมำ : อรรณพ ทองธรกล.2555)
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
125
ตารางท 5-6 การเขยนรหสเทยมจากภาพท 5-5 ของตวอยำงท 5
ล าดบขนตอนของวธการประมวลผล รหสเทยม 1. เรมตนกำรท ำงำน Begin
2. ก ำหนดคำเรมตนใหกบ i,g4,g3,g2,g1,g0
i=0,g4=0,g3=0,g2=0,g1=0,g0=0
3. รบขอมลเขำ รหส ชอนกเรยน Read id , name
4. รบขอมลเขำจ ำนวนวชำเรยนทงหมด (n) Read n
5. รบคะแนนสอบของนกเรยนแตละวชำ Get score
6. ทดสอบเงอนไขถำคะแนนสอบตงแต 80 ขนไปไดเกรด 4 แลวสะสมเกรด 4
if (score>=80) Print
“Grade 4”
g4 = g4 +1
7. ทดสอบเงอนไขถำคะแนนสอบตงแต 70 ขนไปแตไมถง 80 ไดเกรด 3 แลวสะสมเกรด 3
if (score>=70) Print
“Grade 3”
g3 = g3 +1
8. ทดสอบเงอนไขถำคะแนนสอบตงแต 60 ขนไปแตไมถง 70 ไดเกรด 2 แลวสะสมเกรด 2
if (score>=60) Print
“Grade 2”
g2 = g2 +1
9. ทดสอบเงอนไขถำคะแนนสอบตงแต 50 ขนไปแตไมถง 60 ไดเกรด 1 แลวสะสมเกรด 1
if (score>=50) Print
“Grade 1”
g1 = g1 +1
10. ถำคะแนนสอบต ำกวำ 50 ไดเกรด 0 แลวสะสมเกรด 0
Print “Grade 0”
g0 = g0 +1
11. เพมคำตวนบจ ำนวนวชำเรยนรอบละ 1 i = i + 1
12. ทดสอบเงอนไข (i<n) ถำเปนจรงใหไปท ำงำนขอ 5 ถำเปนเทจ ใหท ำค ำสงถดไป
While (i<n)
13. แสดงผล รหส ชอนกเรยน จ ำนวนวชำทเรยน ไดเกรดละกวชำ
Print “ID,Name,Amount
of Subject Grade 4,Grade 3,
Grade 2,Grade 1,Grade 0”
14. จบกำรท ำงำน End
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
126
5. การเขยนรหสเทยมจากขนตอนการท างานดวยค าสงควบคมแบบตางๆ
การเขยนรหสเทยมจากขนตอนการท างานดวยค าสงควบคมแบงไดเปน 2 ชนด (อ าภา กลธรรมโยธน.2550:79) คอ
5.1. ค าสงการท างานแบบเงอนไข การทดสอบเงอนไขการท างานดวยค าสง if ถาผลการทดสอบเงอนไขเปนจรงจะท า
ชดค าสงทก าหนดไว ถาผลการทดสอบเงอนไขเปนเทจกจะท าชดค าสงอนแทน ค าสงเงอนไขมรปแบบ คอ if (เงอนไข) then ค าสง (หรอกลมของค าสง) ทตองปฏบตเมอ ผลการทดสอบเงอนไขเปนจรง หรอ if (เงอนไข) then ค าสง (หรอกลมของค าสง) ทตองปฏบตเมอผลการทดสอบเงอนไขเปนจรง else ค าสง (หรอกลมของค าสง) ทตองปฏบตเมอผลการทดสอบเงอนไขเปนเทจ
เงอนไขคอ นพจนทถกทดสอบหรอค านวณแลวจะมคาความจรงเปนจรงหรอเทจเทานน เชน if (a < b) then smaller = a else smaller = b
บางครงเงอนไขททดสอบมมากกวาหนงเงอนไข สามารถเขยนไดเปนระบบเชน if (n > 80) then Point = 4
else if (n > 70) then Point = 3
else if (n > 60) then Point = 2
else if (n > 50) then Point = 1
else Point = 0
5.2 ค าสงการท างานวนรอบ แบงไดเปน 2 แบบ คอ 5.2.1 ค าสงการท างานวนรอบท าซ าตามดชน (for loop) เรมตนดวยการก าหนดคาของดชน
ใหมคาเทากบ คาเรมตน แลวจงปฏบตค าสง (หรอกลมของค าสง) จนสนสด จากนนคาของดชนจะถกเพมขนอกครงละ 1 สลบกบการปฏบตค าสง (หรอกลมของค าสง) 1 ครง ค าสงวนรอบตามดชนจะสนสดกตอเมอตวแปรทเปนดชนมคามากกวาคาสดทาย ค าสงวนรอบตามดชนมรปแบบ คอ for ตวแปรทเปนดชน = คาเรมตน to คาสดทาย do ค าสง (หรอกลมของค าสง) ทตองปฏบต เชน Power = n
for i = 1 to 5 do
Power = power*n
หรอ Sum = 0
for j = 1 to 10 do
Sum = sum + j
การเขยนรหสเทยม โดย อรรณพ ทองธรกล วทยาลยอาชวศกษาขอนแกน
127
5.2.2 ค าสงการท างานวนรอบในขณะทผลการทดสอบเงอนไขเปนจรง (While) เรมดวยการทดสอบเงอนไขกอน ถาผลการทดสอบเปนจรงจะท างานวนรอบตามทก าหนดไว แลวกลบไปทดสอบเงอนไขอก จนกวาผลการทดสอบเงอนไขจะเปนเทจจงไปท างานอนหรอหยดการท างาน ค าสงวนรอบในขณะทผลการทดสอบเงอนไขเปนจรงมรปแบบคอ While (เงอนไข) ค าสง (หรอกลมของค าสง) ทตองปฏบต เชน N = 10000
While (n>1)
begin
N = n/10
end