2. ตัวแปร (variables)
คอมพิวเตอร์มีส่วนประกอบที่สำคัญส่วนหนึ่งคือ
หน่วยความจำ
หน่วยความจำเปรียบได้กับสมองของมนุษย์ทำหน้าที่เก็บข้อมูลในขณะที่ประมวลผล
ในการประมวลผลแต่ละครั้งมักต้องใช้ข้อมูลจำนวนมาก อาทิ ชื่อนักเรียน
คะแนนสอบวิชาคอมพิวเตอร์ คะแนนสอบวิชาคณิตศาสตร์ จำนวนหน่วยกิต คะแนนเฉลี่ย
เป็นต้น ซึ่งจำเป็นจะต้องนำข้อมูลเหล่านี้ไปเก็บไว้ในหน่วยความจำ และเมื่อเก็บแล้ว
จะต้องทราบตำแหน่งที่นำข้อมูลเข้าไปเก็บไว้ภายในของหน่วยความจำด้วย
เพื่อให้สามารถนำข้อมูลเหล่านั้นกลับมาประมวลผลได้ ในภาษาคอมพิวเตอร์ระดบสูง
เพื่อความสะดวกในการเขียนโปรแกรม การจดจำตำแหน่งที่ใช้ในการเก็บข้อมูล
จะทำโดยการตั้งชื่อให้กับตำแหน่งของหน่วยความจำที่ใช้เก็บข้อมูลนั้น
จากนั้นระบบปฏิบัติการจะช่วยจัดการในการหาตำแหน่งที่อยู่ที่แจ้จริงของข้อมูลต่อไป
ตัวแปร เป็น
ชื่อของหน่วยความจำที่ตำแหน่งใดๆ เมื่อนำข้อมูลไปเก็บไว้ในหน่วยความจำตำแหน่งนั้น
จะกล่าวว่า ตัวแปรนั้นมีค่าเท่ากับข้อมูลที่เก็บไว้ ตัวแปรสามารถเก็บค่าชนิดต่างๆ ตามที่ได้ประกาศไว้ในโปรแกรมเท่านั้น
เช่น
-
ตัวแปรที่ใช้เก็บข้อมูลชนิดจำนวนเต็ม
-
ตัวแปรที่ใช้เก็บข้อมูลชนิดจำนวนจริง
-
ตัวแปรที่ใช้เก็บข้อมูลชนิดอักขระ
-
ตัวแปรที่ใช้เก็บข้อมูลชนิดสายอักขระ
ตัวแปรเหล่านี้จะไม่สามารถเก็บค่าชนิดอื่นนอกเหนือจากชนิดที่ประกาศไว้
และค่าที่เก็บไว้ในตัว
แปรนี้สามารถเปลี่ยนค่าได้ตลอดเวลา
ขึ้นกับข้อความสั่งภายในโปรแกรม
กฎการตั้งชื่อตัวแปร
การตั้งชื่อตัวแปรมีข้อกำหนดดังนี้
- ประกอบด้วย a ถีง z, 0
ถึง 9 และ _ เท่านั้น
- อักขระตัวแรกต้องเป็น a ถึง z และ _
- ห้ามใช้ชื่อเฉพาะ
- ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก
มีความหมายที่แตกต่างกัน
- ยาวสูงสุด 31 ตัวอักษร
หากตั้งชื่อตัวแปรไม่ตรงตามข้อกำหนด
ก็จะทำให้ตัวแปลโปรแกรมไม่เข้าใจ ไม่ทราบว่า ชื่อนั้นคืออะไร
ซึ่งจะทำให้เกิดข้อผิดพลาดขึ้นในระหว่างการแปลโปรแกรม
ชนิดข้อมูล
(data
types)
ข้อมูลที่ใช้ในโปรแกรมมีหลายชนิด
ซึ่งนักเขียนโปรแกรมต้องเลือกใช้ความเหมาะสมกับการใช้งาน
ข้อมูลมีขนาดที่แตกต่างกันไปตามชนิดข้อมูล นอกจากนี้แล้ว
ชนิดข้อมูลยังอาจมีขนาดที่แตกต่างกันโดยขึ้นกับเครื่องคอมพิวเตอร์และตัวแปลโปรแกรมที่ใช้ในการประมวลผล
แต่โดยทั่วไปแล้วในไมโครคอมพิวเตอร์ ชนิดข้อมูลมีการใช้ในโปรแกรมและขนาดดังนี้
ชนิดของตัวแปร
|
ขนาด
(bits)
|
ขอบเขต
|
ข้อมูลที่เก็บ
|
char
|
8
|
-128 ถึง 127
|
ข้อมูลชนิดอักขระ ใช้เนื้อที่ 1 byte
|
unsigned char
|
8
|
0 ถึง 255
|
ข้อมูลชนิดอักขระ ไม่คิดเครื่องหมาย
|
int
|
16
|
-32,768 ถึง 32,767
|
ข้อมูลชนิดจำนวนเต็ม ใช้เนื้อที่ 2 byte
|
unsigned int
|
16
|
0 ถึง 65,535
|
ข้อมูลชนิดจำนวนเต็ม
ไม่คิดเครื่องหมาย
|
short
|
8
|
-128 ถึง 127
|
ข้อมูลชนิดจำนวนเต็มแบบสั้น
ใช้เนื้อที่ 1 byte
|
unsigned short
|
8
|
0 ถึง 255
|
ข้อมูลชนิดจำนวนเต็มแบบสั้น
ไม่คิดเครื่องหมาย
|
long
|
32
|
-2,147,483,648 ถึง 2,147,483,649
|
ข้อมูลชนิดจำนวนเต็มแบบยาว
ใช้เนื้อที่ 4 byte
|
unsigned long
|
32
|
0 ถึง 4,294,967,296
|
ข้อมูลชนิดจำนวนเต็มแบบยาว
ไม่คิดเครื่องหมาย
|
float
|
32
|
3.4*10e(-38) ถึง 3.4*10e(38)
|
ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 4 byte
|
double
|
64
|
3.4*10e(-308) ถึง 3.4*10e(308)
|
ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 8 byte
|
long double
|
128
|
3.4*10e(-4032) ถึง 1.1*10e(4032)
|
ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 16 byte
|
ตัวแปรชนิดตัวเลข
(numeric
variable types)
ตัวแปรชนิดตัวเลขแบ่งได้เป็น 2 กลุ่ม คือ
1.
ตัวแปรจำนวนเต็ม (integer
variables) หมายถึง ตัวแปรที่ใช้เก็บค่าที่เป็นจำนวนเต็ม
ได้แก่
char,
int, short, long, unsigned char, unsigned int, unsigned short และ
unsigned long
ตัวอย่าง
ลักษณะการจัดเก็บตัวแปรจำนวนเต็ม ใช้เนื้อที่ 16 บิต ประกอบด้วย บิต
เครื่องหมาย
(sign
bit) 1 บิต และบิตข้อมูล (data bits) 15 บิต
|
|
|
|
|
เช่น
· +15
· -2789
· 30
· -8
ตัวอย่าง
ลักษณะการจัดเก็บตัวแปรจำนวนเต็มไม่มีเครื่องหมาย ใช้เนื้อที่เก็บข้อมูล 16 บิต
โดยไม่มี
การเก็บเครื่องหมาย
|
เช่น
· 19
· 1000
· 45
· 8
2. ตัวแปรจำนวนเต็ม (real
variables) หรือ ตัวแปรจุดลอยตัว (floating-point variables)
หมายถึง
ตัวแปรที่ใช้เก็บค่าที่เป็นจำนวนจริง ซึ่งเป็นตัวเลขที่เป็นเศษส่วน
หรือมีจุดทศนิยม ได้แก่
-
ชนิด float
ใช้เนื้อที่เก็บข้อมูล 64 บิต
ตัวอย่าง
ลักษณะการจัดเก็บตัวแปรจำนวนจริงชนิด float ใช้เนื้อที่เก็บข้อมูล
32 บิต ประกอบด้วย บิตเครื่องหมาย (sign bit) 1 บิต
เลขชี้กำลัง (exponent) 8 บิต และแมนทิสซา 23 บิต
บิตเครื่องหมาย
|
เลขชี้กำลัง
|
แมนทิสซา
|
- ชนิด double
ใช้เนื้อที่เก็บข้อมูล 64 บิต
การประกาศตัวแปร
การประกาศตัวแปรทำได้โดย
เขียนข้อความสั่งขึ้นต้นด้วยชนิดข้อมูล ตามด้วยชื่อตัวแปร
และจบข้อความสั่งประกาศตัวแปรด้วยเครื่องหมายอัฒภาค ( ;
) ดังนี้
ชนิดข้อมูล
ชื่อตัวแปร;
ถ้าต้องการประกาศตัวแปรชนิดเดียวกันหลายตัว
ต้องคั่นระหว่างตัวแปรด้วยเครื่องหมายจุลภาค ( , ) และจบข้อความสั่งประกาศตัวแปรด้วยเครื่องหมายอัฒภาค
( ; ) ดังนี้
ชนิดข้อมูล ชื่อตัวแปร 1,ชื่อตัวแปร 2, ….. ;
เช่น
int count; //ประกาศตัวแปรชื่อ count ใช้เก็บข้อมูลชนิด integer
int m, n; //ประกาศตัวแปรชื่อ m
และ n ใช้เก็บข้อมูลชนิด integer
int no = 10; /*ประกาศตัวแปรที่ใช้เก็บข้อมูลชนิด integer ชื่อ no
และเก็บค่า
10 ไว้ในตัวแปรดังกล่าว*/
long number; //ประกาศตัวแปรชื่อ number ใช้เก็บข้อมูลชนิด long
integer
float percent, total; /*ประกาศตัวแปรชื่อ percent
และ total ใช้สำหรับเก็บข้อมูลชนิด
float*/
การกำหนดค่าให้ตัวแปรชนิดตัวเลข
การกำหนดค่าให้ตัวแปร
ทำได้โดยการประกาศตัวแปรและกำหนดค่าให้กับตัวแปรไว้ในคำสั่งเดียวกัน หรือ
อาจทำได้อีกวิธีหนึ่งคือ ประกาศตัวแปรก่อน
จากนั้นจึงกำหนดค่าให้กับตัวแปรในอีกข้อความสั่งหนึ่ง เช่น
int no = 10; /*ประกาศตัวแปรที่ใช้เก็บข้อมูลชนิด
integer ชื่อ no และ เก็บค่า 10
ไว้ในตัว
แปรดังกล่าว*/
int no; //ประกาศตัวแปรที่ใช้เก็บข้อมูลชนิด integer ชื่อ no
no = 10; //เก็บค่า 10
ไว้ในตัวแปร no
ตัวแปรชนิดอักขระ
(character
variable types)
ตัวแปรชนิดอักขระ (char)
ถูกจัดเก็บไว้ในหน่วยความจำในรูปแบบจำนวนเต็ม ขนาด 1 ไบต์ ดังนั้น
ตัวแปรชนิดอักขระจึงสามารถใช้งานได้ทั้งแบบอักขระ และจำนวนเต็ม
ตัวอย่าง การใช้ตัวแปรชนิดอักขระ
#include
<stdio.h>
void
main()
{
printf("%c %d\n ", 'a ', 'a
');
}
ผลการกระทำ
a 97
printf("%c %d\n", 'a', 'a'); เป็นฟังก์ชันที่ใช้สำหรับให้แสดงอักขระ a
ในรูปแบบของ จำนวนเต็ม (%d) ส่วน \n
หมายถึง ให้เลื่อนตัวชี้ตำแหน่ง (cursor) ไปที่ต้นบรรทัดใหม่
ตัวอย่าง การใช้ตัวแปรชนิดอักขระ
#include
<stdio.h>
void
main()
{
char c1,
c2; //ประกาศตัวแปรชื่อ c1 และ c2
c1 = 'a'; //นำ a ไปเก็บไว้ใน c1
c2 = 'A'; //นำ A ไปเก็บไว้ใน c2
printf("\n c1 = %c",
c1); /*เลื่อนตัวชี้ตำแหน่งไปที่ต้นบรรทัดใหม่ แล้วแสดง
ข้อความ c1 = a (ค่าของ c1 คือ a) */
printf("\n
c2 = %c", c2); /*เลื่อนตัวชี้ตำแหน่งไปที่ต้นบรรทัดใหม่ แล้วแสดง
ข้อความ c2 = A (ค่าของ c2 คือ A) */
}