ครงสร้างของโปรแกรมภาษาซี และตัวอย่าง



ครงสร้างของโปรแกรมภาษาซี และตัวอย่าง
โปรแกรมในภาษาซีทุกโปรแกรมจะประกอบด้วยฟังก์ชันอย่างน้อย หนึ่งฟังก์ชัน คือ ฟังก์ชัน main โดยโปรแกรมภาษาซีจะเริ่มทำงานที่ฟังก์ชัน main ก่อน ในแต่ละฟังก์ชันจะประกอบด้วย
  1. Function Heading
    ประกอบด้วยชื่อฟังก์ชัน และอาจมีรายการของ argument (บางคนเรียก parameter) อยู่ในวงเล็บ
  2. Variable Declaration
    ส่วนประกาศตัวแปร สำหรับภาษาซี ตัวแปรหรือค่าคงที่ทุกตัว ที่ใช้ในโปรแกรมจะต้องมีการประกาศก่อนว่าจะใช้งานอย่างไร จะเก็บค่าในรูปแบบใดเช่น interger หรือ real number
  3. Compound Statements
    ส่วนของประโยคคำสั่งต่างๆ ซึ่งแบ่งเป็นประโยคเชิงซ้อน (compound statement) กับ ประโยคนิพจน์ (expression statment) โดยประโยคเชิงซ้อนจะอยู่ภายในวงเล็บปีกกาคู่หนึ่ง { และ } โดยในหนึ่งประโยคเชิงซ้อน จะมีประโยคนิพจน์ที่แยกจากกันด้วยเครื่องหมาย semicolon (;) หลายๆ ประโยครวมกัน และ อาจมีวงเล็บปีกกาใส่ประโยคเชิงซ้อนย่อยเข้าไปอีกได้ ซึ่งนักศึกษาจะได้เห็นต่อไป
ข้างล่างนี้คือตัวอย่างโปรแกรมง่ายๆ ในภาษาซี
โปรแกรมที่ 1: Hello
#include <stdio.h>
main()
{
    printf(" Hello. This is my first program. \n") ;       /*  This is  a comment  */
    return 0 ;
}

บรรทัดแรกนั้นเราเรียก Compiler Directives คือเป็นคำสั่งที่บอก compiler ว่ามีไฟล์อะไรที่จำเป็นต่อการ compile บ้าง ซึ่งในที่นี้ เราต้องการไฟล์ที่ชื่อ "stdio.h" ซึ่งทำหน้าที่เรียกใช้งาน Standard I/O Library ซึ่งฟังก์ชันที่เราเรียกใช้งานในโปรแกรมข้างบนคือ printf นั่นเอง
บรรทัดต่อมาบอกว่าโปรแกรมนี้มีฟังก์ชัน main โดยไม่ต้องการ argument ใดๆ โดย compound statement ถูกบรรจุในวงเล็บปีกกา { ...... }
บรรทัดต่อมามีการเรียกใช้ฟังก์ชัน printf จาก Standard I/O Library โดย argument ของฟังก์ชันนี้ก็คือประโยค " Hello. This is my first program." นักศึกษาสังเกตว่ามีชุดอักขระ \n ซึ่งเป็นชุดอักขระพิเศษหมายถึงการขึ้นบรรทัดใหม่
นี่คือชุดอักขระพิเศษต่างๆ และ ความหมาย
 \a  bell
 \b  back space
 \t  horizontal tab
 \v  vertical tab
 \n  new line
 \f  form feed
 \r  carriage return
 \"  quotation mark ( " )
 \'  apostrophe ( ' )
 \?  question mark ( ? )
 \\  back slash ( \ )
 \0  null
นักศึกษาสามารถใส่ comment ในโปรแกรมเพื่ออธิบายสิ่งที่ทำได้ โดย comment จะต้องอยู่ระหว่าง \* และ *\ เสมอ 
บรรทัดเกือบสุดท้ายมีคำสั่ง return    0   ซึ่งบอกว่าฟังก์ชันมีการส่งค่ากลับ โดยค่า 0 ที่ส่งกลับไปบอกว่าฟังก์ชัน main ได้ทำงานสมบูรณ์แล้ว
โปรแกรมที่ 2
#include <stdio.h>
main ()
{
 int width , length ;                    /*   Declaration of Variables   */
 int area ;

 width = 10 ;
 length = 5 ;         /* Expression Statements  */
 area = width * length ;

 printf ("A rectangular having width = %d and length = %d has area = %d \n", width, length, area) ; 
 return 0
}

สิ่งที่เพิ่มขึ้นมาในโปรแกรมนี้คือ มีการใช้ตัวแปร จึงต้องมีการประกาศตัวแปรด้วย ซึ่งตัวแปรทั้งหมด เราใช้แบบเลขจำนวนเต็ม หรือ แบบ integer (จะกล่าวถึงหลักการในการตั้งชื่อต่อไป)นอกจากนั้นในฟังก์ชัน printf ยังมี argument เพิ่มขึ้นคือ มีการพิมพ์ค่าของตัวแปร width length และ area ด้วย เราจึงต้องระบุ Format ของการพิมพ์ตัวแปรดังกล่าว ในทีนี้เราระบุให้เป็นเลขฐานสิบ หรือ Decimal เราจึงใช้ %d ในการระบุ Format ของสิ่งที่จะพิมพ์ออกมา
โปรแกรมที่ 3
#include <stdio.h>
main()
{
 float width ,  length  ;
 float area  ;

 printf("Please enter width: ") ;
 scanf("%f", &width) ; 
 printf("Please enter length: ") ;
 scanf("%f", &length) ;

 area = width * length ;
 
 printf ("A rectangular having width = %d and length = %d has area = %d \n", width, length, area) ; 
 return 0
}

ในโปรแกรมที่ 3 เราเปลี่ยนการใช้ตัวแปรจาก integer ไปเป็นแบบ floating point เพื่อให้ตัวแปรสามารถบรรจุ เลขทศนิยมได้ โปรแกรมนี้มีความสามารถมากขึ้น คือสามารถรับข้อมูลเข้าจากผู้ใช้ได้ด้วยการใช้ฟังก์ชัน scanf โดยต้องกำหนด Format ของสิ่งที่จะรับใน argument โดยใส่ในเครื่องหมายคำพูด และ ตัวแปรที่จะใช้เก็บค่าต้องขึ้นต้นด้วยเครื่องหมาย &
การกำหนด Format สำหรับข้อมูล เราต้องระมัดระวัง ต้องกำหนดให้ตรงกับประเภทของข้อมูลด้วย %d นั้นใช้สำหรับ เลขจำนวนเต็ม และ %f ใช้สำหรับ floating point จะเกิดอะไรขึ้นถ้านักศึกษาละเลยจุดนี้ไป
โปรแกรมที่ 4 การกำหนด Format ข้อมูลผิดประเภท
#include <stdio.h>
main()
{
 int i  ;
 
 printf("The number is %f \n",i)  ;      /*  Using %f  with integer  */
 return 0
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น