โปรแกรมภาษาซีเบื้องต้น
โครงสร้างของโปรแกรมภาษาซี
การเขียนโปแกรมภาษาซี จะมีรูปแบบโครงสร้างของภาษาแน่นอน จากโปรแกรมอย่างง่ายของภาษาซีทางขวามือ ต่อไปนี้ จะเห็นว่า การเขียนโปรแกรมภาษาซี จะมีโครงสร้าง 2 ส่วนคือ
1. ส่วนหัว (Head) เป็นส่วนหัวของโปรแกรมทุกโปรแกรม ส่วนนี้จะต้องอยู่บนสุดของโปรแกรมเสมอ บางที่เรียกส่วนนี้ว่า Preprocessor ใช้เพื่อระบุชื่อ header file เพื่อควบคุมการทำงานของ ฟังก์ชันมาตรฐาน ที่ถูกเรียกใช้งานในส่วนของ main function
ส่วนที่เขียนว่า #include เรียกว่า Directives
ส่วนที่ตามหลังมา อาจเขียนให้อยู่ในเครื่องหมาย " " หรือ < > ก็ได้ เรียกว่า header file ซึ่ง header file มีส่วนขยายเป็น .h และ header file เหล่านี้ จะอยู่ในโฟลเดอร์ include
2. ส่วนฟังก์ชันหลัก ( main Function) เป็นส่วนเขียนคำสั่งควบคุมการทำงานโดยจะเขียนอยู่ภายในเครื่องหมาย { } ในการเขียนโปรแกรมภาษาซี จะต้องมีฟังก์ชันอย่างน้อย 1 ฟังก์ชัน ชื่อ main() โดยทั่วไปผู้เขียนสามารถตั้งชื่อฟังก์ชันได้เอง แต่สำหรับฟังก์ชัน main() จะเป็นฟังก์ชันบังคับของโปรแกรม เพื่อใช้เป็น จุดเริ่มต้นการประมวลผลโปรแกรม และเป็นจุดเริ่มต้นในการเรียกใช้ฟังก์ชันอื่น สรุปว่า ทุกโปรแกรมจะต้องมีฟังก์ชัน main()
ฟังก์ชัน main() จะต้องเขียนในรูปของ int main() ซึ่งเป็นรูปแบบตามมาตรฐานของ Ansi standard C ซึ่งหมายหความว่าฟังก์ชัน main() จะไม่มีการรับค่าใด ๆ เข้ามาประมวลผล แต่จะส่งค่า int กลับไป ( int หมายถึง integer ซึ่งเป็นเลขจำนวนเต็มที่ไม่มีทศนิยม) ดังจะเห็นว่า บรรทัดรองสุดท้ายก่อนจบ จะเขียนว่า return 0;
การส่งค่ากลับให้ฟังก์ชัน main() ถ้า return 0; หมายความว่า โปรแกรมทำงานเสร็จสิ้นสมบูรณ์ไม่มีข้อผิดพลาดใด ๆ เกิดขึ้น แต่ถ้า return 1; หรือ return <ค่าอื่น ๆ ที่ไม่ใช่ 0>; หมายความว่า โปรแกรมจบไม่สมบูรณ์ มีการข้ามการทำงานบ้างขั้นตอนเพื่อให้โปรแกรมสิ้นสุดลง
การเขียนโปแกรมภาษาซี จะมีรูปแบบโครงสร้างของภาษาแน่นอน จากโปรแกรมอย่างง่ายของภาษาซีทางขวามือ ต่อไปนี้ จะเห็นว่า การเขียนโปรแกรมภาษาซี จะมีโครงสร้าง 2 ส่วนคือ
1. ส่วนหัว (Head) เป็นส่วนหัวของโปรแกรมทุกโปรแกรม ส่วนนี้จะต้องอยู่บนสุดของโปรแกรมเสมอ บางที่เรียกส่วนนี้ว่า Preprocessor ใช้เพื่อระบุชื่อ header file เพื่อควบคุมการทำงานของ ฟังก์ชันมาตรฐาน ที่ถูกเรียกใช้งานในส่วนของ main function
ส่วนที่เขียนว่า #include เรียกว่า Directives
ส่วนที่ตามหลังมา อาจเขียนให้อยู่ในเครื่องหมาย " " หรือ < > ก็ได้ เรียกว่า header file ซึ่ง header file มีส่วนขยายเป็น .h และ header file เหล่านี้ จะอยู่ในโฟลเดอร์ include
2. ส่วนฟังก์ชันหลัก ( main Function) เป็นส่วนเขียนคำสั่งควบคุมการทำงานโดยจะเขียนอยู่ภายในเครื่องหมาย { } ในการเขียนโปรแกรมภาษาซี จะต้องมีฟังก์ชันอย่างน้อย 1 ฟังก์ชัน ชื่อ main() โดยทั่วไปผู้เขียนสามารถตั้งชื่อฟังก์ชันได้เอง แต่สำหรับฟังก์ชัน main() จะเป็นฟังก์ชันบังคับของโปรแกรม เพื่อใช้เป็น จุดเริ่มต้นการประมวลผลโปรแกรม และเป็นจุดเริ่มต้นในการเรียกใช้ฟังก์ชันอื่น สรุปว่า ทุกโปรแกรมจะต้องมีฟังก์ชัน main()
ฟังก์ชัน main() จะต้องเขียนในรูปของ int main() ซึ่งเป็นรูปแบบตามมาตรฐานของ Ansi standard C ซึ่งหมายหความว่าฟังก์ชัน main() จะไม่มีการรับค่าใด ๆ เข้ามาประมวลผล แต่จะส่งค่า int กลับไป ( int หมายถึง integer ซึ่งเป็นเลขจำนวนเต็มที่ไม่มีทศนิยม) ดังจะเห็นว่า บรรทัดรองสุดท้ายก่อนจบ จะเขียนว่า return 0;
การส่งค่ากลับให้ฟังก์ชัน main() ถ้า return 0; หมายความว่า โปรแกรมทำงานเสร็จสิ้นสมบูรณ์ไม่มีข้อผิดพลาดใด ๆ เกิดขึ้น แต่ถ้า return 1; หรือ return <ค่าอื่น ๆ ที่ไม่ใช่ 0>; หมายความว่า โปรแกรมจบไม่สมบูรณ์ มีการข้ามการทำงานบ้างขั้นตอนเพื่อให้โปรแกรมสิ้นสุดลง
การใส่คำอธิบายโปรแกรม (Comment)
comment เป็นส่วนของโปรแกรมที่คอมไพเลอร์ไม่ต้องคอมไพล์ หมายความว่าเมื่อคอมไพเลอร์ทำการคอมไพล์มาถึงส่วนของ comment คอมไพเลอร์จะข้ามส่วนนั้นไปโดยไม่ต้องคอมไพล์ การใช้คอมเมนต์ในโปรแกรมจะมี 2 ลักษณะ คือ
1. ใช้อธิบายความหมายของโปรแกรมในส่วนนั้น ซึ่งคำอธิบายนี้จะทำให้เราทราบการทำงานของโปรแกรมได้อย่างรวดเร็ว โดยเฉพาะในกรณีที่โปรแกรมนั้นถูกเขียนไว้นานแล้ว เมื่อนำกลับมาใช้ใหม่ comment จะช่วยให้เราเข้าใจการทำงานของโปรแกรมได้เร็วขึ้น
2. ใช้ comment เพื่อหยุดการทำงานบางส่วนของโปรแกรมชั่วคราว ซึ่งใช้ในกรณีที่เราต้องการตรวจสอบการทำงานของโปรแกรมเป็นส่วน ๆ วิธีนี้มีประโยชน์สำหรับการตรวจสอบโปรแกรมที่มีความยาวมาก กล่าวคือ ถ้าต้องการให้ส่วนใดของโปรแกรมหยุดทำงานชั่วคราว เราก็จัดให้ส่วนนั้นเป็นคอมเมนต์ เมื่อรันโปรแกรมผลที่ได้จะมาจากส่วนอื่นที่เหลืออยู่ ด้วยวิธีการนี้จะช่วยให้เราสามารถเข้าใจการทำงาน และค้นหาความผิดในโปรแกรมได้เร็วขึ้น
Comment ในภาษาซี มี 2 ประเภท คือ
comment เป็นส่วนของโปรแกรมที่คอมไพเลอร์ไม่ต้องคอมไพล์ หมายความว่าเมื่อคอมไพเลอร์ทำการคอมไพล์มาถึงส่วนของ comment คอมไพเลอร์จะข้ามส่วนนั้นไปโดยไม่ต้องคอมไพล์ การใช้คอมเมนต์ในโปรแกรมจะมี 2 ลักษณะ คือ
1. ใช้อธิบายความหมายของโปรแกรมในส่วนนั้น ซึ่งคำอธิบายนี้จะทำให้เราทราบการทำงานของโปรแกรมได้อย่างรวดเร็ว โดยเฉพาะในกรณีที่โปรแกรมนั้นถูกเขียนไว้นานแล้ว เมื่อนำกลับมาใช้ใหม่ comment จะช่วยให้เราเข้าใจการทำงานของโปรแกรมได้เร็วขึ้น
2. ใช้ comment เพื่อหยุดการทำงานบางส่วนของโปรแกรมชั่วคราว ซึ่งใช้ในกรณีที่เราต้องการตรวจสอบการทำงานของโปรแกรมเป็นส่วน ๆ วิธีนี้มีประโยชน์สำหรับการตรวจสอบโปรแกรมที่มีความยาวมาก กล่าวคือ ถ้าต้องการให้ส่วนใดของโปรแกรมหยุดทำงานชั่วคราว เราก็จัดให้ส่วนนั้นเป็นคอมเมนต์ เมื่อรันโปรแกรมผลที่ได้จะมาจากส่วนอื่นที่เหลืออยู่ ด้วยวิธีการนี้จะช่วยให้เราสามารถเข้าใจการทำงาน และค้นหาความผิดในโปรแกรมได้เร็วขึ้น
Comment ในภาษาซี มี 2 ประเภท คือ
- Comment บรรทัดเดียว เป็น Comment ใช้เครื่องหมาย // ซึ่ง Comment ประเภทนี้จะมีผลต่อบรรทัดหรือข้อความที่อยู่หลัง เครื่องหมาย // เพียงบรรทัดเดียวเท่านั้น ดังนั้นถ้าต้องการทำ Comment หลาย ๆ บรรทัด จึงต้องเขียน // ในทุก ๆ บรรทัดที่ทำ Comment เช่น
// บรรทัดนี้เป็น Comment หรือหมายเหตุ หรือคำอธิบายโปรแกรม
// Comment จะไม่มีผลต่อโปรแกรม
// Comment ประเภทนี้ มีผลเพียงบรรทัดเดียวเท่านั้น
// Comment จะวางไว้ตรงไหนของโปรแกรมก็ได้ - Comment หลายบรรทัด เป็น Comment ที่ใช้ได้หลายบรรทัด การเขียน Comment ประเภทนี้ใช้เครื่องหมาย /* และ */ ข้อความใดที่อยู่ในเครื่องหมาย /* และ */ จะเป็น Comment ทั้งหมด เช่น
/* ต่อไปนี้เป็น Comment แบบหลายบรรทัด
บรรทัดนี้ก็เป็น Comment
Comment จะไม่มีผลต่อโปรแกรม
ภายใน Comment สามารถเขียนผิดหลักไวยกรณ์ภาษาได้
เพราะ Compilor ไม่สนใจ Comment
*/
กฏการตั้งชื่อ (Identifier)
ชื่อ หรือ Identifier คือการประกาศ หรือการตั้งชื่อให้กับตัวแปร ค่าคงที่ ฟังก์ชัน หรือ class ซึ่งจะอยู่ภายในส่วนต่าง ๆของโปรแกรม
ประเภทของ Identifier มี 3 ประเภทคือ
ชื่อ หรือ Identifier คือการประกาศ หรือการตั้งชื่อให้กับตัวแปร ค่าคงที่ ฟังก์ชัน หรือ class ซึ่งจะอยู่ภายในส่วนต่าง ๆของโปรแกรม
ประเภทของ Identifier มี 3 ประเภทคือ
- reserve word เป็นชื่อที่มีความหมายและวิธีการใช้แน่นอน ได้กำหนดไว้ในภาษาซีแล้ว คอมไพเลอร์จะไม่ยอมให้เราใช้ชื่อนี้ในลักษณะที่แตกต่างไปจากที่กำหนดไว้
- standard identifier หมายถึง ชื่อที่กำหนดขึ้นในคอมไพเลอร์ ชื่อเหล่านี้มีความหมาย และวิธีการใช้ตามเงื่อนไขที่คอมไพเลอร์กำหนดไว้ แต่เราสามารถเปลี่ยนแปลงวิธีการทำงานและเงื่อนไขการใช้ชื่อเหล่านี้ได้ โดยคอมไพเลอร์จะยกเลิกเงื่อนไขเดิมและเปลี่ยนมาใช้เงื่อนไขที่เรากำหนดขึ้นใหม่ standard identifier ส่วนใหญ่จะเป็นชื่อฟังก์ชันที่มีอยู่ในภาษาซี เช่น abs arc getch open rename
- user define identifier หมายถึงชื่อที่เรากำหนดความหมายและเงื่อนไขในการใช้ขึ้นเอง แต่ต้องตั้งขึ้นตามกฏเกณฑ์ที่ภาษาซีกำหนดขึ้นสำหรับในภาษาซีมีหลักเกณฑ์ในการตั้งชื่อดังนี้
1. ต้องขึ้นต้นด้วยตัวอักษรในภาษาอังกฤษ หรือเครื่องหมาย _ (Underscore)
2. ต้องไม่เป็นชื่อเดียวกับคำสงวน (Reserve word) หรือคำมาตรฐานที่คอมไพเลอร์รู้จัก
3. ชื่ออาจตามด้วยตัวเลขได้ แต่ห้ามขึ้นต้นด้วยตัวเลข
4. ห้ามใช้เครื่องหมายพิเศษต่าง ๆ ในการตั้งชื่อ เช่น @ ! # $ ^ & * + - / \
5. ห้ามเว้นช่องว่าง
6. ชื่อในภาษาซี มีความแตกต่างกันระหว่างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ เช่น Name จะไม่เหมือนกับ name
คำสงวน (Reserve word)
คำสงวน หมายถึง ชื่อหรือคำที่คอมไพเลอร์ สงวนไว้เพื่อเป็นคำเฉพาะในภาษาซี ห้ามนำคำสงวนนี้ไปใช้ในการตั้งชื่อ ประกอบด้วยคำต่าง ๆ ตามตารางต่อไปนี้
คำสงวน หมายถึง ชื่อหรือคำที่คอมไพเลอร์ สงวนไว้เพื่อเป็นคำเฉพาะในภาษาซี ห้ามนำคำสงวนนี้ไปใช้ในการตั้งชื่อ ประกอบด้วยคำต่าง ๆ ตามตารางต่อไปนี้
ข้อสังเกตเกี่ยวกับการตั้งชื่อ
1. ควรตั้งชื่อให้มีความหมายและเข้าใจได้ง่าย ดังตัวอย่างต่อไปนี้
Length มีความหมายและเข้าใจได้ง่ายกว่า L
2. ควรตั้งให้เห็นส่วนประกอบต่าง ๆ ได้ง่าย ดังตัวอย่างต่อไปนี้
StudentName เห็นส่วนประกอบต่าง ๆ ได้ง่ายกว่า studentname
Part_Number เห็นส่วนประกอบต่าง ๆ ได้ง่ายกว่า PARTNUMBER
3. เนื่องจากชื่อส่วนมากที่มีอยู่ในคอมไพเลอร์มักนิยมเริ่มด้วยเครื่องหมายขีดเส้นใต้ ( _ ) ดังที่เราได้เห็นตัวอย่างมาแล้วจากคำสงวน (Reserve word) เพราะฉะนั้นถ้าเป็นไปได้ เราควรหลีกเลี่ยงการตั้งชื่อที่เริ่มต้นด้วยเครื่องหมายขีดเส้นใต้
1. ควรตั้งชื่อให้มีความหมายและเข้าใจได้ง่าย ดังตัวอย่างต่อไปนี้
Length มีความหมายและเข้าใจได้ง่ายกว่า L
2. ควรตั้งให้เห็นส่วนประกอบต่าง ๆ ได้ง่าย ดังตัวอย่างต่อไปนี้
StudentName เห็นส่วนประกอบต่าง ๆ ได้ง่ายกว่า studentname
Part_Number เห็นส่วนประกอบต่าง ๆ ได้ง่ายกว่า PARTNUMBER
3. เนื่องจากชื่อส่วนมากที่มีอยู่ในคอมไพเลอร์มักนิยมเริ่มด้วยเครื่องหมายขีดเส้นใต้ ( _ ) ดังที่เราได้เห็นตัวอย่างมาแล้วจากคำสงวน (Reserve word) เพราะฉะนั้นถ้าเป็นไปได้ เราควรหลีกเลี่ยงการตั้งชื่อที่เริ่มต้นด้วยเครื่องหมายขีดเส้นใต้