Upload
gwendolyn-leblanc
View
53
Download
0
Embed Size (px)
DESCRIPTION
หลักการเขียนโปรแกรม ง33201 เทคโนโลยีสารสนเทศ ม.3. โปรแกรมเมอร์คนแรกของโลก. Augusta Lovelace Ada คือ โปรแกรมเมอร์คนแรกของโลก แต่ Edsger Wybe Dijkstra ใช้คำว่า โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์เป็นคนแรก. - PowerPoint PPT Presentation
Citation preview
หลั�กการเขียนโปรแกรม
ง 33201
เทคโนโลยีสารสนเทศ ม3.
1
โปรแกรมเมอร�คนแรกขีองโลัก Augusta Lovelace Ada ค�อ
โปรแกรมเมอร�คนแรกขีองโลัก แต่� Edsger Wybe Dijkstra ใช้�ค�าว่�า โปรแกรมเมอร� (Programmer) ก�บโลักขีองคอมพิ�ว่เต่อร�เป นคนแรก
ข้�อม�ลจาก -341http://www.cs.utexas.edu/users/dahlin/Classes/GradOS/papers/p dijkstra.pdf
โปรแกรมเมอร�คนแรกข้องโลก
•"what if a calculating engine could not only foresee but could act on that foresight" •(จะเป�นอยี�างไร ถ้�าหากเคร !องค"านวณไม�เพียีงสามารถ้หยี&!งร� �ได้� หากแต่�สามารถ้ต่อบสนองต่�อการหยี&!งร� �น& *นได้�ด้�วยี)•ส+!งท!เธอท"าค อ การสร�างภาษาส"าหร&บเคร !องว+เคราะห� (analytical engine)
โปรแกรมเมอร�คนแรกข้องโลก
•แต่�งเพีลงท!ซั&บซั�อน •สร�างภาพีกราฟิ2ก •น"ามาใช้�เพี !อการค"านวณข้&*นส�ง •พี&ฒนาวงการว+ทยีาศาสต่ร�ได้�
•ร�อยีกว�าป6ต่�อมา ในป6 พี.ศ . 2522 (ค.ศ . 1979)
กระทรวงกลาโหมสหร&ฐฯ สร�างภาษาคอมพี+วเต่อร�
มาต่รฐานISO ข้9*นมาต่&วแรก พีร�อมต่&*งช้ !อเพี !อเป�นเกยีรต่+แก�
เลด้* เอด้า ว�า ภาษา "ADA"
ภาษาคอมพิ�ว่เต่อร�
หมายถึ$ง สั�ญลั�กษณ์�ที่)ผู้+�ค�ดพิ�ฒนาภาษาก�าหนดขี$.นมา เพิ�)อใช้�แที่นค�าสั�)งสั�)อสัารสั�)งงาน ระหว่�างมน0ษย�ก�บเคร�)องคอมพิ�ว่เต่อร�แลัะอ0ปกรณ์�ต่�อพิ�ว่งอ�)นๆ
ภาษาคอมพี+วเต่อร�มมากมายีข้�อม�ลจาก 143http://dmoz.org/Computers/Programming/Languages/ ภาษา
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, Modula-2, Modula-3, Moto, Oberon, Objective Caml@, Objective-C, Obliq, Occam, Oz, Pascal, Perl, PHP, Pike, PL, Pliant, PL-SQL, 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 ย0คค�อ 1. ภาษาเคร�)อง (Machine language) 2. ภาษาแอสัเซมบลั (Assembly language) 3. ภาษาช้�.นสั+ง - (High level language)หร�อ
ภาษาร0�นที่) 3 (3GL:Third Generation Language)
4. ภาษาช้�.นสั+งมาก - (Very high level language) หร�อภาษาร0�นที่) 4 (4GL)
5. ภาษาธรรมช้าต่� (Natural language)หร�อภาษาร0�นที่) 5 (5GL)
1. 1. ภาษาเคร�)องภาษาเคร�)อง (Machine
language) เป นภาษาพิ�.นฐานที่)คอมพิ�ว่เต่อร�
สัามารถึเขี�าใจได� แต่�ลัะค�าสั�)งประกอบขี$.นจากกลั0�มต่�ว่เลัขี
0 แลัะ 1ซ$)งเป นเลัขีฐานสัอง
2. 2. ภาษาแอสัเซมบลั ภาษาแอสัเซมบลั (Assembly language) (Assembly language)
เป�นภาษาท!ใช้�ส&ญล&กษณ�ข้�อความ แทนกล;�มข้องต่&วเลข้ฐานสอง
เพี !อให�ง�ายีต่�อการเข้ยีนและการจด้จ"ามากข้9*น การท"างานข้องโปรแกรมจะต่�องท"าการแปลภาษา
แอสเซัมบลให�เป�นภาษาเคร !อง โด้ยีใช้�ต่&วแปลท!เรยีกว�า แอสเซัม
เบลอร� (Assembler)
3. ภาษาช้�.นสั+ง - (High level language) หร�อภาษาร0�นที่) 3
(3GL:Third Generation Language) ถ้�กสร�างข้9*นมาเพี !อให�เข้ยีนโปรแกรมได้�ง�ายีข้9*น
โด้ยีมล&กษณะเหม อนก&บภาษาอ&งกฤษท&!วไป ผู้��เข้ยีนไม�จ"าเป�นต่�องมความร� �เก!ยีวก&บฮาร�แวร�แต่�อยี�าง
ใด้ ภาษาน*จ"าเป�นต่�องมต่&วแปลภาษาเคร !องเช้�นก&น เรยีก
ต่&วแปลน*ว�า คอมไพีเลอร� (compiler) หร อ อ+นเต่อร�พีรเต่อร� (Interpreter) อยี�างใด้อยี�างหน9!ง
ต่&วอยี�างข้องภาษาช้&*นส�ง เช้�น ภาษาปาสคาล ภาษาซั ภาษาโคบอล ภาษาเบส+ก ภาษาฟิอร�แทรน
4. 4. ภาษาช้&*นส�งมาก ภาษาช้&*นส�งมาก (Very (Very- high level language)- high level language)
หร อภาษาร; �นท! หร อภาษาร; �นท! 44 (4GL) (4GL)
เป�นภาษาท!มล&กษณะคล�ายีภาษาพี�ด้ต่ามปกต่+ข้องมน;ษยี� ภาษาน*จะช้�วยีให�การเข้ยีนโปรแกรมเร?ว
มากข้9*นกว�าภาษาในร; �นท! 3 เน !องจากมเคร !องม อท!ช้�วยีในการสร�างแบบฟิอร�มหน�าจอ เพี !อจ&ด้การก&บข้�อม�ลรวมไปถ้9งการออกรายีงาน เมน�ต่�าง ๆ
ต่&วอยี�างข้องภาษาช้&*นส�งมากได้�แก� informix-4GL, MAGIC , Delphi , Power Builder ฯลฯ
5. 5. ภาษาธรรมช้าต่+ ภาษาธรรมช้าต่+ (Natural (Natural language) language)
หร อภาษาร; �นท! หร อภาษาร; �นท! 55 (5GL) (5GL) เป�นภาษาท!สามารถ้ส&!งงานคอมพี+วเต่อร�โด้ยีใช้�ร�ป
แบบข้องภาษามน;ษยี�ได้�เลยี ค"าส&!งอยี��ในร�ปแบบท!ไม�แน�นอนต่ายีต่&ว แต่�
คอมพี+วเต่อร�จะท"าการแปลให�ออกมาในร�ปท!คอมพี+วเต่อร�เข้�าใจได้�
ภาษาน*ถ้�กสร�างข้9*นมาจากเทคโนโลยีทางด้�านระบบผู้��เช้!ยีวช้าญ (Expert system)
ต่&วอยี�างภาษาในร; �นท! 5 ได้�แก� ภาษา PROLOG เป�นต่�น
ข้&*นต่อนการเข้ยีนโปรแกรมคอมพี+วเต่อร�
13
การว+เคราะห�ปAญหา (Problem analysis) การออกแบบโปรแกรม (Design) การเข้ยีนโปรแกรมโด้ยีใช้�ภาษาใด้ภาษาหน9!ง (Coding) การต่รวจสอบข้�อผู้+ด้พีลาด้ข้องโปรแกรม (Testing
and Debugging ) การทด้สอบความถ้�กต่�องข้องโปรแกรม (Testing and
validating) การท"าเอกสารประกอบโปรแกรม (Documentation) การบ"าร;งร&กษาโปรแกรม (Program Maintenance)
การออกแบบโปรแกรม14
เคร !องม อท!ใช้�ในการออกแบบ ผู้&งงาน ผู้&งงาน ((FlowchartFlowchart)) ข้& *นต่อนการแก�
ปAญหาทละข้&*นต่อนในล&กษณะร�ปภาพี รห&สจ"าลอง รห&สจ"าลอง ((PseudoPseudo)) ร�ปแบบเป�น
ภาษาพี�ด้ง�ายี ๆ ภาษาอ&งกฤษ หร อภาษาไทยีก?ได้�
15
ส&ญล&กษณ�ในผู้&งงานจ0ดเร�)มต่�น หร�อสั�.นสั0ด
อ�านขี�อม+ลัเขี�า หร�อแสัดงผู้ลั
ประมว่ลัผู้ลั
ต่�ดสั�นใจ
แฟ้9มขี�อม+ลั
จ0ดเช้�)อมต่�อในหน�าเดยว่ก�น
โปรแกรมย�อย
แสัดงผู้ลัที่างหน�าจอ แสัดงที่�ศที่างการประมว่ลัผู้ลั
พิ�มพิ�ผู้ลัที่างเคร�)องพิ�มพิ�
จ0ดเช้�)อมต่�อในหน�าอ�)น
การพี&ฒนาอ&ลกอร+ธ9ม16
หล&กการโครงสร�างควบค;ม (Control structures)การเข้ยีนข้&*นต่อนในรายีละเอยีด้ข้องแต่�ละอ&ลกอ
ร+ธ9ม อาศ&ยีโครงสร�างควบค;มด้&งน* โครงสร�างล"าด้&บ (Sequence structure) โครงสร�างต่&ด้ส+นใจ (Selection structure) โครงสร�างท"าซั"*า (Repetition structure)
การพี&ฒนาอ&ลกอร+ธ9ม17
โครงสัร�างลั�าด�บ (Sequence) หมายีถ้9ง งานท!ต่�องท"าต่�องมล"าด้&บก�อนหล&ง เช้�น อ&ลกอร+ธ9ม “การต่ !นนอนต่�อนร&บว&นใหม�”
งาน ต่ !นนอนงาน ถ้อด้ช้;ด้นอนงาน เข้�าห�องน"*างาน แต่�งต่&วงาน เด้+นทางมาเรยีนต่�องจ&ด้ล"าด้&บให�ถ้�กต่�อง
งาน ต่ !นนอน
งาน ถ้อด้ช้;ด้นอน
งาน เข้�าห�องน"*า
งาน แต่�งต่&ว
งาน เด้+นทางมาเรยีน
โครงสร�างการท"างานแบบล"าด้&บ (Sequence)
18
โครงสร�างล"าด้&บ หล&กการให�มองงานเป�นช้+*นใหญ�ก�อน ยี&งไม�ต่�องลง
รายีละเอยีด้ แล�วจ&ด้ล"าด้&บความค+ด้ว�าจะท"าอะไร ก�อนหร อหล&ง ต่ามล"าด้&บ
งาน 1
งาน 2
Begin งาน 1 งาน 2end
ผู้&งงาน รห&สเทยีม
ต่&วอยี�างการเข้ยีนผู้&งงาน
19
จงเข้ยีนผู้&งงานท!แสด้งล"าด้&บการค"านวณต่&วเลข้ เพี !อหาผู้ลล&พีธ�การค"านวณ แล�วเก?บผู้ลล&พีธ�ไว�ในหน�วยีความจ"าต่"าแหน�ง K
8 + 10 / 5 - 6 * 3โด้ยีมล"าด้&บการค"านวณทางเลข้คณ+ต่ ด้&งน*
1. ยีกก"าล&ง 2. ค�ณหร อหาร (โด้ยีท"าจากซั�ายีไปข้วา)
3. บวกหร อลบ (โด้ยีท"าจากซั�ายีไปข้วา)
ต่&วอยี�างการเข้ยีนผู้&งงาน
20
เร+!มต่�น
T1 = 10 / 5
T2 = 6 * 3
1
1
T3 = 8 + T1
K = T3 - T2
จบงาน
8 + 10 / 5 - 6 * 3
การพี&ฒนาอ&ลกอร+ธ9ม21
โครงสร�างต่&ด้ส+นใจ (selection) โครงสร�าง IF โครงสร�าง IF else
การพี&ฒนาอ&ลกอร+ธ9ม22
โครงสร�าง IF เป�นโครงสร�างท!ทด้สอบเง !อนไข้ แล�วเล อกว�าจะท"า
หร อไม�ท"า ก�อนท!จะไปท"างานอ !นต่�อไป
เง�)อนไขี งานที่)ต่�องที่�าใช้�
งานต่�อไป
ไม�ใช้�
การพี&ฒนาอ&ลกอร+ธ9ม23
ต่&วอยี�าง โครงสร�าง IF แม�ถ้ามว�าห+วข้�าวหร อไม� ถ้�าห+วก?ให�ก+น ถ้�าไม�ห+วไม�
ต่�องก+น แล�วจ9ง เด้+นทางไปโรงเรยีน (งานต่�อไป)
ห�ว่ใช้�ไหม? งานก�นขี�าว่ใช้�
งานเด�นที่างมาเรยน
ไม�ใช้�
ต่&วอยี�างการเข้ยีนผู้&งงาน
24
จงเข้ยีนผู้&งงานแสด้งการเข้ยีนและส�งจด้หมายีเร�)มต่�น
เขียนจดหมาย
พิ�บจดหมาย
ใสั�ซองจดหมาย
จ�าหน�าซอง
1 จบงาน
1
มแสัต่มป;หร�อไม�ที่�าการซ�.อแสัต่มป;
ต่�ดแสัต่มป;
สั�งจดหมาย
ม ไม�ม
การพี&ฒนาอ&ลกอร+ธ9ม25
โครงสร�าง IF-else
If เง !อนไข้ งาน 1Else งาน 2End if
เง !อนไข้
งาน 1งาน 2
ใช้�ไม�ใช้�
ต่&วอยี�างการเข้ยีนผู้&งงาน
26
เม !อเราซั *อยีาจากร�านข้ายียีาท!มอยี��ท& !ว ๆ ไปน&*น ในส�วนข้องว+ธใช้�ยีาม&กจะแยีกข้นาด้ร&บประทานไว�ต่ามอายี; เช้�นอายี;มากกว�า 10 ป6 ร&บประทานคร&*งละ 3 ช้�อนช้าอายี; - 610 ป6 ร&บประทานคร&*งละ 2 ช้�อนช้าอายี; - 25 ป6 ร&บประทานคร&*งละ 1 ช้�อนช้าเด้?กอายี;ต่"!ากว�า 1 ป6 ห�ามร&บประทาน
จงเข้ยีนผู้&งงานท!แสด้งถ้9งข้นาด้ข้องการใช้�ยีาต่ามอายี;น*
27
เร�)มต่�น
อาย0 > 10
6 <= อาย0 <=10
2 <= อาย0 <=5
ห�ามร�บประที่าน
จบงาน
ร�บประที่านคร�.งลัะ 3 ช้�อนช้า
ร�บประที่านคร�.งลัะ 2 ช้�อนช้า
ร�บประที่านคร�.งลัะ 1 ช้�อนช้า
ใช้�
ใช้�
ใช้�ไม�ใช้�
ไม�ใช้�
ไม�ใช้�
การพี&ฒนาอ&ลกอร+ธ9ม28
โครงสร�างท"าซั"*า (Repetition Structure) While Repetition Structure
โครงสร�างท!ต่�องต่รวจสอบเง !อนไข้ก�อนท"าในล�ป
Do While Repetition Structureโครงสร�างท!ต่�องประมวลผู้ลในล�ปอยี�างน�อยี 1 รอบก�อนทด้สอบเง !อนไข้ออกจากล�ป
การพี&ฒนาอ&ลกอร+ธ9ม29
โครงสร�าง while
While เง !อนไข้ งานend while
เง !อนไข้
งาน
เท?จ
จร+ง
รห&สเทยีม
ผู้&งงาน
การพี&ฒนาอ&ลกอร+ธ9ม30
โครงสร�าง DO while
เง !อนไข้
งาน
เท?จ
จร+ง
ผู้&งงาน
DO ค"าส&!งต่�าง ๆWhile เง !อนไข้
รห&สเทยีม
โครงสร�างการท"างานแบบมการท"างานซั"*า (Iteration)
31
จงเข้ยีนผู้&งงาน แสด้งถ้9งการพี+มพี�ค�าบวกข้อง 12345
100
ออกทางเคร !องพี+มพี�
เร+!มต่�น
J=1SUM = 0
SUM = SUM+J
J=J+1
J <=100? Print SUM จบงานใช้� ไม�ใ
ช้�
การเข้ยีนโปรแกรมโด้ยีใช้�ภาษาใด้ภาษาหน9!ง(Coding)32
การเข้ยีนโปรแกรมท!ด้น& *น ควรจะท"าต่ามข้&*นต่อน ค อเร+!มต่&*งแต่� ว+เคราะห�ปAญหา ก�อนแล�วท"าการออกแบบ
โปรแกรม จ9งเร+!มเข้ยีนโปรแกรม ส"าหร&บผู้��ท!ไม�มประสบการณ�ควรทด้ลองเข้ยีนในกระด้าษก�อน แล�วต่รวจสอบจนแน�ใจว�าสามารถ้ท"างานได้�แล�วจ9งท"าการ
คยี�ลงเคร !อง
การต่รวจสอบข้�อผู้+ด้พีลาด้ข้องโปรแกรม(Testing and Debugging the Program)
33
ร�ปแบบข้�อผู้+ด้พีลาด้ ม 3 แบบค อ Syntax Error – ข้�อผู้+ด้พีลาด้จากการใช้�ไวยีากรณ�
ภาษาท!ผู้+ด้ หร อ อาจเก+ด้จากการสะกด้ค"าผู้+ด้ Run-time Error – ข้�อผู้+ด้พีลาด้ในระหว�างการ
ปฏิ+บ&ต่+งาน(Execution ) ม&กเก+ด้จากความร� �เท�าไม�ถ้9งการณ�
Logical Error – ข้�อผู้+ด้พีลาด้ท!หาและแก�ได้�ยีากท!ส;ด้ ต่�องท"าการไล�โปรแกรมทละค"าส&!งเพี !อหาข้�อผู้+ด้พีลาด้น&*น
การต่รวจสอบข้�อผู้+ด้พีลาด้ข้องโปรแกรม(Testing and Debugging the Program)
34
ว+ธการต่รวจสอบข้�อผู้+ด้พีลาด้ข้องโปรแกรม มด้&งน* การต่รวจสอบด้�วยีต่นเอง การต่รวจสอบด้�วยีต่นเอง ((Self CheckingSelf Checking))
เข้ยีนโปรแกรมลงกระด้าษแล�วไล�เช้?คต่รวจสอบการท"างานทละข้&*นด้�วยีต่นเอง ว�าจะมการท"างาน
ท!ถ้�กต่�องต่ามความต่�องการหร อไม� ต่รวจสอบด้�วยีการแปลโปรแกรม ต่รวจสอบด้�วยีการแปลโปรแกรม
((TranslatingTranslating)) การแปลเป�นภาษาเคร !อง ต่รวจสอบข้�อผู้+ด้พีลาด้ข้องโปรแกรม
การทด้สอบความถ้�กต่�องข้องโปรแกรม (Testing and Validating)
35
ว+ธทด้สอบความถ้�กต่�องข้องข้�อม�ล มด้&งน* กรณท!ข้�อม�ลถ้�กต่�อง กรณท!ข้�อม�ลถ้�กต่�อง ((valid casevalid case)) ทด้สอบโด้ยี
ใส�ข้�อม�ลท!ถ้�กต่�องลงไปในโปรแกรม เพี !อทด้สอบผู้ลล&พีธ�ว�าต่รงก&บท!ต่�องการหร อไม�
การใช้�ข้อบเข้ต่และความถ้�กต่�องข้องการใช้�ข้อบเข้ต่และความถ้�กต่�องข้องข้�อม�ล ข้�อม�ล ((Range check and Completeness Range check and Completeness checkcheck)) เป�นการเช้?คข้อบเข้ต่ข้�อม�ล
การใช้�ความสมเหต่;สมผู้ล การใช้�ความสมเหต่;สมผู้ล ((Consistency Consistency CheckCheck))
การทด้สอบความถ้�กต่�องข้องโปรแกรม (Testing and Validating)
36
ข้�อม�ลท!เป�นต่&วเลข้และต่&วอ&กษร ข้�อม�ลท!เป�นต่&วเลข้และต่&วอ&กษร ((Correct No. Correct No. and Type character checkand Type character check)) ต่รวจสอบว�าถ้�าเป�นฟิ2ลด้�ท!เป�นต่&วเลข้อยี�างเด้ยีว เช้�น จ"านวนเง+น ก?ควรจะปCอนข้�อม�ลได้�เฉพีาะต่&วเลข้เท�าน&*น
ข้�อม�ลเป�นไปต่ามข้�อก"าหนด้ ข้�อม�ลเป�นไปต่ามข้�อก"าหนด้ ((Existence Existence CheckCheck)) ข้�อม�ลท!ปCอนต่�องเป�นไปต่ามท!ก"าหนด้ไว�แน�นอนแล�วเท�าน&*น
การบ�าน37
1 .1 .คนที่)ย�งจดเน�.อหาภาษาคอมพิ�ว่เต่อร�ไม�เสัร<จ คนที่)ย�งจดเน�.อหาภาษาคอมพิ�ว่เต่อร�ไม�เสัร<จ ให�จดให�เสัร<จให�จดให�เสัร<จ
2.2. ที่�าใบงานในเว่<บ ใบงานที่) ที่�าใบงานในเว่<บ ใบงานที่) 11. 11. โครงสัร�างโครงสัร�างโปรแกรมโปรแกรม
3.3. เขียนโครงสัร�างผู้�งงาน มาอย�างลัะ เขียนโครงสัร�างผู้�งงาน มาอย�างลัะ 1 1 ผู้�งผู้�ง ลั�าด�บลั�าด�บ ที่างเลั�อกที่างเลั�อก ที่�าซ�.าที่�าซ�.า