การเขียนโปรแกรมภาษา C เบื้องต้น ตอนที่ 2 : ตัวแปรและชนิดของข้อมูล

variables_thumb4
ตัวแปรคือชื่อเรียกที่เป็นตัวแทนของพื้นที่เก็บข้อมูลในหน่วยความจำ ยกตัวอย่างสมมติว่า บวกเลข 20 กับ 56 ในใจ คุณจะต้องเก็บค่า 20 หรือ 56 ในใจก่อน จากนั้นคุณถึงจะนำค่าทั้ง 2 มาบวกกันได้ เห็นไหมครับสิ่งที่เราเก็บ 20 และ 56 ในใจนั้นก็คือเราเก็บไว้ในหัวสมอง ในคอมพิวเตอร์ก็เช่นเดียวกัน กระบวนการทั้งหมดถ้าเขียนเป็นภาษา C เป็นดังนี้

a = 20;
b = 56;
result = a + b;

Identifiers (การระบุตัวแปร)


การระบุตัวแปรที่ถูกต้องนั้น จะต้องมีตัวอักษรนำหน้าตัวเดียวหรือมากกว่านั้นก็ได้ สามารถมีตัวเลขประกอบและ _(underscore) ได้ โดยตัว _ สามารถจะเป็นตัวนำหน้าได้ ยกเว้นเพียงตัวเลขที่ไม่สามารถนำหน้าได้ และอีกกฏนึงที่สำคัญก็คือชื่อของตัวแปรจะต้องไม่ใช่ชื่อที่มีการกำหนดไว้แล้ว โดยตามมาตรฐานของภาษา C หรือ C++ มีดังนี้
asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while
รวมถึงตัวดำเนินการทางคณิตศาสตร์ต่างๆด้วย (operators)
and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq
ที่สำคัญคือในภาษา C นั้น ตัวอักษรตัวเล็กหรือตัวใหญ่มีความแตกต่างกัน (Case Sensitive)

ชนิดของตัวแปร

ในการเขียนโปรแกรมนั้น การที่จะเก็บค่าไว้ในหน่วยความจำ คอมพิวเตอร์จะต้องรู้ว่าตัวแปรที่จะเก็บค่านั้นเป็นตัวแปรประเภทไหน เพื่อความรวดเร็วในการประมวลผลและยังช่วยให้คอมไพเลอร์รู้ว่าควรจะต้องเตรียมเนื้อที่เท่าไหร่ในการเก็บตัวแปร โดยชนิดของตัวแปรแบ่งได้ดังตารางข้างล่าง
ชนิด รายละเอียด ขนาด ช่วงของค่า
char ตัวอักษรหรือจำนวนเต็มขนาดเล็ก 1 byte signed : -128 ถึง 127
unsigned : 0 ถึง 255
int จำนวนเต็ม 2 bytes signed : -32768 ถึง 32767
unsigned : 0 to 65535
long int จำนวนเต็ม 4 bytes signed : -2147483648 ถึง 2147483647
unsigned : 0 ถึง 4294967295
float จำนวนทศนิยม 4 bytes 3.4E-38 ถึง 3.4E+38 หรือ ทศนิยม 6 ตำแหน่ง
double จำนวนทศนิยม 8 bytes 1.7E-308 ถึง 1.7E+308 หรือ ทศนิยม 12 ตำแหน่ง
Note : การจัดการหน่วยความจำจะจัดการในหน่วย byte โดย 1 byte คือจำนวนน้อยที่สุดที่เราจะสามารถจัดการได้ โดย 1 byte มีค่าเท่ากับ 8 bits


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


การใช้งานตัวแปรนั้นจะต้องประกาศก่อนไว้ในส่วนหัวถ้าในกรณีที่เป็น global ถ้าเป็นกรณี local นั้น ก็เช่นเดียวกันคือประกาศไว้บนหัวใน function โดยมีรูปแบบคือ ชนิดของตัวแปรแล้วตามด้วย identifier เช่น
int i; unsigned char c; float test;

ตัวแปรทั้ง 3 ตัวด้านบนนี้ ตัวแปร i คือตัวแปรชนิด integer ซึ่งมีขนาด 2 bytes โดยสามารถเก็บข้อมูลได้ –32768 ถึง 32767 ส่วน ตัวแปร c นั้นเป็นตัวแปรประเภท unsigned char มีขนาด 1 byte ดังนั้นแล้วจะสามารถเก็บข้อมูลได้ 0 ถึง 255

โดย signed กับ unsigned นั้นคือ เครื่องหมาย โดยถ้าเป็นแบบ signed จะสามารถเก็บได้ –128 ถึง 127 ส่วน unsigned นั้นไม่มีเครื่องหมายจึงเป็นจำนวนเต็มบวกอย่างเดียว ส่วนตัวแปรตัวสุดท้าย test คือ ตัวแปรประเภท float ซึ่งสามารถเก็บข้อมูลได้ 3.4E-38 ถึง 3.4E+38 หรือ ทศนิยม 6

ตำแหน่ง


การประกาศตัวแปรสามารถประกาศได้ทีนึงหลายๆตัว สมมติว่าเราต้องการประกาศตัวแปรชนิด int จำนวน 5 ตัว a,b,c,d, e


int a,b,c,d,e;

และการประกาศตัวแปร ยังสามารถที่จะกำหนดค่าในตอนที่ประกาศตัวแปรได้ด้วย
int a = 5; unsigned int b = 10; 

เพื่อความเข้าใจมากขึ้น มาลองเขียนโปรแกรมง่ายๆเพื่อดูว่าการทำงานกับตัวแปรนั้นทำกันอย่างไร โดย code ข้างล่างนี้คือกระบวนการที่ผมเอ่ยไว้ตอนเริ่มต้น
// operating with variables 
#include <stdio.h> 
#include <conio.h> 
int main() 
{ 
   // declaring variables: 
   unsigned int a, b; 
   int result; 
   a = 20; 
   b = 56; 
   result = a + b; 
   printf("Result = %d",result); 
   getch(); 
   return 0; 
} 

สรุป :
- การระบุตัวแปร มีกฏอยู่ด้วยกันคือ ต้องนำหน้าด้วยตัวอักษรหรือ _ (underscore) แล้วถึงตามด้วยตัวเลขได้
- ในการเขียนโปรแกมจะต้องประกาศตัวแปรขึ้นหัวก่อน โดยถ้าในกรณี local variables ต้องประกาศอยู่บนหัวของ function
*** ขอขอบคุณข้อมูลจากเว็บ
http://www.cplusplus.com/doc/tutorial/variables/ ***

Comments

Popular posts from this blog

MCS-51 Based Tachometer (เครื่องวัดความเร็วรอบ)

สร้าง Traindata สำหรับ OCR ด้วย Tesseract

การเชื่อมต่อและการเขียนโปรแกรมใช้งาน Rotary Encoder แบบ X4 Counting