ประวัติความเป็นมาภาษาซี
ภาษาซีเกิดขึ้นในปี ค.ศ. 1972 ผู้คิดค้นคือ Dennis Rittchie โดยพัฒนามาจากภาษาB และ ภาษา BCPL แต่ยังไม่มีการใช้งานอย่างกว้างขวางนัก ในปี ค.ศ. 1978 Brain Kernighan ได้ร่วมกับ Dennis Ritchie มาพัฒนามาตรฐานของภาษาซี เรียกว่า K&R ทำให้มีผู้สนใจเกี่ยวกับภาษาซีมากขึ้น จึงเกิดภาษาซีอีกหลายรูปแบบเพราะยังไม่มีการกำหนดรูปแบบภาษาซีที่เป็นมาตรฐาน และในปี 1988 Ritchie จึงได้กำหนดมาตรฐานของภาษาซีเรียกว่า ANSI C เพื่อใช้เป็นตัวกำหนดมาตรฐานในการสร้างภาษาซีรุ่นต่อไปภาษาซี เป็นภาษาซีระดับกลางเหมาะสมสำหรับการเขียนโปรแกรมแบบโครงสร้าง เป็นภาษาที่มีความยืดหยุ่นมากคือใช้งานได้กับเครื่องต่างๆ ได้และปัจจุบันภาษาซีเป็นภาษาพื้นฐานของภาษาโปรแกรมรุ่นใหม่ ๆ เช่น C++
ขั้นตอนการพัฒนาโปรแกรมภาษาซี
ขั้นตอนที่ 1 เขียนโปรแกรม (Source code)
ใช้ editor เขียนโปรแกรมภาษาซีและทำการบันทึกไฟล์ให้มีนามสกุลเป็น .c เช่น work.c เป็นต้น
editor คือ โปรแกรมที่ใช้สำหรับการเขียนโปรแกรม โดยตัวอย่างของ editor ที่นิยมนำมาใช้ในการเขียนโปรแกรมได้แก่ Notepad,Edit ของ Dos ,TextPad และ EditPlus เป็นต้น ผู้เขียนโปรแกรมสามารถเลือกใช้โปรแกรมใดในการเรียนโปรแกรมก็ได้ แล้วแต่ความถนัดของแต่ละบุคคล
ขั้นตอนที่ 2 คอมไพล์โปรแกรม (Compile)
นำ source code จากขั้นตอนที่ 1 มาทำการคอมไพล์ เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้ ในขั้นตอนนี้คอมไพเลอร์จะทำการตรวจสอบ source code ว่าเกิดข้อผิดพลาดหรือไม่
· หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนโปรแกรมทราบ ผู้เขียนโปรแกรมจะต้องกลับไปแก้ไขโปรแกรม และทำการคอมไพล์โปรแกรมใหม่อีกครั้ง
· หากไม่พบข้อผิดพลาด คอมไพเลอร์จะแปลไฟล์ source code จากภาษาซีไปเป็นภาษาเครื่อง(ไฟล์นามสกุล .obj) เช่นถ้าไฟล์ source code ชื่อ work.c ก็จะถูกแปลไปเป็นไฟล์ work.obj ซึ่งเก็บภาษาเครื่องไว้เป็นต้น
compile เป็นตัวแปลภาษารูปแบบหนึ่ง มีหน้าที่หลักคือการแปลภาษาโปรแกรมที่มนุษย์เขียนขึ้นไปเป็นภาษาเครื่อง โดยคอมไพเลอร์ของภาษาซี คือ C Compiler ซึ่งหลักการที่คอมไพเลอร์ใช้ เรียกว่า คอมไพล์ (compile) โดยจะทำการอ่านโปรแกรมภาษาซีทั้งหมดตั้งแต่ต้นจนจบ แล้วทำการแปลผลทีเดียว
นอกจากคอมไพเลอร์แล้ว ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกว่า อินเตอร์พรีเตอร์ การอ่านและแปลโปรแกรมทีละบรรทัด เมื่อแปลผลบรรทัดหนึ่งเสร็จก็จะทำงานตามคำสั่งในบรรทัดนั้น แล้วจึงทำการแปลผลตามคำสั่งในบรรทัดถัดไป หลักการที่อินเตอร์พรีเตอร์ใช้เรียกว่า อินเตอร์เพรต (interpret)
ข้อดีและข้อเสียของตัวแปลภาษาทั้งสองแบบมีดังนี้ขั้นตอนการพัฒนาโปรแกรมภาษาซี
ขั้นตอนที่ 1 เขียนโปรแกรม (Source code)
ใช้ editor เขียนโปรแกรมภาษาซีและทำการบันทึกไฟล์ให้มีนามสกุลเป็น .c เช่น work.c เป็นต้น
editor คือ โปรแกรมที่ใช้สำหรับการเขียนโปรแกรม โดยตัวอย่างของ editor ที่นิยมนำมาใช้ในการเขียนโปรแกรมได้แก่ Notepad,Edit ของ Dos ,TextPad และ EditPlus เป็นต้น ผู้เขียนโปรแกรมสามารถเลือกใช้โปรแกรมใดในการเรียนโปรแกรมก็ได้ แล้วแต่ความถนัดของแต่ละบุคคล
ขั้นตอนที่ 2 คอมไพล์โปรแกรม (Compile)
นำ source code จากขั้นตอนที่ 1 มาทำการคอมไพล์ เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้ ในขั้นตอนนี้คอมไพเลอร์จะทำการตรวจสอบ source code ว่าเกิดข้อผิดพลาดหรือไม่
· หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนโปรแกรมทราบ ผู้เขียนโปรแกรมจะต้องกลับไปแก้ไขโปรแกรม และทำการคอมไพล์โปรแกรมใหม่อีกครั้ง
· หากไม่พบข้อผิดพลาด คอมไพเลอร์จะแปลไฟล์ source code จากภาษาซีไปเป็นภาษาเครื่อง(ไฟล์นามสกุล .obj) เช่นถ้าไฟล์ source code ชื่อ work.c ก็จะถูกแปลไปเป็นไฟล์ work.obj ซึ่งเก็บภาษาเครื่องไว้เป็นต้น
compile เป็นตัวแปลภาษารูปแบบหนึ่ง มีหน้าที่หลักคือการแปลภาษาโปรแกรมที่มนุษย์เขียนขึ้นไปเป็นภาษาเครื่อง โดยคอมไพเลอร์ของภาษาซี คือ C Compiler ซึ่งหลักการที่คอมไพเลอร์ใช้ เรียกว่า คอมไพล์ (compile) โดยจะทำการอ่านโปรแกรมภาษาซีทั้งหมดตั้งแต่ต้นจนจบ แล้วทำการแปลผลทีเดียว
นอกจากคอมไพเลอร์แล้ว ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกว่า อินเตอร์พรีเตอร์ การอ่านและแปลโปรแกรมทีละบรรทัด เมื่อแปลผลบรรทัดหนึ่งเสร็จก็จะทำงานตามคำสั่งในบรรทัดนั้น แล้วจึงทำการแปลผลตามคำสั่งในบรรทัดถัดไป หลักการที่อินเตอร์พรีเตอร์ใช้เรียกว่า อินเตอร์เพรต (interpret)
ข้อดี
|
ข้อเสีย
| |
คอมไพเลอร์ |
· ทำงานได้เร็ว เนื่องจากทำการแปลผลทีเดียว แล้วจึงทำงานตามคำสั่งของโปรแกรมในภายหลัง
· เมื่อทำการแปลผลแล้ว ในครั้งต่อไปไม่จำเป็นต้องทำการแปลผลใหม่อีก เนื่องจากภาษาเครื่องที่แปลได้จะถูกเก็บไว้ที่หน่วยความจำ สามารถเรียกใช้งานได้ทันที
|
· เมื่อเกิดข้อผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะทำการแปลผลทีเดียวทั้งโปรแกรม
|
อินเตอร์พรีเตอร์ |
· หาข้อผิดพลาดของโปรแกรมได้ง่าย เนื่องจากทำการแปลผลทีละบรรทัด
· เนื่องจากทำงานทีละบรรทัดดังนั้นจึงสั่งให้โปรแกรมทำงานตามคำสั่งเฉพาะจุดที่ต้องการได้
· ไม่เสียเวลารอการแปลโปรแกรมเป็นเวลานาน
|
· ช้า เนื่องจากที่ทำงานทีละบรรทัด
|
ขั้นตอนที่ 3 เชื่อมโยงโปรแกรม (link)
การเขียนโปรแกรมภาษาซีนั้นผู้เขียนโปรแกรมไม่จำเป็นต้องเขียนคำสั่งต่าง ๆ ขึ้นใช้งานเอง เนื่องจากภาษาซีมีฟังก์ชั้นมาตรฐานให้ผู้เขียนโปรแกรมสามารถเรียกใช้งานได้ เช่น การเขียนโปรแกรมแสดงข้อความ “Lumpangkanyanee” ออกทางหน้าจอ ผู้เขียนโปรแกรมสามารถเรียกใช้ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานของภาษาซีมาใช้งานได้ โดยส่วนการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานต่าง ๆ จะถูกจัดเก็บอยู่ในเฮดเดอร์ไฟล์แต่ละตัว แตกต่างกันไปตามลักษณะการใช้งาน
ด้วยเหตุนี้ภาษาเครื่องที่ได้จากขั้นตอนที่ 2 จึงยังไม่สามารถนำไปใช้งานได้ แต่ต้องนำมาเชื่อมโยงเข้ากับ library ก่อน ซึ่งผลจากการเชื่อมโยงจะทำให้ได้ executable program (ไฟล์นามสกุล.exe เช่น work.exe) ที่สามารถนำไปใช้งานได้ ขั้นตอนที่ 4 ประมวลผล (run) เมื่อนำ executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะได้ผลลัพธ์ (output) ของโปรแกรมออกมา (ถ้ามี)
1. ส่วนหัวของโปรแกรม ส่วนหัวของโปรแกรมนี้เรียกว่า Preprocessing Directive ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระทำการ ใด ๆ ก่อนการแปลผลโปรแกรม ในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการกำหนด preprocessing directives นี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ
คำสั่งที่ใช้ระบุให้คอมไพเลอร์นำเฮดเดอร์ไฟล์เข้าร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบ คือ
- #include <ชื่อเฮดเดอร์ไฟล์> คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเรกทอรีที่ใช้สำหรับเก็บเฮดเดอร์ไฟล์โดยเฉพาะ (ปกติคือไดเรกทอรีชื่อ include)
- #include “ชื่อเฮดเดอร์ไฟล์” คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล์ source code นั้น แต้ถ้าไม่พบก็จะไปค้นหาไดเร็คทอรีที่ใช้เก็บเฮดเดอร์ไฟล์โดยเฉพาะ 2. ส่วนของฟังก์ชั่นหลัก ฟังก์ชั่นหลักของภาษาซี คือ ฟังก์ชั่น main() ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชั่นนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชั่นคือ main แปลว่า “หลัก” ดังนั้น การเขียนโปรแกรมภาษซีจึงขาดฟังก์ชั่นนี้ไปไม่ได้ โดยขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main() สามารถเขียนในรูปแบบของ void main(void) ก็ได้ มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชั่น main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชั่น และจะไม่มีการคืนค่าใด ๆ กลับออกไปจากฟังก์ชั่นด้วย
3. ส่วนรายละเอียดของโปรแกรม เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้
==============================================================================
• คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมาย //
• คอมเมนต์แบบหลายบรรทัด ใช้เครื่องหมาย /* และ */
ตัวอย่าง การคอมเมนต์ในภาษาซี
ข้อควรระวังในการใช้คอมเมนต์ คือ ในกรณีที่ใช้คอมเมนต์แบบหลายบรรทัด จะไม่สามารถใช้คอมเมนต์ซ้อนคอมเมนต์ได้ ดังรูป มิฉะนั้นจะก่อให้เกิดข้อผิดพลาดในการคอมไพล์
อธิบายโปรแกรม บรรทัดที่ 1: เป็นการบอกให้คอมไพเลอร์นำเฮดเดอร์ไฟล์ชื่อ stdio.h เข้ามาร่วมในการแปลผลด้วย โดย stdio ย่อมาจาก standard input/output และ .h คือ นามสกุลของเฮดเดอร์ไฟล์ในภาษาซี (h ย่อมาจาก header) ซึ่ง stdio.h คือ เฮดเดอร์ไฟล์ที่รวมเอาการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานของภาษาซีที่เกี่ยวกับการจัดการด้านอินพุตและเอาต์พุตเข้ามาไว้ด้วยกันโปรแกรมนี้มีการเรียกใช้งานฟังก์ชั่น printf() เพื่อแสดงข้อมูลออกทางจอภาพ และเนื่องจากส่วนของการประกาศฟังก์ชั่น printf() ถูกบรรจุอยู่ในเฮดเดอร์ไฟล์ stdio.h ดังนั้นจึงจำเป็นต้องนำเฮดเดอร์ไฟล์ stdio.h เข้าร่วมในการแปลผลด้วย
บรรทัดที่ 2: คือฟังก์ชั่น void main() ซึ่งเป็นฟังก์ชั่นหลักของโปรแกรม การทำงานของโปรแกรมภาษาซีจะเริ่มต้นที่ฟังก์ชั่นนี้
บรรทัดที่ 3: เครื่องหมาย { ระบุจุดเริ่มต้นของฟังก์ชั่น main()
บรรทัดที่ 4: เป็นคำสั่งให้เคลียร์หน้าจอเวลาแสดงผลลัพธ์
บรรทัดที่ 5: เป็นการเรียกใช้ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานของภาษาซีทำหน้าที่แสดงผลข้อมูลออกทางจอภาพ ในที่นี้จะแสดงข้อความ My name is Kwanjit ออกทางจอภาพ
บรรทัดที่ 6: เครื่องหมาย } ระบุจุดสิ้นสุดของฟังก์ชั่น main()==============================================================================
ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรมครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
โจทย์ : จงเขียนโปรแกรมรับค่าเลขจำนวนเต็ม 2 จำนวนและหาผลบวกของเลขทั้ง 2 จำนวนนั้น 1. วิเคราะห์ปัญหา (Analysis)
ขั้นตอนนี้ถือว่าเป็นขั้นตอนที่สำคัญที่สุด ผู้เขียนโปรแกรมต้องวิเคราะห์ปัญหาให้ออกว่าจะต้องทำการเขียนโปรแกรม เพื่อแก้ปัญหาอะไร เพราะหากวิเคราะห์หรือมองปัญหาผิดแล้ว จะทำให้เขียนโปรแกรมได้ผลลัพธ์ออกมาผิดไปจากสิ่งที่ต้องการด้วย และวิเคราะห์ข้อมูลที่จะนำเข้ามาใช้ในโปรแกรมมีอะไรบ้าง จากโจทย์ข้างต้น สามารถแตกปัญหาได้เป็น 2 ส่วน คือ
- ต้องรับข้อมูลเลขจำนวนเต็ม 2 ตัวเข้ามาในโปรแกรม
วิเคราะห์ กำหนดให้ X เก็บเลขจำนวนเต็มที่ 1
กำหนดให้ y เก็บเลขจำนวนเต็มที่ 2
- เลขจำนวนเต็มที่ 1 + เลขจำนวนเต็มที่ 2 มีค่าเท่ากับเท่าไร
วิเคราะห์ กำหนดให้ sum เก็บค่าผลบวกของเลขจำนวนเต็มทั้ง 2 จำนวน นั่นคือ
sum = x + y 2. วางแผนและออกแบบ (Planning & Design) การวางแผน คือ การนำปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 มาวางแผนอย่างเป็นขั้นตอนว่าจะต้องเขียนโปรแกรมเพื่อแก้ปัญหาอย่างไร การวางแผนอย่างเป็นขั้นตอนนี้ เรียกว่า อัลกอริทึม (Algorithm) ซึ่งอัลกอริทึมแบ่งออกเป็น 2 รูปแบบ คือ
ซูโดโค้ด (Pseudo code) คือ การเขียนอัลกอริทึมโดยใช้ประโยคภาษาอังกฤษที่สื่อความหมายง่าย ๆ สามารถอ่านแล้วเข้าใจได้โดยทันที จากโจทย์สามารถเขียนซูโดโค้ดได้ดังนี้
จะเห็นว่า เมื่ออ่านซูโดโค้ดแล้วสามารถเข้าใจได้ทันทีว่าขั้นตอนการเขียนโปรแกรมเป็นอย่างไร
โฟลวชาร์ต (Flowchart) คือการเขียนอัลกอริทึมโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมายจากโจทย์ สามารถเขียนโฟลวชาร์ตได้ดังนี้
3. เขียนโปรแกรม (Coding) เป็นการนำอัลกอริทึมจากขั้นตอนที่ 2 มาเขียนโปรแกรมให้ถูกต้องตามหลักไวยากรณ์ (syntax) ของภาษาซี จากโจทย์สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่างแสดง ซอร์สโค้ด
หากนำโปรแกรม มาพิจารณา จะพบว่าการเขียนโปรแกรมมีขั้นตอนเป็นไปตามขั้นตอนของอัลกอริทึมที่ได้วิเคราะห์ขึ้นทุกประการ 4. ทดสอบโปรแกรม เป็นการนำผลลัพธ์จากขั้นตอนที่ 3 มาทำการรัน จากนั้นทดสอบโดยป้อนค่า x และ y เข้าไปในโปรแกรม และตรวจสอบผลลัพธ์ที่ได้ว่าถูกต้องหรือไม่ โดยทดสอบหลาย ๆ ครั้ง หากผลลัพธ์ที่ได้ถูกต้องแสดงว่าโปรแกรมที่เขียนขึ้นถูกต้องแล้ว แต่หากผลลัพธ์ถูกบ้างผิดบ้างหรือผิดทุกครั้งแสดงว่าโปรแกรมที่เขียนขึ้นผิดพลาด ผุ้เขียนต้องกลับไปตรวจสอบโปรแกรม
จากโจทย์สามารถทดสอบโปรแกรมได้ดังนี้
5. จัดทำคู่มือ (Documentation) จุดประสงค์ที่สำคัญของการทำคู่มือ คือ ช่วยให้ผู้ที่ศึกษาซอร์สโค้ดของโปรแกรม (source code) ได้ง่ายขึ้น จะเป็นประโยชน์มากสำหรับการพัฒนาโปรแกรมในอนาคต เพราะจะช่วยให้ศึกษาซอร์สโค้ดได้ง่ายและรวดเร็วขึ้น การจัดทำคู่มือไม่มีกฎเกณฑ์ระบุไว้แน่นอน แต่ผู้เขียนโปรแกรมควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด
จากโจทย์ สามารถจัดทำคู่มือได้ดังนี้
การเขียนโปรแกรมภาษาซีนั้นผู้เขียนโปรแกรมไม่จำเป็นต้องเขียนคำสั่งต่าง ๆ ขึ้นใช้งานเอง เนื่องจากภาษาซีมีฟังก์ชั้นมาตรฐานให้ผู้เขียนโปรแกรมสามารถเรียกใช้งานได้ เช่น การเขียนโปรแกรมแสดงข้อความ “Lumpangkanyanee” ออกทางหน้าจอ ผู้เขียนโปรแกรมสามารถเรียกใช้ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานของภาษาซีมาใช้งานได้ โดยส่วนการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานต่าง ๆ จะถูกจัดเก็บอยู่ในเฮดเดอร์ไฟล์แต่ละตัว แตกต่างกันไปตามลักษณะการใช้งาน
ด้วยเหตุนี้ภาษาเครื่องที่ได้จากขั้นตอนที่ 2 จึงยังไม่สามารถนำไปใช้งานได้ แต่ต้องนำมาเชื่อมโยงเข้ากับ library ก่อน ซึ่งผลจากการเชื่อมโยงจะทำให้ได้ executable program (ไฟล์นามสกุล.exe เช่น work.exe) ที่สามารถนำไปใช้งานได้ ขั้นตอนที่ 4 ประมวลผล (run) เมื่อนำ executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะได้ผลลัพธ์ (output) ของโปรแกรมออกมา (ถ้ามี)
=======================================================
โครงสร้างโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีแบ่งออกเป็น 3 ส่วน1. ส่วนหัวของโปรแกรม ส่วนหัวของโปรแกรมนี้เรียกว่า Preprocessing Directive ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระทำการ ใด ๆ ก่อนการแปลผลโปรแกรม ในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการกำหนด preprocessing directives นี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ
คำสั่งที่ใช้ระบุให้คอมไพเลอร์นำเฮดเดอร์ไฟล์เข้าร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบ คือ
- #include <ชื่อเฮดเดอร์ไฟล์> คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเรกทอรีที่ใช้สำหรับเก็บเฮดเดอร์ไฟล์โดยเฉพาะ (ปกติคือไดเรกทอรีชื่อ include)
- #include “ชื่อเฮดเดอร์ไฟล์” คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล์ source code นั้น แต้ถ้าไม่พบก็จะไปค้นหาไดเร็คทอรีที่ใช้เก็บเฮดเดอร์ไฟล์โดยเฉพาะ 2. ส่วนของฟังก์ชั่นหลัก ฟังก์ชั่นหลักของภาษาซี คือ ฟังก์ชั่น main() ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชั่นนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชั่นคือ main แปลว่า “หลัก” ดังนั้น การเขียนโปรแกรมภาษซีจึงขาดฟังก์ชั่นนี้ไปไม่ได้ โดยขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main() สามารถเขียนในรูปแบบของ void main(void) ก็ได้ มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชั่น main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชั่น และจะไม่มีการคืนค่าใด ๆ กลับออกไปจากฟังก์ชั่นด้วย
3. ส่วนรายละเอียดของโปรแกรม เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้
==============================================================================
คอมเมนต์ในภาษาซี
คอมเมนต์ (comment) คือส่วนที่เป็นหมายเหตุของโปรแกรม มีไว้เพื่อให้ผู้เขียนโปรแกรมใส่ข้อความอธิบายกำกับลงไปใน source code ซึ่งคอมไพเลอร์จะข้ามาการแปลผลในส่วนที่เป็นคอมเมนต์นี้ คอมเมนต์ในภาษาซีมี 2 แบบคือ• คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมาย //
• คอมเมนต์แบบหลายบรรทัด ใช้เครื่องหมาย /* และ */
ตัวอย่าง การคอมเมนต์ในภาษาซี
ข้อควรระวังในการใช้คอมเมนต์ คือ ในกรณีที่ใช้คอมเมนต์แบบหลายบรรทัด จะไม่สามารถใช้คอมเมนต์ซ้อนคอมเมนต์ได้ ดังรูป มิฉะนั้นจะก่อให้เกิดข้อผิดพลาดในการคอมไพล์
อธิบายโปรแกรม บรรทัดที่ 1: เป็นการบอกให้คอมไพเลอร์นำเฮดเดอร์ไฟล์ชื่อ stdio.h เข้ามาร่วมในการแปลผลด้วย โดย stdio ย่อมาจาก standard input/output และ .h คือ นามสกุลของเฮดเดอร์ไฟล์ในภาษาซี (h ย่อมาจาก header) ซึ่ง stdio.h คือ เฮดเดอร์ไฟล์ที่รวมเอาการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานของภาษาซีที่เกี่ยวกับการจัดการด้านอินพุตและเอาต์พุตเข้ามาไว้ด้วยกันโปรแกรมนี้มีการเรียกใช้งานฟังก์ชั่น printf() เพื่อแสดงข้อมูลออกทางจอภาพ และเนื่องจากส่วนของการประกาศฟังก์ชั่น printf() ถูกบรรจุอยู่ในเฮดเดอร์ไฟล์ stdio.h ดังนั้นจึงจำเป็นต้องนำเฮดเดอร์ไฟล์ stdio.h เข้าร่วมในการแปลผลด้วย
บรรทัดที่ 2: คือฟังก์ชั่น void main() ซึ่งเป็นฟังก์ชั่นหลักของโปรแกรม การทำงานของโปรแกรมภาษาซีจะเริ่มต้นที่ฟังก์ชั่นนี้
บรรทัดที่ 3: เครื่องหมาย { ระบุจุดเริ่มต้นของฟังก์ชั่น main()
บรรทัดที่ 4: เป็นคำสั่งให้เคลียร์หน้าจอเวลาแสดงผลลัพธ์
บรรทัดที่ 5: เป็นการเรียกใช้ฟังก์ชั่น printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานของภาษาซีทำหน้าที่แสดงผลข้อมูลออกทางจอภาพ ในที่นี้จะแสดงข้อความ My name is Kwanjit ออกทางจอภาพ
บรรทัดที่ 6: เครื่องหมาย } ระบุจุดสิ้นสุดของฟังก์ชั่น main()==============================================================================
ขั้นตอนการพัฒนาโปรแกรม
การเขียนโปรแกรมเพื่อแก้ปัญหาได้ปัญหาหนึ่ง จนได้ผลลัพธ์ตามที่ต้องการ หากผู้เขียนโปรแกรมมีแนวคิดในการเขียนโปรแกรมที่ดี และทำการเขียนโปรแกรมตามแนวคิดที่ได้วางไว้ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรมครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
โจทย์ : จงเขียนโปรแกรมรับค่าเลขจำนวนเต็ม 2 จำนวนและหาผลบวกของเลขทั้ง 2 จำนวนนั้น 1. วิเคราะห์ปัญหา (Analysis)
ขั้นตอนนี้ถือว่าเป็นขั้นตอนที่สำคัญที่สุด ผู้เขียนโปรแกรมต้องวิเคราะห์ปัญหาให้ออกว่าจะต้องทำการเขียนโปรแกรม เพื่อแก้ปัญหาอะไร เพราะหากวิเคราะห์หรือมองปัญหาผิดแล้ว จะทำให้เขียนโปรแกรมได้ผลลัพธ์ออกมาผิดไปจากสิ่งที่ต้องการด้วย และวิเคราะห์ข้อมูลที่จะนำเข้ามาใช้ในโปรแกรมมีอะไรบ้าง จากโจทย์ข้างต้น สามารถแตกปัญหาได้เป็น 2 ส่วน คือ
- ต้องรับข้อมูลเลขจำนวนเต็ม 2 ตัวเข้ามาในโปรแกรม
วิเคราะห์ กำหนดให้ X เก็บเลขจำนวนเต็มที่ 1
กำหนดให้ y เก็บเลขจำนวนเต็มที่ 2
- เลขจำนวนเต็มที่ 1 + เลขจำนวนเต็มที่ 2 มีค่าเท่ากับเท่าไร
วิเคราะห์ กำหนดให้ sum เก็บค่าผลบวกของเลขจำนวนเต็มทั้ง 2 จำนวน นั่นคือ
sum = x + y 2. วางแผนและออกแบบ (Planning & Design) การวางแผน คือ การนำปัญหาที่วิเคราะห์ได้จากขั้นตอนที่ 1 มาวางแผนอย่างเป็นขั้นตอนว่าจะต้องเขียนโปรแกรมเพื่อแก้ปัญหาอย่างไร การวางแผนอย่างเป็นขั้นตอนนี้ เรียกว่า อัลกอริทึม (Algorithm) ซึ่งอัลกอริทึมแบ่งออกเป็น 2 รูปแบบ คือ
ซูโดโค้ด (Pseudo code) คือ การเขียนอัลกอริทึมโดยใช้ประโยคภาษาอังกฤษที่สื่อความหมายง่าย ๆ สามารถอ่านแล้วเข้าใจได้โดยทันที จากโจทย์สามารถเขียนซูโดโค้ดได้ดังนี้
จะเห็นว่า เมื่ออ่านซูโดโค้ดแล้วสามารถเข้าใจได้ทันทีว่าขั้นตอนการเขียนโปรแกรมเป็นอย่างไร
โฟลวชาร์ต (Flowchart) คือการเขียนอัลกอริทึมโดยใช้สัญลักษณ์รูปภาพเป็นตัวสื่อความหมายจากโจทย์ สามารถเขียนโฟลวชาร์ตได้ดังนี้
3. เขียนโปรแกรม (Coding) เป็นการนำอัลกอริทึมจากขั้นตอนที่ 2 มาเขียนโปรแกรมให้ถูกต้องตามหลักไวยากรณ์ (syntax) ของภาษาซี จากโจทย์สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่างแสดง ซอร์สโค้ด
หากนำโปรแกรม มาพิจารณา จะพบว่าการเขียนโปรแกรมมีขั้นตอนเป็นไปตามขั้นตอนของอัลกอริทึมที่ได้วิเคราะห์ขึ้นทุกประการ 4. ทดสอบโปรแกรม เป็นการนำผลลัพธ์จากขั้นตอนที่ 3 มาทำการรัน จากนั้นทดสอบโดยป้อนค่า x และ y เข้าไปในโปรแกรม และตรวจสอบผลลัพธ์ที่ได้ว่าถูกต้องหรือไม่ โดยทดสอบหลาย ๆ ครั้ง หากผลลัพธ์ที่ได้ถูกต้องแสดงว่าโปรแกรมที่เขียนขึ้นถูกต้องแล้ว แต่หากผลลัพธ์ถูกบ้างผิดบ้างหรือผิดทุกครั้งแสดงว่าโปรแกรมที่เขียนขึ้นผิดพลาด ผุ้เขียนต้องกลับไปตรวจสอบโปรแกรม
จากโจทย์สามารถทดสอบโปรแกรมได้ดังนี้
5. จัดทำคู่มือ (Documentation) จุดประสงค์ที่สำคัญของการทำคู่มือ คือ ช่วยให้ผู้ที่ศึกษาซอร์สโค้ดของโปรแกรม (source code) ได้ง่ายขึ้น จะเป็นประโยชน์มากสำหรับการพัฒนาโปรแกรมในอนาคต เพราะจะช่วยให้ศึกษาซอร์สโค้ดได้ง่ายและรวดเร็วขึ้น การจัดทำคู่มือไม่มีกฎเกณฑ์ระบุไว้แน่นอน แต่ผู้เขียนโปรแกรมควรจัดทำคู่มือให้มีรายละเอียดมากที่สุด
จากโจทย์ สามารถจัดทำคู่มือได้ดังนี้
ชื่อโปรแกรม
|
หาค่าผลบวกของเลขจำนวนเต็ม 2 จำนวน
|
ตัวแปรที่ใช้
|
x เก็บค่าจำนวนเต็มตัวที่ 1
|
Y เก็บค่าจำนวนเต็มตัวที่ 2
| |
Sum เก็บค่าผลบวกของตัวเลขจำนวนเต็มทั้ง 2 จำนวน
| |
ชนิดของข้อมูล
|
x,y,sum เป็นข้อมูลชนิดเลขจำนวนเต็ม (integer)
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น