1
*การเขยนซโดโคด หรอ รหสจ าลอง (Pseudo Code)
นายบรรสทธ ดลอม ครช านาญการ โรงเรยนเทศบาลบานสามเหลยม
เทศบาลนครขอนแกน จงหวดขอนแกน
2
รปแบบการเขยนอลกอรทม
การเขยนซโดโคด (Pseudo Code)
หมายถง การน าค าในภาษาองกฤษ มาแสดงการท างานของคอมพวเตอร โดยเรยบเรยงเปนประโยคใหสามารถสอความหมายใหผอานเขาใจไดวาแตละขนตอนของการแกปญหานนท าไดอยางไร ซโดโคดทดตองมความชดเจน สน กระชบ ไดใจความกอนท าการเขยนอลกอรทม ตองก าหนดตวแปรกอนทจะใชกอนเสมอ
3
* รหสจ าลอง (Pseudo Code)
Pseudo code สามารถก าหนดการท างานไดเปน 6 ขอ ดงน 1. การรบขอมลของคอมพวเตอร 2. การแสดงผลขอมลของคอมพวเตอร 3. การค านวณหรอการท างานทางคณตศาสตรของคอมพวเตอร 4. การก าหนดคาขอมลของคอมพวเตอร 5. การเปรยบเทยบขอมล 2 อยาง และมการเลอกทางเดยวหรอสอง
ทางเลอกในการท างานหรอหลายทาง 6. การท างานซ าของคอมพวเตอร
4
*
การรบขอมล นยมใชค าวา read หรอ input ตามดวยชอตวแปรทตองการรบคา ถาตองการรบคาหลายตวแปรใหใชเครองหมาย comma (,) คน
input ตวแปร1, ตวแปร2, …
read ตวแปร1, ตวแปร2, …
5
* Read : การอานขอมลจากทมเกบอยในไฟลแลว
Get หรอ Input : การรบขอมลมาจากคยบอรด
Read student name Get system date Read number1, number2 Get tax_code
6
2. การแสดงผลขอมลของคอมพวเตอร Print : การสงผลลพธไปยงเครองพมพ (Printer)
Write หรอ Put : การเกบขอมลลงสไฟล (File)
Output หรอ Display : การแสดงผลขอมลบนจอภาพ (Screen)
Print ‘Program Completed’ Write customer record to master file Put name, address and postcode Output total_tax Display ‘End of data’
7
3. การค านวณหรอการท างานทางคณตศาสตรของคอมพวเตอร
Add : การบวก
Subtract : การลบ
Multiply : การคณ
Divide : การหาร
Add number to total total = total + number
Divide total_marks by student_count
sale_tax = cost_price * 0.10
Compute C = (F-32) * 5/9
8
4. การก าหนดคาขอมลของคอมพวเตอร Set หรอ Initialise : การก าหนดคาเรมตนใหกบขอมล ตาม to
= : การก าหนดคาผลลพธทไดจากการประมวลผล
Save หรอ Store : การเกบคาขอมลไวใชงานในครงตอไป
Initialise total accumulators to zero
Set student_count to 0
total_price = cost_price + sale_tax
Store customer_num in last_customer_num
9
5.1 การเปรยบเทยบระหวาง 2 คา เปนการเปรยบเทยบเงอนไข ถาเงอนไขเปนจรงจะใหท าค าสงกลมหนง แตถาเงอนไขเปนเทจใหท าค าสงอกกลมหนง ใชค าวา if..then..else..endif
if (เงอนไข) then กลมค าสงกรณเงอนไขเปนจรง
else กลมค าสงกรณเงอนไขเปนเทจ
endif
ตวอยาง if (x > 0) then read x else compute sum = x + y endif
5. การเปรยบเทยบขอมล 2 อยาง และมการเลอกทางเดยวหรอสองทางเลอกในการท างานหรอหลายทาง
10
5.2 การเปรยบเทยบทางเลอกหลายทาง เปนการเปรยบเทยบคาของขอมล โดยจะไปท ากลมค าสงตามคาของตวแปรทใชเปรยบเทยบ ใชค าวา case
case ตวแปรทใชเปรยบเทยบ of คาตวแปร1 : กลมค าสงกรณตวแปรมคาเทากบคาตวแปร1 คาตวแปร2 : กลมค าสงกรณตวแปรมคาเทากบคาตวแปร2 ... endcase
5. การเปรยบเทยบขอมล 2 อยาง และมการเลอกทางเดยวหรอสองทางเลอกในการท างานหรอหลายทาง
11
5.2 ตวอยางการท างานหลายทางเลอก
Case grade of 4 : write ‘A’ 3 : write ‘B’ 2 : write ‘C’ 1 : write ‘D’ 0 : write ‘F’ endcase
12
การท างานแบบวนซ า ม 3 รปแบบ คอ
6.1 do-while มการเปรยบเทยบเงอนไขกอนทจะท าค าสงภายใน แลวจงท าการเปรยบเทยบเงอนไขอกครง แตถาเงอนไขเปนเทจจะไมท าค าสงภายในแตจะขามไปท าค าสงถดไปจาก do-while
do (เงอนไขทใชเปรยบเทยบ) while กลมค าสงกรณเงอนไขเปนจรง enddo
6. การท างานซ าของคอมพวเตอร
end-of = ‘N’ do (end-of = ‘N’) while write ‘A’ compute x = y + 1 read end-of enddo
13
6.2 repeat-until ท าค าสงภายในกอน แลวจงท าการเปรยบเทยบเงอนไข ถาเงอนไขเปนเทจจะท าค าสงภายใน แต ถาเงอนไขเปนจรงจะขามไปท าค าสงถดไปจาก repeat-until
repeat กลมค าสงกรณเงอนไขเปนเทจ until (เงอนไขทใชเปรยบเทยบ)
6. การท างานซ าของคอมพวเตอร
end-of = ‘N’
repeat write ‘A’ compute x = y + 1 read end-of
until (end-of = ‘Y’)
14
6.3 for-endfor ท าค าสงภายในตามจ านวนครงทก าหนด ซงตองมตวแปรนบมาชวย เพอก าหนดจ านวนครงในการท าซ า
for ตวแปรนบ = คาเรมตน to คาสดทาย
กลมค าสง
endfor
6. การท างานซ าของคอมพวเตอร
For counter = 1 to 3 write ‘A’ endfor
15
1 ตวอยาง (Nature language)
ตวอยางท1. จงเขยนอลกอรทมเพอค านวณหาความยาวของทดนแปลงหนง โดยทราบคาพนทและความกวาง แลวแสดงผลทางหนาจอ วธท า (1). ก าหนดคาเรมตนของความยาวทดน เปน 0
(2). รบคาของขอมลพนทและความกวางของทดน
(3). ค านวณคา ความยาวทดน = พนท / ความกวาง
(4). แสดงผลคาความยาวทดนทไดจากการค านวณ
16
ตวอยางท2. จงเขยนอลกอรทมเพอรบขอมลราคาสนคาตอหนวย และจ านวนทซอสนคานน เพอค านวณหาราคาสนคารวม ภายใตเงอนไขตอไปน
วธท า (1). ก าหนดคาเรมตนของราคาสนคารวม เปน 0 (2). รบขอมล ราคาสนคาตอหนวย และจ านวนสนคาทซอ
(3). เปรยบเทยบจ านวนสนคา ถาสนคามนอยกวา 6 ชน ใหค านวณ ราคาสนคารวม = (ราคาสนคาตอหนวยxจ านวนชน) x 90/100
ถาสนคามมากกวาหรอเทากบ 6 ชน ใหค านวณ ราคาสนคารวม = (ราคาสนคาตอหนวย xจ านวนชน) x 85/100
(4). แสดงผลราคาสนคารวมทค านวณได
17
จากตวอยางท 2 ท าในรปแบบของซโดโคด คอ
วธท า ก าหนดตวแปร grandtotal = ราคาสนคารวม price = ราคาสนคาตอหนวย , numbers= จ านวนสนคา Start grandtotal = 0
read price, numbers if (numbers < 6) then compute grandtotal = (price * numbers) * 90/100 else compute grandtotal = (price * numbers) * 85/100 endif
write grandtotal Stop
18
ตวอยางท 3. จงเขยนอลกอรทมเพอรบขอมลราคาสนคาตอหนวย และจ านวนทซอสนคามากกวา 1 รายการสนคา เพอค านวณหาราคาสนคารวม ภายใตเงอนไขคอ ใหหยดเมอรายการสนคามากกวา 10 รายการ
วธท า (1). ก าหนดคาเรมตนของ ราคาสนคา และราคาสนคารวม เปน 0 และจ านวนรายการเปน 0
(2). รบขอมลราคาสนคาตอหนวย และจ านวนสนคาทซอ
(3). ค านวณ เพมจ านวนรายการสนคา นนคอ
จ านวนรายการ = จ านวนรายการ + 1
(4). ค านวณ ราคาสนคา = ราคาสนคาตอหนวย x จ านวนสนคา
ค านวณสะสม ราคาสนคารวม = ราคาสนคารวม +ราคาสนคา
(5). เปรยบเทยบจ านวนรายการวามากกวา 10 รายการหรอไม ถาไม ใหท าวน
ขอ (2)ใหม ถามากกวากใหท าขอ (6)
(6). แสดงผลคาราคาสนคารวม
19
จากตวอยางท 3 ท าในรปแบบของซโดโคด คอ
วธท า ก าหนดตวแปร grandtotal = ราคาสนคารวม
price = ราคาสนคาตอหนวย
numbers= จ านวนสนคา
grandprice = ราคาสนคา
counter = จ านวนรายการ
เนองจากมการวนซ าเกดขนเพราะโจทยบอกใหท ามากกวา 1 รายการ ซงการทจะใช
do-while , repeat-until และ for ใหผลไมเหมอนกน เราตองพจารณาใหดวาโจทย
ตองการอะไรและใหท ากรอบกนแน รวมถงการตงคาเรมตนใหกบตวแปรนบทจะใชเปนเงอนไขดวย
20
จากตวอยางท 3 ท าในรปแบบของซโดโคด คอ
Start grandtotal = 0, grandprice = 0, counter = 0
repeat read price, numbers compute counter = counter + 1 compute grandprice = price * numbers compute grandtotal = grandtotal + grandprice until (counter > 10) write grandtotal
Stop
21
*การเขยนซโดโคด (Pseudo Code)
22
จากตวอยางท 1 ท าในรปแบบของflowchart คอ
Start
Lplace = 0
read surface, wplace
compute lplace = surface / wplace write lplace
Stop
23
จากตวอยางท 2 ท าในรปแบบของflowchart คอ Start
grandtotal = 0
read price, numbers
grandtotal = (price * numbers) * 85/100 write grandtotal
Stop
(numbers < 6) no
grandtotal = (price * numbers) * 90/100 yes
24
1. โครงสรางตามล าดบ (Sequence Structure)
statement a
statement b
statement c
Add 1 to page_count
Print heading line
Set linecount to zero
Read customer record
สรปโครงสรางพนฐานส าหรบการเขยนโปรแกรมแบบการเขยนซโดโคด รหสจ าลอง (Pseudo Code)
25
2. โครงสรางการเลอก (Selection Structure)
IF condition p is true THEN IF student is part_time THEN
statement(s) in true case add 1 to part_time_count
ELSE ELSE
statement(s) in false case add 1 to full_time_count
ENDIF ENDIF
26
3. โครงสรางการท างานซ า (Repetition Structure)
DOWHILE condition p is true WHILE condition p is true DO
statement block statement block
ENDDO ENDWHILE
27
ตวอยาง โปรแกรมมการรบคาตวเลข 3 จ านวน แลวน ามาบวกกน จากนนพมพคาผลบวกทได
Input Processing Output
number_1 Read three numbers total
number_2 Add numbers together
number_3 Print total number
ตวแปรทใชส าหรบเกบคาตวเลข 3 จ านวน คอ Number_1,Number_2,Number_3 ตามล าดบ
ตวแปรทเกบคาผลบวก คอ Total
28
รปแบบการเขยนอลกอรทม (ตอ)
4. การเขยนโครงสรางการท างาน (Structure Chart)
เปนการออกแบบอลกอรทมหรอออกแบบผงงานทไมซบซอนมากนก โดยแบงงานเปนงานยอย (subtask) หรอ function หรอ module ซงท างานเฉพาะอยาง โดยก าหนดชอของแตละโมดลไว ท าใหสามารถท าความเขาใจ งานใหญๆและซบซอนได ผออกแบบสามารถพฒนาอลกอรทมของแตละโมดลได
*ตวอยาง
Initial Data Read Data Compute Data Write Ouput
โปรแกรมความยาวทดน
29
*ตวอยาง
Initial Data Read Data
Compute 1 Compute 2
Compare number Write Ouput
โปรแกรมราคาสนคา
30