การเขียนโปรแกรมคอมพิวเตอร์ 1
DESCRIPTION
การเขียนโปรแกรมคอมพิวเตอร์ 1. โปรแกรมเมอร์คนแรกของโลก. Augusta Lovelace Ada คือ โปรแกรมเมอร์คนแรกของโลก แต่ Edsger Wybe Dijkstra ใช้คำว่า โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์เป็นคนแรก. ข้อมูลจาก http://www.twoguru.com/playground/article/dijkstra.htm - PowerPoint PPT PresentationTRANSCRIPT
โปรแกรมเมอร�คนแรกขีองโลก Augusta Lovelace Ada ค�อ โปรแกรมเมอร�คนแรกขีอง
โลก แต� Edsger Wybe Dijkstra ใช้�ค�าว�า โปรแกรมเมอร� ( Programmer) ก�บโลกขีองคอมพิ�วเตอร�เป�นคนแรก
ขี�อม ลจาก http://www.twoguru.com/playground/article/dijkstra.htmขี�อม ลจาก -http://www.cs.utexas.edu/users/dahlin/Classes/GradOS/papers/p341 dijkstra.pdfขี�อม ลจาก http://www.twoguru.com/playground/article/dijkstra.htmขี�อม ลจาก http://www.thaiall.com/article/teachpro.htm
โปรแกรมเมอร�คนแรกขีองโลก •"what if a calculating engine could not only foresee but could act on that foresight" •(จะเป�นอย�างไร ถ้�าหากเคร�'องค�านวณไม�เพิ�ยงสามารถ้หย�'งร �ได้� หากแต�สามารถ้ตอบสนองต�อการหย�'งร �น� +นได้�ด้�วย)•ส�'งที่�'เธอที่�าค�อ การสร�างภาษาส�าหร�บเคร�'องว�เคราะห� (analytical engine)
โปรแกรมเมอร�คนแรกขีองโลก •แต�งเพิลงที่�'ซั�บซั�อน •สร�างภาพิกราฟิ3ก •น�ามาใช้�เพิ�'อการค�านวณขี�+นส ง •พิ�ฒนาวงการว�ที่ยาศาสตร�ได้�
•ร�อยกว�าป6ต�อมา ในป6 พิศ 2522. . (ค.ศ. 1 9 7 9 ) กระที่รวง
กลาโหมสหร�ฐฯ สร�างภาษาคอมพิ�วเตอร�มาตรฐานISO ขี9+นมาต�วแรก พิร�อมต�+ง
ช้�'อเพิ�'อเป�นเก�ยรต�แก� เลด้�+ เอด้า ว�า ภาษา "ADA"
ภาษาคอมพิ�วเตอร�หมายถึ�ง สัญลักษณ์�ที่��ผู้��คิ�ดพัฒนา
ภาษาก�าหนดขึ้� นมา เพั"�อใช้�แที่นคิ�าสั�งสั"�อสัารสั�งงาน
ระหว่*างมน+ษย�กบเคิร"�องคิอมพั�ว่เตอร�แลัะอ+ปกรณ์�ต*อพั*ว่งอ"�นๆ
ภาษาคอมพิ�วเตอร�ม�มากมายขี�อม ลจาก http://dmoz.org/Computers/Programming/Langua
ges/ 143 ภาษา ขี�อม ลจาก http://people.ku.edu/~nkinners/LangList/Extras/la
nglist.htm 2500 ภาษา ขี�อม ลจาก http://www.levenez.com/lang/ 50 ภาษา
(Computer Languages Timeline)
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
ภาษาคอมพิ�วเตอร�ภาษาคอมพิ�วเตอร� สัามารถึแบ*งออกได�เป1น สัามารถึแบ*งออกได�เป1น 5 5 ย+คิคิ"อย+คิคิ"อ 1. 1. ภาษาเคร�'อง ภาษาเคร�'อง (Machine language) (Machine language)
2. 2. ภาษาแอสเซัมบล� ภาษาแอสเซัมบล� (Assembly language) (Assembly language)
3. 3. ภาษาช้�+นส ง ภาษาช้�+นส ง - (High level language)- (High level language)หร�อ ภาษาร: �นที่�' หร�อ ภาษาร: �นที่�' 3 3 ((3GL:Third Generation Language)3GL:Third Generation Language)
4. 4. ภาษาช้�+นส งมาก ภาษาช้�+นส งมาก - (Very high level language) - (Very high level language)
หร�อภาษาร: �นที่�' หร�อภาษาร: �นที่�' 44 (4GL) (4GL)
5. 5. ภาษาธรรมช้าต� ภาษาธรรมช้าต� (Natural language) (Natural language) หร�อภาษาร: �นที่�' หร�อภาษาร: �นที่�' 55
(5GL)(5GL)
1. 1. ภาษาเคร�'องภาษาเคร�'อง (Machine language)
เป�นภาษาพิ�+นฐานที่�'คอมพิ�วเตอร�สามารถ้เขี�าใจได้� แต�ละค�าส�'งประกอบขี9+นจากกล:�มต�วเลขี 0 และ 1 ซั9'ง
เป�นเลขีฐานสอง
2. 2. ภาษาแอสเซัมบลภาษาแอสเซัมบล� � (Assembly language) (Assembly language)
เป�นภาษาที่�'ใช้�ส�ญล�กษณ�ขี�อความ แที่นกล:�มขีองต�วเลขีฐานสอง เพิ�'อให�ง�ายต�อ
การเขี�ยนและการจด้จ�ามากขี9+น การที่�างานขีองโปรแกรมจะต�องที่�าการแปล
ภาษาแอสเซัมบล�ให�เป�นภาษาเคร�'อง โด้ยใช้�ต�วแปลที่�'เร�ยกว�า แอสเซัมเบลอร�
(Assembler)
3. 3. ภาษาช้�+นส ง ภาษาช้�+นส ง - (High level- (High level language) language) หร�อภาษาร: �นที่�' หร�อภาษาร: �นที่�' 3 3
((3GL:Third Generation 3GL:Third Generation Language)Language) ถ้ กสร�างขี9+นมาเพิ�'อให�เขี�ยนโปรแกรมได้�ง�ายขี9+น โด้ยม�
ล�กษณะเหม�อนก�บภาษาอ�งกฤษที่�'วไป ผู้ �เขี�ยนไม�จ�าเป�นต�องม�ความร �เก�'ยวก�บฮาร�แวร�แต�อย�างใด้ ภาษาน�+จ�าเป�น
ต�องม�ต�วแปลภาษาเคร�'องเช้�นก�น เร�ยกต�วแปลน�+ว�า คอมไพิเลอร� (compiler) หร�อ อ�นเตอร�พิร�เตอร�
(Interpreter) อย�างใด้อย�างหน9'ง ต�วอย�างขีองภาษาช้�+นส ง เช้�น ภาษาปาสคาล ภาษาซั�
ภาษโคบอล ภาษาเบส�ก ภาษาฟิอร�แที่รน
4. 4. ภาษาช้�+นส งมาก ภาษาช้�+นส งมาก -(Very high leve -(Very high leve ll anguage) ll anguage) หร�อภาษาร: �นที่�' หร�อภาษาร: �นที่�' 44 (4GL) (4GL)
เป�นภาษาที่�'ม�ล�กษณะคล�ายภาษาพิ ด้ตามปกต�ขีองมน:ษย� ภาษาน�+จะช้�วยให�การเขี�ยนโปรแกรมเร?ว
มากขี9+นกว�าภาษาในร: �นที่�' 3 เน�'องจากม�เคร�'องม�อที่�'ช้�วยในการสร�างแบบฟิอร�มหน�าจอ เพิ�'อจ�ด้การก�บขี�อม ลรวมไปถ้9งการออกรายงาน เมน ต�าง ๆ
ต�วอย�างขีองภาษาช้�+นส งมากได้�แก� informix-4GL, MAGIC , Delphi , Power Builder ฯลฯ
5. 5. ภาษาธรรมช้าต� ภาษาธรรมช้าต� (Natural language) (Natural 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)
การว�เคราะห�ปAญหา14
ส�'งที่�'ต�องพิ�จารณา Input ? (พิ�จารณาจาก Output) Output? (พิ�จารณาอ�นด้�บแรก) Process (ย�งไม�ต�องสนใจตอนน�+)
ProcessInput
OutputInput
12 3
แนวความค�ด้เบ�+องต�นการว�เคราะห�ปAญหา การว�เคราะห�ปAญหา
15
ว่�เคิราะห�ผู้ลัลัพัธ์�ว่�เคิราะห� Input Process เขึ้�ยนขึ้ นตอนการแก�ป3ญหา
การออกแบบโปรแกรม16
เคร�'องม�อที่�'ใช้�ในการออกแบบ ผู้�งงาน ผู้�งงาน ((FlowchartFlowchart)) ขี� +นตอนการแก�
ปAญหาที่�ละขี�+นตอนในล�กษณะร ปภาพิ รห�สจ�าลอง รห�สจ�าลอง ((PseudoPseudo)) ร ปแบบเป�น
ภาษาพิ ด้ง�าย ๆ ภาษาอ�งกฤษ หร�อภาษาไที่ยก?ได้�
การพิ�ฒนาอ�ลกอร�ธ9ม17
ขี�อด้�ขีองรห�สเที่�ยม (จ�าลอง) แปลงเป�นโปรแกรมได้�ง�าย
ขี�อด้�ขีองผู้�งงาน อ�านง�าย เขี�าใจตรงก�นได้�
ขี�+นตอนการว�เคราะห�งาน
๑ การหาว่ตถึ+ประสังคิ�ขึ้องการเขึ้�ยนโปรแกรม๒ การหาร�ปแบบผู้ลัลัพัธ์�ที่��ต�องการ๓ การหาขึ้�อม�ลัน�าเขึ้�าขึ้องโปรแกรม๔ การหาตว่แปรที่��จำ�าเป1นต�องใช้�ในโปแกรม๕ การหาขึ้ นตอนว่�ธ์�การที่�างานขึ้องโปรแกรม
สัปดาห�ที่�� ๑
ผู้ �เขี�ยนโปรแกรมจะต�องหาว�ตถ้:ประสงค�จากงานที่�'ต�องการเขี�ยนโปรแกรม ว�างานต�องการแก�ปAญหาอะไรบ�าง เช้�น
ต�องการหาพิ�+นที่�'สามเหล�'ยมม:มฉากโด้ยร�บค�าที่างแปCนพิ�มพิ�
ว่ตถึ+ประสังคิ� เพิ�'อค�านวณหาพิ�+นที่�'สามเหล�'ยม
๑ การหาว่ตถึ+ประสังคิ�ขึ้องการเขึ้�ยนโปรแกรม
ฐาน
ส ง
๒ การหาร ปแบบผู้ลล�พิธ�ขีองโปรแกรม
เม�'อผู้ �เขี�ยนโปรแกรมหาว�ตถ้:ประสงค�จากงานที่�'ต�องการเขี�ยนโปรแกรมเร�ยบร�อยแล�ว ก?มาที่�าการออกแบบผู้ลล�พิธ�ขีองโปรแกรม ตามความต�องการขีองงาน
เช้*น กร+ณ์าป;อน คิ*าคิว่ามสั�ง = คิ*าฐาน = พั" นที่��สัามเหลั��ยม =
ว่�ช้า - - 13100152 การเขี�ยนโปรแกรมคอมพิ�วเตอร� - - 223(Computer Programming ) ( ) บรรยายโด้ย อาจารย� ส:ว:ฒ� ต:�มที่อง
ฐาน
ส ง
ร�บค�าที่างแปCนพิ�มพิ�
๓ การหาขี�อม ลน�าเขี�าขีองโปรแกรม
ผู้ �เขี�ยนโปรแกรมจะต�องหาขี�อม ลน�าเขี�า จากผู้ลล�พิธ�ขีองโปรแกรม โด้ยค�าน9งถ้9งว�ธ�การค�านวณ และขี�อม ลที่�'ใช้� เพิ�'อให�ได้�ผู้ลล�พิธ�เช้�น
ผู้ลัลัพัธ์�ต�องการ พั" นที่��สัามเหลั��ยมม+มฉากขึ้�อม�ลัที่��หาแลัะเตร�ยม ประกอบด�ว่ย ๑ สั�ตรการคิ�านว่ณ์พั" นที่�� = 0.5 X ฐาน X สั�ง ๒ คิ*าคิว่ามยาว่ขึ้องฐาน แลัะ คิ*าคิว่ามสั�ง
ฐาน
ส ง
สัปดาห�ที่�� ๑
ผู้ �เขี�ยนโปรแกรมจะต�องก�าหนด้ช้�'อต�วแปรส�าหร�บใช้�เป�นที่�'เก?บขี�อม ลที่�+งหมด้ขีองโปรแกรม ซั9'งรวมที่�+งจ�านวนรอบการที่�างานขีองโปรแกรมด้�วย กฏการต งช้"�อตว่แปร
๑ ช้"�อตว่แปรจำะต�องขึ้� นต�นด�ว่ยตว่อกษร ตว่ต*อไปอาจำเป1นตว่อกษรหร"อตว่เลัขึ้ก?ได� แต*จำะต�องไม*ม�เคิร"�องหมาย บว่ก (+) ลับ - ( ) คิ�ณ์(*) หาร (/) หารเอาเศษ (%) แลัะเคิร"�องเว่�นว่รรคิ (Blank) เช้*น A+5
๒ คิว่ามยาว่ขึ้องตว่แปรแลัะตว่อกษรตว่เลั?กตว่ใหญ*ก?แตกต*างกน
๓ ซื่"�อตว่แปรต�องไม*ซื่� าคิ�าสังว่น เช้*น For , If ๔ ช้"�อตว่แปรคิว่รต งให�สั"�อคิว่ามหมาย เช้*น คิว่ามยาว่ฐาน =
Base
สัปดาห�ที่�� ๑
๔ การหาตว่แปรที่��จำ�าเป1นต�องใช้�ในโปแกรม
ขี�+นตอนน�+หาว�ธ�การที่�างานขีองโปรแกรม หร�อเร�ยกว�า อ�ลกอร�ที่9ม ( Algorithm)โด้ยจะขี9+นอย �ก�บล�กษณะงานโด้ยที่�'ผู้ �เขี�ยนจะต�องม�ความเขี�าใจในงานที่�'ว�เคราะห� ถ้�าผู้ �เขี�ยนสามารถ้ก�าหนด้ขี�+นตอนว�ธ�การที่�างานขีองโปรแกรมอย�างละเอ�ยด้ และ ถ้ กต�องแล�วจะที่�าให�การเขี�ยนโปรแกรมด้�วยภาษาจะที่�าง�ายขี9+น
เช้�นขึ้ นตอนว่�ธ์�การที่�างานขึ้อง
โปรแกรมการหาพั" นที่��สัามเหลั��ยมม+มฉากป;อนคิ*าที่างแป;นพั�มพั�
๕ การหาขึ้ นตอนว่�ธ์�การที่�างานขึ้องโปรแกรม
ขึ้ นตอนว่�ธ์�การที่�างานขึ้อง (อลักอร�ที่�ม )
โปรแกรมการหาพั" นที่��สัามเหลั��ยมม+มฉากป;อนคิ*าที่างแป;นพั�มพั�
๑ เร��มต�นโปรแกรม ๒ ก�าหนดคิ*าให�กบตว่แปร ๓ รบขึ้�อม�ลัคิ*าฐาน คิ*าคิว่ามสั�ง จำากแป;นพั�มพั� ๔ คิ�านว่ณ์พั" นที่��สัามเหลั��ยมม+มฉาก ๕ แสัดงคิ*าผู้ลัลัพัธ์�ที่างจำอภาพั ๖ จำบโปรแกรม
๕ การหาขึ้ นตอนว่�ธ์�การที่�างานขึ้องโปรแกรม
แบบฝึEกหดคิร งที่�� ๑ จำงเขึ้�ยนขึ้ นตอนการว่�เคิราะห�งานโปรแกรมการ
คิ�านว่ณ์พั" นที่�� ว่งกลัม โดยรบคิ*ารศม�จำากแป;นพั�มพั� โดยแสัดงการว่�เคิราะห�ที่�ลัะขึ้ นตอนอย*างลัะเอ�ยด
นกศ�กษาจำงเขึ้�ยนขึ้ นตอนการว่�เคิราะห�งานที่ ง ๕ ขึ้ นตอน
ความหมาย
แผู้นภาพิที่�'เขี�ยนขี9+นโด้ยใช้�ส�ญล�กษณ�มาตรฐานเพิ�'อแสด้งขี�+นตอนว�ธ�การที่�างานขีองโปรแกรม หร�อระบบงานที่�'ต�องการประเภที่ขีองผู้�งงาน
๑ ผู้�งงานระบบ (System Flowchart) ผู้�งงานที่�'แสด้งถ้9งขี9+นตอนการที่�างานขีองระบบ ให�เห?นในภาพิรวมอย�างกว�างๆ
๒ ผู้�งงานโปรแกรม (Program Flowchart) ผู้�งงานที่�'แสด้งถ้9งขี9+นตอนการที่�างานขีองระบบ อย�างละเอ�ยด้ซั9'งสามารถ้น�าเอาผู้�งงานมาเขี�ยนโปรแกรมตามที่�'ต�องการได้�
การเขึ้�ยนผู้งงาน ( Flowchart)
27
ส�ญล�กษณ�ในผู้�งงานจำ+ดเร��มต�น หร"อสั� นสั+ด
อ*านขึ้�อม�ลัเขึ้�า หร"อแสัดงผู้ลั
ประมว่ลัผู้ลั
ตดสั�นใจำ
แฟ้;มขึ้�อม�ลั
จำ+ดเช้"�อมต*อในหน�าเด�ยว่กน
โปรแกรมย*อย
แสัดงผู้ลัที่างหน�าจำอ แสัดงที่�ศที่างการประมว่ลัผู้ลั
พั�มพั�ผู้ลัที่างเคิร"�องพั�มพั�
จำ+ดเช้"�อมต*อในหน�าอ"�น
สัญลักษณ์� Process
Process คิ"อ การก�าหนดคิ*า หร"อการคิ�านว่ณ์คิ*า
ตว่อย*าง สั�ตรการคิ�านว่ณ์พั" นที่��
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
A= 0.5 * H * B
สัญลักษณ์� DecisionDecision คิ"อ การที่ดสัอบเง"�อนไขึ้
หร"อเปร�ยบเที่�ยบเง"�อนไขึ้เพั"�อตดสั�นใจำที่�างานอย*างใดอย*างหน��ง ตว่อย*าง การตดสั�นใจำเลั"อก ๑ ที่าง
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
X > YTrue False
X=X+2
สัญลักษณ์� Decision Decision คิ"อ
การที่ดสัอบเง"�อนไขึ้หร"อเปร�ยบเที่�ยบเง"�อนไขึ้เพั"�อตดสั�นใจำที่�างานอย*างใดอย*างหน��ง ตว่อย*าง การตดสั�นใจำเลั"อก ๒ ที่าง
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
X > YTrue False
X=X+2 Y=X+1
สัญลักษณ์� Start / Stop Program OR Terminal Interrupt
คิ"อ การเร��มต�นโปรแกรมหร"อสั� นสั+ดการที่�างานโปรแกรม หร"อการหย+ดช้�ว่คิราว่ ตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
Start
Stop
Pause
สัญลักษณ์� Input / Output Input / Output คิ"อ การรบ
ขึ้�อม�ลั หร"อ การแสัดงผู้ลัลัพัธ์�โดยไม*ได�ระบ+สั"�อที่��ใช้�
ตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
Print P,O,M
Input P,O,M
ส�ญล�กษณ� Display Display ค�อ การแสด้ง
ผู้ลล�พิธ�ที่างจอภาพิต�วอย�าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
Display P,O,M
สัญลักษณ์� Document Document คิ"อ การพั�มพั�
ผู้ลัลัพัธ์�ออกที่างกระดาษพั�มพั�ตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
Print P,O,M
สัญลักษณ์� Manual Input Manual Input คิ"อ การรบ
ขึ้�อม�ลัหร"อคิ�าสั�งผู้*านที่างคิ�ย�บอร�ดตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
Input x,y
สัญลักษณ์� Connector
Connector คิ"อ แสัดงจำ+ดเช้"�อมต*อจำากที่��หน��งไปยงอ�กที่��หน��งขึ้องผู้งงาน โดยที่��จำ+ดเช้"�อมต*อน� อย�*ในหน�าเด�ยว่กนตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
X = x+1
A
สัญลักษณ์� Off page Connector Off page Connector
คิ"อ แสัดงจำ+ดเช้"�อมต*อจำากที่��หน��งไปยงอ�กที่��หน��งขึ้องผู้งงาน โดยที่��จำ+ดเช้"�อมต*อน� อย�*ต*างหน�ากนตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
X = x+1
A
สัญลักษณ์� Flow line and arrowheads
คิ"อ แสัดงที่�ศที่างการที่�างานขึ้องผู้งงาน โดยใช้�ลั�กศรเป1นตว่ก�าหนดที่�ศที่างการที่�างานขึ้องผู้งงานตว่อย*าง การใช้�งาน
สัญลักษณ์�มาตรฐานที่��ใช้�เขึ้�ยนผู้งงานโปรแกรม
X = x+1
A
เขี�ยนผู้�งงานจากด้�านบนลงด้�านล�างใช้�ส�ญล�กษณ�ให�ตรงก�บความหมายขีองผู้�งงานใช้�เส�น Flow line and arrowheads แสด้งที่�ศที่างการที่�างานขีองผู้�งงานใส�ค�าอธ�บายในส�ญล�กษณ�ส�+นๆ แต�เขี�าใจง�าย จะใช้�ภาษาไที่ยหร�อภาษาอ�งกฤษก?ได้�หล�กเล�ยงการโยงเส�นที่�ศที่างขีองผู้�งงาน ควรใช้�จ:ด้เช้�'อมต�อหน�าเด้�ยวก�นแที่นพิยายามเขี�ยนผู้�งงานให�จบในหน�าเด้�ยวก�น ถ้�าไม�จบควรใช้�จ:ด้ต�อหน�า
หลักการเขึ้�ยนผู้งงานโปรแกรม
จำงเขึ้�ยนผู้งงานโปรแกรม จำากการว่�เคิราะห�งาน ซื่��งม�ขึ้ นตอนว่�ธ์�การที่�างาน (อลักอร�ที่�ม) ด้�งน�+
เร�'มต�นที่�างาน ร�บขี�อม ลค�าความยาวและความกว�างขีองส�'เหล�'ยมผู้�นผู้�าผู้�านที่าง
ค�ย�บอร�ด้ ค�านวณพิ�+นที่�'ส�'เหล�'ยผู้�นผู้�าตามส ตร Area =
Width*Length พิ�มพิ�ค�าความยาว ความกว�าง และพิ�+นที่�'ส�'เหล�'ยมออกที่างจอภาพิ จบการที่�างาน
ขึ้ นตอนการเขึ้�ยนผู้งงานโปรแกรม
ขึ้ นตอนการเขึ้�ยนผู้งงานโปรแกรม
เร�'มต�นที่�างาน
ร�บขี�อม ล Width, Length
ค�านวณ Area = Width*Length
พิ�มพิ� Width, Length
จบการที่�างาน
แบบฝึHกห�ด้คร�+งที่�' ๒ จงเขี�ยนผู้�งงานโปรแกรมการค�านวณพิ�+นที่�'
วงกลม โด้ยร�บค�าร�ศม�จากแปCนพิ�มพิ� พิร�อมการอธ�บาย
นกศ�กษาจำงเขึ้�ยนผู้งงานโปรแกรม
การพิ�ฒนาอ�ลกอร�ธ9ม43
หล�กการโครงสร�างควบค:ม (Control structures)การเขี�ยนขี�+นตอนในรายละเอ�ยด้ขีองแต�ละอ�ลกอ
ร�ธ9ม อาศ�ยโครงสร�างควบค:มด้�งน�+ โครงสร�างล�าด้�บ (Sequence structure) โครงสร�างต�ด้ส�นใจ (Selection structure) โครงสร�างที่�าซั�+า (Repetition structure)
การพิ�ฒนาอ�ลกอร�ธ9ม44
โคิรงสัร�างลั�าดบ หมายถ้9ง งานที่�'ต�องที่�าต�องม�ล�าด้�บก�อนหล�ง เช้�น อ�ลกอร�ธ9ม “การต�'นนอนต�อนร�บว�นใหม�”
งาน ต�'นนอนงาน ถ้อด้ช้:ด้นอนงาน เขี�าห�องน�+างาน แต�งต�วงาน เด้�นที่างมาเร�ยนต�องจ�ด้ล�าด้�บให�ถ้ กต�อง
งาน ต�'นนอน
งาน ถ้อด้ช้:ด้นอน
งาน เขี�าห�องน�+า
งาน แต�งต�ว
งาน เด้�นที่างมาเร�ยน
โครงสร�างการที่�างานแบบล�าด้�บ (Sequence)
45
โครงสร�างล�าด้�บ หล�กการให�มองงานเป�นช้�+นใหญ�ก�อน ย�งไม�ต�องลง
รายละเอ�ยด้ แล�วจ�ด้ล�าด้�บความค�ด้ว�าจะที่�าอะไร ก�อนหร�อหล�ง ตามล�าด้�บ
งาน 1
งาน 2
Begin งาน 1 งาน 2end
ผู้�งงาน รห�สเที่�ยม
ต�วอย�างการเขี�ยนผู้�งงาน
46
จงเขี�ยนผู้�งงานที่�'แสด้งล�าด้�บการค�านวณต�วเลขี เพิ�'อหาผู้ลล�พิธ�การค�านวณ แล�วเก?บผู้ลล�พิธ�ไว�ในหน�วยความจ�าต�าแหน�ง K
8 + 10 / 5 - 6 * 3โด้ยม�ล�าด้�บการค�านวณที่างเลขีคณ�ต ด้�งน�+
1. ยกก�าล�ง 2. ค ณหร�อหาร (โด้ยที่�าจากซั�ายไปขีวา)
3. บวกหร�อลบ (โด้ยที่�าจากซั�ายไปขีวา)
การพิ�ฒนาอ�ลกอร�ธ9ม48
example: จงเขี�ยนโปรแกรมค�านวณหาค�า y ขีองสมการ
y = x^2 + 2x +10start
Read x
Y = x*x + 2*x +10
Write y
stop
Begin read x y = x*x + 2*x +10Write yend
รห�สเที่�ยมผู้�งงาน
จงเขี�ยนผู้�งงานค�านวณการหาพิ�+นที่�'ส�'เหล�'ยมคางหม โด้ยก�าหนด้ค�าความยาวด้�านค �ขีนานและความส งให�
49
เร�'มต�น
อ�านความยาวด้�านค �ขีนานและความส ง
ค�านวณหาพิ�+นที่�'คางหม = ½ * ด้�านค �ขีนาน * ส ง
1
1
พิ�มพิ�ค�าพิ�+นที่�'
จบงาน
การพิ�ฒนาอ�ลกอร�ธ9ม51
โครงสร�าง IF เป�นโครงสร�างที่�'ที่ด้สอบเง�'อนไขี แล�วเล�อกว�าจะที่�า
หร�อไม�ที่�า ก�อนที่�'จะไปที่�างานอ�'นต�อไป
เง"�อนไขึ้ งานที่��ต�องที่�าใช้*
งานต*อไป
ไม*ใช้*
การพิ�ฒนาอ�ลกอร�ธ9ม52
ต�วอย�าง โครงสร�าง IF แม�ถ้ามว�าห�วขี�าวหร�อไม� ถ้�าห�วก?ให�ก�น ถ้�าไม�ห�วไม�
ต�องก�น แล�วจ9ง เด้�นที่างไปโรงเร�ยน (งานต�อไป)
ห�ว่ใช้*ไหม? งานก�นขึ้�าว่ใช้*
งานเด�นที่างมาเร�ยน
ไม*ใช้*
ต�วอย�างการเขี�ยนผู้�งงาน
53
จงเขี�ยนผู้�งงานแสด้งการเขี�ยนและส�งจด้หมายเร��มต�น
เขึ้�ยนจำดหมาย
พับจำดหมาย
ใสั*ซื่องจำดหมาย
จำ*าหน�าซื่อง
1 จำบงาน
1
ม�แสัตมปGหร"อไม*ที่�าการซื่" อแสัตมปG
ต�ดแสัตมปG
สั*งจำดหมาย
ม� ไม*ม�
การพิ�ฒนาอ�ลกอร�ธ9ม54
ต�วอย�าง โครงสร�าง IF จงเขี�ยนผู้�งงาน แสด้งยอด้ขีาย ถ้�าซั�+อส�นค�า
มากกว�า 1000 บาที่ม�ส�วนลด้ให� 10% ว�ธ�ค�ด้:
Output ค�อยอด้ขีายส:ที่ธ�Input ค�อ ยอด้ขีายก�อนห�กส�วนลด้Process ม�รายละเอ�ยด้เขี�ยนด้�วยผู้�งงานได้�ในหน�าถ้�ด้ไป
การพิ�ฒนาอ�ลกอร�ธ9ม
55
ต�วอย�าง(ต�อ) โครงสร�าง IF
start
Read total
Discount = 0
Total >1000
Discount = total * 10/100
NetTotal = total - discount
Write NetTotal
Begin read total discount = 0 if (total >1000) then discount = total *10/100 end if netTotal = total – discountWrite netTotalEnd
รห�สเที่�ยม ผู้งงาน
yesno
End
การพิ�ฒนาอ�ลกอร�ธ9ม56
โครงสร�าง IF-else
If เง�'อนไขี งาน 1Else งาน 2End if
เง�'อนไขี
งาน 1งาน 2
ใช้�ไม�ใช้�
การพิ�ฒนาอ�ลกอร�ธ9ม57
โครงสร�าง IF-Else ต�วอย�าง ร�านค�าแห�งหน9'งม�นโยบาย ลด้ราคาให�ล กค�า ถ้�าเป�นช้ายจะลด้ให� 5% แต�ถ้�าเป�นหญ�ง จะ
ลด้ให� 10% จงเขี�ยนอ�ลกอร�ธ9มเพิ�'อพิ�มพิ�ยอด้ขีาย
ว�เคราะห�ปAญหาOutput ค�อ ราคาส:ที่ธ� ก�าหนด้ให�เป�น netTotal
Input ค�อ ราคาส�นค�า และ เพิศ ก�าหนด้ให�เป�น total และ sex ตามล�าด้�บ
Process เขี�ยนด้�วยผู้�งงาน ด้�งในหน�าต�อไป
IF-ELSE58
start
Read total, sex
discount= 0
Sex = ‘M’
discount = total * 0.1discount = total * 0.05
netTotal = total - discount
Write netTotal
yesno
End
โครงสร�างการที่�างานแบบม�การเล�อก (Selection)
ในบร�เวณ A และ B ขีองหน�วยความจ�าม�ต�วเลขีเก?บอย � จงเขี�ยนผู้�งงานที่�'แสด้งการเปร�ยบเที่�ยบระหว�าง A และ Bตามเง�'อนไขี ด้�งน�+ถ้�า A>B ค�านวณ A-B น�าผู้ลที่�'ได้�ไปเก?บไว�ที่�' Cถ้�า A<B ค�านวณ A+B น�าผู้ลที่�'ได้�ไปเก?บไว�ที่�' Cถ้�า A=B เอา ไปเก?บไว�ที่�' C
เร��มต�น
C = A - B
C = A + B
C = A
A > B
A < B
จำบงาน
ใช้�
ใช้�
ไม�ใช้�
ไม�ใช้�
ต�วอย�างการเขี�ยนผู้�งงาน
60
เม�'อเราซั�+อยาจากร�านขีายยาที่�'ม�อย �ที่� 'ว ๆ ไปน�+น ในส�วนขีองว�ธ�ใช้�ยาม�กจะแยกขีนาด้ร�บประที่านไว�ตามอาย: เช้�นอาย:มากกว�า 10 ป6 ร�บประที่านคร�+งละ 3 ช้�อนช้าอาย: - 610 ป6 ร�บประที่านคร�+งละ 2 ช้�อนช้าอาย: - 25 ป6 ร�บประที่านคร�+งละ 1 ช้�อนช้าเด้?กอาย:ต�'ากว�า 1 ป6 ห�ามร�บประที่าน
จงเขี�ยนผู้�งงานที่�'แสด้งถ้9งขีนาด้ขีองการใช้�ยาตามอาย:น�+
61
เร��มต�น
อาย+ > 10
6 <= อาย+ <=10
2 <= อาย+ <=5
ห�ามรบประที่าน
จำบงาน
รบประที่านคิร งลัะ 3 ช้�อนช้า
รบประที่านคิร งลัะ 2 ช้�อนช้า
รบประที่านคิร งลัะ 1 ช้�อนช้า
ใช้*
ใช้�
ใช้�ไม�ใช้�
ไม�ใช้�
ไม�ใช้�
การพิ�ฒนาอ�ลกอร�ธ9ม62
โครงสร�างที่�าซั�+า (Repetition Structure) While Repetition Structure
โครงสร�างที่�'ต�องตรวจสอบเง�'อนไขีก�อนที่�าในล ป
Do While Repetition Structureโครงสร�างที่�'ต�องประมวลผู้ลในล ปอย�างน�อย 1 รอบก�อนที่ด้สอบเง�'อนไขีออกจากล ป
การพิ�ฒนาอ�ลกอร�ธ9ม63
โครงสร�าง while
While เง�'อนไขี งานend while
รห�สเที่�ยม
เง�'อนไขี
งาน
เที่?จ
จร�ง
ผู้�งงาน
การพิ�ฒนาอ�ลกอร�ธ9ม64
โครงสร�าง DO while
เง�'อนไขี
งาน
เที่?จ
จร�ง
ผู้�งงาน
DO ค�าส�'งต�าง ๆWhile เง�'อนไขี
รห�สเที่�ยม
การพิ�ฒนาอ�ลกอร�ธ9ม65
ต�วอย�าง โครงสร�าง while จงเขี�ยน โปรแกรมค�านวณหาผู้ลรวมขีองสมการต�อไป
น�+sum = 1 + 2 + 3 + … + N
ว�เคราะห�ปAญหา Output ค�อ sum Input ค�อ N Process ม� งาน 3 งาน
1 . งาน ร�บค�า N2. งานค�านวณหาค�าขีอง sum (วงล ป ด้�วย
โครงสร�าง while)3. พิ�มพิ�ผู้ลล�พิธ� sum
ต�วอย�าง โครงสร�าง while
66
begin Read N Sum = 0 I = 1 While (I <= N) sum = sum + I I = I +1 End whileWrite “sum” , sumend
รห�สเที่�ยม
start
Read N
Sum = 0I = 1
I <= N
Sum = sum + I
I = I + 1
write sum
stop
ผู้�งงาน
No
Yes
ต�วอย�าง โครงสร�าง Do while67
Begin Read N sum = 0 I = 0 do I = I + 1 sum = sum + I while (I < N) write Sumend
start
Read N
Sum = 0I = 0
I < N
Sum = sum + I
I = I + 1
write sum stopyes no
ผู้งงาน รห�สเที่�ยม
โครงสร�างการที่�างานแบบม�การที่�างานซั�+า (Iteration)
68
เร�'มต�น
J = 0
J = J + 1
J < 100
จบงานใช้�
ไม�ใช้�
Do While
เร�'มต�น
J = 0
J = J + 1
J < 100
จบงาน
ไม�ใช้�
ใช้�
While
โครงสร�างการที่�างานแบบม�การที่�างานซั�+า (Iteration)
69
จงเขี�ยนผู้�งงาน แสด้งถ้9งการพิ�มพิ�ค�าบวกขีอง 123451
00
ออกที่างเคร�'องพิ�มพิ�
เร�'มต�น
J=1SUM = 0
SUM = SUM+J
J=J+1
J <=100? Print SUM จบงานใช้� ไม�ใ
ช้�
การเขี�ยนโปรแกรมโด้ยใช้�ภาษาใด้ภาษาหน9'ง(Coding)70
การเขี�ยนโปรแกรมที่�'ด้�น� +น ควรจะที่�าตามขี�+นตอน ค�อเร�'มต�+งแต� ว�เคราะห�ปAญหา ก�อนแล�วที่�าการออกแบบ
โปรแกรม จ9งเร�'มเขี�ยนโปรแกรม ส�าหร�บผู้ �ที่�'ไม�ม�ประสบการณ�ควรที่ด้ลองเขี�ยนในกระด้าษก�อน แล�วตรวจสอบจนแน�ใจว�าสามารถ้ที่�างานได้�แล�วจ9งที่�าการ
ค�ย�ลงเคร�'อง
การตรวจสอบขี�อผู้�ด้พิลาด้ขีองโปรแกรม(Testing and Debugging the Program)
71
ร ปแบบขี�อผู้�ด้พิลาด้ ม� 3 แบบค�อ Syntax Error – ขี�อผู้�ด้พิลาด้จากการใช้�ไวยากรณ�
ภาษาที่�'ผู้�ด้ หร�อ อาจเก�ด้จากการสะกด้ค�าผู้�ด้ Run-time Error – ขี�อผู้�ด้พิลาด้ในระหว�างการ
ปฏิ�บ�ต�งาน(Execution ) ม�กเก�ด้จากความร �เที่�าไม�ถ้9งการณ�
Logical Error – ขี�อผู้�ด้พิลาด้ที่�'หาและแก�ได้�ยากที่�'ส:ด้ ต�องที่�าการไล�โปรแกรมที่�ละค�าส�'งเพิ�'อหาขี�อผู้�ด้พิลาด้น�+น
การตรวจสอบขี�อผู้�ด้พิลาด้ขีองโปรแกรม(Testing and Debugging the Program)
72
ว�ธ�การตรวจสอบขี�อผู้�ด้พิลาด้ขีองโปรแกรม ม�ด้�งน�+ การตรวจสอบด้�วยตนเอง การตรวจสอบด้�วยตนเอง ((Self CheckingSelf Checking))
เขี�ยนโปรแกรมลงกระด้าษแล�วไล�เช้?คตรวจสอบการที่�างานที่�ละขี�+นด้�วยตนเอง ว�าจะม�การที่�างาน
ที่�'ถ้ กต�องตามความต�องการหร�อไม� ตรวจสอบด้�วยการแปลโปรแกรม ตรวจสอบด้�วยการแปลโปรแกรม
((TranslatingTranslating)) การแปลเป�นภาษาเคร�'อง ตรวจสอบขี�อผู้�ด้พิลาด้ขีองโปรแกรม
การที่ด้สอบความถ้ กต�องขีองโปรแกรม (Testing and Validating)
73
ว�ธ�ที่ด้สอบความถ้ กต�องขีองขี�อม ล ม�ด้�งน�+ กรณ�ที่�'ขี�อม ลถ้ กต�อง กรณ�ที่�'ขี�อม ลถ้ กต�อง ((valid casevalid case)) ที่ด้สอบโด้ย
ใส�ขี�อม ลที่�'ถ้ กต�องลงไปในโปรแกรม เพิ�'อที่ด้สอบผู้ลล�พิธ�ว�าตรงก�บที่�'ต�องการหร�อไม�
การใช้�ขีอบเขีตและความถ้ กต�องขีองการใช้�ขีอบเขีตและความถ้ กต�องขีองขี�อม ล ขี�อม ล ((Range check and Completeness Range check and Completeness checkcheck)) เป�นการเช้?คขีอบเขีตขี�อม ล
การใช้�ความสมเหต:สมผู้ล การใช้�ความสมเหต:สมผู้ล ((Consistency Consistency CheckCheck))
การที่ด้สอบความถ้ กต�องขีองโปรแกรม (Testing and Validating)
74
ขี�อม ลที่�'เป�นต�วเลขีและต�วอ�กษร ขี�อม ลที่�'เป�นต�วเลขีและต�วอ�กษร ((Correct No. Correct No. and Type character checkand Type character check)) ตรวจสอบว�าถ้�าเป�นฟิ3ลด้�ที่�'เป�นต�วเลขีอย�างเด้�ยว เช้�น จ�านวนเง�น ก?ควรจะปCอนขี�อม ลได้�เฉพิาะต�วเลขีเที่�าน�+น
ขี�อม ลเป�นไปตามขี�อก�าหนด้ ขี�อม ลเป�นไปตามขี�อก�าหนด้ ((Existence Existence CheckCheck)) ขี�อม ลที่�'ปCอนต�องเป�นไปตามที่�'ก�าหนด้ไว�แน�นอนแล�วเที่�าน�+น