ห้องเรียน C-Programming

หน่วยที่ 2
โครงสร้างภาษาซี

Cinque Terre

     คำสั่งที่ใช้งานในภาษา C นั้นล้วนเป็นฟังก์ชั่นทั้งสิ้น ดังนั้นโปรแกรมที่เขียนขึ้นจึงประกอบไปด้วยฟังก์ชั่นมากมาย ที่ถูกกำหนดให้ทำหน้าที่ใดหน้าที่หนึ่งในลักษณะของโมดูลย่อย เพื่อทำงานให้บรรลุเป้าหมาย และในเมื่อภาษา C คือ ภาษาที่ประกอบไปด้วยฟังก์ชั่น

      ฟังก์ชั่น (Function) คือ ชุดคำสั่งที่เขียนขึ้นเพื่อสั่งให้คอมพิวเตอร์ทำงาน ที่อนุญาตให้สามารถรับข้อมูล (Input) ประมวลผล (Processes) และแสดงผลข้อมูล (Output) โดยฟังก์ชั่นที่ถูกเขียนขึ้นใช้งาน และสามารถเรียกมาใช้งานได้ทันที จะถูกจัดเก็บไว้ในไลบารีมาตรฐาน (Standard Library) ในขณะที่ฟังก์ชั่นอื่นๆ จะเป็นฟังก์ชั่นที่ถูกเขียนขึ้นโดยผู้เขียนโปรแกรม อย่างไรก็ตามในภาษา C จะมีฟังก์ชั่นพิเศษฟังก์ชั่นหนึ่งที่จำเป็นต้องมีไว้ในโปรแกรมเสมอ คือ ฟังก์ชั่น main()  ทั้งนี้ฟังก์ชั่นดังกล่าวจัดเป็นฟังก์ชั่นหลักที่นำมาใช้เป็นจุดเริ่มต้นของโปรแกรมเพื่อสั่งให้ทำงาน โดยฟังก์ชั่นอื่นๆ จะถือเป็นรูทีนย่อย (Subroutines)

ลักษณะโครงสร้างของภาษาซี

ลักษณะโครงสร้างภาษาซี แบ่งออกได้เป็น 4 ส่วน ดังนี้
         1. ส่วนประมวลผลก่อน (Preprocessor directives)
         2. ส่วนฟังก์ชันหลัก (the main () function)
         3. ประโยคคำสั่ง (compound statement)
         4. ส่วนอธิบายโปรแกรม (program comment)

Cinque Terre

1. ส่วนประมวลผลก่อน (Preprocessor directives)
      ตัวประมวลผลก่อน หรือพรีโปรเซสเซอร์ไดเร็กทีฟ ถือเป็นส่วนสำคัญส่วนหนึ่งของภาษาซี เรียกว่าส่วนหัวของโปรแกรม จำเป็นต้องกำหนดไว้ในตอนต้นโปรแกรมเสมอ ถ้าตัวแปลภาษาซีตรวจพบว่ามีการใช้พรีโปรเซสเซอร์ไดเร็กทีฟ ก็จะถูกแปลความหมายเป็นอันดับแรกก่อนคำสั่งประเภทอื่น การเขียนคำสั่งพรีโปรเซสเซอร์ไดเร็กทีฟ ต้องขึ้นต้นด้วยเครื่องหมาย #

  พรีโปรเชสเชอร์จะมีอยู่หลายตัวด้วยกัน เช่น

#if #ifdef #ifndef #else #elif #endif
#include #define #undef #line #error #pragma

 
แต่พรีโปรเซสเซอร์ไดเร็กทีฟ ที่น่าสนใจและใช้งานเป็นประจำคือ #include และ #define

   - พรีโปรเซสเซอร์ไดเร็กทีฟ #define เป็นการกำหนดค่านิพจน์ต่างๆ ให้กับชื่อของตัวแปร เช่น
# define START 0 หมายถึง เป็นการกำหนดค่าคงที่ให้กับตัวแปร START โดยให้มีค่าเป็น 0
# define temp 37 หมายถึง เป็นการกำหนดให้ตัวแปร temp มีค่าเท่ากับ 37

   - พรีโปรเซสเซอร์ไดเร็กทีฟ #include ใช้สำหรับสั่งให้ตัวแปลภาษาซี นำ header file (ไฟล์ที่ระบุชื่อต่อจาก #include) มารวมกับโปรแกรมก่อนที่จะแปลภาษา สามารถเขียนได้ 2 รูปแบบดังนี้

       แบบที่ 1 #include <header file>
       แบบที่ 2 #include “header file”

   เช่น #include<stdio.h> โดยคอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเร็กทอรี่ที่เก็บเฮดเดอร์ไฟล์โดยเฉพาะ โดยชื่อเฮดเดอร์ไฟล์ที่ผนวกเข้ามาสามารถเขียนอยู่ภายในเครื่องหมาย < > หรือ " " ก็ได้

เฮดเดอร์ไฟล์ (header file)

       เฮดเดอร์ไฟล์ (header file) เป็นไฟล์ส่วนหัวที่มีการประกาศรายละเอียดของคำสั่งในภาษา C หลายคำสั่งเอาไว้ให้ผู้เขียนโปรแกรมเรียกใช้ได้ header file จะมีนามสกุล .h เช่น stdio.h เป็นต้น แต่ละไฟล์จะเก็บการประกาศของคำสั่งสำหรับใช้งานด้านต่างๆ ไม่เหมือนกัน การ include ไฟล์ .h ให้ประกาศไว้ที่ด้านบนของโปรแกรมและเราสามารถ include ไฟล์ .h เข้ามาหลายไฟล์ในโปรแกรมเดียวกันได้เช่น

Header File ที่สำคัญ
       เฮดเดอร์ไฟล์ที่เรานิยมใช้บ่อยมีอยู่ 2 เฮดเดอร์ คือ stdio.h และ conio.h
       stdio.h กลุ่มฟังก์ชันที่ใช้งานด้าน อินพุตและเอาต์พุต เช่น printf( ) , scanf ( ) เมื่อโปรแกรมมีการเรียกใช้งานฟังก์ชัน printf( ) ก็จะต้องผนวกเฮดเดอร์ไฟล์ stdio.h มิฉะนั้นจะคอมไพล์โปรแกรมไม่ผ่าน ภาษาซีสามารถผนวกเฮดเดอร์ได้หลาย
       conio.h กลุ่มฟังก์ชันที่ใช้ควบคุมการแสดงผล, รับค่าจากคีย์บอร์ด เช่น getch ( )
       string.h กลุ่มฟังก์ชันที่ใช้จัดการข้อความเช่น รวมข้อความ, ค้นหาอักขระ
       math.h กลุ่มฟังก์ชันด้านการคำนวณทางคณิตศาสตร์ เช่น sin, cos, tan, log เป็นต้น

2. ฟังก์ชั่นหลัก (Main Function)

         ฟังก์ชั่น main( ) ในภาษาซี จัดเป็นฟังก์ชันที่ทำหน้าเสมือนกับเป็นโปรแกรมหลักที่สั่งให้ชุดคำสั่งทำงานรวมถึงการเรียกใช้ฟังก์ชั่นย่อยๆ อื่นทำงาน กล่าวคือการสั่งงานในโปรแกรมจะต้องอยู่ภายในฟังก์ชั่น main ( ) เท่านั้น ตามด้วยเครื่องหมายปีกกาเปิด { และจบด้วยเครื่องหมายปีกกาปิด } และคำสั่งทุกคำสั่งในภาษาซีจะต้องปิดท้ายด้วยเครื่องหมาย ; (semicolon) เสมอ

         ฟังก์ชัน main() สามารถเขียนในรูปแบบของ int main ก็ได้ มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชัน main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชัน และจะมีการคืนค่ากลับออกไปจากฟังก์ชันด้วย
argument คือ ตัวรับค่าเข้ามาในฟังก์ชัน
parameter คือ ค่าที่ส่งไปยังฟังก์ชันค่า argument และ parameter ต้องเป็นข้อมูลชนิดเดียวกัน เช่น หากกำหนดให้ argument เป็นข้อมูลชนิดตัวอักษรแล้วค่า parameter ที่ส่งไปก็ต้องเป็นชนิดตัวอักษรด้วย

3. ประโยคคำสั่ง (Compound Statement)

        เป็นชุดคำสั่งที่บรรจุอยู่ในฟังก์ชั่นนั่นๆ ซึ่งอาจจะเป็น
         - ประโยคที่ใช้สำหรับประกาศตัวแปร (Variable) หรือการกำหนดค่าเริ่มต้นให้กับตัวแปรต่างๆ โดยตัวแปรที่ใช้งานในโปรแกรม จำเป็นต้องได้รับการประกาศชนิดข้อมูลของตัวแปรนั้นๆ ด้วย
         - ประโยคนิพจน์คณิตศาสตร์ เช่น ประโยคคำนวณตัวเลขต่างๆ
         - ประโยคคำสั่งควบคุมอื่นๆ เช่น คำสั่งควบคุมวงจรลูป คำสั่งควบคุมเงื่อนไข เป็นต้น

        ประโยคคำสั่งเหล่านี้จะถูกบรรจุภายในบล็อก {} เพื่อใช้เป็นจุดเริ่มต้นและจุดสิ้นสุดของการทำงานในบล็อกนั้นๆ นอกจากนี้แล้ว ภายในบล็อกยังสามารถมีบล็อกย่อยๆ ซ้อนลงไปได้อีก เมื่อสิ้นสุดประโยคใดๆจะต้องลงท้ายด้วยเครื่องหมาย ; (Semicolon)

4. คำอธิบายในโปรแกรม (Program Comment)

      คำอธิบายในโปรแกรม (program comment) คือข้อความที่แทรกอยู่ภายในโปรแกรม ซึ่งคอมพิวเตอร์จะไม่แปลข้อความนี้ให้เป็นส่วนหนึ่งของโปรแกรม กล่าวคือจะไม่มีผลต่อการทำงานของโปรแกรม เขียนไว้เพื่ออธิบายโปรแกรม ซึ่งในบางครั้งผู้เขียนโปรแกรม อาจต้องการเขียนคำอธิบาย กำกับขั้นตอนการทำงานของโปรแกรมในแต่ละขั้น ทำให้เกิดประโยชน์กับผู้เขียนและผู้ที่อ่านโปรแกรมได้เข้าใจง่ายขึ้น และช่วยทำให้การแก้ไขและปรับปรุงโปรแกรมเป็นไปได้ง่ายยิ่งขึ้น สามารถเขียนได้ 2 รูปแบบ

         /* และปิดด้วยเครื่องหมาย */     เป็นการระบุคำอธิบายที่ครอบคลุมหลายบรรทัด
         //          เป็นการระบุคำอธิบายในบรรทัดเดียวเท่านั้น

อักขระในภาษาซี

ภาษา C ได้เตรียมกลุ่มอักขระต่างๆ ให้ใช้งานเรียกว่า Character Sets แบ่งออกเป็น 2 กลุ่มใหญ่ๆ คือ กลุ่มอักขระพื้นฐาน (Basic Character set) และ (Execution Character set)

1. กลุ่มอักขระพื้นฐาน (Basic Character set) ประกอบด้วยกลุ่มอักขระ ดังต่อไปนี้

          - อักษรตัวพิมพ์ใหญ่ (Alphabets Upper Case) ประกอบด้วยอักษร A-Z จำนวน 26 ตัว ดังนี้

Cinque Terre

         - อักษรตัวพิมพ์เล็ก (Alphabets Lower Case) ประกอบด้วยอักษร a-z จำนวน 26 ตัว ดังนี้

Cinque Terre

         - ตัวเลข (Decimal Digits) ประกอบไปด้วยตัวเลข 0 - 9 จำนวน 10 ตัว ดังนี้

Cinque Terre

         - ตัวอักขระแบบกราฟิก ประกอบด้วยสัญลักษณ์ต่างๆ จำนวน 29 ตัว ดังนี้

Cinque Terre

         - ตัวอักขระแบบช่องว่าง (White space Character) ประกอบด้วยอักขระที่เป็นช่องว่างในลักษณะต่างๆ จำนวน 5 ตัว ดังนี้

Cinque Terre

2. Execution Character set ประกอบด้วยกลุ่มอักขระ ดังต่อไปนี้
         -อักขระที่เป็นค่าว่าง (Null Character) อักขระที่เป็นค่าว่าง หรือค่า Null จะใช้สัญลักษณ์ \0
         -อักขระควบคุม (Escape Sequence) เป็นรหัสที่ใช้ควบคุมการแสดงผลทางจอภาพและเครื่องพิมพ์ ประกอบด้วย

Cinque Terre

กฎเกณฑ์การเขียนภาษาซี

กฎเกณฑ์การเขียนภาษาซี สามารถสรุปได้ดังนี้
       1. จะต้องกำหนดพรีโปรเชสเชอร์ที่ต้นโปรแกรมก่อน เช่น #include<stdio.h> , #include<conio.h>
       2. คำสั่งต่าง ๆ จะต้องเขียนด้วยตัวอักษรภาษาอังกฤษพิมพ์เล็ก
       3. การใช้ตัวอักษรภาษาอังกฤษพิมพ์เล็กและพิมพ์ใหญ่ในภาษาซีจะมีความแตกต่างกัน
       4. ตัวแปรที่นำมาใช้งานในโปรแกรม จะต้องมีการประกาศไว้เสมอ
       5. ภายในโปรแกรมต้องมีอย่างน้อยหนึ่งฟังก์ชั่น คือ main ( )
       6. ใช้เครื่องหมาย { เพื่อบอกจุดเริ่มต้นของชุดคำสั่ง และเครื่องหมาย } เพื่อบอกจุดสิ้นสุดของชุดคำสั่ง โดยสามารถซ้อนเครื่องหมาย { } เพิ่มไว้ภายในได้
       7. สิ้นสุดของแต่ละประโยคคำสั่ง จะต้องจบด้วยเครื่องหมาย ; (semicolon) เช่น a = b+c ;
       8. สามารถใช้เครื่องหมาย /*comment*/ หรือ //comment เพื่อระบุหมายเหตุภายในโปรแกรม โดยคำอธิบายที่อยู่ภายใต้เครื่องหมาย /*comment*/ หรือ //comment จะไม่ถูกนำไปประมวลผล


 



©Notecyber.Com | ครูวรเทพ วันกาล