Thursday, January 6, 2011

โครงสร้างหลักของภาษาซี

ในการเรียนโปรแกรมทุกๆ ภาษา โปรแกรมเมอร์จำเป็นต้องเขียนโปรแกรมให้ตรงกับโครงสร้างของภาษานั้นๆ ไม่เว้นแต่ในภาษาซี ดังนั้นนักเรียนจะต้องรู้นักโครงสร้างของภาษาซีอย่างละเอียดก่อน ซึ่งโครงสร้างของภาษาซีประกอบไปด้วยองค์ประกอบต่างๆดังนี้

#include <file.h> // พรีโปรเซสเซอร์ไดเรคทีฟ
type function_name (type); // การประกาศฟังก์ชันโปรโตไทพ์
type variabile; // การประกาศตัวแปร global

int main() // การประกาศฟังก์ชันหลัก
{ // วงเล็บปีกกาเปิดสำหรับฟังก์ชันหลัก
type variabile; // การประกาศตัวแปร local
statement-1;

statement-n;
return 0; // การส่งค่ากลับของฟังก์ชัน
} // วงเล็บปีกกาปิดสำหรับฟังก์ชันหลัก

type function_name(type variable) // ฟังก์ชันย่อย
{
type variabile;
statement-1;

statement-n;
return 0;
}
  • ในส่วนพรีโฟรเซสเซอร์ไดเรคทีฟ เป็นส่วนที่โปรแกรมเมอร์จะต้องให้ข้อมูลกับคอมไพเลอร์ ว่าจะใช้ฟังก์ชันในกลุ่มของไฟล์ .h ไฟล์ไหนบ้าง ซึ่งโปรแกรมเมอร์ต้องทราบว่าฟังก์ชันที่ตนใช้จะต้องพรีโพรเซสเซอร์ไดเรคทีฟตัวใด เช่น ถ้าในโปรแกรมมีคำสั่ง printf จะต้องมีการเรียกใช้งานstdio.h ซึ่งโปรแกรมจะไม่สามารถคอมไพล์ได้ถ้าเราไม่ได้กำหนด #include <stdio.h> ดังนั้นการกำหนดพรีโฟรเซสเซอร์ไดเรคทีฟ ถือว่าเป็นส่วนจำเป็น ถ้ามีการเรียกใช้งานคำสั่งใดๆ ต้องมีการกำหนดพรีโฟรเซสเซอร์ไดเรคทีฟทุกครั้ง
  • การประกาศฟังก์ชันโปรโตไทพ์ จะมีการกำหนดก็ต่อเมื่อมีการเขียนโปรแกรมแบ่งเป็นฟังก์ชันย่อยและมีการประกาศฟังก์ชันย่อยหลังการประกาศฟังก์ชันหลักเท่านั้น ถ้าไม่มีฟังก์ชันย่อยก็ไม่จำเป็นต้องประกาศฟังก์ชันโปรโทไทพ์
  • การประกาศตัวแปร global จะมีการกำหนดก็ต่อเมื่อมีการเขียนโปรแกรมที่ต้องเรียกใช้ตัวแปรglobal ถ้าไม่มีการเรียกใช้ตัวแปร global ก็ไม่จำเป็นต้องประกาศตัวแปรในบีทัดดังกล่าว
  • การประกาศฟังก์ชันหลัก ถือเป็นส่วนสำคัญที่ทุกโปรแกรมต้องมี
  • วงเล็บปีกกาเปิดสำหรับฟังก์ชันหลัก ถือเป็นส่วนสำคัญที่ทุกโปรแกรมต้องมี
  • การ return ค่าของฟังก์ชัน ถือเป็นส่วนสำคัญ ทุกโปรแกรมต้องมี ถ้ามีการประกาศ type ของฟังก์ชันหลัก
  • วงเล็บปีกกาปิดสำหรับฟังก์ชันหลัก ถือเป็นส่วนสำคัญที่ทุกโปรแกรมต้องมี
  • ฟังก์ชันย่อย เป็นส่วนที่ไม่จำเป็นต้องใช้สำหรับผู้เริ่มต้นเขียนโปรแกรม
การเขียนโปรแกรมภาษา C ที่สามารถ compile ได้ตามโครงสร้างภาษานั้น ใช้องค์ประกอบเพียงสี่
องค์ประกอบเท่านั้นดังตัวอย่าง

int main()
{
return 0;
}

//หรือ

void main()
{

}
ถ้านักเรียนลองนำโคดดังกล่าวมา compile จะพบว่าเราสามารถ compile โค๊ดนี้ได้ เนื่องจากมีองค์ประกอบหลักครบถ้วนตามโครงสร้างภาษาแต่จะไม่สามารถรันให้เกิดผลลัพธ์ใดๆได้ เนื่องจากโปรแกรมไม่มีการเรียกคำสั่งใดๆเลย ถ้าต้องการให้โปรแกรมทำงานอย่างใดอย่างหนึ่ง จะต้องเพิ่มคำสั่งหรือฟังก์ชันภายในเครื่องหมายวงเล็บปีกกา เช่น ถ้านักเรียนต้องการให้คอมพิวเตอร์แสดงคำว่า Pibul นักเรียนต้องเพิ่มคำสั่งในเครื่องหมายวงเล็บปีกกา และเพิ่มพรีโพรเซสเซอร์ไดเรคทีฟของคำสั่งนั้นๆด้วย จะให้ผลลัพธ์ดังนี้

#include <stdio.h>
int main()
{
printf("Pibul");
return 0;
}
สาเหตุที่ต้องเพิ่มพรีโฟรเซสเซอร์ไดเรคทีฟด้วยเนื่องจาก คอมไพล์เลอร์จะต้องทำการเปลี่ยนคำสั่งprintf ให้กลายเป็นไบนารีโคด และต้องใช้รายละเอียดในไฟล์ชื่อ stdio.h ในการคอมไพล์โปรแกรม ถ้าไม่มีพรีโพรเซสเซอร์ไดเรคทีฟ จะทำให้คอมไพล์เลอร์ไม่สามารถทราบได้ว่าต้องเปลี่ยนเป็นไบนารีโคดอย่างไร ส่งผลให้โปรแกรมคอมไพล์ไม่ผ่าน โดยโปรแกรมจะแจ้งว่าไม่รู้จักคำสั่ง printf

No comments:

Featured Post

การแปลภาษาของโปรแกรมภาษาซี

ภาษาซีเป็นภาษาชั้นสูงและเป็นภาษาที่มนุษย์เข้าใจ แต่เครื่องคอมพิวเตอร์เข้าใจเฉพาะภาษาเครื่อง (Machine Language) เท่านั้น ดังนั้นหากต้องการให้...