- โครงสร้างภาษาซี


1. โครงสร้างของโปรแกรมภาษาซี
                โปรแกรมภาษาต่างๆ จะมีรูปแบบหรือโครงสร้างเฉพาะที่แตกต่างกันไป สำหรับโปรแกรมภาษาซี มีโครงสร้างและลำดับการเขียนดังนี้
-      ข้อความสั่งตัวประมวลผลก่อน (preprocessor statements)
-      รหัสต้นฉบับ (source code) มีลำดับการเขียนดังนี้
·       ข้อความสั่งประกาศครอบคลุม (global declaration statements)
·       ต้นแบบฟังก์ชั่น (function prototypes)
·       ฟังก์ชันหลัก (main function) มีฟังก์ชั่นเดียว
·       ฟังก์ชัน (functions) มีได้หลายฟังก์ชัน
·       ข้อความสั่งประกาศตัวแปรเฉพาะที่ (local declaration statements)
-     หมายเหตุ (comment) สามารถแทรกไว้ที่ใดก็ได้ ภายในโปรแกรม
 
ข้อความคำสั่งประมวลผลก่อน (preprocessor statements)
                ข้อความสั่งตัวประมวลผลก่อนขึ้นต้นด้วยเครื่องหมาย เช่น
                                #include <stdio.h>
                หมายความว่า ให้ตัวประมวลผลก่อนไปอ่านข้อมูลจากแฟ้ม stdio.h ซึ่งเป็นแฟ้มที่มีอยู่ในคลัง เมื่อโปรแรกมมีการใช้ข้อความสั่งอ่านและบันทึก จะต้องใช้ข้อมูลจากแฟ้ม stdio.h
ข้อความสั่งตัวประมวลผลก่อนจ้องต้องเขียนไว้ตอนต้นโปรแกรม

รหัสต้นฉบับ (source code)
                รหัสต้นฉบับ หมายถึง ตัวโปรแกรมที่ประกอบด้วยข้อความสั่งและตัวฟังก์ชันต่างๆ

ข้อความสั่งประกาศครอบคลุม (global declaration statements)
                ข้อความสั่งประกาศครอบคลุมใช้ตัวแปรส่วนกลาง โดยที่ตัวแปรส่วนกลางนี้จะสามาถถูกเรียกใช้จากทุกส่วนของโปรแกรม

ต้นแบบฟังก์ชัน (function prototypes)
                ต้นแบบฟังก์ชันใช้ประกาศฟังก์ชัน เพื่อบอกให้ตัวแปลโปรแกรมทราบถึง ชนิดของค่าที่ส่งกลับ และ ชนิดของค่าต่างๆที่ส่งไปกระทำการในฟังก์ชัน

ฟังก์ชันหลัก (main function หรือ function main())
                เมื่อสั่งให้กระทำการโปรแกรม ฟังก์ชันหลักจะเป็นจุดเริ่มต้นของการกระทำการภายในฟังก์ชันหลักจะประกอบด้วยข้อความสั่งและข้อความสั่งที่เรียกใช้ฟังก์ชัน เมื่อมีการทำงานตามข้อความสั่งและฟังก์ชันต่างๆแล้ว จะมีการส่งค่าและกลับมาทำงานที่ฟังก์ชันหลักจนจบฟังก์ชัน

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

ข้อความสั่งประกาศตัวแปรเฉพาะที่ (local declaration statements)
                ข้อความสั่งประกาศตัวแปรเฉพาะที่ ใช้ประกาศตัวแปรเฉพาะที่ โดยที่ตัวแปรเฉพาะที่จะสามารถถูกเรียกใช้เฉพาะภายในฟังก์ชันนั้น

การแปลและกระทำการโปรแกรม (program compilation and execution)
                เมื่อได้เขียนและป้อนข้อความสั่งตัวประมวลผลก่อน (program compilation and execution) และรหัสต้นฉบับ (source code) ลงในโปรแกรม Editor  เสร็จแล้ว จะต้องเรียกตัวแปลโปรแกรม (compiler) มาเพื่อให้แปลภาษาซีให้เป็นภาษาเครื่อง หากโปรแกรมเขียนถูกต้องตรงตามกฎของภาษาซี ตัวแปลโปรแกรมแปล จะแปลโปรแกรมภาษาซีให้เป็นภาษาเครื่อง แล้วนำไปเก็บไว้ในแฟ้มชื่อเดียวกันแต่ส่วนขยายเป็น .obj  จากนั้นตัวเชื่อมโยง (linker) จะต้องนำฟังก์ชันจากคลัง (library function) ต่าง            ๆที่โปรแกรมได้เรียกใช้มารวมเข้ากับแฟ้มจุดโอบีเจ แล้วนำไปเก็บไว้ในแฟ้มชื่อเดิม แต่ส่วนขยายเป็น exe  ซี่งแฟ้มนี้จะเป็นแฟ้มที่พร้อมสำหรับการกระทำการ (execute) เมื่อต้องการกระทำการโปรแกรมก็สามารถป้อนข้อมูลเข้า (input data) ให้กับโปรแกรม ซึ่งจะได้ผลการกระทำ (output)
                ฟังก์ชันจากคลัง เป็นฟังก์ชันสำเร็จรูปที่มีอยู่แล้วในตัวแปลโปรแกรม ซี่งผู้เขียนโปรแกรมสามารถเรียกใช้ได้ด้วยการเขียนชื่อฟังก์ชันไว้ในโปรแกรม

ตัวอย่างที่ 1
                แสดงโครงสร้างของโปรแกรม
                โปรแกรมประกอบด้วยฟังก์ชัน main() และฟังก์ชัน sum()
                ฟังก์ชัน main() ทำหน้าที่รับค่ามาเก็บไว้ในตัวแปร และตัวแปร แล้วส่งค่าของตัวแปรทั้งสองไปยังฟังก์ชัน sum() เพื่อคำนวณหาผลรวม เมื่อคำนวณผลรวมแล้ว จะส่งค่าของผลรวมกลับไปยังฟังก์ชัน main() จากนั้นฟังก์ชัน main() จะแสดงค่าผลรวม
             
#include <stdio.h>                                                                                             //คำสั่งตัวประมวลผลก่อน
                int  a, b, c;                                                                                                           //คำสั่งประกาศครอบคลุม
                int  sum(int x, int y);                                                                                        //ต้นแบบฟังก์ชัน
                void main ()                                                                                                        //ฟังก์ชัน main()
                {                                                                                                                              //เริ่มต้นฟังก์ชัน main()
                                scanf("%d ",&a);                                                                               //คำสั่งในฟังก์ชัน main()
                                scanf("%d ",&b);              
                                c = sum (a,b);
                                printf("\n%d + %d  = %d ", a, b, c);
                }                                                                                                                              //จบฟังก์ชัน main()
                int sum(int x, int y)                                                                                           //ฟังก์ชัน sum()
                {                                                                                                                              //เริ่มต้นฟังก์ชัน sum()
                                return (x+y);                                                                                       //คำสั่งในฟังก์ชัน sum()
                }                                                                                                                              //จบฟังก์ชัน sum()

ข้อความสั่งหมายเหตุ (comment statement)
                ข้อความสั่งหมายเหตุ คือ ข้อความที่เขียนไว้ภายในโปรแกรม เพื่อใช้อธิบายโปรแกรม โดยตัวแปลโปรแกรมไม่แปลข้อความสั่งหมายเหตุให้เป็นภาษาเครื่อง
                การเขียนข้อความสั่งหมายเหตุในโปรแกรมทำได้ 2 แบบ ได้แก่
1.  //หมายเหตุ           ใช้เครื่องหมาย // หน้าข้อความหมายเหตุ ใช้ได้กับหมายเหตุที่มีขนาดความยาว
                                                ไม่เกิน 1 บรรทัด
2.  /*หมายเหตุ */      เขียนหมายเหตุไว้ระหว่าง /*  และ  */  ให้ได้กับหมายเหนุที่มีขนาดความยาวตั้งแต่ 
                                                1 บรรทัดขึ้นไป