คำสั่ง-1

Download Report

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