หน่วยที่ 2 โปรแกรมคอมพิวเตอร์
หน่วยที่ 2 โปรแกรมคอมพิวเตอร์
- ความหมายและลักษณะของโปรแกรมคอมพิวเตอร์
- ประเภทของภาษาคอมพิวเตอร์
- ตัวอย่างภาษาคอมพิวเตอร์
- ตัวอย่างการเขียนโปรแกรมคอมพิวเตอร์
ภาษาคอมพิวเตอร์
เครื่องคอมพิวเตอร์เป็นอุปกรณ์อิเล็กทรอนิกส์อย่างหนึ่ง โดยการให้เครื่องคอมพิวเตอร์ทำงานจะต้องป้อนคำสั่งให้กับมัน และต้องเป็นคำสั่งที่เครื่องคอมพิวเตอร์เข้าใจ การนำคำสั่งมาเรียงต่อกันให้ทำงานอย่างใดอย่างหนึ่งเรียกว่า โปรแกรม เมื่อโปรแกรมถูกป้อนเข้าไปในเครื่องคอมพิวเตอร์ ตัวเครื่องจะทำงานทีละคำสั่ง สำหรับการใช้คำสั่งสั่งงานให้คอมพิวเตอร์ทำงานนั้น จะต้องใช้ภาษาที่คอมพิวเตอร์สามารถเข้าใจได้ ภาษาที่คอมพิวเตอร์เข้าใจ เรียกว่า ภาษาเครื่อง (Machine Language) ซึ่งเป็นรหัสเลขฐานสอง เมื่อมีการป้อนภาษานี้เข้าไปในเครื่องคอมพิวเตอร์ รหัสเลขฐานสองจะถูกเปลี่ยนเป็นสัญญาณทางไฟฟ้าที่คอมพิวเตอร์เข้าใจ
แต่ถ้ามนุษย์ต้องการป้อนโปรแกรมให้กับคอมพิวเตอร์เป็นเลขฐานสองนั้น จะทำได้ยากมาก เพราะเป็นภาษาที่มนุษย์เข้าใจได้ยาก จึงได้มีการออกแบบตัวภาษาอังกฤษ ให้แทนคำสั่งรหัสเลขฐานสองเหล่านั้น ซึ่งเรียกว่า รหัสนีโมนิก (mnemonic) ภาษาคอมพิวเตอร์ที่ใช้รหัสนีโมนิกในการเขียนเรียกว่า ภาษาแอสเซมบลี (Assembly Language) ต่อมาได้มีการพัฒนาชุดคำสั่งภาษาต่างๆ ให้มีความใกล้เคียงกับภาษามนุษย์ที่เข้าใจ เรียกว่า ภาษาระดับสูง (High-level Language) ซึ่งมีอยู่หลายภาษา ได้แก่ ภาษาเบสิก ปาสคาล ภาษาซี เป็นต้น สำหรับภาษาแอสเซมบลีเป็นภาษาที่ทำงานได้เร็วเพราะเข้าถึงหน่วยประมวลผลได้เร็วที่สุด เราเรียกภาษานี้ว่า ภาษาระดับต่ำ (Low-level Language)
ภาษาซี ถือเป็นภาษาระดับสูง แต่ความสามารถของคำสั่งภาษาซีบางคำสั่งจะทำงานได้ดี ใกล้เคียงกับภาษาระดับต่ำ แถมเขียนได้ง่ายกว่าภาษาแอสเซมบลี และสามารถติดต่อกับฮาร์ดแวร์ได้อย่างมีประสิทธิภาพ
ตัวแปลภาษา
ในการเขียนโปรแกรมคอมพิวเตอร์ จะต้องทำการแปลภาษาเหล่านั้น ให้เป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจก่อน คอมพิวเตอร์จึงจะทำงานได้ เมื่อเราพัฒนาโปรแกรม จะต้องสร้างโปรแกรมด้วยการเขียนชุดคำสั่ง ซึ่งชุดคำสั่งที่เขียนด้วยภาษาคอมพิวเตอร์ภาษาใดก็ได้ จะเรียกว่าโปรแกรมต้นฉบับ (Source Program) หรือ รหัสต้นฉบับ (Source Code) จากนั้นจะนำโปรแกรมต้นฉบับไปแปลให้เป็นภาษาเครื่อง ที่คอมพิวเตอร์ทำงานได้ ที่เรียกว่า รหัสภาษาเครื่อง (Executable Program) ซึ่งตัวแปลภาษานี้สามารถแบ่งได้เป็น 2 ประเภท คือ อินเตอร์พรีเตอร์ (Interpreter) และคอมไพเลอร์ (Complier)
1. อินเตอร์พรีเตอร์ (Interpreter)
ตัวแปลภาษาชนิดประเภทอินเตอร์พรีเตอร์ จะทำการแปลคำสั่งทีละคำสั่ง ให้เครื่องทำงานทีละคำสั่ง หากไม่พบข้อผิดพลาดใดๆ จะทำแปลคำสั่งถัดไป โดยจะกระทำไปจนจบโปรแกรม หรือพบข้อผิดพลาด เครื่องจะหยุดทำงานทันที และแจ้งข้อผิดพลาดให้ทราบ
ตัวอย่างภาษาที่แปลด้วยตัวแปลภาษาชนิดประเภทอินเตอร์พรีเตอร์ เช่น ภาษาเบสิก (Basic) ภาษาเพิร์ล (Perl), ภาษาพีเอชพี (PHP) เป็นต้น
2. คอมไพเลอร์ (Complier)
ตัวแปลภาษาชนิดประเภทคอมไพเลอร์ จะมีวิธีการแปลคำสั่งที่แตกต่างจากตัวแปลภาษาชนิดประเภทอินเตอร์พรีเตอร์ คือแปลโปรแกรมต้นฉบับทั้งหมดให้เป็นภาษาเครื่องในครั้งเดียว และในกรณีที่พบข้อผิดพลาด จะรายงานให้ทราบเมื่อจบการแปลโปรแกรม ซึ่งเป็นวิธีที่ทำให้โปรแกรมทำงานได้เร็วขึ้น เพราะไม่ต้องรอทำทีละคำสั่ง
ตัวอย่างภาษาที่แปลด้วยตัวแปลภาษาชนิดประเภทอินเตอร์พรีเตอร์ เช่น ภาษาฟอร์แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาซี (C) และ ภาษาเบสิกรุ่นใหม่ ๆ เช่น เทอร์โบเบสิก หรือวิชวลเบสิก เป็นต้น
ภาษาแอสแซมบลี
ในการเขียนโปรแกรมด้วยภาษาแอสเซมบลี จะใช้ตัวแปลภาษาให้เป็นภาษาเครื่องที่เรียกว่า แอสเซมเบอร์ (Assembler)
ที่มา:http://www.jaturapad.com/online-class/c/l01-01.html
การพัฒนาโปรแกรม
การเขียนโปรแกรมคอมพิวเตอร์ให้ทำงานได้ตามที่ต้องการนั้น ผู้เขียนโปรแกรมจะต้องรู้ว่าจะให้โปรแกรทำอะไร มีข้อมูลอะไรที่ต้องให้กับโปรแกรมบ้าง และต้องการอะไรจากโปรแกรมรวมทั้งรูปแบบการแสดงผลด้วย โดยทั่วไปแล้วขั้นตอนการพัฒนาโปรแกรมแบ่งได้ดังนี้
กำหนดและวิเคราะห์ปัญหา (Problem Definition and Problem Analysis)
เขียนผังงานและซูโดโค้ด (Pseudocoding)
เขียนโปรแกรม (Programming)
ทดสอบและแก้ไขโปรแกรม (Program Testing and Debugging)
ทำเอกสารและบำรุงรักษาโปรแกรม (Program Documentation and Maintenance)
1. กำหนดและวิเคราะห์ปัญหา
ขั้นตอนนี้เป็นขั้นตอนแรกสุดที่นักเขียนโปรแกรมจะต้องทำ การให้คอมพิวเตอร์แก้ปัญหาต่างๆ ให้เรานั้น เราจะต้องมีแนวทางที่แก้ไขปัญหาที่เหมาะสมให้กับคอมพิวเตอร์ เพื่อให้การทำงานเป็นไปอย่างมีประสิทธิภาพ โดยมีขั้นตอนย่อยๆ ดังนี้
กำหนดขอบเขตของปัญหา โดยกำหนดรายละเอียดให้ชัดเจนว่าจะให้คอมพิวเตอร์ทำอะไร ตัวแปรค่าคงที่ที่ต้องใช้เป้นลักษณะใด ถ้าหากเราไม่กำหนดขอบเขตของปัญหาจะทำให้คอมพิวเตอร์ตัดสินได้ยากว่าข้อมูลต่างๆ ที่เกิดขั้นนั้นถูกหรือผิด
กำหนดลักษณะของข้อมูลเข้าและออกจากระบบ (Input/Output Specification) โดยต้องรู้ว่าข้อมูลที่จะส่งเข้าไปเป็นอย่างไร เพื่อให้โปรแกรมทำการประมวลผล และแสดงผลลัพธ์ เช่น การรับค่าจากคีย์บอร์ด การใช้เมาส์ การกำหนดปุ่มต่างๆ ลักษณะการแสดงผลทางหน้าจอ ว่าจะให้มีรูปร่างอย่างไร โดยคำนึงถึงผู้ใช้เป็นหลักในการออกแบบโปรแกรม
กำหนดวิธีการประมวลผล (Processing Specification) ดดยต้องรู้ว่าจะให้คอมพิวเตอร์ทำการประมวลผลอย่างไร จึงได้ผลลัพธ์ตามต้องการ
2. เขียนผังงานและซูโดโค้ด
หลังจากที่ได้วิเคราะห์ปัญหาแล้ว ขั้นตอนต่อไปจะต้องใช้เครื่องมือที่ช่วยในการออกแบบโปรแกรม ซึ่งยังไม่ได้เป็นโปรแกรมจริง ๆ แต่จะช่วยให้เขียนโปรแกรมได้ง่ายขึ้น และทำให้ผู้อื่นนำโปรแกรมไปพัฒนาต่อได้ง่ายขึ้น โดยเขียนเป็นลำดับขั้นตอนการทำงานของโปรแกรม ที่เรียกว่า อัลกอริทึม (Algorithm) ซึ่งจะแสดงขั้นตอนการแก้ปัญหา โดยใช้ประโยคที่ชัดเจนไม่คลุมเครือ และมีรายละเอียดการทำงานพอสมควรเพียงพอที่จะนำไปเขียนเป็นโปรแกรมให้ทำงานจริง โดยอัลกอริทึมนั้น อาจเขียนให้อยู่ในรูปของรหัสลำลองหรือซูโดโค้ด (Pseudocode) หรือผังงาน (Flowchart) ก็ได้ โดยซูโดโค้ด จะเป็นคำอธิบายขั้นตอนการทำงานของโปรแกรม เป็นคำย่อไม่มีรูปแบบเฉพาะตัว โดยแต่ละส่วนจะเป็นแนวทางในการเขียนโปรแกรม ซึ่งทำให้เขียนโปรแกรมเป็นภาษาต่าง ๆ ได้ง่ายขึ้น ส่วนผังงาน จะใช้สัญลักษณ์ต่าง ๆ แทนการทำงานและทิศทางของโปรแกรม
3. เขียนโปรแกรม
ขั้นตอนนี้เป็นการเขียนโปรแกรมเพื่อให้คอมพิวเตอร์สามารถประมวลผลได้ โดยเปลี่ยนขั้นตอนการทำงานให้อยู่ในรูปรหัสภาษาคอมพิวเตอร์ การเขียนโปรแกรมจะต้องเขียนตามภาษาที่คอมพิวเตอร์เข้าใจได้โดยอาจใช้ภาษาระดับสูง หรือภาษาระดับต่ำ ซึ่งเลือกได้หลายภาษา การเขียนโปรแกรมแต่ละภาษาจะต้องทำตามหลักไวยากรณ์ (syntax) ที่กำหนดไว้ในภาษานั้น นอกจากนี้การเลือกใช้ภาษาจะต้องพิจารณาถึงความถนัดของผู้เขียนโปรแกรมอีกด้วย
4. ทดสอบและแก้ไขโปรแกรม
หลังจากเขียนโปรแกรมจะต้องทดสอบความถูกต้องของโปรแกรมที่เขียนขึ้น หาจุดผิดพลาดของโปรแกรมว่ามีหรือไม่ และตรวจสอบจนไม่พบที่ผิด จุดผิดพลาดของโปรแกรมนี้ เรียกว่า บัก (Bug) ส่วนการแก้ไขข้อผิดพลาดให้ถูกต้องเรียกว่า ดีบัก (Debug) โดยทั่วไปแล้วข้อผิดพลาดจากการเขียนโปรแกรมจะมีสองประเภท คือ
การเขียนคำสั่งไม่ถูกต้องตามหลักการเขียนโปรแกรมภาษานั้น ๆ ซึ่งเรียกว่า Syntax Error หรือ Coding Error ข้อผิดพลาดประเภทนี้เรามักพบตอนแปลภาษาโปรแกรมเป็นรหัสภาษาเครื่อง
ข้อผิดพลาดทางตรรกะ หรือ Logic Error เป็นข้อผิดพลาดที่โปรแกรมทำงานได้ แต่ผลลัพธ์ออกมาไม่ถูกต้อง
5. ทำเอกสารและบำรุงรักษาโปรแกรม
ขั้นตอนนี้จะทำให้ผู้ใช้สามารถใช้งานโปรแกรมได้อย่างมีประสิทธิภาพ และสะดวกในการตรวจสอบข้อผิดพลาด โดยเขียนเป็นเอกสารประกอบโปรแกรมขึ้นมา โดยทั่วไปแล้วแบ่งออกเป็น 2 ประเภท คือ
คู่มือการใช้ หรือ User Document หรือ User Guide ซึ่งจะอธิบายการใช้โปรแกรม
คู่มือโปรแกรมเมอร์ หรือ Program Document หรือ Technical Reference ซึ่งจะอำนวยความสะดวกในการแก้ไขโปรแกรม และพัฒนาโปรแกรมในอนาคต โดยจะมีรายละเอียดต่าง ๆ เกี่ยวกับโปรแกรม เช่น ชื่อโปรแกรม การรับข้อมูล การพิมพ์ผลลัพธ์ขั้นตอนต่างๆ ในโปรแกรม เป็นต้น
ที่มา : http://www.jaturapad.com/online-class/c/l01-02.html
ก่อนที่จะลงมือเขียนโปรแกรม ต้องออกแบบขั้นตอนการทำงาน หรืออัลกอริทึม (Algorithm) ก่อน ซึ่งเป็นเครื่องมือในการแสดงขั้นตอนการทำงานของระบบงานใด ๆ เพื่อให้การเขียนโปรแกรมเป็นไปได้อย่างรวดเร็วและง่ายขึ้น โดยเราจะเขียนอัลกอริทึมในลักษณะรหัสลำลองที่เรียกว่า ซูโดโค้ด (Pseudocode) หรือผังงาน (Flowchart) ก็ได้
ซูโดโค้ด (Pseudocode)
เป็นคำอธิบายขั้นตอนการทำงานของโปรแกรม โดยใช้ถ้อยคำผสมระหว่างภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้าง จะช่วยให้ผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น ส่วนใหญ่มักใช้คำเฉพาะ (Reserve Word) ที่มีในภาษาการเขียนโปรแกรมและมักเขียนด้วยตัวอักษรตัวใหญ่ ซูโดโค้ดที่ดี จะต้องมีความชัดเจน สั้น และได้ใจความ ข้อมูลต่าง ๆ ที่ใช้จะถูกเขียนอยู่ในรูปของตัวแปร
รูปแบบ
Algorithm <ชื่อของอัลกอริทึม>
1……………………………….
2……………………………….
…………………………………
END
ตัวอย่างที่ 1 การเขียนซูโดโค้ด สำหรับให้คอมพิวเตอร์หาค่าเฉลี่ยจากข้อมูลที่รับเข้าทางแป้นพิมพ์ ถ้าใส่ค่าศูนย์แสดงว่าหยุดป้อนข้อมูล เขียนได้ดังนี้
Algorithm การหาค่าเฉลี่ย
1. เริ่มต้น
2. ตัวนับ = 0
3. ผลรวม = 0
4. รับค่าทางแป้นพิมพ์เก็บไว้ในตัวแปร (ข้อมูล)
5. ถ้า ข้อมูล มากกว่า 0
เพิ่มค่าตัวนับขึ้นหนึ่งค่า
ผลรวม = ผลรวม + ค่าข้อมูล
ย้อนกลับไปทำขั้นตอนที่ 3
ถ้าไม่มากกว่าไปทำขั้นตอนที่ 5
6. ค่าเฉลี่ย = ผลรวมหารด้วยตัวนับ
7. แสดงค่าเฉลี่ยทางจอภาพ (ทศนิยมสองตำแหน่ง)
จบ
Algorithm Average_Sum
1. START
2. count =0
3. sum = 0
4. INPUT (value)
5. IF value > 0 THEN
count = count +1
sum = sum + value
GOTO 3
ELSE GOTO 5
6. average = sum / count
7. OUTPUT (average)
END
ตัวอย่างที่ 2 การเขียนซูโดโค้ด คำนวณหาพื้นที่สามเหลี่ยม หรือเขียนเป็นภาษาอังกฤษได้ดังนี้
Algorithm การหาพื้นที่สามเหลี่ยม
1. เริ่มต้น
2. รับค่าความยาวของฐานมาเก็บในตัวแปร X
3. รับค่าความยาวของสูงมาเก็บในตัวแปร Y
4. คำนวณหาพื้นที่ ARRAY = ( X*Y ) / 2
5. แสดงผลพื้นที่
จบ
Algorithm Average_Sum
1. START
2. READ X
3. READ Y
4. Compute ARRAY = ( X*Y ) / 2
5. Print ARRAY
END