ชนิดของข้อมูลและตัวแปร (Data Type and Variable)
ชนิดข้อมูล (Data Type)
แบ่งเป็น 3 ประเภทใหญ่คือ
1. ชนิดตัวเลข (Numeric Type)
2. ชนิดตัวอักษร (Character Type)
3. ชนิดไม่มีค่า (Valueless Type)
1. ชนิดตัวเลข (Numeric Type) เป็นข้อมูลที่นำมาคำนวณทางคณิตศาสตร์ได้ แบ่งย่อยได้อีก 4 ชนิด คือ
1.1 ข้อมูลชนิดจำนวนเต็ม (Integer) เป็นตัวเลขจำนวนเต็ม ทั้งจำนวนเต็มบวก จำนวนเต็มลบ จำนวนศูนย์ เช่น 40 , 0 , -65 , 3500 เป็นต้น
1.2 ข้อมูลชนิดทศนิยม (Floating Point) เป็นตัวเลขที่มีจุดทศนิยม ทั้งแบบชนิด ทศนิยมคงที่ ชนิดทศนิยมไม่รู้จบ และทศนิยมที่อยู่ในรูป E ยกกำลัง เช่น -20.55 , 45.123 , 3.23E+03 , 5.68E-01 เป็นต้น
1.3 ข้อมูลชนิดเลขฐานแปด (Octal) เป็นตัวเลขในระบบเลขฐานแปด สามารถเขียนได้โดยใช้เลขศูนย์ (0) นำหน้า และสามารถนำไปคำนวณได้เหมือนเลขฐานสิบ เช่น
025 เท่ากับ (25)8
0123 “ (123)8
05 “ (5)8
1.4 ข้อมูลชนิดเลขฐานสิบหก (Hexadecimal) เป็นตัวเลขในระบบเลขฐานสิบหก สามารถเขียนได้โดยใช้เลขศูนย์(0)และตัวเอ็กซ์ (X) นำหน้า และสามารถนำไปคำนวณได้เหมือนเลขฐานสิบ เช่น
0X38 เท่ากับ (38)16
0X7A “ (7A)16
0X22F “ (22F)16
2. ชนิดตัวอักษร (Character Type) แบ่งออกเป็น 2 ชนิดคือ
2.1 ข้อมูลชนิดอักขระ (Character) เป็นตัวอักษร ตัวเลข หรือสัญลักษณ์อื่น ๆ ที่มีขนาด 1 ตัวอักขระ (1 byte) และเขียนอยู่ภายในเครื่องหมาย ‘ ’ (Single Quote) เช่น ‘A’ , ‘a’, ‘\t’ , ‘\n’, ‘9’ ข้อมูลเหล่านี้จะถูกจัดเก็บในหน่วยความจำเป็นรหัสแอสกี (ASCII Code) เช่น
‘a’ จัดเก็บเป็น (97)10
‘A’ “ (65)10
‘@’ “ (64)10
2.2 ข้อมูลชนิดข้อความ (String) เป็นตัวอักษร ตัวเลข หรือสัญลักษณ์อื่น ๆ อาจมีขนาด 1 ตัวอักขระหรือมากกว่าก็ได้ และเขียนอยู่ภายในเครื่องหมาย “ ” (Double Quote) เช่น “C” , “C++” , “80” , “CIT Department” เป็นต้น
3. ชนิดไม่มีค่า (Valueless Type) ข้อมูลชนิดนี้จะไม่นำมาใช้ในการกำหนดชนิดของตัวแปร แต่จะนำไปใช้ในการสร้างและเรียกใช้งานฟังก์ชันเพื่อแสดงว่าฟังก์ชันนั้นไม่มีการส่งหรือรับค่าจากการเรียกใช้งานฟังก์ชัน
ตัวแปร(Variable)
ตัวแปร เป็นชื่อที่ผู้เขียนโปรแกรมตั้งขึ้นเองเพื่อใช้เรียกแทนหน่วยความจำที่เก็บข้อมูลในเครื่องคอมพิวเตอร์ ซึ่งการตั้งชื่อตัวแปรควรจะให้สื่อความหมายถึงข้อมูลที่ต้องการให้ตัวแปรเก็บค่า
การตั้งชื่อตัวแปรในภาษาซี มีกฎเกณฑ์ดังต่อไปนี้
1. ห้ามตั้งชื่อตัวแปรซ้ำกับคำสงวน (Reserve Word) หรือชื่อฟังก์ชันในภาษาซี
2. ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย Underscore (_)
3. ส่วนตัวถัดไปของชื่อจะใช้ตัวอักษร หรือตัวเลข หรือเครื่องหมาย _ ก็ได้ แต่ห้ามใช้สัญลักษณ์อื่น ๆ
4. ห้ามเว้นช่องว่างภายในชื่อตัวแปร
5. มีความยาวของชื่อได้ไม่เกิน 32 ตัวอักษร
6. ตัวอักษรตัวใหญ่กับตัวเล็ก จะมีความหมายแตกต่างกัน ดังนั้น หากมีการตั้งชื่อตัวแปร data Data และ DATA จะถือว่ามีการตั้งชื่อตัวแปร 3 ตัวที่แตกต่างกัน และเก็บค่าได้ 3 ค่า
คำสงวน(Reserved Word) คำสงวนคือคำที่มีความหมายที่โปรแกรมรู้จัก มีรูปแบบการใช้งานที่แน่นอน
คำสงวนใน C มาตรฐาน (ANSI Standard C) มีดังนี้
auto break case char const continue
default do double else enum extern
float for goto if int long
register return short signed sizeof static
struct switch typedef union unsigned void
volatile while
คำสงวนที่มีเพิ่มใน Borland C
asm _cs _ds _es _ss cdecl
far huge interrupt near pascal _export
ตัวอย่างการตั้งชื่อตัวแปรที่ถูกต้อง
num _num data_10 NameOfStudent Asian_1
ตัวอย่างการตั้งชื่อตัวแปรที่ไม่ถูกต้อง
2time data 5 asian-1 printf hi!
ชนิดของตัวแปรในภาษาซี (Type of Variable)
การเขียนโปรแกรมภาษาซีจะต้องมีการประกาศตัวแปรก่อนการใช้งาน ซึ่งการประกาศตัวแปรจะต้องให้สอดคล้องกับชนิดข้อมูลที่ตัวแปรเก็บค่า
ตัวแปรในภาษาซี สามารถแบ่งได้เป็นหลายชนิด เช่น ตัวแปรพื้นฐาน (Scalar) , ตัวแปรชุด (Array), ตัวแปรพอยน์เตอร์ (Pointer) และตัวแปรชนิดโครงสร้าง(Structures) แต่ในที่นี้จะกล่าวถึงเฉพาะตัวแปรพื้นฐาน ซึ่งเป็นตัวแปรที่เก็บข้อมูลได้เพียงค่าเดียวก่อน โดยตัวแปรพื้นฐานตามมาตรฐาน ANSI C สามารถแบ่งออกเป็นหลายชนิด ได้แก่
ตารางแสดงตัวแปรพื้นฐานของภาษาซีตามมาตรฐาน ANSI C
สำหรับตัวแปรที่กำหนดเป็นชนิด char จะสามารถรับข้อมูลจำนวนเต็มที่มีค่าระหว่าง -128 ถึง 127 ซึ่งสามารถนำตัวแปรชนิด char ไปคำนวณทางคณิตศาสตร์ได้
ถ้าหากต้องการใช้ข้อมูลชนิดเลขฐานแปดและข้อมูลชนิดเลขฐานสิบหกให้ประกาศตัวแปรสำหรับเก็บข้อมูลดังกล่าวเป็นชนิด int
การประกาศตัวแปร
1. การประกาศตัวแปรแบบไม่กำหนดค่าเริ่มต้น
รูปแบบ type var;
โดยที่ type คือชนิดของข้อมูล
var คือชื่อของตัวแปร
ตัวอย่าง int num;
char alpha;
หมายถึงการประกาศตัวแปรชื่อ num ให้เก็บค่าข้อมูลชนิดจำนวนเต็ม และประกาศตัวแปรชื่อ alpha เก็บข้อมูลชนิดตัวอักษร
------------------------------------------------------------------------
ในกรณีที่ต้องการประกาศตัวแปรหลาย ๆ ตัว ให้เก็บข้อมูลชนิดเดียวกัน จะมีรูปแบบดังนี้
รูปแบบ type var1,var2,var3,…,varN;
โดยที่ type คือชนิดของข้อมูล
var1,var2,var3,…,varN คือชื่อของตัวแปร n ตัว
ตัวอย่าง int num,data,total;
หมายถึงการประกาศตัวแปร 3 ตัว ชื่อ num, data และ total ให้เก็บค่าข้อมูลชนิดเดียวกันคือชนิดจำนวนเต็ม
หรือสามารถประกาศตัวแปรทีละครั้งได้ดังนี้
int num;
int data;
int total;
2. การประกาศตัวแปรและกำหนดค่าให้กับตัวแปร
รูปแบบ type var = value;
โดยที่ type คือชนิดของข้อมูล
var คือชื่อของตัวแปร
value คือค่าที่ต้องการกำหนดให้กับตัวแปร
ตัวอย่าง int sum = 0;
หมายถึงการประกาศตัวแปรชื่อ sum ให้เก็บข้อมูลชนิดจำนวนเต็ม โดยกำหนดให้มีค่าเริ่มต้นเป็น 0
ในกรณีที่ต้องการกำหนดตัวแปรหลาย ๆ ตัวให้เก็บข้อมูลชนิดเดียวกันและกำหนดค่าเริ่มต้นให้กับตัวแปรเหล่านั้น จะมีรูปแบบดังนี้
รูปแบบ type var1=value1,var2=value2,var3=value3,…,varN=valueN;
โดยที่ type คือชนิดของข้อมูล
var1,var2,var3,…,varN คือชื่อของตัวแปร n ตัว
value1,value2,value3,…,valueN คือค่าที่ต้องการกำหนดให้กับตัวแปร n ตัวตามลำดับ
ตัวอย่าง int sum = 0,total = 0;
หมายถึงการประกาศตัวแปรชื่อ sum และ total ให้เก็บตัวเลขจำนวนเต็ม ซึ่งกำหนดค่าเริ่มต้นให้ sum และ total มีค่าเป็นศูนย์
หรือสามารถประกาศตัวแปรดังนี้
int sum=total=0;
หมายถึงการประกาศตัวแปรชื่อ sum และ total ให้เก็บตัวเลขจำนวนเต็ม ซึ่งจะมีการกำหนดค่าเริ่มต้นให้ total มีค่าเป็นศูนย์ และ ให้ sum มีค่าเท่ากับค่าที่อยู่ในตัวแปร total นั่นคือตัวแปร sum ก็จะมีค่าเป็นศูนย์
การประกาศค่าคงที่
การกำหนดตัวแปรเป็นค่าคงที่(Constant) จะเป็นการกำหนดให้ตัวแปรมีค่าคงเดิมเท่ากับค่าที่กำหนดตลอดเวลาในขณะที่โปรแกรมทำงาน และจะไม่สามารถเปลี่ยนแปลงค่าของตัวแปรชนิดดังกล่าวภายในโปรแกรมได้ การใช้ค่าคงที่ทำได้โดยการเรียกชื่อค่าคงที่ ที่ประกาศไว้ ก็จะได้ข้อมูลตามที่กำหนด
รูปแบบที่ 1 const type var;
โดยที่ type คือ ชนิดของข้อมูล
var คือ ชื่อของค่าคงที่
ตัวอย่าง const int cost;
หมายถึง การกำหนดค่าคงที่ชื่อ cost จากนั้นในโปรแกรมจะมีการกำหนดค่าให้กับค่าคงที่ cost
รูปแบบที่ 2 const type var = constant or expression
โดยที่ type คือ ชนิดของข้อมูล
var คือ ชื่อของค่าคงที่
constant คือ ค่าคงที่
expression คือ นิพจน์
ตัวอย่าง const float pi = 3.14159;
หมายถึง การกำหนดค่าคงที่ pi มีค่าเท่ากับ 3.14159
ตัวอย่าง const float discount = amount*0.1;
หมายถึง การกำหนดค่าคงที่ discount มีค่าเท่ากับ amount * 0.1
ตัวอย่าง const char sex = ‘f’;
หมายถึง การกำหนดค่าคงที่ sex มีค่าเท่ากับ f
รูปแบบที่ 3 #define var constant or expression
โดยที่ var คือ ชื่อของค่าคงที่
constant คือ ค่าคงที่
expression คือ นิพจน์
ตัวอย่าง #define pi 3.14159
หมายถึงการกำหนดค่าคงที่ pi มีค่าเท่ากับ 3.14159
ตัวอย่าง #define pi 22/7
หมายถึงการกำหนดค่าคงที่ pi มีค่าเท่ากับ 22/7
ตัวอย่างที่ 1 ตัวอย่างการใช้ค่าคงที่
#include <stdio.h>
#define max 5
void main()
{ const int num = 3;
printf(“%d %d”,max,num);
}
ผลลัพธ์คือ 5 3
ตัวดำเนินการและนิพจน์ (Operator and Expression)
ตัวดำเนินการ เครื่องหมายของการดำเนินการในภาษาซี แบ่งออกเป็น 3 ชนิดใหญ่ ๆ ได้แก่
1. เครื่องหมายคณิตศาสตร์
เป็นเครื่องหมายที่ใช้ในการคำนวณทางคณิตศาสตร์ รวมถึงการกำหนดค่าต่าง ๆ ให้กับตัวแปร ซึ่งเครื่องหมายคณิตศาสตร์ที่มีใช้ในภาษาซี มีดังต่อไปนี้
ตารางแสดงเครื่องหมายคณิตศาสตร์
2. เครื่องหมายเปรียบเทียบ
เป็นเครื่องหมายที่ใช้ในเปรียบเทียบเงื่อนไข ซึ่งผลของการเปรียบเทียบจะเป็นได้ 2 กรณี คือ
- จริง (true) จะได้ค่าเป็น 1
- เท็จ (false) จะได้ค่าเป็น 0
เครื่องหมายเปรียบเทียบที่มีใช้ใน ภาษาซี มีดังต่อไปนี้
ตารางแสดงเครื่องหมายเปรียบเทียบ
ตัวอย่างการเปรียบเทียบโดยใช้เครื่องหมายเปรียบเทียบต่าง ๆ
1. 7 = = 7 ผลการเปรียบเทียบ true
2. 7 = = 9 “ false
3. 7 != 7 “ false
4. 7 != 9 “ true
5. 7 > 9 “ false
6. 7 > 7 “ false
7. 9 > 7 “ true
8. 9 > = 7 “ true
9. 9 > = 9 “ true
10. 7 < 9 “ true
11. 7 < 7 “ false
12. 7 < = 7 “ true
13. 7 < = 9 “ true
14. 9 < =7 “ false
3. เครื่องหมายตรรกศาสตร์
เป็นเครื่องหมายที่ใช้ในการเปรียบเทียบ โดยนำเงื่อนไข 2 เงื่อนไขมาทำการเปรียบเทียบกัน ผลที่ได้จากการเปรียบเทียบจะเป็นได้ 2 กรณี คือ
- จริง (True) จะได้ค่าเป็น 1
- เท็จ (False) จะได้ค่าเป็น 0
เครื่องหมายตรรกศาสตร์ที่มีใช้ใน ภาษาซี มีดังต่อไปนี้
1) เครื่องหมาย && (AND)
เป็นการนำเงื่อนไข 2 เงื่อนไขมาเปรียบเทียบกันโดยใช้เครื่องหมาย && หรือที่เรียกว่า AND ผลที่ได้จากการเปรียบเทียบจะเป็นไปดังตารางต่อไปนี้
โดยที่ T หมายถึง เงื่อนไขที่เป็นจริง
F “ เงื่อนไขที่เป็นเท็จ
A “ เงื่อนไขที่ 1
B “ เงื่อนไขที่ 2
2) เครื่องหมาย | | (OR)
เป็นการนำเงื่อนไข 2 เงื่อนไขมาเปรียบเทียบกันโดยใช้เครื่องหมาย | | หรือที่เรียกว่า OR ผลที่ได้จากการเปรียบเทียบจะเป็นไปดังตารางต่อไปนี้
3) เครื่องหมาย ! (NOT)
เป็นการเปลี่ยนค่าความจริงของเงื่อนไข ให้เป็นตรงกันข้าม โดยใช้เครื่องหมาย ! หรือที่เรียกว่า NOT ผลการเปรียบเทียบจะเป็นไปดังตารางต่อไปนี้
ตัวอย่างการเปรียบเทียบโดยใช้เครื่องหมายตรรกศาสตร์ต่าง ๆ
หมายเหตุ ในภาษาซี 0 (ศูนย์) จะมีค่าความจริงเป็นเท็จ ส่วนตัวเลขที่ไม่เท่ากับศูนย์จะมีค่าความจริง เป็น จริง เช่น 1 มีค่าความจริงเป็น จริง และ -1 มีค่าความจริงเป็น จริง
นิพจน์ (Expression)
นิพจน์ เป็นการนำตัวแปร ค่าคงที่ มากระทำกันโดยใช้เครื่องหมายคณิตศาสตร์ เครื่องหมายเปรียบเทียบ หรือเครื่องหมายตรรกศาสตร์ สามารถแบ่งนิพจน์ออกเป็น 2 ประเภท ได้แก่
1. นิพจน์ทางคณิตศาสตร์
เป็นการนำค่าคงที่หรือตัวแปร มากระทำกันโดยใช้เครื่องหมายทางคณิตศาสตร์ เช่น
A * B + C
6 / (4-2)
(2 * A+ B) / C
2. นิพจน์ทางตรรกศาสตร์
เป็นการนำค่าคงที่ หรือตัวแปร หรือนิพจน์ มากระทำกันโดยใช้เครื่องหมายเปรียบเทียบและเครื่องหมายตรรกศาสตร์เป็นตัวเชื่อม ผลที่ได้จากการดำเนินการจะเป็นได้ 2 กรณี คือ
- จริง (true) จะได้ค่าเป็น 1
- เท็จ (false) จะได้ค่าเป็น 0
ตัวอย่างการเขียนนิพจน์ทางตรรกศาสตร์ กำหนดให้ a = 4 , b = 8
(a + 2) > (b + 2) ผลที่ได้ F
(a == 4) && (a < b) ผลที่ได้ T
a != b ผลที่ได้ T
ลำดับของการดำเนินการเครื่องหมายของนิพจน์
นิพจน์ที่มีการใช้เครื่องหมายในการดำเนินการหลายประเภท ตัวแปลภาษาซีจะกระทำตามลำดับความสำคัญของเครื่องหมาย ถ้าเครื่องหมายอยู่ในลำดับเดียวกันจะกระทำจากซ้ายไปขวา ตามที่ได้กำหนดไว้ ดังนี้
ตัวอย่าง กำหนดนิพจน์ ((6 / 3) + 4 * 8)
การทำงานคือ 1) 6/3 = 2 เครื่องหมายที่ยังไม่ได้ทำงาน + *
2) 4*8 = 32 เครื่องหมายที่ยังไม่ได้ทำงาน +
3) 2+32 = 34
ตัวอย่าง กำหนดนิพจน์ 5 + 9 / 2 * 1
การทำงานคือ 1) 9/2 = 4.5 เครื่องหมายที่ยังไม่ได้ทำงาน + * 2) 4.5*1 = 4.5 เครื่องหมายที่ยังไม่ได้ทำงาน +
3) 5+4.5 = 9.5
ตัวอย่าง กำหนดนิพจน์ 9 – 2 * 2 && 7 % 2
การทำงานคือ 1) 2*2 = 4 เครื่องหมายที่ยังไม่ได้ทำงาน - && %
2) 7%2 = 1 เครื่องหมายที่ยังไม่ได้ทำงาน - &&
3) 9-4 = 5 เครื่องหมายที่ยังไม่ได้ทำงาน && 4) 5 &&1 = 1 (เนื่องจากในภาษาซี 5 และ 1 มีค่าความจริงเป็นจริง เนื่องจากไม่ใช่ 0(ศูนย์) ดังนั้น เมื่อนำมา AND กันจึงได้ผลลัพธ์เป็นจริง ซึ่งในภาษาซี คือ 1)
ตัวอย่าง กำหนดนิพจน์ b = ! - - a + 2 กำหนดให้ a มีค่าเป็น 1
การทำงานคือ 1) - - a = 0 เครื่องหมายที่ยังไม่ได้ทำงาน ! +
2) !0 = 1 เครื่องหมายที่ยังไม่ได้ทำงาน +
(เนื่องจาก 0 (ศูนย์) มีค่าความจริงเป็นเท็จ ดังนั้นปฏิเสธ เท็จ(!0) จึงได้เป็นจริง คือ 1)
3) 1 + 2 = 3
4) b = 3