 |
|
 |
|
มีความรู้ความเข้าใจชนิดข้อมูล ตัวแปร ค่าคงที่ ตัวดำเนินการและนิพจน์ |
|
|
 |
|
1. บอกชนิดของข้อมูลพื้นฐานของภาษาซีได้ |
2. บอกขั้นตอนการใช้ตัวแปรและประกาศตัวแปรได้ |
3. บอกวิธีการใช้ค่าคงตัวและค่าคงที่ได้ |
4. อธิบายการใช้ตัวดำเนินการและนิพจน์ในการเขียนโปรแกรมได้ |
5. บอกลำดับการคำนวณของตัวดำเนินการในนิพจน์ได้ |
|
|
|
 |
|
|
|
|
 |
 ชนิดของข้อมูลพื้นฐาน (Basic Types) ในภาษาซี มีอยู่ 5 แบบ ดังนี้
 3.1.1 ข้อมูลแบบบูลีน (Boolean)
 3.1.2 ข้อมูลแบบตัวอักษร (Character)
 3.1.3 ข้อมูลแบบตัวเลขจำนวนเต็ม (Integer)
แบบเก็บค่าได้ทั้งเป็นบวกและลบ (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)
 3.1.5 ข้อมูลแบบไม่มีค่า (Empty)
|
|
ตารางแสดงค่าที่ใช้ได้ของข้อมูลแบบต่าง ๆ ตามมาตรฐาน 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 ยกกำลัง |
|
 |
|
 |
|
  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 | ใช้ประกาศตัวแปร ให้เก็บค่าที่เป็นตัวอักขระ |
|
|
 ในภาษาซี สามารถประกาศตัวแปร ได้ตามรูปแบบคำสั่งดังนี้ |
|
รูปแบบ | ชนิดของตัวแปร ตัวแปร ; หรือ ชนิดของตัวแปร ตัวแปร = ค่าคงตัว; |
| |
| หมายเหตุ สามารถประกาศตัวแปร มากกว่า 1 ตัว พร้อมกันได้ โดยพิมพ์ตัวแปรแยกกันด้วยเครื่องหมายคอมม่า ( , ) |
| |
ตัวอย่าง | int i ; |
| float x , y ; |
| int j = 5 , k = 0; |
มีความหมายดังนี้ |
| int i; ประกาศตัวแปรชื่อ i ไว้สำหรับเก็บข้อมูลจำนวนเต็ม int |
| |
| float x , y; ประกาศตัวแปรชื่อ x และ y ไว้สำหรับเก็บข้อมูล จำนวนจริง float |
| |
| int j = 5 , k = 0; ประกาศตัวแปรพร้อมกำหนดค่าเริ่มต้น ดังนี้
- ประกาศตัวแปร j เป็นจำนวนเต็ม int มีค่าเริ่มต้น 5 และ
- ประกาศตัวแปร k เป็นจำนวนเต็ม int มีค่าเริ่มต้น 0 |
 |
|
|
 |
|
 |
|
 ค่าคงตัว (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 เงื่อนไข มาดำเนินการกัน แล้วจะได้ผลของการดำเนินการ ดังแสดงในตาราง >>> |
|
|
|| |
OR หมายถึง การนำเงื่อนไข 2 เงื่อนไข มาดำเนินการกัน แล้วจะได้ผลของการดำเนินการ ดังแสดงในตาราง >>> |
|
|
! |
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 กฏเกณฑ์ในการเขียนนิพจน์ |
|
|
|
   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 |
|
|
|
|
   3. การหาร จะได้ชนิดข้อมูล ดังนี้ |
Integer |  | Integer | = | Integer |
Float |  | Float | = | Float |
Float |  | Integer | = | Float |
Integer |  | Float | = | Float |
|
|
|
|
 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
วิธีคิด
|