|
|
|
|
มีความรู้ความเข้าใจชนิดข้อมูล ตัวแปร ค่าคงที่ ตัวดำเนินการและนิพจน์ |
|
|
|
|
1. บอกชนิดของข้อมูลพื้นฐานของภาษาซีได้ |
2. บอกขั้นตอนการใช้ตัวแปรและประกาศตัวแปรได้ |
3. บอกวิธีการใช้ค่าคงตัวและค่าคงที่ได้ |
4. อธิบายการใช้ตัวดำเนินการและนิพจน์ในการเขียนโปรแกรมได้ |
5. บอกลำดับการคำนวณของตัวดำเนินการในนิพจน์ได้ |
|
|
|
|
|
|
|
|
|
ชนิดของข้อมูลพื้นฐาน (Basic Types) ในภาษาซี มีอยู่ 5 แบบ ดังนี้
3.1.1 ข้อมูลแบบบูลีน (Boolean)
เรียกว่าแบบ bool หมายถึง ข้อมูลที่มีค่าเป็น 0 ถือว่าเป็นเท็จ (False) หรือมีค่าเป็น 1
ถือว่าเป็นจริง (True)
3.1.2 ข้อมูลแบบตัวอักษร (Character)
เรียกว่าแบบ char หมายถึง ข้อมูลที่มีค่าเป็นตัวอักษรหนึ่งตัว อยู่ในเครื่องหมายสัญประกาศ (Apostrophe) เช่น 'A'
3.1.3 ข้อมูลแบบตัวเลขจำนวนเต็ม (Integer)
เรียกว่าแบบ int หมายถึง ข้อมูลที่มีค่าเป็นตัวเลขจำนวนเต็ม แบ่งได้เป็น
แบบเก็บค่าได้ทั้งเป็นบวกและลบ
(Signed Integer Types) |
แบบเก็บค่าได้เฉพาะบวก
(Unsigned Integer Types) |
signed char |
|
unsigned char |
short int |
หรือ signed short int |
unsigned short int |
int |
หรือ signed int |
unsigned int |
long int |
หรือ signed long int |
unsigned long int |
long long int |
หรือ signed long long int |
unsigned long long int |
3.1.4 ข้อมูลแบบเลขจำนวนจริง (Real Floating Types)
เรียกว่าแบบ float หมายถึง ข้อมูลที่เป็นตัวเลขจำนวนจริง แบ่งได้เป็น
- float หมายถึง ตัวเลขแบบ Single precision (ทศนิยมถูกต้อง 6 ตำแหน่ง)
- double หมายถึง ตัวเลขแบบ Double precision (ค่าทศนิยมถูกต้อง 15 ตำแหน่ง)
- long double หมายถึง ตัวเลขที่มีค่าได้มากกว่าแบบ double และค่าทศนิยมถูกต้อง
18 ตำแหน่ง
3.1.5 ข้อมูลแบบไม่มีค่า (Empty)
เรียกว่าแบบ void หมายถึง ข้อมูลที่ไม่ต้องการกำหนดค่า |
|
ตารางแสดงค่าที่ใช้ได้ของข้อมูลแบบต่าง ๆ ตามมาตรฐาน C99 |
|
แบบข้อมูล |
ค่าข้อมูลต่ำสุด |
ค่าข้อมูลสูงสุด |
bool |
0 |
1 |
char |
1 ตัวอักษร |
1 ตัวอักษร |
signed char |
-127 |
127 |
unsigned char |
0 |
255 |
short int |
-32,767 |
32,767 |
int |
-32,767 |
32,767 |
unsigned short int |
0 |
65,535 |
unsigned int |
0 |
65,535 |
long int |
-2,147,483,647 |
2,147,483,647 |
unsigned long int |
0 |
4,294,967,295 |
long long int |
-9,223,372,036,854,775,807 |
9,223,372,036,854,775,807 |
unsigned long long int |
0 |
18,446,744,073,709,551,615 |
float |
1.175494E-38 |
3.402823E+38 |
double |
2.225074E-308 |
1.797693E+308 |
long double |
3.3621E-4932 (32 bits) |
1.189731E+4932 (32 bits) |
|
หมายเหตุ : |
- ตัวแปลภาษาซี หลายตัวยังไม่รองรับมาตรฐาน C99 ค่าที่ใช้ได้อาจต่างไปจากตารางนี้ |
- เลขแบบวิทยาศาสตร์ (Scientific Notation) "E" หมายถึง คูณด้วย 10 ยกกำลัง |
|
|
|
|
|
ตัวแปร (Variable) หมายถึง ชื่อที่ผู้เขียนโปรแกรมตั้งขึ้นแทนตำแหน่งบนหน่วยความจำ สำหรับเก็บข้อมูลระหว่างการประมวลผล ซึ่งอาจเป็นข้อมูลนำเข้า ข้อมูลที่เกิดจากการดำเนินการ หรือข้อมูลผลลัพธ์
การตั้งชื่อตัวแปร จะต้องเป็นไปตามหลักการตั้งชื่อของภาษาซี และชื่อที่เหมาะสม ควรเป็นชื่อที่สื่อความหมาย ซึ่งกฎในการตั้งชื่อ มีดังนี้
1. ต้องประกอบขึ้นจากตัวอักษร ตัวเลข และเครื่องหมายขีดเส้นใต้ (underscore) เท่านั้น
2. อักขระตัวแรกจะต้องเป็นตัวอักษร หรือเครื่องหมายขีดเส้นใต้ (underscore) เท่านั้น
3. อักขระตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ถือเป็นตัวอักษรคนละตัวกัน เช่น A และ a เป็นชื่อที่แตกต่างกัน เป็นต้น
4. ชื่อตัวแปรตามมาตฐาน ANSI C จะมีความยาวไม่จำกัด แต่คอมไพเลอร์ตามมาตรฐาน ANSI C
จะต้องสามารถจำแนกชื่อที่แตกต่างกันได้อย่างมาก 31 อักขระแรก
5. ชื่อตัวแปรต้องไม่ซ้ำกับคำสงวน |
|
คำสงวน (Reserved Words) หมายถึง คำที่สงวนไว้สำหรับเรียกใช้ตามวัตถุประสงค์ที่กำหนดไว้เฉพาะ เช่น คำที่ใช้ในคำสั่งควบคุมและชนิดของข้อมูล เป็นต้น คำสงวนในภาษา C มีดังนี้ |
|
auto |
double |
int |
struct |
break |
else |
long |
switch |
case |
enum |
register |
typedef |
char |
extern |
return |
union |
const |
float |
short |
unsigned |
continue |
for |
signed |
void |
default |
goto |
sizeof |
volatile |
do |
if |
static |
while |
|
|
|
|
|
|
ตัวแปรที่ใช้ในภาษาซี จะต้องมีการประกาศชนิดของตัวแปรให้สอดคล้องกับข้อมูลที่จะเก็บในตัวแปรนั้น และจะต้องประกาศชนิดของตัวแปรไว้ก่อน จึงจะเรียกใช้ตัวแปรนั้น ๆ ได้ ชนิดของตัวแปรมีดังนี้ |
|
ชื่อชนิดของตัวแปร |
ความหมายชนิดของตัวแปร |
int |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นเลขจำนวนเต็ม |
float |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นเลขจำนวนจริง |
short |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นเลขจำนวนเต็ม
ที่มีค่าน้อยกว่าค่าของตัวแปรที่ประกาศเป็นชนิด int |
long |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นเลขจำนวนเต็มหรือ
จำนวนจริง
ที่มีจำนวนบิตมากเป็น 2 เท่า |
double |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นเลขจำนวนจริง
ที่มีจำนวนบิตมากเป็น 2 เท่าของ float |
unsigned |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นเลขจำนวนเต็มบวกเท่านั้น |
char |
ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นตัวอักขระ |
|
|
ในภาษาซี สามารถประกาศตัวแปร ได้ตามรูปแบบคำสั่งดังนี้ |
|
|
|
|
|
|
|
ค่าคงตัว (literal constant) หมายถึง ข้อมูลที่ระบุเป็นอย่างใดอย่างหนึ่งในโปรแกรม และมีชนิดของข้อมูล ตามค่าของข้อมูลนั้น ๆ เช่น |
|
|
10 |
เป็นค่าคงตัวชนิดจำนวนเต็ม |
15.85 |
เป็นค่าคงตัวชนิดจำนวนจริง |
10.00 |
เป็นค่าคงตัวชนิดจำนวนจริง |
'A' |
เป็นค่าคงตัวชนิดอักขระ |
"ABC" |
เป็นค่าคงตัวชนิดสายอักขระ |
|
|
นอกจากการใช้ค่าคงตัวแล้ว ยังสามารถกำหนดชื่อตัวแปร เพื่อใช้แทนค่าคงตัวในโปรแกรมได้ด้วย
ซึ่งจะเรียกชื่อตัวแปรนี้ว่า ค่าคงที่ (constant) โดยใช้คำสั่งตัวประมวลผลก่อนซี #define |
|
รูปแบบ |
#define ตัวแปร ค่าคงตัว |
|
|
ตัวอย่าง |
#define GRAVITY 9.81 |
มีความหมายดังนี้ |
|
ประกาศตัวแปรค่าคงที่ ชื่อ GRAVITY ไว้สำหรับเก็บข้อมูล 9.81
เป็นจำนวนจริง |
|
|
|
|
|
|
|
ตัวดำเนินการ ในโปรแกรมภาษาซี มีการใช้ตัวดำเนินการอยู่ 3 ชนิดใหญ่ ๆ ดังนี้ |
|
3.5.1 ตัวดำเนินการคำนวณ (Arithmetic Operators) คือ เครื่องหมายที่ใช้ในการคำนวณบวก
ลบ คูณ หาร ค่าต่าง ๆ เครื่องหมายที่ใช้มีดังนี้ |
|
|
|
3.5.2 ตัวดำเนินการเปรียบเทียบ (Relational and Logical Operators) หมายถึง เครื่องหมายที่ใช้ในการเปรียบเทียบและตัดสินใจ ซึ่งผลที่ได้จากการดำเนินการ จะได้ 2 กรณี คือ จริง จะให้ค่าเป็น 1 และ เท็จ จะให้ค่าเป็น 0 เครื่องหมายที่ใช้มีดังนี้ |
|
|
|
3.5.3 ตัวดำเนินการตรรกะ (Logical Operators) หมายถึง ตัวดำเนินการที่ใช้ในการเปรียบเทียบและตัดสินใจ โดยนำเงื่อนไขตั้งแต่ 2 เงื่อนไข มาเปรียบเทียบกัน ผลที่ได้จากการดำเนินการ จะได้ผลเป็น 2 กรณี คือ จริง จะให้ค่าเป็น 1 และเท็จ จะให้ค่าเป็น 0 เช่นเดี่ยวกับตัวดำเนินการเปรียบเปรียบเทียบ ตัวดำเนินการที่ใช้มีดังนี้ |
|
ตัวดำเนินการ |
ความหมาย |
ผลของการดำเนินการ |
&& |
AND หมายถึง การนำเงื่อนไข 2 เงื่อนไข มาดำเนินการกัน แล้วจะได้ผลของการดำเนินการ ดังแสดงในตาราง >>> |
|
P |
Q |
P && Q |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|| |
OR หมายถึง การนำเงื่อนไข 2 เงื่อนไข มาดำเนินการกัน แล้วจะได้ผลของการดำเนินการ ดังแสดงในตาราง >>> |
|
P |
Q |
P || Q |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
|
! |
NOT หมายถึง การนำเงื่อนไขมาดำเนินการกัน แล้วได้ผลของการดำเนินการ ดังแสดงในตาราง >>> |
|
|
|
|
|
|
|
|
นิพจน์ (Expression) หมายถึง การนำตัวแปร ค่าคงที่ มาสัมพันธ์กันโดยใช้ตัวดำเนินการอย่างหนึ่งอย่างใดเป็นตัวเชื่อม |
|
3.6.1 นิพจน์ แบ่งออกได้เป็น |
|
1. นิพจน์ทางคณิตศาสตร์ (Arithmetic Expression) |
|
นิพจน์ทางคณิตศาสตร์ หมายถึง การนำตัวแปร ค่าคงที่ มาสัมพันธ์โดยใช้ตัวดำเนินการทางคณิตศาสตร์ เป็นตัวเชื่อม ผลลัพธ์ที่ได้ จะเป็นตัวเลข |
|
นิพจน์คณิตศาสตร์ |
นิพจน์ภาษาซี |
5z |
5*z |
3x + 5y |
3*x + 5*y |
x2 - y2 |
x*x - y*y |
(a + b) c |
(a + b) / c |
3x - 8xy + 15y2 |
3*x - 8*x*y + 15*y*y |
|
|
2. นิพจน์ทางตรรกะ (Logical Expression) |
|
นิพจน์ทางตรรกะ หมายถึง การนำตัวแปร ค่าคงที่ หรือนิพจน์ มาสัมพันธ์กัน โดยใช้ตัวดำเนินการเปรียบเทียบและตัวดำเนินการตรรก เป็นตัวเชื่อม ผลที่ได้จะเป็น จริง หรือ เท็จ คือ จะให้ค่าเป็น 1 หรือ 0 ออกมาเป็นผลลัพธ์ สามารถนำผลไปคำนวณต่อได้ |
|
ถ้า x มีค่าเป็น 4 , y มีค่าเป็น 7 , z มีค่าเป็น 4 หากนำมาเขียนเป็นนิพจน์จะได้ผลดังตาราง |
|
นิพจน์ |
ความหมาย |
x == y |
ผลลัพธ์ที่ได้ คือ ไม่จริง จะให้ค่าเป็น 0 |
x == z |
ผลลัพธ์ที่ได้ คือ จริง จะให้ค่าเป็น 1 |
x > y*2 |
ผลลัพธ์ที่ได้ คือ ไม่จริง จะให้ค่าเป็น 0 |
x == z && x > y*2 |
ผลลัพธ์ที่ได้ คือ ไม่จริง จะให้ค่าเป็น 0 |
|
|
3.6.2 กฏเกณฑ์ในการเขียนนิพจน์ |
|
1. ห้ามเขียนตัวแปรติดกัน โดยไม่มีตัวดำเนินการเชื่อม เช่น ab ในภาษาซี ต้องเขียน a*b จะเขียนเป็น ab ไม่ได้ เพราะโปรแกรมจะถือว่าเป็นชื่อตัวแปรเดียว (ชื่อ ab ไม่ใช่ a คูณ b) |
|
2. ถ้าเขียนนิพจน์ โดยมีชนิดของตัวแปรหรือค่าคงที่ต่างชนิดกัน ในนิพจน์เดียวกัน ภาษาซี จะเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็ก ให้เป็นชนิดข้อมูลที่ใหญ่ขึ้น เช่น |
|
ถ้าใช้ |
จะเปลี่ยนเป็น |
char short |
กับ |
int |
int |
int |
กับ |
float |
float |
float |
กับ |
double |
double |
int |
กับ |
long |
long |
int |
กับ |
double |
double |
int |
กับ |
unsigned |
unsigned |
long |
กับ |
double |
double |
long |
กับ |
double |
double |
อะไร |
กับ |
long |
long |
อะไร |
กับ |
long double |
long double |
|
|
ตัวอย่าง
int i;
float f;
double d;
นิพจน์ i*f จะได้ผลลัพธ์เป็น float
นิพจน์ d/f + i*f จะได้ผลลัพธ์เป็น double |
|
3. การหาร จะได้ชนิดข้อมูล ดังนี้ |
Integer |
|
Integer |
= |
Integer |
Float |
|
Float |
= |
Float |
Float |
|
Integer |
= |
Float |
Integer |
|
Float |
= |
Float |
|
|
ตัวอย่าง
int x = 10;
int y = 4;
float z = 4.0;
นิพจน์ x/y จะได้ผลลัพธ์ 2
นิพจน์ x/z จะได้ผลลัพธ์ 2.500000
|
|
3.6.3 ขั้นตอนการทำงานของนิพจน์ |
|
นิพจน์ในภาษาซี จะทำงานตามลำดับของระดับความสำคัญ ของตัวดำเนินการ ตัวดำเนินการที่มีระดับความสำคัญสูงกว่า จะดำเนินการก่อน หากในนิพจน์มีตัวดำเนินการระดับความสำคัญเท่ากัน จะเริ่มทำตัวดำเนินการจากซ้ายไปขวา |
ตารางแสดงตัวดำเนินการ โดยเรียงจากบรรทัดบนสุดไปล่างสุด เป็นระดับความสำคัญสูงสุดไประดับความสำคัญต่ำสุด ตัวดำเนินการในบรรทัดเดียวกันจะมีระดับความสำคัญเท่ากัน |
|
ตัวดำเนินการ |
ความหมาย |
( ) |
ทำในวงเล็บก่อน โดยทำเรียงลำดับความสำคัญตามตารางนี้ |
- |
ตัวดำเนินการเอกภาคลบ |
* , / , % |
ตัวดำเนินการคำนวณคูณ หาร และมอดูลัส (หารเอาเศษไว้) |
+ , - |
ตัวดำเนินการคำนวณบวก ลบ |
< , <= , > , >= |
ตัวดำเนินการเปรียบเทียบน้อยกว่า น้อยกว่าหรือเท่ากับ มากกว่า มากกว่าหรือเท่ากับ |
== , != |
ตัวดำเนินการเปรียบเทียบเท่ากับ ไม่เท่ากับ |
+= , -= , *= , /= , %= |
ตัวดำเนินการคำนวณกำหนดค่าเชิงประกอบ |
(ชนิดข้อมูล) |
ตัวดำเนินการแปลงชนิดข้อมูลแบบชั่วคราว |
++ , -- |
ตัวดำเนินการคำนวณเพิ่มค่า ลดค่า |
&& |
ตัวดำเนินการตรรกและ |
|| |
ตัวดำเนินการตรรกหรือ |
= |
ตัวดำเนินการกำหนดค่า |
|
|
ตัวอย่างที่ 1นิพจน์2 + 2 * 2 - 2
วิธีคิด เนื่องจากระดับความสำคัญตัวดำเนินการ์ * มีสูงกว่า + กับ - จึงทำ * ก่อน ส่วน ตัวดำเนินการ +
กับ - มีระดับความสำคัญเท่ากัน จึงทำเรียงจากซ้ายไปขวาตามลำดับ ดังนี้ (คำตอบ 4)
ตัวอย่างที่ 2 นิพจน์ x/y*z
วิธีคิด เนื่องจากระดับความสำคัญตัวดำเนินการ * และ / มีค่าเท่ากัน จึงทำเรียงจากซ้ายไปขวาตามลำดับ ดังนี้
ตัวอย่างที่ 3 นิพจน์ i * j + k / m - n
วิธีคิด
ตัวอย่างที่ 4 นิพจน์ a * b >= 8 - c || d - 3 == e / (2 - f) && g < h
วิธีคิด
|
|
|
|