2.จงอธิบายลำดับขั้นตอนการคอมไพล์และรันโปรแกรม พอสังเขป
ตอบ
การคอมไพล์และรันโปรแกรม
โปรแกรมที่เขียนขึ้นโดยใช้ภาษาโปรแกรมต่างๆ นั้น เรียกว่า รหัสต้นฉบับ (source code) ซึ่งอยู่ในรูปของข้อความตามหลักการเขียนโปรแกรมของภาษาโปรแกรมที่สามารถอ่าน และทำความเข้าใจได้ โดยมนุษย์เท่านั้น ดังนั้นเพื่อให้เครื่องคอมพิวเตอร์สามารถเข้าใจโปรแกรมและปฏิบัติได้ จึงต้องนำรหัสต้นฉบับมาผ่านกระบวนการแปลงให้อยู่ในรูปของ อ็อบเจกต์โค้ด ที่ประกอบด้วยรหัสเลขฐาน 2 (ตัวเลข 0 และ 1) ก่อน เราเรียกกระบวนการแปลงดังกล่าวว่า การคอมไพล์โปรแกรม
ดังนั้น โปรแกรมจะต้องถูกคอมไพล์ด้วยโปรแกรมแปลภาษาซี ( C compiler) เพื่อให้ได้อ็อบเจกต์โค้ดก่อนจึงจะสามารถรันได้ นอกจากคอมไพล์ และรันโปรแกรมยังมีกระบวนการอื่นที่เกี่ยวข้อง
ก่อนที่คอมไพเลอร์ภาษาซีจะแปลงรหัสต้นฉบับให้อยู่ในอ็อบเจกต์โค้ด ตัวประมวลผลก่อนซี (C preprocessor) จะถูกรันโดยอัตโนมัติ ในขั้นตอนนี้จะมีการดำเนินการต่างๆตามคำสั่งของ ตัวประมวลผลก่อนซี เช่น การอ่านแฟ้มส่วนหัว (header files) ต่างๆ เพื่อให้ถูกประมวลผลร่วมกับโปรแกรม เมื่อมีการใช้คำสั่ง #include หรือการแทนที่ข้อความด้วยค่าที่กำหนดให้เมื่อมีการใช้คำสั่ง #define เป็นต้น
ก่อนที่โปรแกรมภาษาซีจะถูกรัน (run) จะต้องถูกแปลงให้อยู่ในรูปของ อ็อบเจกต์โค้ด (object code)[2] โดยการคอมไพล์ (compile)[3] โปรแกรมภาษาซีที่เขียนโดยใช้คำสั่งตามมาตรฐานของ ANSI C สามารถนำไปคอมไพล์ และรันที่เครื่องคอมพิวเตอร์ต่างระบบกันได้
หลังจากโปรแกรมถูกคอมไพล์ อ็อบเจกต์โค้ดจะถูกเชื่อมโยงโดยโปรแกรมเชื่อมโยง (linker) เข้ากับส่วนของรหัสคำสั่ง (code) ที่อ้างอิงโดยโปรแกรม แต่ไม่ได้เป็นส่วนหนึ่งของโปรแกรม เช่น ไลบรารีมาตรฐาน (standard library) ต่างๆ เป็นต้น เพื่อให้อ็อบเจกต์โค้ดมีความสมบูรณ์ เกิดเป็นโปรแกรมที่สามารถรันได้ (executable program)
ในขั้นตอนสุดท้าย โปรแกรมที่สามารถรันได้จะถูกนำเข้าสู่หน่วยความจำของเครื่องคอมพิวเตอร์โดย โปรแกรมบรรจุ (loader) จากนั้นการรันโปรแกรมจึงเริ่มต้นขึ้น ซึ่งผลที่ได้จากการรันโปรแกรมขึ้นอยู่กับคำสั่งในโปรแกรมที่ปรากฏอยู่ในรหัส ต้นฉบับที่เขียนโปรแกรมนั่นเอง
3. จงอธิบายโครงสร้างโปรแกรมภาษาซี พอสังเขป
ตอบ โปรแกรมภาษาต่างๆ จะมีรูปแบบหรือโครงสร้างเฉพาะที่แตกต่างกันไป สำหรับโปรแกรมภาษาซี มีโครงสร้างและลำดับการเขียนดังนี้
- ส่วนประมวลผลก่อน (Preprocessor statement)
- ส่วนประกาศตัวแปรส่วนกลาง (Global declarations statement)
- ส่วนฟังก์ชันหลัก (Function main)
- ส่วนฟังก์ชันที่กำหนดเอง (User-defined function)
- ส่วนอธิบายโปรแกรม (Program Comment)
ส่วนประมวลผลก่อน (Preprocessor statement)
ส่วนนี้จะต้องมีทุกโปรแกรม อาจเรียกว่าส่วนหัวของโปรแกรม จำเป็นต้องกำหนดไว้ในตอนต้นโปรแกรมเสมอ โดยจะขึ้นต้นด้วยเครื่องหมาย # ตามด้วยคำสั่งไดเร็คทีฟ (Directive) ที่ต้องการกำหนดค่า เช่น
#include <stdio.h> หรือ #include “stdio.h”
หมายถึงการผนวกเฮดเดอร์ไฟล์ชื่อ stdio.h เข้ามาใช้งาน ทั้งนี้เฮดเดอร์ไฟล์ stdio.h นั้นจะเป็นไฟล์ชนิดข้อความ (Text file) ที่ภายในโปรแกรมจะมีการประกาศค่าตัวแปร และค่าคงที่ต่างๆ บรรจุฟังก์ชันมาตรฐานต่างๆ รวมเข้าด้วยกันตามหมวดหมู่เดียวกันไว้ และจัดเก็บลงในไลบรารี โดยจะถูกนำเข้ามาอ่านรวมกันกับชุดคำสั่งในโปรแกรมขณะที่คอมไพล์โปรแกรม
ส่วนประกาศตัวแปรส่วนกลาง (Global declarations statement)
ส่วนนี้จะใช้ในการประกาศตัวแปรหรือฟังก์ชันที่ต้อง ใช้ในโปรแกรม โดยทุกๆ ส่วนของโปรแกรมสามารถเรียกใช้ข้อมูลที่ประกาศไว้ในส่วนนี้ได้
ส่วนฟังก์ชันหลัก (Function main)
ส่วนนี้ทุกโปรแกรมจะต้องมี ซึ่งภายในฟังก์ชันหลักจะประกอบด้วยคำสั่งต่างๆ ที่จะให้โปรแกรมทำงาน ฟังก์ชันนี้เริ่มต้นการทำงานด้วยฟังก์ชัน main() ส่วนคำสั่งต่างๆ จะต้องเขียนอยู่ระหว่างเครื่องหมาย { และ } เสมอ และคำสั่งทุกคำสั่งในภาษาซีจะต้องปิดท้ายด้วยเครื่องหมาย ; (semicolon) เสมอ
ส่วนฟังก์ชันที่กำหนดเอง (User-defined function)
เป็นการเขียนคำสั่งและฟังก์ชันต่างๆ ขึ้นใช้ในโปรแกรม โดยต้องอยู่ในเครื่องหมาย { } และต้องสร้างฟังก์ชันหรือคำใหม่ที่ให้ทำงานที่เราต้องการให้กับโปรแกรมและ สามารถเรียกใช้ได้ ภายในโปรแกรม
ส่วนอธิบายโปรแกรม (Program Comment)
คอมเมนต์ (comment) คือส่วนที่เป็นหมายเหตุของโปรแกรม มีไว้เพื่อให้ผู้เขียนโปรแกรมใส่ข้อความอธิบายกำกับลงไปใน source code ซึ่งคอมไพเลอร์จะไม่ทำการแปลผลในส่วนที่เป็นคอมเมนต์นี้
คอมเมนต์ในภาษาซีมี 2 แบบคือ
- คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมาย //
- คอมเมนต์แบบหลายบรรทัด ใช้เครื่องหมาย /* และ */