Transcript คำสั่ง-1
การพ ัฒนาโปรแกรมและการออกแบบขนตอนวิ
ั้
ธี
(Program development and algorithm design)
วิธแ
ี ก้ปญ
ั หาด้วยคอมพิวเตอร์
(Computer problem solving methods)
ว ัฎจ ักรของการพ ัฒนาโปรแกรม
(Program Development Cycle )
ขนตอนวิ
ั้
ธ ี (Algorithm )
การเขียนผ ังงาน (Flowchart)
ต ัวอย่างการวิเคราะห์โจทย์การเขียนรห ัสเทียม
และการเขียนผ ังงาน
วิธแ
ี ก้ปญ
ั หาด้วยคอมพิวเตอร์
การแก้ปญ
ั หาด้วยคอมพิวเตอร์ ต้องการความ
เข้าใจในประเด็นต่างๆด ังนี้
ั เจน
เข ้าใจในงานหรือปั ญหาให ้ชด
แนวทางการแก ้ปั ญหานัน
้ มีขน
ั ้ ตอนอย่างไร
ข ้อมูลจะเข ้าสูง่ านหรือระบบได ้อย่างไร
มีวธิ จ
ี ัดการกับข ้อมูลอย่างไร
ผลลัพธ์ทไี่ ด ้จากการทางานคืออะไร
ผู ้ปฏิบต
ั งิ านทางานได ้ง่ายและสะดวกขึน
้ หรือไม่
ว ัฏจ ักรการพ ัฒนาโปรแกรม
การวิเคราะห์และกาหนดคุณสมบ ัติของปัญหา
(Analyzing and Defining the problem)
การวางแผนเกีย
่ วก ับการแก้ปญ
ั หา
(Planning the solution)
การเขียนเป็นภาษาคอมพิวเตอร์
(Coding the program)
การทดสอบโปรแกรม (Testing the program)
การจ ัดทาเอกสารประกอบและการบารุงร ักษา
โปรแกรม (Documenting the program and
maintenance)
การวิเคราะห์และการกาหนดคุณสมบัติของปัญหา
ความต ้องการเกีย
่ วกับผลลัพธ์ (Output Requirement)
วัตถุประสงค์ของการแก้ปัญหา
กาหนดรู ปแบบการนาเสนอผลลัพธ์
การรับข้อมูล (Input Requirement)
ปั ญหาบอกข้อมูลอะไรบ้าง
กาหนดรู ปแบบของข้อมูลที่รับเข้า
วิธีการคานวณ(Method of Calculation)
กาหนดสู ตรหรื อวิธีการ
กาหนดเงื่อนไขของการคานวณ (ถ้ามี) เพื่อป้ องกันไม่ให้โปรแกรมทางาน
ผิดพลาด เช่น
♣ กรณีการหารดวยศู
นย ์
้
♣ การวนซา
้ ไมรู่ จบ
้
ข้อกาหนดและคุณสมบัติต่างๆของโปรแกรม จะเป็ นเอกสารอ้างอิงและใช้ในการทดสอบระบบ
ตัวอย่างการวิเคราะห์ปัญหาหรื อโจทย์
ตัวอย่างที่ 1 ต้องการทราบว่าหากจูงจักรยานซึ่งมีวงล้อขนาดเส้นผ่าศูนย์กลาง r ให้
เคลื่อนที่ไปบนพื้นทรายจนพบว่าล้อหมุนครบ 1 รอบ ลอยล้อจักรยานจะยาวเท่าใด
วิเคราะห์
ผลลัพธ์ที่ตอ้ งการ
ความยาวของเส้ นรอบวง
ข้อมูลที่ตอ้ งทราบ
รั ศมีของวงกลม
วิธีการ
ความยาวของเส้นรอบวง = 2 x Pi x รัศมี
Pi x 2 x รัศมี = Pi x เส้นผ่าศูนย์กลาง
การออกแบบวิธีแก้ ปัญหา
เทคนิคและวิธีมาตรฐานที่ได้รับการยอมรับ
Divide-and-Conquer
Modularization
Top-down Design
Bottom-up Design
หลักการสาคัญ
การเลือกโครงสร้างข้อมูล
การออกแบบอัลกอริ ทึม (Algorithm)
Worth F โครงสร้ างข้ อมูล + อัลกอริทมึ = โปรแกรม
การออกแบบอัลกอริทึม
อัลกอริ ทึม หมายถึง ลาดับการทางาน ซึ่ งถ้าปฏิบตั ิตามอย่างถูกต้องแล้ว จะทาให้งานหรื อ
การประมวลผลนั้นสาเร็ จ
ตัวอย่าง
กรรมวิธี
อัลกอริ ทึม
ขัน้ ตอนในอัลกอริ ทึม
ทากล้วยบวดชี
สูตรการทากล้วยบวดชี
ขูดมะพราว,
คั้นน้ ากะทิ, ตัดกล้วยตามขวาง, …
้
รู ปแบบ
ผังงาน (Flowchart) : กาหนดสัญลักษณ์ที่มีความหมายเฉพาะ อธิ บายการ
ทางานผ่านสัญลักษณ์ ลาดับการทางานสอดคล้องกับลาดับของสัญลักษณ์ที่ปราก
คาสั่ งลาลอง (Pseudo code) : อธิบายโครงสร้างการทางานของโปรแกรม
โดยใช้ภาษาทัว่ ไป
การเขียนและการรวมชุดคาสั่ ง
การเขียนโปรแกรมเป็ นการแปลงโครงสร้างข้อมูลและอัลกอริ ทึมให้อยูใ่ นรู ป
ของภาษาคอมพิวเตอร์
หลักการเลือกภาษาคอมพิวเตอร์
ลักษณะงาน
คุณลักษณะของภาษา
ความถนัดของผูเ้ ขียน
ฯลฯ
การรวมชุดคาสัง่ (Software Integration)
การทวนสอบและการทดสอบการทางานของโปรแกรม
การทวนสอบ (Verification) หมายถึง การตรวจสอบว่ าผลลัพธ์ น้ ันถูกต้ อง สมบูรณ์
และผลทีไ่ ด้ จากขั้นตอนหนึ่งๆสอดรับกับผลทีไ่ ด้ จากขั้นตอนก่ อนหน้ าหรือไม่
การตรวจสอบความสมเหตุสมผล (Validation) หมายถึง การตรวจสอบผลการ
ทางานเทียบกับข้ อกาหนดของปัญหาหรือความต้ องการของเจ้ าของระบบ
การทดสอบหน่ วยย่ อย (Unit Testing)
หน้ าทีห
่ รือวัตถุประสงค์ ของปัญหาย่ อย
ข้ อมูลนาเข้ าของปัญหาย่ อย
ข้ อมูลทีไ่ ด้ รับจากปัญหาย่ อยอืน
่
ข้ อมูลส่ งออกทีเ่ กิดจากปัญหาย่ อยนั้น
ข้ อมูลทีเ่ ป็ นผลลัพธ์ ส่งต่ อไปให้ ปัญหาย่ อยอืน
่
การทดสอบรวม (Integration Testing)
ข้ อกาหนดคุณลักษณะ
ของปั ญหาย่ อย
ข้อผิดพลาด(Error)
Syntax Error ข้อผิดพลาดเกิดเนื่องจากการเขียนโปรแกรมผิดหลัก
ไวยากรณ์ของภาษาคอมพิวเตอร์
♣
ตรวจพบโดย ผูเ้ ขียนโปรแกรม (Programmer) หรื อ ตัวแปลภาษา
(Compiler)
Runtime Error ข้อผิดพลาดที่เกิดขึ้นในขณะที่โปรแกรมปฏิบตั ิงาน ผล
จากการมีขอ้ ผิดพลาดนี้อาจทาให้โปรแกรมหยุดการทางาน อาจเกิดจาก
การคานวณที่ไม่สอดคล้องเงื่อนไข เช่น หารด้วยศูนย์
♣ การอ้างถึงข้อมูลนอกขอบเขตที่เป็ นไปได้
♣
Logical Error ข้อผิดพลาดเนื่องจากการทางานผิดขั้นตอน ซึ่ งอาจเกิดจาก
การวิเคราะห์ปัญหาผิด
♣
ปรากฏโดยให้ผลไม่ตรงตามที่คาด
การซ่ อมบารุ งโปรแกรม
การซ่ อมบารุ งโปรแกรม หมายถึง การแก้ไขข้อผิดพลาดของโปรแกรม หรื อ การ
ปรับปรุ งโปรแกรมให้มีประสิ ทธิ ภาพมากขึ้น
สาเหตุ
การเปลี่ยนฮาร์ดแวร์หรื อซอฟต์แวร์ระบบ
♣ การเปลี่ยนแปลงขององค์กร เช่น ความต้องการเปลี่ยน ก ระเบียบบางอย่างหรื อ
เงื่อนไขการทางานเปลี่ยนไป
♣
เอกสารประกอบโปรแกรม
♣ คู่มือการใช้ (User manual)
♣ ข ้อกาหนดของโปรแกรม (Program specification)
อัลกอริทึม
อัลกอริ ทึมหรื อขั้นตอนวิธี หมายถึง ลาดับการทางาน ซึ่ งถ้าปฏิบตั ิตามอย่างถูกต้องแล้ว
จะทาให้งานหรื อการประมวลผลนั้นสาเร็ จ
เขียนโดยมีหมายเลขกากับขั้นตอน
ด้วยภาษาทัว่ ไป
รู ปแบบมาตรฐาน
ผังงาน (Flowchart) : กาหนดสัญลักษณ์ที่มีความหมายเฉพาะ อธิ บายการ
ทางานผ่านสัญลักษณ์ ลาดับการทางานสอดคล้องกับลาดับของสัญลักษณ์ที่ปราก
คาสั่ งลาลอง (Pseudo code) : อธิบายโครงสร้างการทางานของ
โปรแกรมโดยใช้ภาษาทัว่ ไป
ตัวอย่างอัลกอริ ทึม
อัลกอริ ทึมของตัวอย่ างที่ 1 (สไลด์ที่ 5)
1. รับค่า เส้นผ่าศูนย์กลางของวงล้อ
2. คานวณ เส้นรอบวง = 3.14 x เส้นผ่าศูนย์กลาง
3. แสดงค่า เส้นรอบวง
อัลกอริ ทึมนับจานวนข้อมูลที่ป้อน
1. กาหนดให้ ตัวนับเริ่ มต้นเป็ น 0
2. ทาซ้ าจนกว่าจะหยุดการป้ อนข้อมูล
2.1 ป้ อนข้อมูล
2.2 เพิ่มค่าตัวนับ ทีละ 1
3. แสดงค่า ตัวนับ
คาสั่ งลาลองหรือรหัสเทียม(Pseudo code)
รหั สลาลอง หมายถึง
♣คาอธิบายที่มีโครงสร้างและรู ปแบบชัดเจน
–แบบลาดับ แบบเลือก แบบวนซ้ า
♣ไม่ข้ ึนกับภาษาคอมพิวเตอร์ ใดภาษาหนึ่ งโดยเฉพาะ
♣สามารถเปลี่ยนไปเป็ นภาษาคอมพิวเตอร์ ได้ง่าย
♣นิยมใช้ภาษาอังกฤษ
ข้ อตกลงในการเขียนรหัสเทียม
อธิ บายการทางานด้วย คากริ ยาในภาษาอังกฤษ เช่น Let Compute
Move Initialize Read Write Add Subtract Display
Start Endฯลฯ
มีการใช้เครื่ องหมายทางคณิ ตศาสตร์ ประกอบ
กลุ่มของคาสั่งเพื่อการทางานหลักเฉพาะงาน เรี ยกเป็ น โมดูล(Module)
โมดูลเหล่านี้จะถูกเรี ยกใช้โดย คาว่า Call หรื อ Do และตามด้วยชื่อโมดูล
มีการกาหนดคาศัพท์เพื่อบ่งถึงโครงสร้างการทางาน ดังนี้
แบบลาดับ(Sequential) แสดงลาดับการทางานตามลาดับที่เขียน
คาสัง่
ข้อตกลงในการเขียนรหัสเทียม(ต่อ)
แบบเลือกหรื อตัดสิ นใจ (Selection) กาหนดให้เขียนตามรู ปแบบดังนี้
If เงื่อนไข
Then คาสั่ ง-1
Else คาสั่ ง-2
Endif
♣ หมายความว่า เมื่อ เงื่อนไข ทีร
่ ะบุเป็ นจริง จะทางาน
ตาม คาสั่ ง-1 หากเงื่อนไขเป็ นเท็จ จะทาตาม คาสั่ ง-2
♣
If N = 0
Then Mean = 0
Else Mean = S / N
Endif
ข้อตกลงในการเขียนรหัสเทียม(ต่อ)
แบบทาซ้ า (Repetition or Loop) มีโครงสร้างการทาซ้ า 3
ลักษณะ
♣
♣
♣
ทาซา้ ดวยจ
านวนรอบทีแ
่ น่นอน
้
ทาซา้ จนกว่าเงื่อนไขจะเป็ นจริ ง
ทาซา้ ในขณะที่เงื่อนไขเป็ นจริ ง
ทาซ้ าด้วยจานวนรอบที่แน่นอน
REPEAT FOR จานวนรอบ TIMES
คาสั่ ง-1
คาสั่ ง-2
:
ENDFOR
เช่น
LET Total <-- 0
REPEAT FOR 10 TIMES
READ X
ADD X TO Total
ENDFOR
ทาซ้ าจนกว่าเงื่อนไขจะเป็ นจริ ง
REPEAT
คาสั่ ง-1
คาสั่ ง-2
:
UNTIL เงื่อนไข
เช่น
LET Total <-- 0
LET I <-- 0
REPEAT
READ X
ADD X TO Total
ADD 1 TO I
UNTIL I = 10
ทาซ้ าในขณะที่เงื่อนไขเป็ นจริ ง
REPEAT WHILE เงื่อนไข
คาสั่ ง-1
คาสั่ ง-2
เช่น
:
END REPEAT
LET Total <-- 0
LET I <-- 0
REPEAT WHILE I < 10
READ X
ADD X TO Total
ADD 1 TO I
END REPEAT
ตัวอย่ างที่ 2
ต้ องการหาความสู งเฉลีย่ ของนักศึกษา 10 คนทีน่ ั่งเรียนแถวหน้ า
ผลลัพธที
่ องการ
ความสูงเฉลี่ยของนักศึกษา 10 คน...
้
์ ต
ข้อมูลที่ตอ้ งใช้ (1) จานวนนักศึกษาที่ตอ้ งการหาความสู งเฉลี่ย 10 คน
(2) ความสูงของนักศึกษาแต่ละคน
วิธีคานวณ
ความสูงเฉลี่ย = ผลรวมความสูงของนักศึกษา 10 คน
จานวนนักศึกษา (1)
กาหนดให้ S แทน ผลรวมความสูงของนักศึกษา
X แทน ความสู งของนักศึกษาแต่ละคน (2)
M แทน ความสูงเฉลี่ยของนักศึกษา
ดังนั้น M = S / 10
โดยที่
S = S + X สาหรับนศ.คนที่ 1, 2, .. 10
ตัวอย่ างที่ 2 (ต่ อ)
อัลกอริทึมของการคานวณ
0. เริ่ ม
1. กาหนดค่าเริ่ มต้นให้ S เป็ น 0
2. กาหนดค่าเริ่ มต้นตัวนับ เป็ น 0
3. ทาซ้ าต่อไปนี้จนค่าตัวนับครบ 10 รอบ
3.1 รับค่าความสูง X
3.2 นาค่า X ไปบวกสะสมไว้ที่ S
3.3 เพิ่มค่าตัวนับอีก 1
4. คานวณค่าเฉลี่ย Mean= S หารด้วย 10
5. แสดงค่าเฉลี่ย Mean
6. จบงาน
รหัสลาลองของการคานวณ
Start
Let S <-- 0
Let I <-- 0
Repeat
Read X
Add X to S
Add 1 to I
Until I = 10
Compute Mean <-- S / 10
Display Mean
End
ตัวอย่ างที่ 2 (ต่ อ)
รหัสลาลองของการคานวณ
Start
Let S <-- 0
Let I <-- 0
Repeat While I < 10
Read X
Add X to S
Add 1 to I
End Repeat
Compute Mean <-- S / 10
Display Mean
End
รหัสลาลองของการคานวณ
Start
Let S <-- 0
Let I <-- 0
Repeat For 10 Times
Read X
Add X to S
Add 1 to I
End For
Compute Mean <-- S / 10
Display Mean
End