ภาษา C++

กำเนิดภาษา C

ด้วยศักยภาพและเทคโนโลยีของคอมพิวเตอร์ที่แพรหลาย จึงทำให้มีผู้คิดค้นพัฒนาโปรแกรมคอมพิวเตอร์ภาษาซีขึ้น
คือ นายเดนนิส ริทชี่ (Dennis Ritchie) ที่ศูนย์วิจัยเบล (Bell Laboratories) ประเทศสหรัฐอเมริกาเมื่อปี ค.ศ.1972
และเป็นภาษาคอมพิวเตอร์ที่ใช้เขียนระบบปฏิบัติการยูนิกส์ ซึ่งใช้กันแพร่หลายในระบบเครือข่ายคอมพิวเตอร์ในปัจจุบัน
ภาษาซีเป็นภาษาที่มีความใกล้เคียงกับภาษาระดับต่ำ (Low-Level Language) จึงทำให้นักพัฒนาโปรแกรมสามารถ
ที่จะกำหนดรายละเอียดของโปรแกรมให้เข้าถึงการทำงานในส่วนต่าง ๆ ของคอมพิวเตอร์ให้มากที่สุดเพื่อให้เกิดความเร็ว
ในการทำงานสูงสุด และในขณะเดียวกันภาษาซีก็ยังมีความเป็นภาษาระดับสูง (High-Level Language) ทำให้ผู้พัฒนา
สามารถที่จะพัฒนาโปรแกรมได้ โดยเน้นไปที่การแก้ปัญหาที่ต้องการได้อย่างอิสระโดยไม่ต้องคำนึงถึงฮาร์ดแวร์ใด ๆ
ภาษาซีเป็นภาษาโปรแกรมคอมพิวเตอร์ที่ได้รับความนิยมและมีการพัฒนาอย่างต่อเนื่อง นาย Bjarne Stroustrup
นักวิจัยและพัฒนาของศูนย์วิจัยเบล (Bell Laboratiories) ได้พัฒนาภาษา C++ (ซีพลัสพลัส) ขึ้นมา โดยที่ภาษา C++
มีความสามารถในการทำงานได้ทุกอย่างเหมือนกับภาษาซี ซึ่งมีรูปแบบและโครงสร้างของภาษาใกล้เคียงกัน แต่ภาษา
C++ ใช้หลักการออกแบบโปแกรมเชิงวัตถุ (Object Oriented Design) ในขณะที่ภาษาซีใช้หลักการออกแบบโปรแกรม
แบบโมดูลาร์ (Modular Design)

โครงสร้างภาษา C

โปรแกรมภาษาซีมีองค์ประกอบที่สำคัญ 2 ส่วนคือไฟล์ส่วนหัวโปรแกรม และไฟล์โปรแกรม ไฟล์ส่วนหัวโปรแกรมเป็นไฟล์ที่ใช้เก็บไลบราลีเพื่อใช้รวม (include) ในการคอมไพล์โปรแกรมซึ่งจะมีส่วนขยายเป็น *.h มีชื่อเรียกว่า Compiler Directive ไฟล์โปรแกรมจะเริ่มต้นด้วยฟังก์ชัน main() และตามด้วยเครื่องหมายปีกกาเปิด เพื่อเริ่มต้นเขียนโปรแกรม การเขียนโปรแกรมจะต้องเขียนด้วยอักษาภาษาอังกฤษตัวพิมพ์เล็กเสอม และเมื่อจบประโยคคำสั่ง จะใช้เครื่องหมายเซมิโคล่อน ( ; ) ในการคั่นแต่ละคำสั่ง ภายในโปรแกรมจะประกอบด้วยฟังก์ขันและส่วนของคำอธิบาย เมื่อเขียนคำสั่งเสร็จจะปิดท้ายโปรแกรมด้วยเครื่องหมายปีกกาปิดเสมอ

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

#include<library> /* ไฟล์ส่วนหัวโปรแกรม*/
void main(void) /*ฟังก์ชันหลักของโปรแกรม*/
{ /*เริ่มต้นการเขียนโปรแกรมด้วยเครื่องหมายปีกกาเปิด*/
variable declaration; /*การประกาศค่าตัวแปรที่ใช้ในโปรแกรม*/
program statement; /*ประโยคคำสั่งในโปรแกรม*/
} /*จบการเขียนโปรแกรมด้วยเครื่องหมายปีกกาปิด*/
#include<library> เป็นส่วนหัวหัว โปรแกรมที่จะต้องเขียนไว้เพื่อให้ใช้งานฟังก์ชันต่างๆ ในกรณีที่ต้องการทราบว่าฟังก์ชันใดถูกนิยามไว้ที่ใดให้ทำแถบสีที่ฟังก์ชัน ดังกล่าวและกดปุ่ม Ctrl+f1
main เป็นฟังก์ชันหลักของโปรแกรม
( ) ภายในวงเล็บเป็นค่าพารามิเตอร์ที่จะส่งผ่านไปทำงานยังฟังก์ชันอื่นๆ ถ้าไม่มีการ
ใส่ค่าแสดงว่าไม่ต้องการมีค่าพารามิเตอร์
{ ปีกกาเปิดแสดงการเริ่มต้นการเขียนโปรแกรม
variable declarations ประกาศตัวแปร
program statement การเขียนประโยคคำสั่ง
} ปีกกาปิดแสดงการจบการเขียนโปรแกรม
/*ข้อความ*/ คำอธิบายโปรแกรม ใช้ในการอธิบายความหมายของคำสั่งหรือสิ่งที่ต้องการเขียน
ไว้กันลืมจะไม่มีผลใดๆกับโปรแกรม แต่การเขียนจะต้องเริ่มต้นด้วยเครื่องหมาย /*

ตัวแปร (variable)  คือชื่อที่ผู้เขียนโปรแกรมตั้งขึ้น เพื่อใช้เก็บค่าที่ต้องการนำมาใช้งานในการเขียนโปรแกรม เพื่อทำการประมวลผลข้อมูล โดยมีกฏในการตั้งชื่อตัวแปรดังนี้

1. ต้องขึ้นต้นด้วยตัวอักษร ตัวต่อไปอาจจะเป็นตัวอักษรหรือตัวเลขก็ได้
2. ห้ามใช้สัญลักษณ์อื่นใด ยกเว้นเครื่องหมายสตริงก์ ($) และขีดล่าง (Underscore)
3. ตัวแปรอักษรภาษาอังกฤษตัวพิมพ์เล็กและตัวพิมพ์ใหญ่มีความหมายแตกต่างกัน
4. ห้ามเว้นวรรคระหว่างตัวแปร
5. ห้ามตั้งชื่อซ้ำกับคำสงวนในภาษาซ

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

รูปแบบ Type varible name
type ชนิดของตัวแปร ซึ่งอาจจะป็น char, int, float, double หรือตัวแปรชนิดอื่นๆ เป็นต้น
variable name ชื่อของตัวแปร ถ้ามีมากกว่า 1 ตัวให้ใช้เครื่องหมายคอมม่าคั่น

ตัวอย่างการประกาศตัวแปร

char n; ประกาศค่าตัวแปรชื่อ n เป็นข้อมูลชนิด character
float a,b,c; ประกาศค่าตัวแปรชื่อ a,b,c เป็นข้อมูลชนิด float
int number=1; ประกาศค่าตัวแปรชื่อ number เป็นข้อมูลชนิด integer และกำหนดให้ตัวแปร count มีค่าเท่ากับ 1
char name[15]; ประกาศตัวแปรชื่อ name เป็นลักษณะตัวแปรชุดเก็บชื่อยาวไม่เกิน 15 ตัวอักษร

คำสงวนในภาษา C

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

Auto Break Case Char Const
Default Do Double Else Enum
Short Signed Sizeof Extern Float
For Goto If Int Long
Return Register Continue While Static
Struct Switch Typedef Unon Unsigned
Void volatile

ฟังก์ชั่น  (Function)

ฟังก์ชัน clrscr(); เป็นฟังก์ชันที่ใช้ในการลบจอภาพ
ฟังก์ชัน printf(); เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูลที่อยู่ในตัวแปร ค่าคงที่ และนิพจน์ออกจอภาพ
ตัวอย่างที่ 1 printf(“Lampang”);   ความหมาย แสดงข้อความ Lampang ออกทางจอภาพ
ตัวอย่างที่ 2 printf(“%d”,num);     ความหมาย แสดงค่าตัวแปร num ในรูปเลขจำนวนเต็ม
ตัวอย่างที่ 3 printf(“5.2f”,area);   ความหมาย แสดงค่าที่เก็บอยู่ในตัวแปร area โดยจองพื้นที่ไว้ 5 ช่อง
ทศนิยม 2 ตำแหน่ง
ฟังก์ชัน scanf(); เป็นฟังก์ชันที่ใช้ในการรับข้อมูลจากแป้นพิมพ์เข้ามาเก็บไว้ในตัวแปร
ตัวอย่าง scanf(“%d”,&num);   ความหมาย รับค่าตัวเลขจำนวนเต็มแล้วนำมาเก็บไว้ในตัวแปร num
ฟังก์ชัน getch();  เป็นฟังก์ชันที่ใช้ในการรอรับการกดแป้นพิมพ์หนึ่งครั้ง โดยไม่ต้องกดปุ่ม Enter
และตัวอักษรที่ป้อนเข้ามาจะไม่ปรากฏบนจอภาพ
ฟังก์ชัน getchar(); เป็นฟังก์ชันที่ใช้ในการรับข้อมูลเข้ามาทางแป้นพิมพ์ทีละ 1 ตัวอักษร แล้วกด Enter 1 ครั้ง
ข้อมูลที่ป้อนจะแสดงบนจอภาพ
ฟังก์ชัน gets();  เป็นฟังก์ชันที่ใช้ในการรับข้อมูลที่เป็นข้อความจากแป้นพิมพ์เข้ามาเก็บไว้ในตัวแปรแบบอาเรย์
การใช้ฟังก์ชัน gets(); จะต้องมีการประกาศตัวแปรแบบอาเรย์ และกำหนดจำนวนตัวอักษรที่ต้องการป้อน
โดยคอมพิวเตอร์จะจองพื้นที่ไว้ตามจำนวนตัวอักษร แต่จะป้อนได้น้อยกว่าที่จองไว้ 1 ตัว เพื่อให้ตัวแปรเก็บ 0
อีก 1 ตัว
ฟังก์ชัน textcolor();  เป็นฟังก์ชันที่ใช้ในการกำหนดสีตัวอักษร โดยจะต้องใช้ร่วมกับฟังก์ชัน cprintf ซึ่งมีสีต่างๆ ให้เลือก
ตัวเลขค่าสีอาจจะพิมพ์เป็นตัวเลขหรือชื่อสีเป็นภาษาอังกฤษตัวพิมพ์ใหญ่ก็ได้
ตัวอย่างที่ 1 textcolor(4);
cprintf(“Lampang”);
ความหมาย แสดงข้อความ Lampang เป็นสีแดง
ตัวอย่างที่ 2 textcolor(MAGENTA);
cprintf(“BANGKOK”);
ความหมาย แสดงข้อความ BANGKOK เป็นสีม่วง
ตัวเลขค่าสี สีที่ปรากฏ
0 (BLACK) ดำ
1 (BLUE) น้ำเงิน
2 (GREEN) เขียว
3 (CYAN) ฟ้า
4 (RED) แดง
5 (MAGENTA) ม่วง
6 (BROWN) น้ำตาล
7 (LIGHTGRAY) เทาสว่าง
8 (DARKGRAY) เทาดำ
9 (LIGHTBLUE) น้ำเงินสว่าง
10 (LIGHTGREEN) เขียวสว่าง
11 (LIGHTCYAN) ฟ้าสว่าง
12 (LIGHTRED) แดงสว่าง
13 (LIGHTMAGENTA) ม่วงสว่าง
14 (YELLOW) เหลือง
15 (WHITE) ขาว
ฟังก์ชัน cprintf(); เป็นฟังก์ชันที่ใช้ในการพิมพ์ข้อความเหมือนฟังก์ชัน printf แต่จะแสดงเป็นสีต่างๆ ตามที่กำหนดไว้ในฟังก์ชัน                           textcolor การใช้ฟังก์ชัน cprintf ต้องกำหนดสีของตัวอักษรใน ฟังก์ชัน textcolor ก่อน
ตัวอย่างที่ 1 textcolor(5);
printf(“Lampang”);   ความหมาย แสดงข้อความ Lampang ออกทางจอภาพ
ตัวอย่างที่ 2 textcolor(15);
printf(“%d”,num);     ความหมาย แสดงค่าตัวแปร num ในรูปเลขจำนวนเต็ม
ตัวอย่างที่ 3 textcolor(7);
printf(“5.2f”,area);   ความหมาย แสดงค่าที่เก็บอยู่ในตัวแปร area โดยจองพื้นที่ไว้ 5 ช่อง
ทศนิยม 2 ตำแหน่ง
้ฟังก์ชัน textbackground(); เป็นฟังก์ชันที่ใช้ในการกำหนดสีพื้นให้กับตัวอักษร
ตัวอย่าง textbackground(14) ความหมาย กำหนดสีพื้นเป็นสีเหลือง

ชนิดข้อมูล (Data type)

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

1 ข้อมูลชนิดตัวอักษร (Character) คือข้อมูลที่เป็นรหัสแทนตัวอักษรหรือค่าจำนวนเต็ม ได้แก่ ตัวอักษร ตัวเลขและกลุ่มตัวอักขระพิเศษใช้พื้นที่ในการเก็บข้อมูล 1 ไบต ์
2 ข้อมูลชนิดจำนวนเต็ม (Integer) คือข้อมูลที่เป็นเลขจำนวนเต็ม ได้แก่ จำนวนเต็มบวก จำนวนเต็มลบ และศูนย์ ข้อมูลชนิดจำนวนเต็มใช้พื้นที่ในการเก็บข้อมูล ขนาด 2 ไบต์
3 ข้อมูลชนิดจำนวนเต็มที่มีขนาด 2 เท่า (Long Integer) คือข้อมูลที่เป็นเลขจำนวนเต็ม ใช้พื้นที่ในการเก็บเป็น 2 เท่าของ Integer คือมีขนาด 4 ไบต ์
4 ข้อมูลชนิดเลขทศนิยม (Float) คือข้อมูลที่เป็นเลขทศนิยม ขนาด 4 ไบต์
5 ข้อมูลชนิดเลขทศนิยมอย่างละเอียด (Double) คือข้อมูลที่เป็นเลขทศนิยม ใช้พื้นที่ในการเก็บข้อมูลเป็น 2 เท่าของ float คือมีขนาด 8 ไบต์

ตัวดำเนินการทางคณิตศาสตร์

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

ตัวดำเนินการ ความหมาย ตัวอย่าง
+ บวก (Addition) X + y
ลบ (Subtraction) X – y
* คูณ (Multiplication) X * y
/ หาร (Division) X / y
++ เพิ่มค่าครั้งละ 1(Increment) X++
ลดค่าครั้งละ 1(Decrement) X–
% หารเอาผลลัพธ์เฉพาะเศษ (Modulus) X % y

ตัวดำเนินการเปรียบเทียบ

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

8 > 5 ผลลัพธ์เป็นจริง ค่าคงที่บูลีนเป็น 1
0 = 10 ผลลัพธ์เป็นเท็จ ค่าคงที่บูลีนเป็น 0
X > x ผลลัพธ์เป็นจริง ค่าคงที่บูลีนเป็น 1(เปรียบเทียบค่าตามรหัสแอสกี)
A > B ผลลัพธ์เป็นจริง ค่าคงที่บูลีนเป็น 1(เปรียบเทียบค่าตามรหัสแอสกี)
ตัวดำเนินการ ความหมาย ตัวอย่าง
> มากกว่า (Greather Than) X > y
< น้อยกว่า (Less Than) X < y
>= มากกว่าหรือเท่ากับ (Greather Than or Equal) X >= y
<= น้อยกว่าหรือเท่ากับ (Less Than or Equal) X <= y
== เท่ากับ (Equal) X == y
!= ไม่เท่ากับ (Not Equal) X != y

ตัวดำเนินการทางตรรกะ

ตัวดำเนินการทางตรรกะในโปรแกรมภาษาซี คือเครื่องหมายที่ใช้เชื่อมเงื่อนไข 2 เงื่อนไข หรือมากกว่า 2 เงื่อนไข
เพื่อให้การเปรียบเทียบมีความละเอียดมากขึ้น ใช้สัญลักษณ์แทนในแต่ละเครื่องหมาย ดังตารางข้างล่างนี้

&& จะให้ผลลัพธ์เป็นจริงเมื่อเงื่อนไขทั้งสองเป็นจริง แต่ถ้าเงื่อนไขใดเป็นเท็จ หรือทั้งสองเงื่อนไขเป็นเท็จจะทำให้ผลลัพธ์เป็นเท็จ
|| จะให้ผลลัพธ์เป็นจริง เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง หรือเป็นจริงทั้งสองเงื่อนไข แต่ถ้าเป็นเท็จทั้งสองเงื่อนไขจะทำให้ผลลัพธ์เป็นเท็จ
! จะให้ผลลัพธ์เป็นจริง เมื่อเงื่อนไขหลัง not เป็นเท็จ แต่ถ้าเงื่อนไขหลัง not เป็นจริงจะทำให้ผลลัพธ์เป็นเท็จ ตัวดำเนินการ ความหมาย ตัวอย่าง
&& และ (and) Mark>=80&&mark<=100
|| หรือ (or) Score<0||score>100
! ไม่ (not) !x&&!y

นิพจน์คณิตศาสตร์

นิพจน์คณิตศาสตร์ในโปรแกรมภาษาซี คือการนำค่าคงที่หรือตัวแปรมาเชื่อมต่อกัน ด้วยเครื่องหมายทางคณิตศาสตร์ นิพจน์คณิตศาสตร์จะมีลักษณะคล้ายกับสมการทางคณิตศาสตร์ ดังนี้

c = a * b (10 + 5 ) * 10 % 9 = 15
(8 * a + 2 * b)/c 5 + (5 – 1 ) * 4 = 21

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

เครื่องหมาย ลำดับการประมวลผล
( ) 1
++,– 2
* / % 3
+ – 4
ตัวอย่าง 1   (10 -34) * 5 = 35 ลำดับการประมวลผล
10 – 3 = 7 แล้วคูณกับ 5 ได้ผลลัพธ์ 35
ตัวอย่าง 2   5 + 10 *2 = 25 ลำดับการประมวลผล
10 * 2 = 20 แล้วบวกดับ 5 ได้ผลลัพธ์ 25
ตัวอย่าง 3   (2 + 7) * 4 % 10 = 6 ลำดับการประมวลผล
2 + 7 = 9 แล้วคูณกับ 4 ได้ 36 หารแบบเอาเศษด้วย 10 ได้ 6
ตัวอย่าง 4   2 + 7 * 4 % 10 = 10 ลำดับการประมวลผล
7 * 4 = 28 แล้วหารแบบเอาเศษด้วย 10 ได้ 8 บวกกับ 2 เป็น 10
ตัวอย่าง 5   10 + 2 * 8 / 4 * 3 – 5 = 17 ลำดับการประมวลผล
1. 2 * 8 = 16
2. 16 / 4 = 4
3. 4 * 3 = 12
4. 12 + 10 = 22
5. 22 – 5 = 17

ตัวอย่างการเขียนโปรแกรมด้วยภาษา C

::ภาษาC::…++โปรแกรมคิดเกรด++…

#include <conio.h>
#include <stdio.h>
void main()
{
int score;
char grade;
printf(“Enter score : “);
scanf(“%d”,&score);
clrscr();
if (score > 100)
grade = ‘E’;
else if (score >= 80)
grade = ‘A’;
else if ((score >= 70) && (score < 80))
grade = ‘B’;
else if ((score >= 50) && (score < 70))
grade = ‘C’;
else if ((score >= 40) && (score < 50))
grade = ‘D’;
else grade = ‘E’;
printf(“You got %cn”,grade);
getch();
}

 

ขอขอบคุณข้อมูลจาก

1. http://www.lks.ac.th/anchalee/cindex-n.htm

2.  https://sites.google.com/site/spt532/test

3.https://kruaum.wordpress.com/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B8%AD%E0%B8%99/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2-c-%E0%B8%A1-5/

 

ใส่ความเห็น