:

ขั้นตอนการเขียนและโครงสร้างโปรแกรมภาษาซี

Unknown / undefined 05, 2016


 ขั้นตอนการพัฒนาโปรแกรมภาษาซี
           ขั้นตอนที่ 1 เขียนโปรแกรม (Source code)
     ใช้ editor เขียนโปรแกรมภาษาซีและทำการบันทึกไฟล์ให้มีนามสกุลเป็น .c  เช่น  work.c เป็นต้น
editor  คือ  โปรแกรมที่ใช้สำหรับการเขียนโปรแกรม  โดยตัวอย่างของ editor  ที่นิยมนำมาใช้ในการเขียนโปรแกรมได้แก่  Notepad,Edit  ของ Dos ,TextPad  และ  EditPlus CodeBlock และ Dev C++ หรือ Online Compile C เป็นต้น ผู้เขียนโปรแกรมสามารถเลือกใช้โปรแกรมใดในการเรียนโปรแกรมก็ได้  แล้วแต่ความถนัดของแต่ละบุคคล
          ขั้นตอนที่ 2 คอมไพล์โปรแกรม (Compile)          
     นำ source code จากขั้นตอนที่ 1 มาทำการคอมไพล์  เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้  ในขั้นตอนนี้คอมไพเลอร์จะทำการตรวจสอบ  source code  ว่าเกิดข้อผิดพลาดหรือไม่
     หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนโปรแกรมทราบ  ผู้เขียนโปรแกรมจะต้องกลับไปแก้ไขโปรแกรม  และทำการคอมไพล์โปรแกรมใหม่อีกครั้ง
     หากไม่พบข้อผิดพลาด  คอมไพเลอร์จะแปลไฟล์  source code จากภาษาซีไปเป็นภาษาเครื่อง(ไฟล์นามสกุล .obj) เช่นถ้าไฟล์ source code ชื่อwork.c ก็จะถูกแปลไปเป็นไฟล์  work.obj  ซึ่งเก็บภาษาเครื่องไว้เป็นต้น
     compile เป็นตัวแปลภาษารูปแบบหนึ่ง  มีหน้าที่หลักคือการแปลภาษาโปรแกรมที่มนุษย์เขียนขึ้นไปเป็นภาษาเครื่อง โดยคอมไพเลอร์ของภาษาซี คือ  C Compiler  ซึ่งหลักการที่คอมไพเลอร์ใช้  เรียกว่า  คอมไพล์(compile)  โดยจะทำการอ่านโปรแกรมภาษาซีทั้งหมดตั้งแต่ต้นจนจบ  แล้วทำการแปลผลทีเดียว

     นอกจากคอมไพเลอร์แล้ว  ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกว่า อินเตอร์พรีเตอร์  การอ่านและแปลโปรแกรมทีละบรรทัด  เมื่อแปลผลบรรทัดหนึ่งเสร็จก็จะทำงานตามคำสั่งในบรรทัดนั้น  แล้วจึงทำการแปลผลตามคำสั่งในบรรทัดถัดไป  หลักการที่อินเตอร์พรีเตอร์ใช้เรียกว่า อินเตอร์เพรต(interpret)
ข้อดีและข้อเสียของตัวแปลภาษาทั้งสองแบบมีดังนี้

 

ข้อดี

ข้อเสีย

คอมไพเลอร์

·       ทำงานได้เร็ว เนื่องจากทำการแปลผลทีเดียว แล้วจึงทำงานตามคำสั่งของโปรแกรมในภายหลัง

·       เมื่อทำการแปลผลแล้ว  ในครั้งต่อไปไม่จำเป็นต้องทำการแปลผลใหม่อีก เนื่องจากภาษาเครื่องที่แปลได้จะถูกเก็บไว้ที่หน่วยความจำ สามารถเรียกใช้งานได้ทันที

·       เมื่อเกิดข้อผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะทำการแปลผลทีเดียวทั้งโปรแกรม

อินเตอร์พรีเตอร์

·       หาข้อผิดพลาดของโปรแกรมได้ง่าย เนื่องจากทำการแปลผลทีละบรรทัด

·       เนื่องจากทำงานทีละบรรทัดดังนั้นจึงสั่งให้โปรแกรมทำงานตามคำสั่งเฉพาะจุดที่ต้องการได้

·       ไม่เสียเวลารอการแปลโปรแกรมเป็นเวลานาน

·       ช้า เนื่องจากที่ทำงานทีละบรรทัด



           ขั้นตอนที่  3  เชื่อมโยงโปรแกรม (link)
    การเขียนโปรแกรมภาษาซีนั้นผู้เขียนโปรแกรมไม่จำเป็นต้องเขียนคำสั่งต่าง ๆ ขึ้นใช้งานเอง  เนื่องจากภาษาซีมีฟังก์ชั้นมาตรฐานให้ผู้เขียนโปรแกรมสามารถเรียกใช้งานได้ เช่น  การเขียนโปรแกรมแสดงข้อความ  “Hello World” ออกทางหน้าจอ  ผู้เขียนโปรแกรมสามารถเรียกใช้ฟังก์ชั่น  printf() ซึ่งเป็นฟังก์ชั่นมาตรฐานของภาษาซีมาใช้งานได้  โดยส่วนการประกาศ (declaration) ของฟังก์ชั่นมาตรฐานต่าง ๆ จะถูกจัดเก็บอยู่ในเฮดเดอร์ไฟล์แต่ละตัว แตกต่างกันไปตามลักษณะการใช้งาน  
     ด้วยเหตุนี้ภาษาเครื่องที่ได้จากขั้นตอนที่ 2  จึงยังไม่สามารถนำไปใช้งานได้ แต่ต้องนำมาเชื่อมโยงเข้ากับ  library  ก่อน  ซึ่งผลจากการเชื่อมโยงจะทำให้ได้  executable program (ไฟล์นามสกุล.exe เช่น  work.exe)      ที่สามารถนำไปใช้งานได้
          ขั้นตอนที่ 4 ประมวลผล (run)
        เมื่อนำ executable program  จากขั้นตอนที่ 3 มาประมวลผลก็จะได้ผลลัพธ์  (output) ของโปรแกรมออกมา (ถ้ามี)


Add caption
โครงสร้างของโปรแกรมภาษาซีแบ่งออกเป็น 3 ส่วน

1. ส่วนหัวของโปรแกรม

ส่วนหัวของโปรแกรมนี้เรียกว่า Preprocessing directives ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระทำการ ใด ๆ ก่อนการแปลผลโปรแกรม ในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการกำหนด Preprocessing directives นี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ

คำสั่งที่ใช้ระบุให้คอมไพเลอร์นำเฮดเดอร์ไฟล์เข้าร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบ คือ

- #include <ชื่อเฮดเดอร์ไฟล์> คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเรกทอรีที่ใช้สำหรับเก็บเฮดเดอร์ไฟล์โดยเฉพาะ (ปกติคือไดเรกทอรีชื่อ include)

- #include “ชื่อเฮดเดอร์ไฟล์” คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล์ source code นั้น แต้ถ้าไม่พบก็จะไปค้นหาไดเร็คทอรีที่ใช้เก็บเฮดเดอร์ไฟล์โดยเฉพาะ


2. ส่วนของฟังก์ชั่นหลัก

ฟังก์ชั่นหลักของภาษาซี คือ ฟังก์ชั่น main() ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชั่นนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชั่นคือ main แปลว่า “หลัก” ดังนั้น การเขียนโปรแกรมภาษาซีจึงขาดฟังก์ชั่นนี้ไปไม่ได้ โดยขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main() สามารถเขียนในรูปแบบของ void main(void) ก็ได้ มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชั่น main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชั่น และจะไม่มีการคืนค่าใด ๆ กลับออกไปจากฟังก์ชั่นด้วย

3. ส่วนรายละเอียดของโปรแกรม

เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้

Refer: Link1