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

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

ตัวแปร(Variables)

ตัวแปร คือ ชื่อที่กำหนดขึ้นมาเพื่อใช้ในการเก็บข้อมูล ซึ่งการประกาศใช้ตัวแปรขึ้นมาใช้งานจะเป็นไปตามกฎการตั้งชื่อที่ได้อธิบายไว้ในบท C language Law Name แล้ว


ชนิดของข้อมูล(data type)

ชนิดของข้อมูล คือ สิ่งที่ใช้กำหนดลักษณะและขอบเขตของข้อมูลนั้นๆโดยข้อมูลที่มีชนิดของ ข้อมูลแตกต่างกัน ก็จะเก็บข้อมูลได้ในลักษณะที่ต่างกัน และขอบเขตของข้อมูลที่เก็บได้ก็จะไม่เท่ากันซึ่งในภาษาซีแบ่งชนิดข้อมูลออกเป็น4แบบ ได้แก่
    • ชนิดข้อมูลแบบ void
    • ชนิดข้อมูลแบบ ตัวอักษร(character)
    • ชนิดข้อมูลแบบ ตัวเลขจำนวนเต็ม(integer)
    • ชนิดข้อมูลแบบเลขทศนิยม(floating)

ชนิดข้อความแบบ void (0 ไบต์)

ชนิดข้อมูลแบบนี้จะไม่มีค่า ซึ่งเราจะไม่ใช้ชนิดข้อมูลแบบ void นี้กำหนดให้กับตัวแปร แต่จะนำ ชนิดข้อมูลประเภทนี้กำหนดไว้ที่ function แทนในกรณีที่ไม่ต้องการให้ function มีการรับค่าใดๆ เข้ามาหรือส่งค่าใดๆกลับไป

ชนิดข้อมูลแบบตัวอักษร (character)(1 ไบต์)

ชนิดข้อมูลประเภท char ซึ่งชนิดข้อมูลประเภทนี้จะเก็บข้อมูลได้ 1 ตัวอักษรเท่านั้น ผู้เขียนโปรแกรมน่าใหม่ อาจจะคิดว่า คอมพิวเตอร์ทำการเก็บข้อมูลชนิดตัวอักษรนี้ในรูปแบบของตัวอักษร เช่น char A='a'; แล้วคอมพิวเตอร์จะเก็บค่า a ไว้ในตัวแปร A แต่ในความจริงมันไม่เป็นแบบนั้น คอมพิวเตอร์จะเก็บข้อมูลในลักษณะของแอสกี้(ASCII : American Standard Code for Information Interchauge)เช่นในcomputerจะเก็บค่าตัวแปร A เป็น 0110 0001 ในระบบเลขฐาน สอง(มีค่าเท่ากับ 97ในระบบเลขฐานสิบ) ซึ่งจะเป็นรหัส แอสกีของอักษร a นั้นเอง
ภาษา C
ซึ่งจากการที่คอมพิวเตอร์เก็บข้อมูลชนิดตัวอักษรในรูปแบบ ascii 1 bytes(8 bit)นั้น ทำให้ข้อมูลตัวอักษรเทียบได้กับข้อมูลชนิดเลขจำนวนเต็มีท่มีค่าตั้งแต่ 0 ถึง 255 (สำหรับข้อมูล ชนิดตัวอักษรแบบไม่คิดเครื่องหมาย หรือ unsigned char)และมีค่าตั้งแต่ -128 ถึง 127(สำหรับข้อมูล ชนิดตัวอีกษรแบบคิดเครื่องหมาย หรือ singned char) เราจึงสามารถนำตัวอักษรมากระทำการทางคณิตศาสต์ต่างๆได้ ตัวอย่างเช่น ตัวอย่าง โปรแกรมแสดงการกระทำการทางคณิตศาสตร์กับชนิดข้อมูลแบบตัวอักษร
1:
  #include<stdio.h>
2:
  main(){
3:
  char A=’ b ‘;
4:
  printf(“ Variable A is %c\n”,A);
5:
  A=A-1;
6:
  printf(“After variable A is %c\n”,A);
7:
  }
ผลลัพธ์ของโปรแกรม
Variable A is b
After variable A is a
อธิบายโปรแกรม บรรทัดที่5 : เป็นการนำค่าที่เก็บไว้ในตัวแปร A มากระทำางคณิตศาสตร์ คือ ลบ 1 แล้วนำผลที่ได้เก็บลงที่ตัวแปร A เช่นเดิม ปรากฎว่า ตัวแปร A จะมีค่าเป็น a ซึ่งหลักทำงานดังนี้ ภาษา C ถึงตอนนี้แล้วผู้อ่าน อาจอยากรู้ว่าทำไมตัวแปรชนิดนี้(char) รับข้อมูลได้แค่ตัวอักษรเดียว แล้วท่าอยากรับมากกว่านั้นจะทำยังไงใช่ใหมงันเรามาดูกันต่อเลยดีกว่า ว่ามันทำยังไงเดียวผม จะอธิบายไว้ในบทหลังนะครับ

ชนิดข้อมูลแบบเลขจำนวนเต็ม(integer)

ภาษา Cเป็นชนิดขอมูลแบบเลขจำนวนเต็ม เช่น 1,2,3,4,.... เรียกอีกอย่างว่า integer number ซึ่งข้อมูลนี้ภาษาซีได้แบ่งออกเป็น3ประเภท
  • shot intเป็นเลขจำนวนเต็มแบบสั้น เรียกง่ายๆว่า shot
  • intเป็นเลขจำนวนเต็มแบบปกติ
  • long intเป็นเลขจำนนเต็มแบบยาวเรียกสั้นๆว่า long
ตารางแสดงขนาดของชนิดของมูลแบบเลขจำนวนเต็มในแต่ละประเภท
ประเภท การคิดเครื่องหมาย จำนวนไบต์ ค่าต่ำสุด ค่าสูงสุด
short int signed
2(16 bit)
-32,768
32,767
unsigned
2(16 bit)
0
65,535
int(16 bit) signed
2(16 bit)
-32,768
32,767
unsigned
2(16 bit)
0
65,535
int(32 bit) signed
4(32 bit)
-2,147,483,648
2,147,483,647
unsigned
4(32 bit)
0
4,294,967,295
long int signed
4(32 bit)
-2,147,483,648
2,147,483,647
unsigned
4(32 bit)
0
4,294,967,295
 
ข้อความจำ
 
ชนิดข้อมูล int ของภาษาซี จะมีขนาด 16 bit หรือ 32 bit ขึ้นอยู่กับระบบปฏิบัติการที่ คอมไฟเลอร์ภาษาซี ทำงานอยู่ เช่น สำหรับระบบปฏิบัติการ Ms-Dos นั้น int จะมีขนาด 16 bit(2 bytes) แต่ถ้าเป็น linux หรือ windows 9x, NT,2000,xp,vista.7 int จะมีขนาด 32 bit (4 bytes)
*จะเห็นได้ว่าข้อมูลแบบเลขจำนวนเต็มมีอยู่หลายประเภทให้เลือกใช้ การที่เราจะเลือกใช้ชนิดใด โปรดคิดถึงความเหมาะสม เช่น หากข้อมูลที่ใช้เก็บมีไม่มากนัก เราก็ใช่ short int หากมีขนาดกลางก็ใช้ int เป็นต้น เพราะว่าท่าเราใช้ไม่เหมาะอาจทำให้โปรแกรมใหญ่เกินความจำเป็นไปด้วยนะครับ จากตารางขนาดของชนิดของมูลแบบเลขจำนวนเต็ม จะเห็นได้ว่าชนิดข้มูลแต่ละประเภทได้แบ่งออกเป็น 2 ลักษณะ คือ
  • signed หมายถึง การเก็บข้อมูเลขจำนวนเต็มแบบคิดเครื่องหมาย คือ จะเก็บเลขจำนวนเต็มบวกและเต็มลบ โดยจะมี่ 1 bit เรียกว่า sign bit ทำหน้าที่เก็บค่าเครื่องหมาย ซึ่ง sign bit นี้จะเป็นbitที่อยู่ด้านซ้ายสุด ซึ่งหากค่า sign เท่ากับ0จะหมายถึงเลขจำนวนเต็มนั้นเป็นค่าบวก แต่ถ้า sign bit เป็น 1 จะหมายถึงเลยจำนวนเต็มนั้นจะเป็นค่าลบ
  • Unsigned หมายถึง การเก็บข้อมูเลขจำนวนเต็มแบบไม่คิดเครื่องหมาย คือ จะเก็บเลขจำนวนเต็มบวกเท่านั้น

ชนิดข้อมูลแบบเลขทศนิยม (floating-point)

ภาษา Cเป็นชนิดข้อมูลแบบเลขทศนิยมหรือบางทีก็เรียกว่าเลขจำนวนจริง (Rel number)เช่น 1.2, 20.1,...ซึ่งภาษาซีจะแบ่งออกเป็น 3 ประเภทคือ
  • float
  • double
  • long double
ตารางแสดงขนาดของชนิดข้อมูลแบบเลขทศนิยมในแต่ละประเภท
ประเภท จำนวนไบต์ ค่าต่ำสุด ค่าสูงสุด
float
4(32 bit)
3.4 x 10-38
3.4 x 1038
double
8(64 bit)
1.7 x 10-308
1.7 x 10308
long double
10(80 bit)
3.4 x 10-4932
1.1 x 104932
*float จะเป็นชนิดข้อมูลแบบคิดเครื่องหมาย (signed) เสมอนะคัรบ แปลว่าไม่มีแบบไม่คิดเครื่องหมาย(unsigned)

>> ตัวแปรและชนิดข้อมูล 2

1 ความคิดเห็น:

  1. ช่วยเขียน Algorithm แผนผังFlowchartและเขียนcodeให้หน่อยค่ะ จงเขียนโปรแกรมหาค่าต่ำสุด สูงสุด ผลบวก ค่าเฉลี่ยของจำนวนเต็มสามจำนวนจากผู้ป้อน
    ทดสอบป้อน 10 2 3
    min=2 max=10 avg=5 sum=15

    ตอบลบ