การเขียนโปรแกรมภาษา C เบื้องต้น ตอนที่ 1 : รู้จักกับโครงสร้างของภาษา C
พื้นฐานเริ่มต้นเป็นสิ่งสำคัญที่จะทำให้เขียนโปรแกรมภาษา C ได้ โดยถ้าพื้นฐานเข้าใจแล้วยากกว่านั้นก็จะเข้าใจได้อย่างไม่ยาก โครงสร้างของภาษา C โดยทั่วไปจะเป็นแบบนี้และจะคล้ายกันทั้งหมด ไม่ว่าจะใช้ IDE ของเจ้าไหน จะว่าเป็นกฏเลยก็ว่าได้
// my first program in C
บรรทัดนี้คือ comment line โดยจะมี // ขึ้นต้น เอาไว้ใช้บ่งบอกรายละเอียดอะไรก็ตามที่ผู้เขียนอยากจะ comment ไว้ ณ บรรทัดนั้นๆ ซึ่งบรรทัดที่มี // จะไม่ถูก compile และจะไม่มีผลกับการรันโปรแกรม โดยในโปรแกรมนี้นั้นผมเอาไว้ใช้บ่งบอกรายละเอียดว่านี่เป็น my first program in C
Header Files
#include <stdio.h>#include <conio.h>
บรรทัดที่ขึ้นต้นด้วยเครื่องหมาย # คือตัวที่บ่งชี้สำหรับการ preprocessor ในที่นี้กล่าวคือเป็น header files ซึ่งได้เก็บไลบรารี่มาตรฐานของภาษา C เอาไว้หรือไลบรารี่อื่นๆที่เราเขียนขึ้นมาเองหรือเอามาจากที่อื่นก็ได้ โดยจะถูกนำมารวม compile ไว้เพื่อนำมาใช้กับโปรแกรม โดยจะเขียนในลักษณะนี้
#include <ชื่อเฮดเดอร์ไฟล์> หรือ
#include “ชื่อเฮดเดอร์ไฟล์”
โดยในกรณีของโปรแกรมนี้ได้ include มา 2 ไฟล์ คือ stdio.h ซึ่งเป็นไลบรารี่มาตรฐานชื่อเต็มว่า Standard Input and Output Library ซึ่งเอาไว้จัดการฟังก์ชันอินพุตเอาท์พุต ส่วนอีกอันคือ conio.h ซึ่งเป็นไลบรารี่ฟังก์ชั่นการติดต่อกับส่วนแสดงผล
Function Prototype
void function_2();
บรรทัดนี้เป็นการประกาศฟังก์ชัน prototype ใช้ในกรณีที่เราต้องการเรียกใช้ฟังก์ชันย่อยซึ่งอยู่ข้างล่างบรรทัดที่เราเรียกใช้ ตัวอย่างเช่น ในกรณีโปรแกรมข้างบน จะเห็นได้ว่าเราเรียกใช้ function_2(); ใน function int main() แต่ว่า function_2(); นั้นเป็นฟังก์ชันย่อยที่อยู่ข้างล่าง ในกรณีอย่างนี้ต้องทำการประกาศ function prototype ไม่งั้นจะ compile ไม่ผ่าน เดี้ยวเรื่องฟังก์ชันย่อยจะไปพูดกันอีกทีในตอนหลังๆ
Global variables
int j;
บรรทัดนี้คือการประกาศตัวแปร แต่การประกาศตัวแปรตรงภายนอกฟังก์ชันนั้นจะเรียกว่า Global variable ซึ่งความหมายของ “Global” คือ "ทั้งหมด" นั่นหมายความว่าตัวแปรที่ถูกประกาศตรงบริเวณนี้จะเป็นตัวแปรแบบทั้งหมด ซึ่งสามารถนำไปใช้ได้และเข้าถึงได้กับทุกฟังก์ชันที่เขียนไว้ข้างล่าง
Function
void function_1()
{j = j+2;}
ส่วนนี้เรียกว่าฟังก์ชันหรือฟังก์ชันย่อย จะยังไม่พูดถึงรายละเอียดมากนะไว้จะไปอธิบายในตอนหลังๆ แต่ตรงนี้ให้สังเกตถึงตัวแปร j เฉยๆก่อน จะเห็นได้ว่าภายในฟังก์ชันนี้ไม่ได้มีการประกาศตัวแปร j เลย แต่สามารถประมวลผลคำสั่งที่เกี่ยวกับตัวแปร j ได้ เพราะว่าตัวแปร j เป็นแบบ Global นั่นเอง
Main Function
int main()
{int i;
for(i=0;i<5;i++)
{function_1();printf("i = %d , j = %d\n",i,j);
}function_2();getch();}
ส่วนนี้คือส่วนหลักของโปรแกรมเลย โดยทุกโปรแกรมภาษา C จะทำงานโดยเริ่มจากบรรทัดแรกภายใต้ฟังก์ชัน main นี้ ทุกๆโปรแกรมจะต้องมีฟังก์นี้และเป็นส่วนหลักในการทำงานทุกอย่าง สังเกตตัวแปร i ตัวแปรที่ประกาศภายในฟังกชันนี้จะเรียกว่าตัวแปรแบบ local ซึ่งจะมีผลและเรียกใช้ได้ภายในฟังก์ชันนี้เท่านั้น โดย Function_1() และ Function_2() จะไม่สามารถเรียกใช้ตัวแปรนี้ได้โดยตรง
Function
void function_2()
{int k=10;
j=20;printf("k = %d\n",k);
printf("j = %d\n",j);
}
ส่วนนี่ก็เป็นฟังกชันย่อยอีกฟังก์ชันนึง แต่ฟังก์ชันนี้อยู่ข้างล่างฟังก์ชัน main โดยสังเกตได้ว่าฟังก์ชัน main ได้เรียกใช้ฟังก์ชันนี้ ดังนั้นแล้วเราจึงต้องประกาศ Function Prototype ของ void function_2() ด้วย ไม่งั้นฟังก์ชัน main จะไม่สามารถเรียกใช้ได้ซึ่งเราได้ทำการประกาศไว้ข้างบนเรียบร้อยแล้ว ทีนี้ให้สังเกตที่ตัวแปร ทั้ง 2 ตัวในฟังก์ชัน ตัวแปร k คือตัวแปรแบบ local ซึ่งทำการกำหนดค่าไว้เท่ากับ 10 และ ได้ทำการกำหนดค่าตัวแปร j ไว้เท่ากับ 20 แสดงให้เห็นถึงตัวแปรแบบ Global ที่สามารถเข้าถึงได้อย่างทั่วถึงทุกฟังก์ชัน
ลองพิมพ์ตามและทำการ Compile & Run ผลที่ได้จะเป็นแบบนี้

เพิ่มเติม
- ให้ลองทำการใส่ตัว comment เพื่อไม่ให้บรรทัดนั้นทำการ Compile โดยให้ใส่ตัว // ไว้หน้า void function_2(); ที่บริเวณ Function Prototype แล้วสังเกตดูว่าเกิดอะไรขึ้น
- ให้ลองทำการใส่ตัว comment เพื่อไม่ให้บรรทัดนั้นทำการ Compile โดยให้ใส่ตัว // ไว้หน้า int j; ที่บริเวณ Global variables ครับ แล้วสังเกตดูว่าเกิดอะไรขึ้น
- ให้ลองทำการย้ายบรรทัด function_2(); ที่อยู่ในฟังก์ชัน main ไปไว้บนก่อนบรรทัด for(i=0;i<5;i++) แล้วให้สังเกตผลลัพธ์จากการ Run โปรแกรม
- ให้ลองทำการใส่ตัว comment เพื่อไม่ให้บรรทัดนั้นทำการ Compile โดยให้ใส่ตัว // ไว้หน้า getch(); ในฟังก์ชัน main
Comments
Post a Comment