บทที่ 8 การเขียนโปรแกรมเบื

Download Report

Transcript บทที่ 8 การเขียนโปรแกรมเบื

หลักการเขียนโปรแกรม
ง33201 เทคโนโลยีสารสนเทศ ม.3
1
โปรแกรมเมอร์คนแรกของโลก
Augusta Lovelace Ada คือ โปรแกรมเมอร์ คนแรกของโลก
แต่ Edsger Wybe Dijkstra ใช้ คำว่ ำ
โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์ เป็ นคนแรก
ข้อมูลจาก http://www.cs.utexas.edu/users/dahlin/Classes/GradOS/papers/p341-dijkstra.pdf
โปรแกรมเมอร์คนแรกของโลก
•"what if a calculating engine could not
only foresee but could act on that
foresight"
•(จะเป็ นอย่างไร ถ้าหากเครื่ องคานวณไม่
เพียงสามารถหยัง่ รู้ได้ หากแต่สามารถ
ตอบสนองต่อการหยัง่ รู ้น้ นั ได้ดว้ ย)
•สิ่ งที่เธอทาคือ การสร้างภาษาสาหรับ
เครื่ องวิเคราะห์ (analytical engine)
โปรแกรมเมอร์คนแรกของโลก
•แต่งเพลงที่ซบั ซ้อน
•สร้างภาพกราฟิ ก
•นามาใช้เพื่อการคานวณขั้นสูง
•พัฒนาวงการวิทยาศาสตร์ได้
•ร้อยกว่าปี ต่อมา ในปี พ.ศ. 2522 (ค.ศ. 1979)
ก ร ะ ท ร ว ง ก ล า โ ห ม ส ห รั ฐ ฯ ส ร้ า ง
ภาษาคอมพิวเตอร์ มาตรฐานISO ขึ้นมาตัวแรก
พร้ อ มตั้ง ชื่ อ เพื่ อ เป็ นเกี ย รติ แ ก่ เลดี้ เอดา ว่ า
ภาษา "ADA"
ภาษาคอมพิวเตอร์
หมำยถึง สั ญลักษณ์ ทผี่ ้ ูคดิ พัฒนำภำษำ
กำหนดขึน้ มำ เพือ่ ใช้ แทนคำสั่ งสื่ อสำรสั่ งงำน
ระหว่ ำงมนุษย์ กบั เครื่องคอมพิวเตอร์ และอุปกรณ์ ต่อพ่วงอืน่ ๆ
ภาษาคอมพิวเตอร์มีมากมาย
ข้อมูลจาก http://dmoz.org/Computers/Programming/Languages/ 143 ภาษา
ABC, Ada, ADL, Algol 60, Algol 68, APL, AppleScript@,
Assembly, Awk, BASIC, Befunge, BETA, Bigwig, Bistro@,
Blue, Brainfuck, C, C++, Caml@, Cecil, CHILL, Clarion,
Clean, Clipper, CLU, Cobol, CobolScript, Cocoa, Component
Pascal@, C-sharp, Curl, D, DATABUS, Delphi, DOS Batch@,
Dylan, E, Eiffel, ElastiC, Erlang, Euphoria, Forth,
Fortran, Fortress, FP, Frontier, Goedel, Groovy@, Haskell,
HTML@, HTMLScript@, HyperCard@, ICI, Icon, IDL, Intercal,
Io, Jal@, Java, JavaScript, Jovial, LabVIEW, Lagoona@,
LaTeX@, Leda, Limbo, Lisp, Logo@, Lua, m4, Maple@,
Mathematica@, MATLAB@, Mercury, Miranda, Miva, ML, Modula2, Modula-3, Moto, Oberon, Objective Caml@, Objective-C,
Obliq, Occam, Oz, Pascal, Perl, PHP, Pike, PL, Pliant, PLSQL, POP-11, PostScript@, PowerBuilder@, Prograph, Prolog,
Proteus, Python, R@, REBOL, Refal, Rexx, Rigal, RPG, Ruby,
SAS, Sather, Scheme@, Self@, SETL, SGML@, Simkin, Simula,
Sisal, S-Lang, Smalltalk, Snobol, SQL, Squeak@, Tcl-Tk,
Tempo, TeX@, TOM, TRAC, Transcript, Turing, T3X, UML@,
VBScript@, Verilog@, VHDL@, Visual Basic, Visual
DialogScript, Visual FoxPro, Water, XML@, XOTcl@, YAFL,
Yorick, Z
ภาษาคอมพิวเตอร์

สำมำรถแบ่ งออกได้ เป็ น 5 ยุคคือ
1. ภำษำเครื่อง (Machine language)
2. ภำษำแอสเซมบลี (Assembly language)
3. ภำษำชั้นสู ง (High-level language)หรือ ภำษำรุ่นที่ 3
(3GL:Third Generation Language)
4. ภำษำชั้นสู งมำก (Very high-level language) หรือภำษำรุ่นที่ 4 (4GL)
5. ภำษำธรรมชำติ (Natural language) หรือภำษำรุ่นที่ 5 (5GL)
1. ภำษำเครื่อง (Machine language)
เป็ นภำษำพืน้ ฐำนทีค่ อมพิวเตอร์ สำมำรถเข้ ำใจได้
 แต่ ละคำสั่ งประกอบขึน
้ จำกกลุ่มตัวเลข 0 และ 1
ซึ่งเป็ นเลขฐำนสอง

2. ภำษำแอสเซมบลี (Assembly language)
เป็ นภาษาที่ใช้สญ
ั ลักษณ์ขอ้ ความ แทนกลุ่มของตัวเลขฐานสอง
เพื่อให้ง่ายต่อการเขียนและการจดจามากขึ้น
 การทางานของโปรแกรมจะต้องทาการแปลภาษาแอสเซมบลี
ให้เป็ นภาษาเครื่ อง โดยใช้ตวั แปลที่เรี ยกว่า แอสเซมเบลอร์ (Assembler)

3. ภำษำชั้นสู ง (High-level language) หรือภำษำรุ่นที่ 3
(3GL:Third Generation Language)





ถูกสร้างขึ้นมาเพือ่ ให้เขียนโปรแกรมได้ง่ายขึ้น
โดยมีลกั ษณะเหมือนกับภาษาอังกฤษทัว่ ไป
ผูเ้ ขียนไม่จาเป็ นต้องมีความรู ้เกี่ยวกับฮาร์แวร์แต่อย่างใด
ภาษานี้ จาเป็ นต้องมีตวั แปลภาษาเครื่ องเช่นกัน เรี ยกตัวแปลนี้ ว่า คอมไพเลอร์
(compiler) หรื อ อินเตอร์พรี เตอร์ (Interpreter) อย่างใดอย่างหนึ่ง
ตัวอย่างของภาษาชั้นสู ง เช่น ภาษาปาสคาล ภาษาซี ภาษาโคบอล ภาษาเบสิ ก
ภาษาฟอร์แทรน
4. ภาษาชั้นสู งมาก (Very high-level language)
หรื อภาษารุ่ นที่ 4 (4GL)
เป็ นภาษาที่มีลกั ษณะคล้ายภาษาพูดตามปกติของมนุ ษย์ ภาษานี้
จะช่ ว ยให้ ก ารเขี ย นโปรแกรมเร็ ว มากขึ้ น กว่า ภาษาในรุ่ น ที่ 3
เนื่ องจากมี เครื่ องมื อที่ ช่วยในการสร้ างแบบฟอร์ มหน้าจอ เพื่อ
จัดการกับข้อมูลรวมไปถึงการออกรายงาน เมนูต่าง ๆ
 ตัวอย่างของภาษาชั้นสู งมากได้แก่ informix-4GL, MAGIC ,
Delphi , Power Builder ฯลฯ

5. ภาษาธรรมชาติ (Natural language)
หรื อภาษารุ่ นที่ 5 (5GL)
เป็ นภาษาที่สามารถสั่งงานคอมพิวเตอร์ โดยใช้รูปแบบของภาษา
มนุษย์ได้เลย
 คาสัง
่ อยูใ่ นรู ปแบบที่ไม่แน่นอนตายตัว แต่คอมพิวเตอร์ จะทาการ
แปลให้ออกมาในรู ปที่คอมพิวเตอร์เข้าใจได้
 ภาษานี้ ถู ก สร้ างขึ้ น มาจากเทคโนโลยีทางด้า นระบบผูเ้ ชี่ ย วชาญ
(Expert system)
 ตัวอย่างภาษาในรุ่ นที่ 5 ได้แก่ ภาษา PROLOG เป็ นต้น

ขั้นตอนการเขียนโปรแกรมคอมพิวเตอร์
13
(Problem analysis)
 การออกแบบโปรแกรม (Design)
 การเขียนโปรแกรมโดยใช้ภาษาใดภาษาหนึ่ ง (Coding)
 การตรวจสอบข้อผิดพลาดของโปรแกรม (Testing and Debugging )
 การทดสอบความถูกต้องของโปรแกรม (Testing and validating)
 การทาเอกสารประกอบโปรแกรม (Documentation)
 การบารุงรักษาโปรแกรม (Program Maintenance)
 การวิเคราะห์ปัญหา
การออกแบบโปรแกรม
14

เครื่ องมือที่ใช้ในการออกแบบ
ผังงาน (Flowchart) ขั้นตอนการแก้ปัญหาทีละขั้นตอน
ในลักษณะรู ปภาพ
รหัสจาลอง (Pseudo) รู ปแบบเป็ นภาษาพูดง่าย ๆ
ภาษาอังกฤษ หรื อภาษาไทยก็ได้
สัญลักษณ์ในผังงาน
จุดเริ่มต้ น หรือสิ้นสุ ด
อ่ ำนข้ อมูลเข้ ำ หรือแสดงผล
แฟ้มข้ อมูล
จุดเชื่อมต่ อในหน้ ำอืน่
จุดเชื่อมต่ อในหน้ ำเดียวกัน
ประมวลผล
ตัดสิ นใจ
แสดงผลทำงหน้ ำจอ
15
โปรแกรมย่อย
พิมพ์ผลทำงเครื่องพิมพ์
แสดงทิศทำงกำรประมวลผล
การพัฒนาอัลกอริ ธึม
16

หลักการโครงสร้างควบคุม (Control structures)
การเขียนขั้นตอนในรายละเอียดของแต่ละอัลกอริ ธึม อาศัย
โครงสร้างควบคุมดังนี้
โครงสร้างลาดับ (Sequence structure)
โครงสร้างตัดสิ นใจ (Selection structure)
โครงสร้างทาซ้ า (Repetition structure)
การพัฒนาอัลกอริ ธึม
17

โครงสร้ ำงลำดับ (Sequence)
 หมายถึง งานที่ตอ
้ งทาต้องมีลาดับก่อนหลัง
 เช่น
อัลกอริ ธึม “การตื่นนอนต้อนรับวันใหม่”
งาน ตื่นนอน
งาน ถอดชุดนอน
งาน เข้าห้องน้ า
งาน แต่งตัว
งาน เดินทางมาเรี ยน
ต้องจัดลาดับให้ถูกต้อง
งาน ตื่นนอน
งาน ถอดชุดนอน
งาน เข้าห้องน้ า
งาน แต่งตัว
งาน เดินทางมาเรี ยน
โครงสร้างการทางานแบบลาดับ (Sequence)
18

โครงสร้างลาดับ
 หลักการให้มองงานเป็ นชิ้ นใหญ่ก่อน ยังไม่ตอ
้ งลงรายละเอียด แล้ว
จัดลาดับความคิดว่าจะทาอะไร ก่อนหรือหลัง ตามลาดับ
งำน 1
งำน 2
ผังงาน
Begin
งาน 1
งาน 2
end
รหั สเทียม
ตัวอย่างการเขียนผังงาน
19

จงเขียนผังงานที่แสดงลาดับการคานวณตัวเลข เพื่อหาผลลัพธ์
การคานวณ แล้วเก็บผลลัพธ์ไว้ในหน่วยความจาตาแหน่ง K
8 + 10 / 5 - 6 * 3
โดยมีลาดับการคานวณทางเลขคณิ ต ดังนี้
1. ยกกาลัง
2. คูณหรื อหาร (โดยทาจากซ้ายไปขวา)
3. บวกหรื อลบ (โดยทาจากซ้ายไปขวา)
ตัวอย่างการเขียนผังงาน
8 + 10 / 5 - 6 * 3
20
เริ่ มต้น
T1 = 10 / 5
T2 = 6 * 3
1
1
T3 = 8 + T1
K = T3 - T2
จบงาน
การพัฒนาอัลกอริ ธึม
21

โครงสร้างตัดสินใจ (selection)
IF
 โครงสร้าง IF else
 โครงสร้าง
การพัฒนาอัลกอริธึม
22

โครงสร้าง IF
 เป็ นโครงสร้างที่ทดสอบเงื่อนไข
แล้วเลือกว่าจะทาหรือไม่ทา ก่อนที่จะ
ไปทางานอื่นต่อไป
ใช่
เงือ่ นไข
ไม่ ใช่
งำนต่ อไป
งำนที่ต้องทำ
การพัฒนาอัลกอริธึม
23

ตัวอย่าง โครงสร้าง IF
 แม่ถามว่าหิวข้าวหรือไม่ ถ้าหิวก็ให้กิน
เดินทางไปโรงเรียน (งานต่อไป)
หิวใช่ ไหม?
ไม่ ใช่
ถ้าไม่หิวไม่ตอ้ งกิน แล้วจึง
ใช่
งำนเดินทำงมำเรียน
งำนกินข้ ำว
ตัวอย่างการเขียนผังงาน

จงเขียนผังงานแสดงการเขียนและส่งจดหมาย
24
เริ่มต้ น
เขียนจดหมำย
1
มี
มีแสตมป์ หรือไม่
พับจดหมำย
ทำกำรซื้อแสตมป์
ใส่ ซองจดหมำย
ติดแสตมป์
จ่ ำหน้ ำซอง
1
ไม่ มี
ส่ งจดหมำย
จบงำน
การพัฒนาอัลกอริธึม
25

โครงสร้าง IF-else
ไม่ใช่
งาน 2
เงื่อนไข
ใช่
งาน 1
If เงื่อนไข
งาน 1
Else
งาน 2
End if
ตัวอย่างการเขียนผังงาน
26
เมื่อเราซื้อยาจากร้านขายยาที่มีอยูท่ วั่ ๆ ไปนั้น ในส่ วนของวิธีใช้ยามักจะแยก
ขนาดรับประทานไว้ตามอายุ เช่น
อายุมากกว่า 10 ปี รับประทานครั้งละ 3 ช้อนชา
อายุ
6-10 ปี รับประทานครั้งละ 2 ช้อนชา
อายุ
2-5 ปี รับประทานครั้งละ 1 ช้อนชา
เด็กอายุต่ากว่า 1 ปี ห้ามรับประทาน
จงเขียนผังงานที่แสดงถึงขนาดของการใช้ยาตามอายุน้ ี

เริ่มต้ น
27
ใช่
รับประทำนครั้งละ
3 ช้ อนชำ
ใช่
รับประทำนครั้งละ
2 ช้ อนชำ
ใช่
รับประทำนครั้งละ
1 ช้ อนชำ
อำยุ > 10
ไม่ใช่
6 <= อำยุ <=10
ไม่ใช่
2 <= อำยุ <=5
ไม่ใช่
ห้ ำมรับประทำน
จบงำน
การพัฒนาอัลกอริธึม
28

โครงสร้างทาซ้า (Repetition Structure)
 While
Repetition Structure
โครงสร้างที่ตอ้ งตรวจสอบเงื่อนไขก่อนทาในลูป
 Do While Repetition Structure
โครงสร้างที่ตอ้ งประมวลผลในลูปอย่างน้อย 1 รอบก่อนทดสอบ
เงื่อนไขออกจากลูป
การพัฒนาอัลกอริธึม
29

โครงสร้าง while
เท็จ
เงื่อนไข
จริ ง
งาน
While เงื่อนไข
งาน
end while
รหัสเทียม
ผังงาน
การพัฒนาอัลกอริธึม
30

โครงสร้าง DO while
DO
งาน
จริ ง
เงื่อนไข
เท็จ
ผังงาน
คาสั่งต่าง ๆ
While เงื่อนไข
รหัสเทียม
โครงสร้างการทางานแบบมีการทางานซ้า (Iteration)
เริ่ มต้น
31
จงเขียนผังงาน แสดงถึงการ
J=1
พิมพ์ค่าบวกของ
SUM = 0
1+2+3+4+5+.....+100
ออกทางเครื่องพิมพ์
SUM = SUM+J
J=J+1
ใช่
J <=100?
ไม่ใช่
Print SUM
จบงาน
การเขียนโปรแกรมโดยใช้ภาษาใดภาษาหนึ่ ง(Coding)
32

การเขียนโปรแกรมที่ดีน้ัน ควรจะทาตามขั้นตอน คือเริ่มตั้งแต่ วิเคราะห์
ปั ญหา ก่อนแล้วทาการออกแบบโปรแกรม จึงเริ่มเขียนโปรแกรม สาหรับ
ผูท้ ี่ไม่มีประสบการณ์ควรทดลองเขียนในกระดาษก่อน แล้วตรวจสอบจน
แน่ ใจว่าสามารถทางานได้แล้วจึงทาการคียล์ งเครื่อง
การตรวจสอบข้อผิดพลาดของโปรแกรม
(Testing and Debugging the Program)
33

รูปแบบข้อผิดพลาด มี 3 แบบคือ
 Syntax Error – ข้อผิดพลาดจากการใช้ไวยากรณ์ภาษาที่ผิด หรือ
อาจเกิดจากการสะกดคาผิด
 Run-time Error – ข้อผิดพลาดในระหว่างการปฏิบต
ั ิงาน
(Execution) มักเกิดจากความรูเ้ ท่าไม่ถึงการณ์
 Logical Error – ข้อผิดพลาดที่หาและแก้ได้ยากที่สุด ต้องทาการไล่
โปรแกรมทีละคาสัง่ เพื่อหาข้อผิดพลาดนั้น
การตรวจสอบข้อผิดพลาดของโปรแกรม
(Testing and Debugging the Program)
34

วิธีการตรวจสอบข้อผิดพลาดของโปรแกรม มีดงั นี้
 การตรวจสอบด้วยตนเอง (Self
Checking) เขียนโปรแกรมลง
กระดาษแล้วไล่เช็คตรวจสอบการทางานทีละขั้นด้วยตนเอง ว่ าจะมี
การทางานที่ถูกต้องตามความต้องการหรือไม่
 ตรวจสอบด้ว ยการแปลโปรแกรม (Translating) การแปลเป็ น
ภาษาเครื่อง ตรวจสอบข้อผิดพลาดของโปรแกรม
การทดสอบความถูกต้องของโปรแกรม
(Testing and Validating)
35

วิธีทดสอบความถูกต้องของข้อมูล มีดงั นี้
 กรณีที่ขอ
้ มูลถูกต้อง (valid case) ทดสอบโดยใส่ขอ้ มูลที่ถูกต้องลงไป
ในโปรแกรม เพื่อทดสอบผลลัพธ์วา่ ตรงกับที่ตอ้ งการหรือไม่
 การใช้ขอบเขตและความถูกต้องของข้อมูล (Range check and
Completeness check) เป็ นการเช็คขอบเขตข้อมูล
 การใช้ความสมเหตุสมผล (Consistency Check)
การทดสอบความถูกต้องของโปรแกรม (Testing and Validating)
36
(Correct No. and Type character
check) ตรวจสอบว่าถ้าเป็ นฟิ ลด์ที่เป็ นตัวเลขอย่างเดียว เช่น จานวน
เงิน ก็ควรจะป้อนข้อมูลได้เฉพาะตัวเลขเท่านั้น
 ข้อมูลเป็ นไปตามข้อกาหนด (Existence Check) ข้อมูลที่ป้อนต้อง
เป็ นไปตามที่กาหนดไว้แน่ นอนแล้วเท่านั้น
 ข้อมูลที่เป็ นตัวเลขและตัวอักษร
การบ้าน
37
คนทีย
่ งั จดเนื้อหาภาษาคอมพิวเตอรไม
์ ่
เสร็จ ให้จดให้เสร็จ
2. ทาใบงานในเว็บ ใบงานที่ 1.1
โครงสรางโปรแกรม
้
3. เขียนโครงสรางผั
งงาน มาอยางละ
1
้
่
ผัง
ลาดับ
ทางเลือก
1.