ชนิดของ ตัวแปร ข้อมูล 4 ชนิด

ชนิดของข้อมูลและตัวแปรในภาษาซี



ชนิดของข้อมูล (data type) ในการเขียนโปรแกรมหนึ่งๆ จะมีข้อมูลต่างๆ เข้ามาเกี่ยวข้องเช่น
การนับจำนวนรอบ (loop) ของการทำงานโดยใช้ข้อมูลชนิดจำนวนเต็ม หรือการแสดงข้อความ
โดยใช้ข้อมูลชนิดตัวอักษร จะเห็นว่าข้อมูลต่างๆ ถูกแบ่งออกเป็นหลายชนิดตามจุดประสงค์ของการใช้งาน
นอกจากนี้ข้อมูลแต่ละชนิด ยังใช้เนื้อที่หน่วยความจำ (memory) ไม่เท่ากันจึงมีการแบ่งชนิดของข้อมูล
ดังแสดงใน

ตัวแปร (variable) เนื่องจากข้อมูลถูกเก็บอยู่ในหน่วยความจำ การอ้างถึงตำแหน่งของข้อมูลนี้
จึงมีความซับซ้อน ไม่สะดวกต่อการเขียนโปรแกรม จึงมีการเรียกหน่วยความจำ ในตำแหน่งที่สนใจผ่านตัวแปร

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

รูปแบบการประกาศตัวแปร

โดย

type คือชนิดของตัวแปร ()
variable-name คือชื่อของตัวแปร (ควรตั้งชื่อให้มีความหมายสอดคล้องกับการใช้งานและจำง่าย)


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

int num; /*ประกาศตัวแปรชนิิดจำนวนเต็ม ชื่อ num*/
float x;
char grade, sex; /*ประกาศตัวแปรชนิิดอักขระ ชื่อ grade และ sex (ประกาศพร้อมกันในบรรทัดเดียว)*/

float temp = 123.45; /*ประกาศตัวแปรชนิดเลขทศนิยมพร้อมกำหนดค่า 123.45*/
char c = "A", t = "B"; /*ประกาศตัวแปรชนิดอักขระสองตัว พร้อมกำหนดค่าให้แต่ละตัว*/
int oct = 0555; /*ประกาศตัวแปรชนิดจำนวนเต็มชื่อ num พร้อมกำหนดค่าคือ 555 (เป็นเลขฐานแปดเพราะมี 0 นำหน้า)*/
int hex = 0x88; /*ประกาศตัวแปรชนิดจำนวนเต็มชื่อ hex พร้อมกำหนดค่าคือ 88 (เป็นเลขฐาน 16 เพราะมี 0x นำหน้า)*/

ข้อควรระวัง!!

  • ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมาย "_" เท่านั้น
  • ภายในชื่อตัวแปรให้ใช้ตัวอักษร, ตัวเลข 0-9 หรือเครื่องหมาย "_"
  • ห้ามมีช่องว่างในชื่อตัวแปร
  • อักษรตัวพิมพ์เล็ก-ใหญ่ มีความแตกต่างกัน (case sensitive) เช่น Name, NAME และ name
    ถือเป็นชื่อที่แตกต่างกัน
  • ห้ามซ้ำกับชื่อตัวแปรสงวน (reserved word)

ตัวแปรชนิดข้อความ (string)

ถ้าเราต้องการเก็บข้อความ "C programming language" ไว้ในตัวแปร จะทำได้อย่างไร?

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

หากพิจาณาให้ดี ข้อความดังกล่าวประกอบด้วยตัวอักขระ (ตัวอักษร+สัญลักษณ์) หลายๆ ตัวเรียงต่อกันเป็นสาย
ซึ่งเป็นลักษณะของตัวแปรแบบ array (จะได้กล่าวภายหลัง)

การประกาศตัวแปรแบบ array เพื่อเก็บข้อมูลดังกล่าวสามารถทำได้ดังนี้

type variable-name[size];

โดย

size คือขนาดของข้อความ+1 โดยขนาดที่เพิ่มขึ้นเพราะต้องเก็บอักขระสุดท้ายของข้อความเป็นอักขระ
\0 หรือ NULL เพื่อบอกว่าสิ้นสุดข้อความแล้ว

ตัวอย่างการประกาศตัวแปรแบบ array เพื่อเก็บข้อความ "C programming language" (22 ตัวอักษร)
ทำได้หลายวิธีดังนี้

char[23] text = "C programming language";
/*กำหนดขนาดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่า \0 หรือ NULL ในตำแหน่งสุดท้าย*/

char[23] text = {'C',' ','p','r','o','g','r','a','m','m','i','n','g',' ','l','a','n','g','u','a','g','e','\0'};
/*กำหนดขนาดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่า \0 หรือ NULL ในตำแหน่งสุดท้าย*/

char[] text = "C programming language";
/*ถ้าไม่กำหนดขนาดของ array แล้ว ตัวแปรภาษาซีจะกำหนดให้โดยมีขนาดเท่ากับขนาดข้อความ+1*/

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

text[0] = 'A'; /*แก้ตัวอักษรตัวแรก (เริ่มนับจาก 0) จะได้ผลลัพธ์คือ A programming language*/

text[2] = ' '; /*ผลลัพธ์คือ A rogramming language (ใส่ช่องว่างแทนตัว p)*/




ชนิดของตัวแปรในภาษาซีชนิดของตัวแปรขนาด (bits)ขอบเขตข้อมูลที่เก็บ8ข้อมูลชนิดอักขระ ใช้เนื้อที่ 1 byte8ข้อมูลชนิดอักขระ ไม่คิดเครื่องหมาย16ข้อมูลชนิดจำนวนเต็ม ใช้เนื้อที่ 2 byte16ข้อมูลชนิดจำนวนเต็ม ไม่คิดเครื่องหมาย8ข้อมูลชนิดจำนวนเต็มแบบสั้น ใช้เนื้อที่ 1 byte8ข้อมูลชนิดจำนวนเต็มแบบสั้น ไม่คิดเครื่องหมาย32

-2,147,483,648 ถึง 2,147,483,649

ข้อมูลชนิดจำนวนเต็มแบบยาว ใช้เนื้อที่ 4 byte32ข้อมูลชนิดจำนวนเต็มแบบยาว ไม่คิดเครื่องหมาย32

3.4*10e(-38) ถึง 3.4*10e(38)

ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 4 byte64

3.4*10e(-308) ถึง 3.4*10e(308)

ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 8 byte128

3.4*10e(-4032) ถึง 1.1*10e(4032)

ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 16 byte




แบบฝึกหัด
1. ข้อมูลต่อไปนี้เป็นข้อมูลชนิดใด

  1. 0
  2. E
  3. 55.55
  4. -98.76
  5. #
  6. 0xFF
  7. electrical engineering
  8. 077
  9. 23.4567
  10. -1
2. จงเขียนคำสั่งสร้างตัวแปรเพื่อเก็บข้อมูลตามรายละเอียดดังนี้
  1. ตัวแปรชื่อ i เก็บจำนวนเต็ม
  2. ตัวแปรชื่อ e เก็บอักขระ
  3. ตัวแปรชื่อ pi เก็บเลขทศนิยม
  4. ตัวแปรชื่อ department เก็บข้อความ
  5. ตัวแปรชื่อ i เก็บจำนวนเต็มพร้อมกำหนดให้มีค่าเท่ากับ 0
  6. ตัวแปรชื่อ e เก็บอักขระพร้อมกำหนดให้มีค่าเท่ากับ e
  7. ตัวแปรชื่อ pi เก็บเลขทศนิยมพร้อมกำหนดให้มีค่าเท่ากับ 3.14
  8. ตัวแปรชื่อ department เก็บข้อความพร้อมกำหนดให้มีค่าเท่ากับ electrical engineering
  9. ตัวแปรชื่อ hex เก็บจำนวนเต็มพร้อมกำหนดให้มีค่าเท่ากับ FF ฐาน 16
  10. ตัวแปรชื่อ topOfStack เก็บจำนวนเต็มพร้อมกำหนดให้มีค่าเท่ากับ -1

ชื่อตัวแปร คืออะไร

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

ตัวแปรชนิดใดสามารถเก็บข้อมูลได้หลายชนิด

ตัวแปรสามารถแบ่งได้เป็น 2 ประเภทใหญ่ๆ คือ ตัวแปรพื้นฐาน (Scalar) ซึ่งหมายถึงตัวแปรที่เก็บข้อมูลได้เพียงค่าเดียว และตัวแปรชุด (Array) ซึ่งก็คือตัวแปรที่สามารถเก็บข้อมูลไว้ได้หลายค่าในตัวแปรตัวเดียว โดยในที่นี้จะอธิบายเฉพาะตัวแปรพื้นฐานเพียงอย่างเดียว

ชนิดของตัวแปรในภาษาซี มีอะไรบ้าง

ตัวแปรสำหรับข้อความ ในภาษา C ไม่มีการกำหนดชนิดของตัวแปรสำหรับข้อความโดยตรง แต่จะใช้การกำหนดชนิดของตัวแปร อักขระ (char) ร่วมกับการกำหนดขนาดแทน และจะเรียกตัวแปรสำหรับเก็บข้อความว่า ตัวแปรสตริง (string) รูปแบบการประกาศตัวแปรสตริงแสดงได้ดังนี้ char name[n] = "str"; name ชื่อของตัวแปร

ข้อใดคือชนิดข้อมูลแบบพื้นฐาน

ชนิดข้อมูลพื้นฐาน คือ ข้อมูลประเภท ตัวเลขจำนวนเต็ม (Interger) , ตัวเลขจำนวนทศนิยม (Floating point) , ค่าความจริง (Boolean) และ อักขระ (Character)