หน่วยที่ 2 โครงสร้างภาษาซีเบื้องต้น

หน่วยที่ 2 โครงสร้างภาษาซีเบื้องต้น

                     คอมพิวเตอร์จะสามารถทำงานได้จะต้องมีการเขียนโปรแกรมหรือซอร์ฟแวร์ เพื่อสั่งให้คอมพิวเตอร์ทำงาน โปรแกรมต่าง ๆ ที่เขียนขึ้นมานั้น จะต้องเขียนไปตามกฎเกณฑ์ของภาษาที่คอมพิวเตอร์เข้าใจ เรียกว่า ภาษาคอมพิวเตอร์

                   ภาษาคอมพิวเตอร์ หมายถึง ภาษาใดๆ ที่ผู้ใช้งานใช้สื่อสารกับคอมพิวเตอร์ หรือคอมพิวเตอร์ด้วยกัน แล้วคอมพิวเตอร์สามารถทำงานตามคำสั่งนั้นได้ 

                    ภาษาคอมพิวเตอร์อาจแบ่งกลุ่มได้เป็นอีกสองประเภท คือ ภาษาที่มนุษย์อ่านออก (human-readable) และภาษาที่มนุษย์อ่านไม่ออก (non human-readable) โปรแกรมที่เขียนถูกต้องตามกฎเกณฑ์และไวยากรณ์ของภาษาจะถูกแปล (compile) ไปเป็นภาษาระดับต่ำเพื่อให้คอมพิวเตอร์สามารถนำไปใช้งานหรือปฏิบัติตามคำสั่งได้ต่อไป

                   ยุคของภาษาคอมพิวเตอร์ (generation language) มี 5 ยุค ดังนี้

ยุคที่ 1 (first) ภาษาเครื่อง (Machine language) ใช้ภาษาระดับล่าง (low-level) เฉพาะ 0 และ 1 เท่านั้น
ยุคที่ 2 (second) ภาษาแอสเซมบลี (Assembly) ใช้สัญลักษณ์ข้อความแทนกลุ่มของตัวเลขฐานสอง
ยุคที่ 3 (third) ภาษาชั้นสูง (High-level) หรือภาษารุ่นที่3 (3GL) ใกล้เคียงภาษาของมนุษย์
ยุคที่ 4 (fourth) ภาษาชั้นสูงมาก (Very high-level) หรือภาษารุ่นที่ 4 (4GL) คล้ายภาษาพูด
ยุคที่ 5 (fifth) ภาษาธรรมชาติ (Natural) หรือภาษารุ่นที่ 5 (5GL) ระบบฐานความรู้ (สาขาปัญญาประดิษฐ์)
หมายเหตุ ภาษาธรรมชาติภาษานี้ถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบผู้เชียวชาญ (Expert system)       

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

  • แอสแซมเบลอร์ (Assemblers) ตัวแปลภาษาของภาษาแอสแซมบลีแปลความหมายสัญลักษณ์ชุดคำสั่งให้เป็นภาษาเครื่อง ใช้งานร่วมกับการเขียนโปรแกรมของภาษาระดับต่ำ (low-level language)
  • อินเทอร์พรีเตอร์ (Interpreters) สำหรับการเขียนโปรแกรมในภาษาระดับสูง (high-level language) แปลความหมายของชุดคำสั่งทีละบรรทัดคำสั่งเหมาะสำหรับการเขียนโปรแกรมที่มีขนาดเล็ก
  • คอมไพเลอร์ (Compilers) ใช้กับการทำงานในภาษาระดับสูง (high-level language) แปลความหมายของชุดคำสั่งที่เขียนทั้งหมดในคราวเดียวกัน เป็นชุดของรหัสคำสั่งเก็บไว้ใช้เมื่อต้องการไม่ต้องเสียเวลาไปแปลชุดคำสั่งซ้ำอีกเหมาะกับการการเขียนโปรแกรมขนาดใหญ่และซับซ้อน             

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

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

           ภาษาซี (C Language) จุดเริ่มต้น พัฒนาขึ้น โดยนายเดนนิส  ริทชี่ (Dennis Ritche)  ในปี ค.ศ. 1972  เป็นภาษาหนึ่งสำหรับเขียนโปรแกรมคอมพิวเตอร์เพื่อสร้างระบบปฏิบัติการยูนิกซ์ (Unix Operating System)


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

  • ฟังก์ชัน (function) คือ ส่วนของโปรแกรมย่อย และ พารามิเตอร์ (parameter) คือ ค่าคงที่ของฟังก์ชันส่งผ่านด้วยค่าของตัวแปรเสมอ
  • ส่วนการส่งผ่านด้วยการอ้างอิงจะถูกจำลองขึ้นโดยการส่งผ่านค่าตัวชี้ ชนิดข้อมูลรวมแบบแตกต่างช่วยให้สมาชิกข้อมูลที่เกี่ยวข้องกันสามารถรวมกันและจัดการได้ในหน่วยเดียว
  • รหัสต้นฉบับของภาษาซีเป็นรูปแบบอิสระ ซึ่งใช้อัฒภาค (;) เป็นตัวจบคำสั่ง (มิใช่ตัวแบ่ง)

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

            ข้อเสียของภาษาซี ได้แก่ เป็นภาษาที่เรียนรู้ยาก การตรวจสอบโปรแกรมทำได้ยาก และไม่เหมาะกับการเขียนโปรแกรมที่เกี่ยวข้องกับการออกรายงานที่มีรูปแบบซับซ้อนมากๆ


โครงสร้างภาษาซีสำหรับการเขียนโปรกรมเบื้องต้น แบ่งออกเป็น 3 ส่วน

  • 1. ส่วนหัวของโปรแกรม (Header File) ภาษาซีส่วนหัวมีชนิดที่เป็น *.h จัดเก็บในไลบรารีฟังก์ชั่น (Library Function) ระบุให้คอมไพเลอร์กระทำการใด ๆ ก่อนการแปลผลโปรแกรม ในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย [ส่วนต้นทุกโปรแกรมจะปรากฎคำสั่งนี้] โดยการกำหนดนี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ คำสั่งที่ใช้ระบุให้คอมไพเลอร์นำเฮดเดอร์ไฟล์เข้าร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบคือ
    • #include <ชื่อเฮดเดอร์ไฟล์> คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเรกทอรีที่ใช้สำหรับเก็บเฮดเดอร์ไฟล์โดยเฉพาะ
    • #include “ชื่อเฮดเดอร์ไฟล์” คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล์ source code นั้น แต้ถ้าไม่พบก็จะไปค้นหาไดเร็คทอรีที่ใช้เก็บเฮดเดอร์ไฟล์โดยเฉพาะ
  • 2. ส่วนฟังก์ชั่นหลัก คือ การทำงานเริ่มต้นที่ฟังก์ชั่นหลักนี้ โดยมีฟังก์ชั่น main() นี้อยู่ในโปรแกรมภาษาซีเสมอ ขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main() เที่ยบเท่า void main()
  • 3. ส่วนภายในฟังก์ชั่นหลัก หรือ ส่วนการพิมพ์คำสั่งควบคุมงานในโครงสร้างภาษาซี เป็นคำสั่งแสดงการทำงานของฟังก์ชั่นหลัก ดังนั้น ส่วนรายละเอียดของโปรแกรม หรือ ส่วนภายในฟังก์ชั่นหลัก เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้