ภาษาซี เป็นการเขียนโปรแกรมพื้นฐาน สามารถประยุกต์ใช้กับงานต่างๆได้มากมาย ระบบปฏิบัติการคอมพิวเตอร์ ทางคณิตศาสตร์ โปรแกรมทางไฟฟ้า อิเล็กทรอนิกส์ ไมโครคอนโทรลเลอร์ เช่น โปรแกรม MATLAB (The MathWorks - MATLAB and Simulink for Technical Computing) ซึ่งเวลาใช้สามารถพิมพ์ชุดคำสั่งภาษาซีเพิ่มเข้าไปในโปรแกรมคำนวณทางคณิตศาสตร์ ประมวลผลทางสัญญาณไฟฟ้า ทางไฟฟ้าสื่อสารก็ได้ ทำให้ประสิทธิภาพของงานที่ทำดียิ่งขึ้นครับ และยังมีโปรแกรมอื่นๆ ที่มีภาษาซีประยุกต์ใช้กันอีกมากมาย ไม่สามารถนำมากล่าวได้หมด ถึงแม้ว่าภาษาซีอาจจะดูเก่าไปสำหรับคนอื่น แต่ผมว่าควรศึกษาภาษาซีที่เป็นรากฐานของภาษาอื่นๆเสียก่อน เพราะภาษา C++ จาวา (Java) ฯลฯ และ ระบบลีนุกซ์ เป็นระบบที่ถูกพัฒนามาจากระบบยูนิกซ์ซึ่งก็เป็นที่รู้กันทั่วไปว่า ภาษาคู่บารมีของระบบปฏิบัติการตระกูลยูนิกซ์มีการพัฒนามาจากภาษาซีเช่นกัน
ประวัติภาษาซี
ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชี (Dennis Ritche) แห่งห้องทดลองเบลล์ (Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน (Ken Tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซีมีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียวกับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่าภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ความสามารถระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูง ทำให้ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์
วิวัฒนาการของภาษาซี
- ค.ศ. 1970 มีการพัฒนาภาษา B โดย Ken Thompson ซึ่งทำงานบนเครื่อง DEC PDP-7 ซึ่ง ทำงานบนเครื่องไมโครคอมพิวเตอร์ไม่ได้ และยังมีข้อจำกัดในการใช้งานอยู่ (ภาษา B สืบทอดมาจาก ภาษา BCPL ซึ่งเขียนโดย Marth Richards)
- ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ได้สร้างภาษา C เพื่อเพิ่มประสิทธิภาพ ภาษา B ให้ดียิ่งขึ้น ในระยะแรกภาษา C ไม่เป็นที่นิยมแก่นักโปรแกรมเมอร์โดยทั่วไปนัก
- ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ได้เขียนหนังสือเล่มหนึ่งชื่อว่า The C Programming Language และหนังสือเล่มนี้ทำให้บุคคลทั่วไปรู้จักและนิยมใช้ภาษา C ในการเขียน โปรแกรมมากขึ้น
- แต่เดิมภาษา C ใช้ Run บนเครื่องคอมพิวเตอร์ 8 bit ภายใต้ระบบปฏิบัติการ CP/M ของ IBM PC ซึ่งในช่วงปี ค. ศ. 1981 เป็นช่วงของการพัฒนาเครื่องไมโครคอมพิวเตอร์ ภาษา C จึงมี บทบาทสำคัญในการนำมาใช้บนเครื่อง PC ตั้งแต่นั้นเป็นต้นมา และมีการพัฒนาต่อมาอีกหลาย ๆ ค่าย ดังนั้นเพื่อกำหนดทิศทางการใช้ภาษา C ให้เป็นไปแนวทางเดียวกัน ANSI (American National Standard Institute) ได้กำหนดข้อตกลงที่เรียกว่า 3J11 เพื่อสร้างภาษา C มาตรฐานขึ้นมา เรียนว่า ANSI C
- ค.ศ. 1983 Bjarne Stroustrup แห่งห้องปฏิบัติการเบล (Bell Laboratories) ได้พัฒนาภาษา C++ ขึ้นรายละเอียดและความสามารถของ C++ มีส่วนขยายเพิ่มจาก C ที่สำคัญ ๆ ได้แก่ แนวความคิดของการเขียนโปรแกรมแบบกำหนดวัตถุเป้าหมายหรือแบบ OOP (Object Oriented Programming) ซึ่งเป็นแนวการเขียนโปรแกรมที่เหมาะกับการพัฒนาโปรแกรมขนาดใหญ่ที่มีความสลับซับซ้อนมาก มีข้อมูลที่ใช้ในโปรแกรมจำนวนมาก จึงนิยมใช้เทคนิคของการเขียนโปรแกรมแบบ OOP ในการพัฒนาโปรแกรมขนาดใหญ่ในปัจจุบันนี้
จุดเด่นของภาษาซี
• เป็นภาษาโครงสร้าง
• เป็นภาษาระดับสูง
• ไม่ขึ้นอยู่กับระบบปฏิบัติการ
• ไม่ขึ้นอยู่กับชนิดของเครื่องคอมพิวเตอร์
วิธีการแปลภาษาขั้นสูงให้เป็นภาษาเครื่อง
• อินเตอร์พลีเตอร์ (Interpreter)
–แปลครั้งละคำสั่งแล้วส่งให้เครื่องทำงานจากนั้นจึงแปลงคำสั่งถัดไป
–เช่น java, perl, python, shell script, vb script
• คอมไพล์เลอร์ (Compiler)
–แปลคำสั่งทั้งหมดแล้วส่งให้เครื่องทำงาน
–เช่น c, c++, pascal
• การสร้างไฟล์ภาษา นามสกุล cpp หรือ c
• การคอมไพล์เป็นภาษาเครื่อง
• การรันโปรแกรม
–พรีโปรเซสเซอร์ไดเร็คทีฟ (Preprocessor Directive)
#include
#define
–ฟังก์ชันโพรโทรไทพ์ (Function Prototype Declaration)
–ตัวแปรชนิดโกบอล (Global Variable Declaration)
–ฟังก์ชันหลัก (Main Function)
•ตัวแปรชนิดโลคอล (Local Variable Declaration)
• คำสั่ง (Statement)
–ฟังก์ชันอื่น ๆ (Functions)
•ส่วนประมวลผลก่อน เป็นส่วนที่สั่งให้คอมไพเลอร์เตรียมการทำงานที่กำหนดไว้ ก่อนที่จะทำงานในฟังก์ชันหลัก
#include<file-name.h>
ให้โปรแกรมดึงคำสั่งจาก file-name.h ใน Include Directory
#include"file-name.h"
ให้โปรแกรมดึงคำสั่งจาก file-name.h ใน Current Directory
file-name คือชื่อไฟล์นามสกุล h
#include<stdio.h>
ทำการเรียกไฟล์ stdio.h เพื่อทำให้สามารถใช้คำสั่งทั่วไปได้
#include<conio.h>
ทำการเรียกไฟล์ conio.h เพื่อทำให้สามารถใช้คำสั่งจัดการหน้าจอ และคำสั่งรับและแสดงผลเพิ่มเติม
#include<math.h>
ทำการเรียกไฟล์ math.h เพื่อทำให้สามารถใช้คำสั่งเกี่ยวกับคณิตศาสตร์ได้
#include<string.h>
ทำการเรียกไฟล์ string.h เพื่อทำให้สามารถใช้คำสั่งจัดการเกี่ยวกับข้อความได้
•ฟังก์ชันหลักเป็นฟังก์ชันที่โปรแกรมภาษาซีต้องมีอยู่เสมอ เพราะคอมไพเลอร์ของภาษาซีจะเริ่มต้นการทำงานจากฟังก์ชันหลัก
•ตัวอย่างการเขียนฟังก์ชันหลักที่ไม่มีการทำงานใดๆ
int main(void)
{
return(0);
}
หรือ
int main()
{
return 0;
}
• ใช้เครื่องหมาย semi colon ; เป็นจุดสิ้นสุดคำสั่ง
• ใช้อักษรตัวเล็กสำหรับเรียกใช้คำสั่ง (statement)
• ใช้เครื่องหมาย comma , สำหรับคั่นตัวแปร และพารามิเตอร์
• หากคำสั่งใดมีคำสั่งส่วนย่อยภายในหลาย ๆ คำสั่ง ให้ใช้เครื่องหมายปีกกา { } สำหรับกำหนดขอบเขต