2. รูปแบบโปรแกรมภาษาซี
ในการเขียนภาษาโปรแกรม ผูเขียนโปรแกรมจะตองศึกษารูปแบบพื้นฐานของภาษา และไวยากรณ
ของภาษานั้น รูปแบบพื้นฐานของภาษาจะเขียนโปรแกรมในลักษณะของโมดูลคือมีการแบงออกเปนสวนยอย ๆ
ที่เรียกวา ฟงกชัน (Function)
สวนประกอบที่ 1 สวนหัว (Header) จะเปนสวนที่อยูที่ตอนตนของโปรแกรม โดยอยูนอกสวนที่
เรียกวาฟงกชัน ที่สวนหัวของโปรแกรมจะประกอบดวยคํ าสั่งที่เปนการกํ าหนดคาหรือกํ าหนดตัวแปรตาง ๆ คําสั่งในที่ขึ้นตนดวยสัญลักษณ # เปนคําสั่งที่เรียกวา ตัวประมวลผลกอน (Preprocessor) คือคําสั่งที่จะไดรับการทํากอนที่จะมีการคอมไพลโปรแกรม ตัวประมวลผลกอน ที่สํ าคัญของภาษาซีแบงออกเปน 2 ประเภทดังนี้
• # include
ในภาษาซีจะมีฟงกชันมาตรฐานที่ผูผลิตคอมไพเลอรไดจัดเตรียมไวให ซึ่งมักจะเกี่ยวของ
กับการรับขอมูล การแสดงผลขอมูล การคํ านวณ และอื่น ๆ ซึ่งผูเขียนโปรแกรมสามารถ
เรียกใชงานไดทันที โดยไมตองเขียนโปรแกรมแกรมเอง ในตัวอยางจะมีการใชคํ าสั่ง3
printf( ) ซึ่งเปนคําสั่งที่ใชแสดงขอความออกทางอุปกรณแสดงผลมาตรฐาน เชน จอภาพ
คํ าสั่ง printf( ) เปนการเรียกใชฟงกชันมาตรฐานซึ่งอยูในกลุมที่เรียกวา Standard Input
and Output เมื่อจะเรียกใชฟงกชันใดในกลุมดังกลาว จะตองบอกใหคอมไพเลอรไปอาน
คาที่อยูในอินคลูชไฟลที่ชื่อ stdio.h มาไวที่สวนตนของโปรแกรม โดยใชคํ าสั่ง
#include <stdio.h>เพราะฉะนั้นผูเขียนโปรแกรมควรจะศึกษาฟงกชันมาตรฐานที่คอมไพเลอรแตละบริษัทไดเตรียมไวใหวาคํ าสั่งใดใชคูกับอินคลูชไฟลใด
• # define
ใชสําหรับการกํ าหนดคาคงที่ ตัวอยางเชน
#define YES 1
คําสั่งดังกลาวเปนการกํ าหนดวา หากที่ใดในโปรแกรมมีคํ าวา YES จะถูกแทนที่ดวยคาทาง
ขวามือ ในที่นี้คือ 1นอกจากในสวนหัวของโปรแกรมอาจจะมีการประกาศตัวแปร และสวนของการประกาศโปรโตไทปไวที่สวนหัวของโปรแกรมไดอีกดวย ซึ่งจะกลาวถึงในบทตอ ๆ ไป
สวนประกอบที่ 2 ฟงกชัน (Function) สวนของฟงกชันคือสวนของคํ าสั่งที่บอกใหคอมพิวเตอร
ทํางานตาง ๆ เชน การรับขอมูล การคํ านวณ การแสดงผล เปนตน โปรแกรมภาษาซีจะประกอบดวยฟงกชัน
ยอยหลาย ๆ ฟงกชัน แตจะมีฟงกชันหลักฟงกชันหนึ่งที่ชื่อวาฟงกชัน main( ) เสมอ โดยที่การทํ างานของ
โปรแกรมจะตองเริ่มการทํ างานจากฟงกชันนี้
กฎพื้นฐานที่สําคัญในภาษาซี
• การพิมพตัวอักษรตัวพิมพใหญและตัวพิมพเล็กในภาษาซีนั้นในผลลัพธที่แตกตางกัน (Case
Sensitive) ตัวอยางเชน หากมีการพิมพ main( ) กลายไปเปน Main( ) ก็จะเกิดความผิดพลาด
ขึ้น
• ฟงกชันของภาษาซีจะแบงขอบเขตของฟงกชันแตละฟงกชันดวยเครื่องหมาย { } ในตัวอยางมี
ฟงกชัน void main( ) คํ าวา void จะบอกใหรูวาเมื่อฟงกชันนี้ทํ างานเสร็จจะไมมีการคืนคากลับ
ไปยังสิ่งที่เรียกใชงานฟงกชัน ในกรณีของฟงกชัน main( ) ก็คือจะไมมีการคืนคาใด ๆ กลับไปยัง
ระบบปฏิบัติการ หลังฟงกชันจะตองตามดวย ( ) เสมอ โดยที่ภายในวงเล็บจะประกอบดวย
คาที่สงเขามายังฟงกชัน ที่เรียกวาพารามิเตอร (Parameter) หรืออาจจะไมมีคาใด ๆ สงเขามาก็
ได
• คําสั่งตาง ๆ ซึ่งตองเขียนอยูในฟงกชันเสมอ แบงเปน 2 สวนคือสวนของการประกาศตัวแปรที่
ตองการใชในฟงกชัน และสวนของคํ าสั่งเพื่อทํ างานใดงานหนึ่ง ในที่นี้มีเฉพาะคํ าสั่งที่ใชในการ4
แสดงผลลัพธออกทางจอภาพ คือ printf( ) ใชสําหรับการแสดงผลลัพธออกทางจอภาพ หาก
ตองการแสดงขอความใด ๆ ออกทางจอภาพใหเขียนขอความนั้นอยูภายในเครื่องหมาย “ “
• คําสั่งในภาษาซีจะตองปดทายดวยเครื่องหมาย ; (Semicolon) เนื่องจากภาษาซีจะใชเครื่อง
หมาย ; ในการแยกคําสั่งตาง ๆ ออกจากกัน การเวนบรรทัดหรือการเขียนคํ าสั่งไมตอเนื่องกันจะ
ไมมีผลตอคอมไพเลอร แตเปนการชวยใหผูเขียนโปรแกรมอานโปรแกรมไดงายขึ้นเทานั้น
ตัวอยางแสดงตัวอยางโปรแกรมภาษาซีเบื้องตน
#include
<stdio.h>
void
main
(
)
{
/* Display message
to standard
output */
printf
(
“My first program.”
)
;
}
นอกจากนี้หากผูใชตองการใสคํ าอธิบายลงในโปรแกรม ก็สามารถทํ าไดโดยใชสิ่งที่เรียกวา Commentขอบเขตของ Comment จะขึ้นตนตั้งแต /* จนกระทั่งถึง */ ขอความใด ๆ ที่อยูในขอบเขตของเครื่องหมายดังกลาวจะไมถูกแปลโดยคอมไพเลอร โดยทั่วไปจะมีการใช Comment เพื่ออธิบายวาโปรแกรมนั้นทํ างานอะไรใชอธิบายคําสั่งแตละคํ าสั่ง ใชอธิบายฟงกชันแตละฟงกชัน และใชอธิบายกลุมของคํ าสั่ง โดยเขียนComment ไวดานบนหรือดานขางของสิ่งที่ตองการอธิบาย เชน หากเปนการอธิบายโปรแกรมจะเขียนComment ไวที่ตนของโปรแกรมนั้น หากเขียนอธิบายฟงกชันจะเขียน Comment ไวดานบนของฟงกชันที่ตองการอธิบาย เขียนอธิบายคํ าสั่งอาจจะเขียน Comment ไวดานบนหรือดานขางของคํ าสั่งนั้น ๆ และเขียนอธิบายกลุมคํ าสั่งก็จะเขียนอธิบายไวดานของกลุมคํ าสั่งนั้น