ใบความรูที่  3 
                                      เรื่อง  โครงสรางโปรแกรมภาษาซี 

โครงสรางโปรแกรมภาษาซี 

#include <stdio.h>                               1 
int main() 
                                                 2
  { 
    ……….. 
    getch();                                     3 
    return 0; 
  } 

โครงสรางของโปรแกรมภาษาซีแบงออกเปน 3 สวน 

1.  สวนหัวของโปรแกรม 
         สวนหัวของโปรแกรมนีเ้ รียกวา  Preprocessing  Directive  ใชระบุเพื่อบอกใหคอมไพเลอรกระทําการ 
ใด ๆ กอนการแปลผลโปรแกรม  ในที่นี่คําสั่ง #include   <stdio.h>  ใชบอกกับคอมไพเลอรใหนําเฮดเดอรไฟลที่ 
ระบุ  คือ  stdio.h เขารวมในการแปลโปรแกรมดวย  โดยการกําหนด  preprocessing  directives  นี้จะตองขึ้นตน 
ดวยเครื่องหมาย # เสมอ 
         คําสั่งที่ใชระบุใหคอมไพเลอรนําเฮดเดอรไฟลเขารวมในการแปลโปรแกรม    สามารถเขียนได  2  รูปแบบ 
คือ 
         -  #include  <ชื่อเฮดเดอรไฟล>  คอมไพเลอรจะทําการคนหาเฮดเดอรไฟลที่ระบุจากไดเรกทอรีทใช     ี่
สําหรับเก็บเฮดเดอรไฟลโดยเฉพาะ (ปกติคือไดเรกทอรีชื่อ include) 
         -  #include “ชื่อเฮดเดอรไฟล”  คอมไพเลอรจะทําการคนหาเฮดเดอรไฟที่ระบุ  จากไดเร็คทอรีเดียวกัน 
กับไฟล  source code  นั้น  แตถาไมพบก็จะไปคนหาไดเร็คทอรีที่ใชเก็บเฮดเดอรไฟลโดยเฉพาะ 

2.  สวนของฟงกชั่นหลัก 
            ฟงกชนหลักของภาษาซี    คือ  ฟงกชั่น  main()  ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะตองมีฟงกชั่นนี้อยูใน 
                  ั่                                                                                          
โปรแกรมเสมอ    จะเห็นไดจากชื่อฟงกชนคือ  main  แปลวา  “หลัก”  ดังนั้น  การเขียนโปรแกรมภาษาซีจึงขาด 
                                         ั่
ฟงกชนนี้ไปไมได    โดยขอบเขตของฟงกชนจะถูกกําหนดดวยเครื่องหมาย  {  และ  }  กลาวคือ    การทํางานของ 
      ั่                                    ั่
ฟงกชนจะเริ่มตนที่เครื่องหมาย {  และจะสิ้นสุดที่เครื่องหมาย  }  ฟงกชน  main()  สามารถเขียนในรูปแบบของ 
         ั่                                                              ั่
int  main  ก็ได  มีความหมายเหมือนกัน  คือ  หมายความวา  ฟงกชน  main()  จะไมมีอารกิวเมนต  (argument) 
                                                                      ั่
คือไมมีการรับคาใด ๆ เขามาประมวลผลภายในฟงกชั่น  และจะมีการคืนคากลับออกไปจากฟงกชั่นดวย 

                                          ­ โครงสรางของโปรแกรมภาษาซี ­ 
-12- 
                          คืนคาใด ๆ กลับออกไปจากฟงกชั่น 

main()  เทียบเทา  int main(void)

                             ไมรับคาใด ๆ เขามาในฟงกชั่น 

argument        คือ  ตัวรับคาเขามาในฟงกชั่น 
parameter       คือ  คาที่สงไปยังฟงกชน ั่
คาของ  argument  และ  parameter ตองเปนขอมูลชนิดเดียวกัน  เชน หากกําหนดให  argument  เปนขอมูล 
ชนิดตัวอักษรแลวคา  parameter  ก็สงไปก็ตองเปนชนิดตัวอักษรดวย 
3.  สวนรายละเอียดของโปรแกรม 
        เปนสวนของการเขียนคําสั่ง  เพื่อใหโปรแกรมทํางานตามที่ไดออกแบบไว 
คอมเมนตในภาษาซี 
       คอมเมนต (comment)  คือสวนที่เปนหมายเหตุของโปรแกรม  มีไวเพื่อใหผเู ขียนโปรแกรมใสขอความ 
อธิบายกํากับลงไปใน  source code  ซึ่งคอมไพเลอรจะขามาการแปลผลในสวนที่เปนคอมเมนตนี้ คอมเมนตใน 
ภาษาซีมี 2 แบบคือ 
       ¨  คอมเมนตแบบบรรทัดเดียว  ใชเครื่องหมาย // 
       ¨  คอมเมนตแบบหลายบรรทัด  ใชเครื่องหมาย /*  และ */ 
ตัวอยาง  การคอมเมนตในภาษาซี 
// Comment only one line 
#include <stdio.h> 
#include <conio.h> 
int main()                สวนที่เปนคอมเมนตจะ 
{                              ไมไดรับการแปลผล
     clrscr(); 
     /*comment 
          many 
                line*/ 
  getch(); 
  return 0; 
} 

                                         ­ โครงสรางของโปรแกรมภาษาซี ­ 
-13- 
       ขอควรระวังในการใชคอมเมนต  คือ  ในกรณีที่ใชคอมเมนตแบบหลายบรรทัด  จะไมสามารถใชคอมเมนต 
ซอนคอมเมนตได  ดังรูป  มิฉะนั้นจะกอใหเกิดขอผิดพลาดในการคอมไพล 


                   /*Comment1*/            /*Comment2*/                /*Comment3*/    /
                   /*Comment1              /*Comment2*/                /*Comment3*/    X

                                   การใชคอมเมนตแบบหลายบรรทัด 

       จะเห็นวาในกรณีที่ตองการใสคอมเมนตหลาย ๆ บรรทัดติดกันนั้น  คอมเมนตแบบหลายบรรทัดจะชวย 
ประหยัดเวลาในการใสคอมเมนตไดมากกวาการใชคอมเมนตแบบบรรทัดเดียว  แตก็ควรระมัดระวังในการใชงาน 
ดวย 




                                      ­ โครงสรางของโปรแกรมภาษาซี ­ 
-14- 
ตัวอยางที่ 1  โปรแกรมใหนักเรียนศึกษาโครงสรางของโปรแกรมภาษาซี 
 1:  #include <stdio.h> 
 2:  int main() 
 3:  { 
 4:  printf("My name is Manaot"); 
 5:  getch(); 
 6:  return 0; 
 7:  } 
ผลลัพธของโปรแกรม 
My name is Manaot 

อธิบายโปรแกรม 
      บรรทัดที่ 1:     เปนการบอกใหคอมไพเลอรนําเฮดเดอรไฟลชื่อ  stdio.h เขามารวมในการแปลผลดวย 
                       โดย  stdio  ยอมาจาก  standard input/output  และ .h  คือ นามสกุลของเฮดเดอรไฟล 
                       ในภาษาซี (h  ยอมาจาก header) ซึ่ง stdio.h  คือ เฮดเดอรไฟลที่รวมเอาการประกาศ 
                       (declaration)  ของฟงกชั่นมาตรฐานของภาษาซีที่เกี่ยวกับการจัดการดานอินพุตและ 
                       เอาตพุตเขามาไวดวยกันโปรแกรมนี้มีการเรียกใชงานฟงกชั่น printf()  เพื่อแสดงขอมูล 
                       ออกทางจอภาพ  และเนื่องจากสวนของการประกาศฟงกชั่น printf()  ถูกบรรจุอยูในเฮด 
                       เดอรไฟล  stdio.h  ดังนั้นจึงจําเปนตองนําเฮดเดอรไฟล  stdio.h  เขารวมในการแปลผล 
                       ดวย 
       บรรทัดที่ 2:    คือฟงก ชั่น  int  main()  ซึ่งเป นฟงกชั่นหลัก ของโปรแกรม  การทํางานของโปรแกรม 
                       ภาษาซีจะเริ่มตนที่ฟงกชั่นนี้ 
       บรรทัดที่ 3:    เครื่องหมาย  {  ระบุจุดเริ่มตนของฟงกชั่น  main() 
       บรรทัดที่ 4:    เปนการเรียกใชฟงกชั่น printf()  ซึ่งเปนฟงกชั่นมาตรฐานของภาษาซีทําหนาที่แสดงผล 
                       ขอมูลออกทางจอภาพ ในที่นี้จะแสดงขอความ My name is Manaot  ออกทางจอภาพ 
       บรรทัดที่ 5:    เปนคําสั่งใหรอรับการกดปุมใดๆ จากผูใชแลวจะทําคําสั่งตอไปในบรรทัดถัดไป 
       บรรทัดที่ 6:    คืนคา 0 ดังนั้น ฟงกชั่น  main() คืนคา 0 ใหกับโปรแกรม 
       บรรทัดที่ 7:    เครื่องหมาย  }  ระบุจุดสิ้นสุดของฟงกชั่น  main()




                                       ­ โครงสรางของโปรแกรมภาษาซี ­ 

โครงสร้างโปรแกรมภาษาซี

  • 1.
    ใบความรูที่  3  เรื่อง  โครงสรางโปรแกรมภาษาซี  โครงสรางโปรแกรมภาษาซี  #include <stdio.h>  1  int main()  2 {  ………..  getch();  3  return 0;  }  โครงสรางของโปรแกรมภาษาซีแบงออกเปน 3 สวน  1.  สวนหัวของโปรแกรม  สวนหัวของโปรแกรมนีเ้ รียกวา  Preprocessing  Directive  ใชระบุเพื่อบอกใหคอมไพเลอรกระทําการ  ใด ๆ กอนการแปลผลโปรแกรม  ในที่นี่คําสั่ง #include   <stdio.h>  ใชบอกกับคอมไพเลอรใหนําเฮดเดอรไฟลที่  ระบุ  คือ  stdio.h เขารวมในการแปลโปรแกรมดวย  โดยการกําหนด  preprocessing  directives  นี้จะตองขึ้นตน  ดวยเครื่องหมาย # เสมอ  คําสั่งที่ใชระบุใหคอมไพเลอรนําเฮดเดอรไฟลเขารวมในการแปลโปรแกรม    สามารถเขียนได  2  รูปแบบ  คือ  -  #include  <ชื่อเฮดเดอรไฟล>  คอมไพเลอรจะทําการคนหาเฮดเดอรไฟลที่ระบุจากไดเรกทอรีทใช  ี่ สําหรับเก็บเฮดเดอรไฟลโดยเฉพาะ (ปกติคือไดเรกทอรีชื่อ include)  -  #include “ชื่อเฮดเดอรไฟล”  คอมไพเลอรจะทําการคนหาเฮดเดอรไฟที่ระบุ  จากไดเร็คทอรีเดียวกัน  กับไฟล  source code  นั้น  แตถาไมพบก็จะไปคนหาไดเร็คทอรีที่ใชเก็บเฮดเดอรไฟลโดยเฉพาะ  2.  สวนของฟงกชั่นหลัก  ฟงกชนหลักของภาษาซี    คือ  ฟงกชั่น  main()  ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะตองมีฟงกชั่นนี้อยูใน  ั่  โปรแกรมเสมอ    จะเห็นไดจากชื่อฟงกชนคือ  main  แปลวา  “หลัก”  ดังนั้น  การเขียนโปรแกรมภาษาซีจึงขาด  ั่ ฟงกชนนี้ไปไมได    โดยขอบเขตของฟงกชนจะถูกกําหนดดวยเครื่องหมาย  {  และ  }  กลาวคือ    การทํางานของ  ั่ ั่ ฟงกชนจะเริ่มตนที่เครื่องหมาย {  และจะสิ้นสุดที่เครื่องหมาย  }  ฟงกชน  main()  สามารถเขียนในรูปแบบของ  ั่ ั่ int  main  ก็ได  มีความหมายเหมือนกัน  คือ  หมายความวา  ฟงกชน  main()  จะไมมีอารกิวเมนต  (argument)  ั่ คือไมมีการรับคาใด ๆ เขามาประมวลผลภายในฟงกชั่น  และจะมีการคืนคากลับออกไปจากฟงกชั่นดวย  ­ โครงสรางของโปรแกรมภาษาซี ­ 
  • 2.
    -12-  คืนคาใด ๆ กลับออกไปจากฟงกชั่น  main()  เทียบเทา  int main(void) ไมรับคาใด ๆ เขามาในฟงกชั่น  argument  คือ  ตัวรับคาเขามาในฟงกชั่น  parameter  คือ  คาที่สงไปยังฟงกชน ั่ คาของ  argument  และ  parameter ตองเปนขอมูลชนิดเดียวกัน  เชน หากกําหนดให  argument  เปนขอมูล  ชนิดตัวอักษรแลวคา  parameter  ก็สงไปก็ตองเปนชนิดตัวอักษรดวย  3.  สวนรายละเอียดของโปรแกรม  เปนสวนของการเขียนคําสั่ง  เพื่อใหโปรแกรมทํางานตามที่ไดออกแบบไว  คอมเมนตในภาษาซี  คอมเมนต (comment)  คือสวนที่เปนหมายเหตุของโปรแกรม  มีไวเพื่อใหผเู ขียนโปรแกรมใสขอความ  อธิบายกํากับลงไปใน  source code  ซึ่งคอมไพเลอรจะขามาการแปลผลในสวนที่เปนคอมเมนตนี้ คอมเมนตใน  ภาษาซีมี 2 แบบคือ  ¨  คอมเมนตแบบบรรทัดเดียว  ใชเครื่องหมาย //  ¨  คอมเมนตแบบหลายบรรทัด  ใชเครื่องหมาย /*  และ */  ตัวอยาง  การคอมเมนตในภาษาซี  // Comment only one line  #include <stdio.h>  #include <conio.h>  int main()  สวนที่เปนคอมเมนตจะ  {  ไมไดรับการแปลผล clrscr();  /*comment  many  line*/  getch();  return 0;  }  ­ โครงสรางของโปรแกรมภาษาซี ­ 
  • 3.
    -13-  ขอควรระวังในการใชคอมเมนต  คือ  ในกรณีที่ใชคอมเมนตแบบหลายบรรทัด  จะไมสามารถใชคอมเมนต  ซอนคอมเมนตได  ดังรูป  มิฉะนั้นจะกอใหเกิดขอผิดพลาดในการคอมไพล  /*Comment1*/  /*Comment2*/  /*Comment3*/  / /*Comment1  /*Comment2*/  /*Comment3*/ X การใชคอมเมนตแบบหลายบรรทัด  จะเห็นวาในกรณีที่ตองการใสคอมเมนตหลาย ๆ บรรทัดติดกันนั้น  คอมเมนตแบบหลายบรรทัดจะชวย  ประหยัดเวลาในการใสคอมเมนตไดมากกวาการใชคอมเมนตแบบบรรทัดเดียว  แตก็ควรระมัดระวังในการใชงาน  ดวย  ­ โครงสรางของโปรแกรมภาษาซี ­ 
  • 4.
    -14-  ตัวอยางที่ 1  โปรแกรมใหนักเรียนศึกษาโครงสรางของโปรแกรมภาษาซี  1:  #include <stdio.h>  2:  int main()  3:  {  4:  printf("My name is Manaot");  5:  getch();  6:  return 0;  7:  }  ผลลัพธของโปรแกรม  My name is Manaot  อธิบายโปรแกรม  บรรทัดที่ 1:  เปนการบอกใหคอมไพเลอรนําเฮดเดอรไฟลชื่อ  stdio.h เขามารวมในการแปลผลดวย  โดย  stdio  ยอมาจาก  standard input/output  และ .h  คือ นามสกุลของเฮดเดอรไฟล  ในภาษาซี (h  ยอมาจาก header) ซึ่ง stdio.h  คือ เฮดเดอรไฟลที่รวมเอาการประกาศ  (declaration)  ของฟงกชั่นมาตรฐานของภาษาซีที่เกี่ยวกับการจัดการดานอินพุตและ  เอาตพุตเขามาไวดวยกันโปรแกรมนี้มีการเรียกใชงานฟงกชั่น printf()  เพื่อแสดงขอมูล  ออกทางจอภาพ  และเนื่องจากสวนของการประกาศฟงกชั่น printf()  ถูกบรรจุอยูในเฮด  เดอรไฟล  stdio.h  ดังนั้นจึงจําเปนตองนําเฮดเดอรไฟล  stdio.h  เขารวมในการแปลผล  ดวย  บรรทัดที่ 2:  คือฟงก ชั่น  int  main()  ซึ่งเป นฟงกชั่นหลัก ของโปรแกรม  การทํางานของโปรแกรม  ภาษาซีจะเริ่มตนที่ฟงกชั่นนี้  บรรทัดที่ 3:  เครื่องหมาย  {  ระบุจุดเริ่มตนของฟงกชั่น  main()  บรรทัดที่ 4:  เปนการเรียกใชฟงกชั่น printf()  ซึ่งเปนฟงกชั่นมาตรฐานของภาษาซีทําหนาที่แสดงผล  ขอมูลออกทางจอภาพ ในที่นี้จะแสดงขอความ My name is Manaot  ออกทางจอภาพ  บรรทัดที่ 5:  เปนคําสั่งใหรอรับการกดปุมใดๆ จากผูใชแลวจะทําคําสั่งตอไปในบรรทัดถัดไป  บรรทัดที่ 6:  คืนคา 0 ดังนั้น ฟงกชั่น  main() คืนคา 0 ใหกับโปรแกรม  บรรทัดที่ 7:  เครื่องหมาย  }  ระบุจุดสิ้นสุดของฟงกชั่น  main() ­ โครงสรางของโปรแกรมภาษาซี ­