การเขียนโปรแกรมคอมพิวเตอร์ 1

74
กกกกกกกกกกกกกกก กกกกกกกกกกก 1 1

description

การเขียนโปรแกรมคอมพิวเตอร์ 1. โปรแกรมเมอร์คนแรกของโลก. Augusta Lovelace Ada คือ โปรแกรมเมอร์คนแรกของโลก แต่ Edsger Wybe Dijkstra ใช้คำว่า โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์เป็นคนแรก. ข้อมูลจาก http://www.twoguru.com/playground/article/dijkstra.htm - PowerPoint PPT Presentation

Transcript of การเขียนโปรแกรมคอมพิวเตอร์ 1

การเขี�ยนโปรแกรมคอมพิ�วเตอร� 1

1

โปรแกรมเมอร�คนแรกขีองโลก 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. บวกหร�อลบ (โด้ยที่�าจากซั�ายไปขีวา)

ต�วอย�างการเขี�ยนผู้�งงาน

47

เร�'มต�น

T1 = 10 / 5

T2 = 6 * 3

1

1

T3 = 8 + T1

K = T3 - T2

จบงาน

การพิ�ฒนาอ�ลกอร�ธ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ม50

โครงสร�างต�ด้ส�นใจ (selection) โครงสร�าง IF โครงสร�าง IF else

การพิ�ฒนาอ�ลกอร�ธ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อนต�องเป�นไปตามที่�'ก�าหนด้ไว�แน�นอนแล�วเที่�าน�+น