วันเสาร์ที่ 8 พฤศจิกายน พ.ศ. 2551

Data Type (ตัวแปร)

ตัวแปร

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

Type name

        ถ้าเราพยายามใช้ตัวแปรที่ยังไม่มีการประกาศเอาไว้ก่อนแล้ว Code ของเราจะไม่ถูก Compile แต่ Compiler จะบอกถึงสาเหตุที่แท้จริงที่เกิดขึ้น ดังนั้นจึงไม่ใช่ข้อผิดพลาดที่รายแรงเท่าใดนัก นอกจากนี้ การพยายามที่จะใช้ตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น ให้กับมัน มักจะเกิดข้อผิดพลาด แต่ก็อีกนั้นแหละตัว Compiler จะตรวจสอบพบมันได้ ตัวแปรอย่างง่ายๆ ที่จะแนะนำนี้ คือชนิดของตัวแปร เช่น ตัวเลข และ Boolean ที่ใช้เป็นรากฐานในการสร้าง Block สำหรับ Application ของเรา และสำหรับสิ่งอื่นๆ คือ ตัวแปรที่สลับซับซ้อน ตัวแปรอย่างง่าย ส่วนใหญ่แล้ว คือ ตัวเลข ซึ่งเมื่อเริมต้นนั้น มันดูเหทือนแปลกตาอยู่บ้าง แน่นอนว่าจำเป็นไหม ที่เราต้องการแค่ชนิดเดียวเท่านั้นที่ใช้เก็บตัวเลข

        เหตุผลที่ตัวแปรชนิดตัวเลข มีอยู่มากมายนั้น เป็นไปตามกลไกของการจัดเก็บตัวเลข ในลักษณะอนุกรม ของ 0 และ 1 ในหน่วยความจำของคอมพิวเตอร์ สำหรับค่าจำนวนเต็ม เราเพียงแค่นำจำนวน Bit แล้วแทนที่จำนวนของเราในแบบ Binary ตัวแปรที่จัดเก็บ N Bit จะอนุญาติให้เราจัดเก็บจำนวนใดๆ ระหว่าง 0 ถึง 2n - 1 ได้ ถ้าจำนวนใดๆที่มากกว่าค่านี้ จะใหญ่เกินไป ที่จะใส่ไปในตัวแปรได้ ถ้าเราต้องการให้สามารถเก็บจำนวนได้มากขึ้น เราต้องใช้ Bit มากขึ้นด้วย ดังนั้น เราจึงจำเป็นจะต้องกำหนดตัวแปรให้เหมาะสม กับขนาดของข้อมูลที่เราจะใช้ ดังตารางต่อไปนี้ ซึ่งเป็นตารางตัวแปรชนิดตัวเลขจำนวนเต็ม

ชนิด
มาจาก
ช่วงข้อมูล
sbyte
System.Sbyte
-128 ถึง 127
byte
System.Byte
0 ถึง 255
short
System.Int16
-32768 ถึง 32767
ushort
System.UInt16
0 ถึง 65535
int
System.Int32
-2147483648 ถึง 21474483647
uint
System.UInt32
0 ถึง 4294967295
long
System.Int64
-9223372036854775808 ถึง 9223372036854775807
ulong
System.UInt64
0 ถึง 18446744073709551615

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

        นอกจาก ตัวแปรชนิดตัวเลขจำนวนเต็มแล้ว เรายังต้องการจัดเก็บแบบ ตัวเลขทศนิยม (Floating point) อีกด้วย ซึ่งเป็นอะไรก็ได้ที่ไม่ใช่ตัวเลขเสียทั้งหมด มีชนิดตัวแปรอยู่ 3 ชนิด สำหรับตัวเลขทศนิยม ที่เราสามารถใช้ได้ ได้แก่ float, double และ decimal สองชนิดแรกในจำนวนนี้ จะจัดเก็บทศนิยม ในรูปของ +/- m x 2e ซึ่งอนุญาติ ให้จัดเก็บค่าสำหรับ m และ e ต่างกันไปตามแต่ละชนิด ชนิดตัวแปร decimal ใช้รูปแบบเพิ่มเข้ามาอีกอย่างหนึ่งคือ +/- m x 10e ชนิดตัวแปรทั้ง 3 เหล่านี้ แสดงไว้ในตารางข้างล่าง พร้อมทั้งช่วงของข้อมูล ดังนี้

ชนิด
มาจาก
ช่วง m
ช่วง e
ช่วงข้อมูล
float
System.Single
0 ถึง 244
-149 ถึง 104
1.5x10-45 ถึง 3.4x1038
double
System.Double
0 ถึง 253
-1075 ถึง 970
5.0x10-324 ถึง 1.7x10308
decimal
System.Decimal
0 ถึง 296
-26 ถึง 0
1.0x10-28 ถึง 7.9x1028

        นอกจากนี้ยังมีชนิดตัวแปรอีก 3 ชนิด ดังตารางข้างล่าง

ชนิด
มาจาก
ค่าข้อมูล
char
System.Char
อักษร Unicode 0 ถึง 65535
bool
System.Boolean
ค่า Boolean คือ true & flase
string
System.String
สายลำดับอักขระ

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

        ชนิดตัวแปรแบบ bool เป็นหนึ่งในชนิดตัวแปร ที่ใช้กันโดยทั่วไปใน C# และจริงๆ แล้ว ชนิดข้อมูลที่คล้ายกันนี้ ก็สืบทอดไปใน Code ของภาษาอื่นๆ อย่างเท่าเทียมกัน การที่มีตัวแปรที่สามารถ เป็น true หรือ false มีความสำคัญเชิงขยาย เมื่อมันถูกนำมาใช้กับ Flow ของ ตรรกะ ใน Application หนึ่งๆ


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

        การประกาศตัวแปรนั้น กระทำแบบเดียวกันกับ C++ เช่น

int a;

char b;

float c;

double d;

string e;

         หลังจากที่ประกาศตัวแปร เราก็จะกำหนดค่าให้กับตัวแปร โดยใช้ Operator = ดังนี้

a = 1;

b = 'd';

c = 1.05f;

d = 1234.44f;

e = "สกลนคร";

         จงจำไว้ว่า ใน C# นั้น ตัวแปรทั้งหลาย จะต้องกำหนดค่าเริ่มต้นให้กับมัน ก่อนที่เราจะใช้งานมัน เช่น

int a;

char b;

float c;

double d;

string e;

a = 1;

b = 'd';

c = 1.05f;

d = 1234.44f;

e = "สกลนคร";

หรือ

int a = 1;

char b= 'd';

float c = 1.05f;;

double d= 1234.44f ;

string e = "สกลนคร" ;

ไม่มีความคิดเห็น: