หน่วยที่ 3 ชนิดของข้อมูลและตัวแปร

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

                1. ข้อมูลชนิดเลขจำนวนเต็ม (Integer)
                2. ข้อมูลชนิดตัวเลขทศนิยม (Float)
                3. ข้อมูลชนิดเลขฐานแปด (Octal)
                4. ข้อมูลชนิดเลขฐานสิบหก (Hexadecimal)
                5. ข้อมูลชนิดตัวอักขระ (Character)
                6. ข้อมูลชนิดข้อความ (String)

        1. ข้อมูลชนิดเลขจำนวนเต็ม (Integer) คือ เลขจำนวนเต็มทั่วไป ไม่ว่าจะเป็นเลขจำนวนเต็มบวก จำนวนเต็มศูนย์และจำนวนเต็มลบ ซึ่งเลขจำนวนเต็มเหล่านี้ สามารถนำไปคำนวณได้ ตัวอย่าง เช่น 100, 56,
0, -20 เป็นต้น
        2. ข้อมูลชนิดตัวเลขทศนิยม (Float) คือ เลขทศนิยมชนิดคงที่ หรืออาจจะเป็นทศนิยม แบบไม่รู้จบ หรืออาจจะเป็นเลขทศนิยมที่เขียนในรูป E (หรือ e) ยกกำลัง ตัวเลขทศนิยมเหล่านี้ สามารถนำมาใช้ใน
การคำนวณได้ ตัวอย่าง เลขทศนิยมนี้ได้แก่ 20.25, -0.60, 58.96, 5.40e04 เป็นต้น
        3. ข้อมูลชนิดเลขฐานแปด (Octal) คือ เลขจำนวนเต็มที่ประกอบด้วยเลข 0, 1 ,2, 3, 4, 5, 6 และ 7 เมื่อนำมาใช้ในภาษาซี จะต้องเขียนเลขศูนย์นำหน้า เช่น 0123, 045 เป็นต้น ซึ่งเลขฐานแปด เหล่านี้สามารถนำมาใช้เพื่อการคำนวณได้
        4. ข้อมูลชนิดเลขฐานสิบหก (Hexadecimal) คือ ตัวเลขประเภทหนึ่งที่ใช้ในระบบคอมพิวเตอร์ ซึ่งประกอบด้วย 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e และ f เวลาใช้งานในภาษาซีจะต้องเขียนด้วย 0x นำหน้าเพื่อให้รู้ว่าตัวเลขที่นำมาใช้งานนั้นเป็นฐานสิบหก
        5. ข้อมูลชนิดตัวอักขระ (Character) เป็นตัวอักษร หรือสัญลักษณ์อื่น ๆ ที่มีความยาว เพียง 1 ตัวอักษรเท่านั้น ซึ่งอาจจะเป็นตัวอักษร A-Z, a-z, 0-9 หรือ #, @, $ และอื่น ๆ เป็นต้น โดยจะเขียนไว้ในเครื่องหมาย ' ' (Single Quote) ตัวอักขระทั้งหมดนั้น สามารถศึกษาหรือดู รายละเอียดเพิ่มเติมได้จากตารางรหัส ASCII (American Standard Code II)
        6. ข้อมูลชนิดข้อความ (String) เป็นข้อมูลแบบตัวอักษรที่มีความยาวมากกว่า 1 ตัวอักษร มาเรียงต่อกันเป็นข้อความ โดยที่ข้อความนั้นจะต้องถูกเขียนไว้ในเครื่องหมาย " " (Double Quote) ตัวอย่างเช่น "Phitsanulok", "Welcome" เป็นต้น)

——————————————————————————————————————————

        ตัวอย่างการกำหนดชนิดข้อมูลในภาษาซี

ข้อมูล
ชนิดของข้อมูลในภาษาซี
1.) -60
2.) ‘#’
3.) 0.22222…
4.) “Good_Bye”
5.) 0
1.) ชนิดเลขจำนวนเต็ม (Integer)
2.) ชนิดตัวอักขระ (Character)
3.) ชนิดตัวเลขทศนิยม (Float)
4.) ชนิดข้อความ (String)
5.) ชนิดเลขจำนวนเต็ม (Integer)


ตัวแปร (Variable)1
          หมายถึง ชื่อที่ถูกกำหนดขึ้นมาเพื่อใช้แทน หรือเก็บข้อมูลในหน่วยความจำ(Memory) บางครั้งตัวแปรอาจจะเปรียบเสมือนชื่อกล่องที่เก็บข้อมูล โดยสามารถนำเอาข้อมูลชนิดต่าง ๆ ไปเก็บไว้ในกล่องนั้นได้
ส่วนการตั้งชื่อตัวแปรนั้นจะต้องขึ้นต้นด้วยตัวอักษร และตามด้วยตัวอักษร หรือตัวเลขก็ได้ และชื่อตัวแปรที่ตั้งขึ้นมาควรจะสื่อความหมายกับสิ่งที่กำลังดำเนินการ หรือเกี่ยวข้องกับเรื่องที่สนใจอยู่ ตัวอย่างชื่อตัวแปร เช่น NAME, SURNAME, ADDRESS1, Phone หรือ ID4 เป็นต้น

——————————————————————————————————————————

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

ข้อมูลนักเรียน
ชื่อตัวแปร
1) ชื่อ1) Name
2) นามสกุล2) Surname
3) ที่อยู่3) Address
4) เบอร์โทร4) Phone
5) รหัสประจำตัว5) ID

——————————————————————————————————————————

   การเลือกใช้ประเภทของตัวแปรนั้น ควรจะเลือกให้มีความเหมาะสมกับการใช้งาน เนื่องจากการเลือกใช้ที่เหมาะสมและตรงกับงานนั้น ๆ จะมีผลทำให้การใช้งานหน่วยความจำของเครื่องคอมพิวเตอร์นั้น ๆ มีความเหมาะสมตามไปด้วย และหากใช้ไม่เหมาะสมกับงานแล้วก็จะทำให้เป็นการสิ้นเปลืองหน่วยความจำของเครื่องคอมพิวเตอร์โดยใช่เหตุ ดังนั้นควรศึกษาประเภทของตัวแปรได้ดังตารางที่ 1
 
ประเภทของตัวแปร
ขนาด (Bits)
ขอบเขต
ความหมาย
char
8
-128 ถึง 127
เก็บข้อมูลชนิดตัวอักขระ โดยจะใช้พื้นที่ในหน่วยความจำในการจัดเก็บ
8 bits (1 Byte)
unsigned char
8
0 ถึง 255
เก็บข้อมูลชนิดอักขระ แบบไม่คิดเครื่องหมาย
int
16
-32,768
ถึง
32,767
เก็บข้อมูลชนิดตัวเลขจำนวนเต็ม
ใช้พื้นที่ในหน่วยความจำ
16 bits (2 Bytes)
unsigned int
16
0 ถึง 65,535
เก็บข้อมูลชนิดตัวเลขจำนวนเต็ม
แบบไม่คิดเครื่องหมาย
short
8
-128 ถึง 127
เก็บข้อมูลชนิดตัวเลขจำนวนเต็ม
แบบสั้น ใช้พื้นที่หน่วยความจำ
8 bits (1 Byte)
unsigned short
8
0 ถึง 255
เก็บข้อมูลชนิดตัวเลขจำนวนเต็ม
แบบสั้น โดยไม่คิดเครื่องหมาย
long
32
-2,147,483,648 ถึง 2,147,483,649
เก็บข้อมูลชนิดตัวเลขจำนวนเต็ม
แบบยาว ใช้พื้นที่หน่วยความจำ
32 bits (4 Bytes)
unsigned long
32
0 ถึง 4,294,967,296
เก็บข้อมูลชนิดตัวเลขจำนวนเต็ม
แบบยาว และไม่คิดเครื่องหมาย
float
32
3.4*10e(-38)
ถึง
3.4*10e(38)
เก็บข้อมูลชนิดตัวเลขทศนิยม ใช้พื้นที่หน่วยความจำ 32 bits (4 Bytes)
โดยเก็บค่าทศนิยมประมาณ 6 ตัว
double
64
3.4*10e(-308) ถึง
3.4*10e(308)
เก็บข้อมูลชนิดตัวเลขทศนิยม ใช้พื้นที่หน่วยความจำ 64 bits (8 Bytes)
โดยเก็บค่าทศนิยมประมาณ 12 ตัว
long double
128
3.4*10e(-4032) ถึง 1.1*10e(4032)
เก็บข้อมูลชนิดตัวเลขทศนิยม ใช้พื้นที่หน่วยความจำ 128 Bits (16 Bytes)
โดยเก็บค่าทศนิยมประมาณ 24 ตัว
ตารางที่ 1 ประเภทของตัวแปรแต่ละชนิด

——————————————————————————————————————————

        ตัวอย่าง ถ้าต้องการเก็บข้อมูลตามตารางข้างล่างนี้ ควรกำหนดประเภทตัวแปร Int, Float, Long, Char ให้ถูกต้องดังต่อไปนี้

ข้อมูล
ประเภทของตัวแปร
1) n1 = 20.25;
1) float
2) n2 = 714;
2) int
3) n3 = 'R';
3) char
4) n4 = 5.142;
4) float
5) n5 = 1,952,120;
5) long

        ข้อสังเกต การกำหนดชนิดของตัวแปร มีสิ่งที่ควรพิจารณาอยู่ 2 ประการคือ ตัวแปรนั้นจะต้องสามารถรับค่าได้ทุกค่าโดยไม่เกินขอบเขตของข้อมูลชนิดนั้นและตัวแปรจะต้องไม่ใช่หน่วยความจามากเกินความจำเป็น เช่น ถ้าข้อมูลไม่เกินขอบเขตของ int ก็ไม่ควรกำหนดตัวแปรให้เป็น float

หลักการตั้งชื่อตัวแปร1
      1. ตัวแปรจะต้องขึ้นต้นด้วยตัวอักษร A-Z, a-z หรือเครื่องหมาย _ (Underscore) เท่านั้น
      2. ตัวอักษรที่ตามมาของชื่อตัวแปรนั้นจะต้องเป็น A-Z, a-z และเครื่องหมาย _ (Underscore)
หรือตัวเลข
      3. ห้ามเว้นช่องว่างภายในชื่อตัวแปร และห้ามใช้สัญลักษณ์พิเศษอื่น ๆ
      4. การใช้อักษรตัวพิพม์ใหญ่และอักษรตัวพิมพ์เล็กในการตั้งชื่อตัวแปรนั้น มีความแตกต่างกัน
โดยโปรแกรมภาษาซีจะถือว่าเป็นคนละตัวแปรกัน เช่น Address และ ADDRESS
      5. ห้ามตั้งชื่อตัวแปรตรงกับคำสงวน (Reserved Word) ในภาษาซี ซึ่งคำสงวนได้แก่ พวกคำสั่งต่าง ๆ และชนิดของตัวแปรต่าง ๆ เช่น if, char, printf เป็นต้น

——————————————————————————————————————————

        ตัวอย่าง ตัวอย่างการตั้งชื่อตัวแปรในภาษา C ทั้งที่ถูกต้องและไม่ถูกต้องตามหลักการ ดังต่อไปนี้

ชื่อตัวแปร
ถูกต้องตามหลักการตั้งชื่อตัวแปรหรือไม่
1) bath_room1) ถูกต้อง
2) n-sync2) ผิดหลักการ เนื่องจากมีเครื่องหมาย - ปรากฏในชื่อ
3) 108dots3) ผิดหลักการ เนื่องจากขึ้นต้นด้วยตัวเลข
4) Year#4) ผิดหลักการ เนื่องจากมีเครื่องหมาย # อยู่ในชื่อ
5) _good5) ถูกต้อง
6) goto6) ผิดหลักการ เนื่องจากเป็นคำสงวน
7) work7) ถูกต้อง
8) break8) ผิดหลักการ เนื่องจากเป็นคำสงวน

—————————————————————————————————————————

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

Type   Variable_Name;

หรืออีกรูปแบบหนึ่ง

Type   Variable_Name = Value;

         อธิบาย

Type  
คือ ชนิดของตัวแปรที่จะประกาศ ซึ่งควรจะมีการกำหนดชนิดของตัวแปรให้มีความเหมาะสมกับงานที่จะนำไปใช้
Variable_Name
คือ ชื่อของตัวแปรที่ต้องการสร้าง
Value    
คือ ค่าของตัวแปรนั้น ๆ ตามที่กำหนดให้

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

int number1; 
การประกาศตัวแปรแบบเลขจำนวนเต็ม
float a;  
การประกาศตัวแปรแบบเลขทศนิยม
char b;
การประกาศตัวแปรแบบตัวอักษร
double salary;  
การประกาศตัวแปรแบบดับเบิ้ล
int x=200;    
การประกาศตัวแปรแบบเลขจำนวนเต็ม พร้อมกำหนดค่า
char ch1= 'A';  
การประกาศตัวแปรแบบตัวอักษร พร้อมกำหนดค่า
float vat = 7.00;  
การประกาศตัวแปรแบบทศนิยม พร้อมกำหนดค่า
int x,y,z;
การประกาศตัวแปรแบบเลขจำนวนเต็ม หลายตัวพร้อมกัน
char[4] name ="JOJO";
การประกาศตัวแปรแบบข้อความ (String)

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

——————————————————————————————————————————

        ตัวอย่าง ถ้าต้องการประกาศตัวแปรในการเก็บข้อมูลส่วนตัวนักเรียน โดยมีตัวอย่างการประกาศตัวแปรในการเก็บข้อมูลนักเรียนดังต่อไปนี้

ข้อมูลนักเรียน
การประกาศตัวแปรในการเก็บข้อมูลส่วนตัวนักเรียน
1) ชื่อ1) char[50] Name;
2) นามสกุล2) char[50] Surname;
3) ที่อยู่3) char[200] Address;
4) เบอร์โทร4) int Phone = 0634193965;
5) รหัสประจำตัว5) int ID = 47123629;
6) น้ำหนัก6) float Weight;
7) ส่วนสูง7) float Height;


——————————————————————————————————————————เครื่องหมายในภาษาคอมพิวเตอร์ 1
        เครื่องหมายในการเขียนโปรแกรมคอมพิวเตอร์ที่ภาษาคอมพิวเตอร์สามารถเข้าใจความหมาย และสามารถทำงานได้นั้น จะถูกแบ่งออกตามประเภทของการใช้งานและเหตุการณ์ เช่น ต้องการเปรียบเทียบนิพจน์ว่าเป็นจริงหรือเท็จ ก็จะใช้เครื่องหมายทางตรรกศาสตร์เข้ามาเปรียบเทียบ หรือหากต้องการเปรียบเทียบนิพจน์หรือค่า 2 ค่าว่ามากกว่าหรือน้อยกว่า ก็จะใช้เครื่องหมายเปรียบเทียบ มากกว่า (>) หรือน้อยกว่า (<) เป็นต้น ดังนั้นเครื่องหมายในภาษาคอมพิวเตอร์ จะถูกแบ่งออกเป็น 3 ประเภทคือ     
    
1.
เครื่องหมายทางคณิตศาสตร์ 1
2.
เครื่องหมายเปรียบเทียบ 1
3.
เครื่องหมายทางตรรกศาสตร์ 1

——————————————————————————————————————————

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

         ตารางที่ 1 เครื่องหมายทางคณิตศาสตร์

เครื่องหมาย
เนินการ
ความหมาย และตัวอย่างการใช้งาน
+
บวก
ใช้เพื่อบวก เช่น a + b
-
ลบ
ใช้เพื่อลบ เช่น a – b
*
คูณ
ใช้เพื่อคูณ เช่น a * b
/
หาร
ใช้เพื่อหาร เช่น a / b
%
หารแบบเอาเศษ (Modulo)
ใช้เพื่อหารแบบเอาเศษที่เหลือ เช่น a % b

        ตัวอย่าง กำหนดให้กับนิพจน์และผลลัพธ์ที่ได้ โดยในทีนี้กำหนดให้ตัวแปร i และ j มีชนิดข้อมูลเป็นเลขจำนวนเต็ม และตัวแปร j ถูกกำหนดให้มีค่าเท่ากับ 5

นิพจน์
ผลลัพธ์ i
i = i + j
10
i = j - 2
3
i = 2 * j
10
i = j / 2
2
i = i % 2
1

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

         ตารางที่ 2 เครื่องหมายทางคณิตศาสตร์เพิ่มเติม

เครื่องหมาย
ดำเนินการ
ความหมาย และตัวอย่างการใช้งาน
++
เพิ่มค่าทีละ 1
ใช้เพื่อเพิ่มค่าอีก 1 ให้กับตัวแปร เช่น a = b++
หากตัว แปร b = 5 ค่าของตัวแปร a จะเท่ากับ 6
--
ลดค่าทีละ 1
ใช้เพื่อลดค่าอีก 1 ให้กับตัวแปร เช่น a = b--
หากตัว แปร b = 5 ค่าของตัวแปร a จะเท่ากับ 4
+=
บวกค่าด้วยตัวแปร
เช่น a += b คือ การบวกค่าตัวแปร a ด้วยตัวแปร b
-=
ลดค่าด้วยตัวแปร
เช่น a -= b คือ การลดค่าตัวแปร a ด้วยตัวแปร b
*=
คูณค่าด้วยตัวแปร
เช่น a *= b คือ การคูณค่าตัวแปร a ด้วยตัวแปร b
/=
หารค่าด้วยตัวแปร
เช่น a /= b คือ การหารค่าตัวแปร a ด้วยตัวแปร b
%=
หารแบบเอาเศษ ด้วยตัวแปร
เช่น a %= b คือ การหารแบบเอาเศษค่าตัวแปร a
ด้วยตัวแปร b

        ตัวอย่าง กำหนดให้ i และ j เป็นตัวแปรชนิดเลขจำนวนเต็ม มีค่าเท่ากับ 5 และ 7 ตามลำดับ ส่วนตัวแปร f และ g เป็นตัวแปรชนิดเลขจำนวนจริง มีค่าเท่ากับ 5.5 และ -.325 ตามลำดับ และต่อไปนี้เป็นนิพจน์ในรูปแบบต่าง ๆ และผลลัพธ์ที่ได้ ทั้งนี้แต่ละนิพจน์ให้ใช้ค่าตัวแปรเริ่มต้นตามที่กล่าวมา

นิพจน์
นิพจน์ที่เขียนในรูปแบบทั่วไป
ผลลัพธ์
i += 5
i = i +5
10
f -= g
f = f - g
8.75
j *= (i - 3)
j = j * (i - 3)
14
f /=3
f = f / 3
1.833333
i % = (j - 2)
i = i % (j - 2)
0

——————————————————————————————————————————
2. เครื่องหมายเปรียบเทียบ 1
         เครื่องหมายการเปรียบเทียบ เป็นเครื่องหมายที่มีความสำคัญอีกเช่นกัน เพื่อเปรียบเทียบค่าของตัวแปรตั้งแต่ 2 ค่าขึ้นไป โดยผลลัพธ์จากการเปรียบเทียบจะได้เป็นค่าจริง (True) หรือ เท็จ (False)
โดยเครื่องหมายในการเปรียบเทียบ ดังตารางที่ 3

         ตารางที่ 3 เครื่องหมายการเปรียบเทียบ


เครื่องหมาย
การเปรียบเทียบ
ความหมาย และตัวอย่างการใช้งาน
==
เท่ากับ
ตัวอย่าง a == b เป็นการเปรียบเทียบการเท่ากับระหว่างตัวแปร a และ b
ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ
!=
ไม่เท่ากับ
ตัวอย่าง a != b เป็นการเปรียบเทียบการไม่เท่ากับระหว่างตัวแปร a และ b ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ
น้อยกว่า
ตัวอย่าง a < b เป็นการเปรียบเทียบการน้อยกว่าระหว่างตัวแปร a และ b ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ
<=
น้อยกว่าหรือเท่ากับ
ตัวอย่าง a <= b เป็นการเปรียบเทียบการน้อยกว่าหรือเท่ากับระหว่างตัวแปร a และ b ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ
มากกว่า
ตัวอย่าง a > b เป็นการเปรียบเทียบการมากกว่าระหว่างตัวแปร a และ b ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ
>=
มากกว่าหรือเท่ากับ
ตัวอย่าง a >= b เป็นการเปรียบเทียบการมากกว่าหรือเท่ากับระหว่างตัวแปร a และ b ซึ่งจะให้ค่าผลลัพธ์เป็นจริงหรือเท็จ

        ตัวอย่าง ถ้าตัวแปร i, j และ k มีชนิดข้อมูลเป็นเลขจำนวนเต็ม มีค่า 1, 2 และ 3 ตามลำดับ และจากนิพจน์ต่อไปนี้ จะได้ผลลัพธ์จากการตรวจสอบดังนี้

นิพจน์
ผลจากการเปรียบเทียบค่า
ผลลัพธ์
i < j
True
1
(i + j) >=k
True
1
(j + k) > (i + 5)
False
0
j == 2
False
0

——————————————————————————————————————————

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

         ตารางที่ 4 เครื่องหมายทางตรรกศาสตร์

เครื่องหมาย
การเปรียบเทียบ
ความหมายและ ตัวอย่างการใช้งาน
&&
และ (and)
ตัวอย่าง (a<2) && (b>3) เปรียบเทียบระหว่าง ค่า 2 ค่าโดยถูกเชื่อมด้วย "และ" แล้วให้ผลลัพธ์ เป็นจริงหรือเท็จ
||
หรือ (or)
ตัวอย่าง (a<2) || (b>3) เปรียบเทียบระหว่าง ค่า 2 ค่าโดยถูกเชื่อมด้วย "หรือ" แล้วให้ผลลัพธ์ เป็นจริงหรือเท็จ
!
นิเสธ (not)
ตัวอย่าง !a จะได้ผลลัพธ์ตรงข้ามของค่า a เช่น หากตัวแปร a มีค่าเป็นจริง !a ก็จะให้ค่าเป็นเท็จ

         ตารางที่ 5 หลักการดำเนินการด้วยเครื่องหมาย &&

ค่า A
ค่า B
ผลลัพธ์ของ A && B
T
T
T
T
F
F
F
T
F
F
F
F

         ตารางที่ 6 หลักการดำเนินการด้วยเครื่องหมาย ||

ค่า A
ค่า B
ผลลัพธ์ของ A || B
T
T
T
T
F
T
F
T
T
F
F
F

        ตารางที่ 7 หลักการดำเนินการด้วยเครื่องหมาย !

ค่า A
ผลลัพธ์ของ !A
T
F
F
T

        ตัวอย่าง กำหนดให้ i มีชนิดข้ัอมูลเป็นจำนวนเต็ม มีค่าเท่ากับ 7 และ f มีชนิดข้อมูลเป็นเลขจำนวนจริงมีค่าเท่ากับ 5.5 ส่วน c เป็นตัวแปรชนิดตัวอักษร ที่มีค่าเท่ากับ w และต่อไปนี้เป็นนิพจน์ตรรกะในรูปแบบต่าง ๆ และผลลัพธ์ที่ได้

นิพจน์
ผลลัพธ์
(i >=6) && (c == 'w')
1
(i >= 6) || (c == 119)
1
(f < 11) && (i > 100)
0
(c != 'p') || ((i + f) <= 10)
1
f > 5
1

——————————————————————————————————————————

         ลำดับความสำคัญของตัวดำเนินการทางคณิตศาสตร์ 1

ลำดับที่
เครื่องหมาย
ลำดับการทำงาน
1
( )
-
2
++ ,  --
ซ้ายไปขวา
3
* ,  / ,  %
ซ้ายไปขวา
4
+ ,  -
ซ้ายไปขวา
5
< ,  <= ,  > ,  >=
ซ้ายไปขวา
6
== ,  !=
ซ้ายไปขวา
7
&&
ซ้ายไปขวา
8
||
ซ้ายไปขวา
9
= ,  += ,  -= ,  *= ,  /= ,  %=
ซ้ายไปขวา

         ในการทำงานของตัวดำเนินการทางคณิตศาสตร์ คอมพิวเตอร์จะมีลำดับการทำงานดังนี้
                  1. ( ) คอมพิวเตอร์จะทำการคำนวณในวงเล็บก่อนเสมอ
                  2. * , / , % จากนั้นจะทำการคูณ หาร มอดูลัส เรียงจากซ้ายไปขวา เจอเครื่องหมายใด
         ก่อนทำก่อน
                  3. + , - และทำการบวก ลบ เรียงจากซ้ายไปขวา

        ตัวอย่าง กำหนดให้ตัวแปร i และ j เป็นเลขจำนวนเต็มมีค่าเท่ากับ 20 และ 8 ตามลำดับ ผลลัพธ์จากนิพจน์นี้ค่า ans จะมีค่าเท่ากับ 8 ซึ่งเป็นไปตามลำดับการประมวลผลดังต่อไปนี้

ลำดับ
นิพจน์
นิพจน์ที่ถูกประมวลผลก่อน
1
ans = 2 * ((i / 5) + (4 * (j - 2)) % (j - 2)(i / 5), (j - 2) และ (j - 2)
2
ans = 2 * (4 + (4 * (6)) % 6 )4 * 6
3
ans = 2 * (4 + 24 % 6)24 % 6
4
ans 2 * (4 + 0)4 + 0
5
ans = 2 * 42 * 4
6
ans = 8

——————————————————————————————————————————

นิพจน์ (Expression) 1
        นิพจน์ คือ การนำเอาค่าคงที่ หรือตัวแปรต่าง ๆ มาดำเนินการประมวลผล โดยผ่านทางเครื่องหมายทางคณิตศาสตร์ หรืออาจจะเป็นเครื่องหมายในการเปรียบเทียบ ตัวอย่างนิพจน์ที่มักจะพบในปัจจุบัน เช่น
a + b = 0, a + 5 = 10 เป็นต้น นิพจน์ สามารถแบ่งออกได้เป็น 2 ประเภท คือ


1.
นิพจน์ทางคณิตศาสตร์ 1
2.
นิพจน์ทางตรรกศาสตร์ 1

(แหล่งข้อมูล...  คู่มือเขียนโปรแกรมด้วยภาษา C ฉบับสมบูรณ์/ อรพิน ประวัติบริสุทธิ์)

——————————————————————————————————————————

1. นิพจน์ทางคณิตศาสตร์ 1
      
  เป็นเหมือนนิพจน์ทางคณิตศาสตร์ทั่ว ๆ ไป เพียงแต่จะต้องมีการเปลี่ยนเครื่องหมายทางคณิตศาสตร์ทั่วไป เช่น + - x และ ÷ ให้อยู่ในรูปแบบของเครื่องหมายทางคณิตศาสตร์ที่ใช้ในระบบคอมพิวเตอร์ ซึ่งจะพบว่าเครื่องหมาย x (คูณ) จะต้องเปลี่ยนเป็น * ส่วนเครื่องหมาย ÷(หาร) จะเปลี่ยนเป็น / เพื่อให้คอมพิวเตอร์รับรู้ว่ากำลังจะดำเนินการใดอยู่ ดังตารางที่ 1

        ตารางที่ 1 ตัวอย่างการเปรียบเทียบนิพจน์ทางคณิตศาสตร์

      นิพจน์ในทางคณิตศาสตร์ทั่วไป
นิพจน์ในทางคณิตศาสตร์ในคอมพิวเตอร์
a + b + c
a + b + c
2ab + c
2 * a * b + c
 a + b
c + d
a + b / c + d
(a x b) + c
( a * b ) + c
2a + 3b
C
(2 * a) + (3 * b) / c

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

——————————————————————————————————————————

2. นิพจน์ทางตรรกศาสตร์ 1
        เป็นเหมือนนิพจน์ทางตรรกศาสตร์ทั่ว ๆ ไป ที่จะต้องมีการเปรียบเทียบความเป็นจริงและเท็จ
แต่การเขียนนิพจน์ทางตรรกศาสตร์ในทางคอมพิวเตอร์ จะต้องเขียนให้อยู่ในรูปแบบการเปรียบเทียบ
โดยใช้เครื่องหมาย && (และ) , || (หรือ) และ ! (นิเสธ) ดังตารางที่ 2


        ตารางที่ 2 ตัวอย่างการใช้นิพจน์ทางตรรกศาสตร์
          
      กำหนดให้ a = 5 , b = 10 และ c = 20

นิพจน์ตรรกศาสตร์เขียนใน
รูปแบบคอมพิวเตอร์
การดำเนินการ
ผลลัพธ์
a < b && b > c
T && F
F
(b + a) < c || 2c
T || T
T
a == b || (!c)
F || F
F
——————————————————————————————————————————

ตัวอย่างที่ 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

วิธีคิด