ตัวแปรและประเภทข้อมูล
ตัวแปร
ตัวแปรถูกใช้เพื่อเก็บข้อมูลในหน่วยความจำเพื่อนำข้อมูลเหล่านั้นไว้ใช้ภายหลังในโปรแกรม ในภาษา C# นั้นมีตัวแปรประเภทต่างๆ ที่มีชนิดข้อมูลที่แตกต่างกันไป เช่น boolean integer floating point string และพอยน์เตอร์ โดยการประกาศตัวแปรนั้นมีรูปแบบดังนี้
type identifier;
โดยที่ type
เป็นชนิดของข้อมูลพื้นฐานที่มีในภาษา C# แต่อย่างไรก็ตามมันยังสามารถเป็นชนิดข้อมูลแบบอื่นๆ ได้ เช่น ออบเจ็ค ซึ่งเราจะกล่าวภายหลังในบทเรียนนี้ ส่วน identifier
เป็นชื่อของตัวแปรที่เราต้องการสร้างขึ้น และนี่เป็นตัวอย่างในการประกาศตัวแปรในภาษา C#
char a;
int b;
float c = 5.6f;
ในการตั้งชื่อตัวแปรนั้น ชื่อของตัวแปรไม่สามารถตรงกับคำสงวนที่มีในภาษา C# ได้ และจะเป็นแบบ case-sensitive นั่นหมายความว่า ตัวแปร name
และ NAME
เป็นตัวแปรคนละตัวแปรกัน ในการตั้งชื่อตัวแปรในภาษา C# จะมีกฏดังนี้
- ชื่อของตัวแปรสามารถประกอบไปด้วย ตัวอักษรภาษาอังกฤษ ตัวเลข และเครื่องหมาย _ เท่านั้น และไม่สามารถขึ้นต้นด้วยตัวเลขได้
- ชื่อของตัวแปรต้องไม่ตรงกับคำสงานในภาษา C# แต่อย่างไรก็ตาม คุณสามารถใช้เครื่องหมาย @ นำหน้าชื่อตัวแปรได้หากคุณต้องการใช้คำสงวน แต่นั่นไม่ใช่วิธีการปฏิบัติที่ดี
ในกฏการตั้งชื่อของตัวแปรที่เราได้กล่าวมานั้นยังสามารถใช้กับการตั้งชื่อ เมธอด คลาส Interfaces หรือสิ่งต่างๆ ที่ผู้ใช้เป็นคนกำหนดขึ้นมา ซึ่งคุณจะได้เห็นตัวอย่างการใช้งานในบทต่อๆ ไปของบทเรียน
ประเภทข้อมูล
ในภาษา C# มีประเภทข้อมูลเพียงพอที่ให้เราสามารถจัดการกับข้อมูลประเภทต่างๆ ได้ เช่น ตัวอักษร ข้อความ ตัวเลขจำนวนเต็ม และจำนวนจริง เป็นต้น ซึ่งข้อมูลแต่ละประเภทจะใช้สำหรับเก็บค่าที่แตกต่างกันออกไป เช่น เก็บค่าคะแนนของผู้เล่นเกมส์ไว้ในตัวแปรประเภทจำนวนเต็ม หรือเก็บชื่อไว้ในตัวแปรประเภทข้อความ เป็นต้น
และนี่เป็นข้อมูลพื้นฐาน 4 ประเภทที่มีในภาษา C# ซึ่งประเภทข้อมูลเหล่านี้เป็น Primitive datatype หรือประเภทข้อมูลพื้นฐานในการเขียนโปรแกรม
- Characters: นี่เป็นประเภทของข้อมูลที่ใช้ในการเก็บตัวอักษร โดยการใช้คำสั่ง
char
หรือstring
ในการประกาศตัวแปร - Integer: นี่เป็นประเภทข้อมูลที่ใช้ในการเก็บข้อมูลตัวเลขแบบจำนวนเต็ม โดยการใช้คำสั่ง
int
หรือlong
ในการประกาศตัวแปร แต่ที่แตกต่างกันคือหน่วยความจำที่ใช้ในการเก็บ เช่น long จะเ็บข้อมูลได้มากกว่า int และมันก็ใช้หน่วยความจำมากกว่าเช่นกัน - Floating point: นี่เป็นประเภทของข้อมูลที่ใช้สำหรับการเก็บตัวเลขแบบทศนิยมหรือจำนวนจริง โดยการใช้คำสั่งอย่างเช่น
float
หรือdouble
ในการประกาศตัวแปร - Boolean: ประเภทข้อมูลนี้สามารถเก็บข้อมูลได้เพียงแค่สองค่าคือ
true
และfalse
ประเภทของข้อมูลแบบอื่นในภาษา C# นั้นจะเป็นประเภทข้อมูลแบบออบเจ็ค อาเรย์ ซึ่งจะมากับไลบรารี่ของภาษาหรือผู้ใช้ก็สามารถสร้างขึ้นเองได้เช่นกัน
ตารางข้างล่างนี้เป็นตารางแสดงประเภทของข้อมูลพื้นฐานในภาษา C#
คลาส | ประเภท | คำอธิบาย | ค่า |
---|---|---|---|
Char | char | ตัวอักษร Unicode character ขนาด 16 bit | U +0000 ถึง U +ffff |
SByte | sbyte | เลขจำนวนเต็มขนาด 8 bit | -128 ถึง 127 |
Int16 | short | เลขจำนวนเต็มขนาด 16 bit | -32,768 ถึง 32,767 |
Int32 | int | เลขจำนวนเต็มขนาด 32 bit | -2,147,483,648 ถึง 2,147,483,647 |
Int64 | long | เลขจำนวนเต็มขนาด 64 bit | -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807 |
Single | float | เลขจำนวนจริงขนาด 32 bit | -3.40282E38 ถึง 3.40282E38 |
Double | double | เลขจำนวนจริงขนาด 64 bit | -1.79769E308 ถึง 1.79769E308 |
Byte | byte | เลขจำนวนเต็มบวกขนาด 8 ฺbit | 0 ถึง 255 |
UInt16 | ushort | เลขจำนวนเต็มบวกขนาด 16 ฺbit | 0 ถึง 65,535 |
UInt32 | unsigned int | เลขจำนวนเต็มบวกขนาด 32 ฺbit | 0 ถึง 4,294,967,295 |
UInt64 | unsigned long | เลขจำนวนเต็มบวกขนาด 64 ฺbit | 0 ถึง 18,446,744,073,709,551,615 |
Decimal | decimal | เลขขนาด 128 ฺbit | -7.92282E28 ถึง 7.92282E28 |
Boolean | boolean | ค่า true หรือ false | true, false |
String | string | ใช้เก็บตัวอักษรหลายตัวหรือ text | Multiple characters (Char array) |
การประกาศตัวแปร
เราได้อธิบายแนวคิดและวิธีการประกาศตัวแปรไปแล้ว ต่อไปมาดูตัวอย่างการประกาศและใช้งานตัวแปรในภาษา C#
int x;
x = 10;
ในตัวอย่าง เราได้ประกาศตัวแปรที่ชื่อว่า x
ซึ่งเป็นตัวแปรแบบจำนวนเต็ม โดยใช้คำสั่ง int
ในการประกาศ และบรรทัดต่อมาเราได้กำหนดค่าให้กับตัวแปร อย่างไรก็ตามเราสามารถประกาศตัวแปรและกำหนดค่าให้กับมันได้พร้อมกัน
int a = 4;
float b = 10.5;
String name = "Thomas";
ในตัวอย่างเราได้ประกาศตัวแปรมา 3 ตัวแปร ตัวแปร a
เป็นประตัวประเภท Integer และเรากำหนดค่า 4 ให้เป็นค่าของมัน ตัวแปร b
เป็นตัวแปรประเภท float และกำหนดค่า 10.5 ให้กับมัน ตัวแปรตัวสุดท้าย name
เป็นตัวแปรประเภท string และมีค่าคือ "Thomas"
และข้างล่างนี้เป็นตัวอย่างแบบเต็ม คุณสามารถลองรันโปรแกรมบนคอมพิวเตอร์ของคุณได้
using System;
class Variable
{
public static void Main (string[] args)
{
int year = 1990;
string name = "Thomas";
string nationality = "American";
Console.WriteLine ("His name is {0}", name);
Console.WriteLine ("He was born in {0}", year);
Console.WriteLine ("He is {0}", nationality);
}
}
และนี่เป็นผลลัพธ์ของโปรแกรม
His name is Thomas
He was born in 1990
He is American
Boolean
ฺBoolean เป็นประเภทข้อมูลที่สามารถเก็บได้สองค่าคือ true
และ false
มันใช้สำหรับเก็บข้อมูลที่มีค่าเป็นไปได้เพียงสองค่าหรือสองสถานะ เช่น เพศชายและหญิง กลางวันและกลางคืน เปิดหรือปิด เป็นต้น Boolean นั้นเป็นข้อมูลที่ใช้เป็น Expression ที่ทำงานร่วมกับคำสั่งควบคุมหรือคำสั่งเงื่อนไข มาตัวตัวอย่างการประกาศและใช้งานตัวแปรประเภท Boolean ในภาษา C#
using System;
class BooleanExample
{
static void Main(string[] args)
{
bool isDay = true;
if (isDay)
{
Console.WriteLine("Good morning.");
}
else
{
Console.WriteLine("Good night.");
}
bool gameOver = false;
Console.WriteLine("Game over = {0}", gameOver);
}
}
ในตัวอย่าง เราปได้ประกาศตัวแปร isDay
สำหรับกำหนดว่าเป็นกลางวันหรือกลางคืน เราใช้คำสั่ง If ในการตรวจสอบค่า เพราะว่าตัวแปรมีค่าเป็นจริง บล็อคภายในคำสั่ง If จึงทำงาน ต่อมาเป็นตัวแปร gameOver
ใช้ในการเก็บสถานะของเกมว่าจบหรือยัง
Good morning.
Game over = False
นี่เป็นผลลัพธ์การทำงานของโปรแกรม ในการใช้งานตัวแปรประเภท Boolean
ประเภทข้อมูลตัวเลขจำนวนเต็ม
ในภาษา C# นั้น ข้อมูลประเภทจำนวนเต็มจะแบ่งเป็นหลายขนาด ซึ่ง Byte เป็นข้อมูลที่เก็บค่าได้น้อยที่สุด ส่วน Long จะเก็บค่าได้มากที่สุด และนอกจากนี้ยังมีประเภทแบบไม่มีเครื่องหมายด้วยที่เก็บเพียงจำนวนเต็มบวกเท่านั้นที่เรียกว่า unsigned มาดูตัวอย่างในการประกาศและใช้งานตัวแปรประเภทตัวเลขในภาษา C#
using System;
class NumberExample
{
static void Main(string[] args)
{
int apple = 10;
int mango = 5;
int totalFruit = apple + mango;
Console.WriteLine("We have {0} fruits in the basket", totalFruit);
byte month = 12;
byte day = 10;
short year = 2016;
Console.WriteLine("Date {0}/{1}/{2}", month, day, year);
decimal bigNumber = 9460730472580800;
Console.WriteLine(bigNumber.ToString("0.00000E0"));
int max = Int32.MaxValue;
Console.WriteLine(max);
max = max + 1;
Console.WriteLine(max);
}
}
ในตัวอย่างเป็นการประกาศตัวแปรในการเก็บตัวเลขที่ประกอบไปด้วยตัวแปรประเภทต่างๆ เราได้ประกาศตัวแปร Integer สำหรับเก็ยจำนวนของผลไม้และหาผลรวมในตัวแปร totalFruit
และจากนั้นแสดงผลรวมออกทางหน้าจอ
byte month = 12;
byte day = 10;
short year = 2016;
...
decimal bigNumber = 9460730472580800;
ต่อมาเป็นการประกาศตัวแปรสำหรับเก็บค่าของวันเดือนปี เราใช้ตัวแปรประเภท byte
และ short
เพราะว่าการใช้ประเภทข้อมูลเหล่านี้ก็สามารถเก็บค่าของวันที่ได้เพียงพอแล้ว ดังนั้นคุณควรจะเลือกใช้ขนาดของตัวแปรให้เหมาะสมกับข้อมูล ในตัวอย่างในตัวแปร month
และ day
นั้นมีค่าที่มากที่สุดเป็น 31 ดังนั้นการเลือกใช้ byte ในการเก็บทำให้ประหยัดหน่วยความจำได้ และประกาศตัวแปรประเภท decimal
สำหรับเก็บค่าของตัวเลขขนาดใหญ่
int max = Int32.MaxValue;
Console.WriteLine(max);
max = max + 1;
Console.WriteLine(max);
สุดท้ายเป็นการเกิด Overflow ในการเขียนโปรแกรม ซึ่งจะเกิดขึ้นเมื่อข้อมูลภายในตัวแปรนั้นเพิ่มขึ้นมากกว่าค่าสูงสุด หรือลดลงมากกว่าค่าต่ำสุดที่ตัวแปรสามารถเก็บค่าได้ ในตัวอย่างเราได้กำหนดค่าให้กับตัวแปร max
จาก Property Int32.MaxValue
ซึ่งเป็นค่าสูงสุดของข้อมูลแบบ Integer หลังจากนั้นเราได้เพิ่มค่าของตัวแปรไป 1 ทำให้ค่าของตัวแปรเกินค่าสูงสุดที่รับได้ ซึ่งค่าสูงสุดของ Integer คือ 2,147,483,647 ดังนั้นตัวแปรจึง Overflow ไปยังค่าต่ำสุด
We have 15 fruits in the basket
Date 12/10/2016
9.46073E15
2147483647
-2147483648
นี่เป็นผลลัพธ์ของโปรแกรมในการทำงานกับตัวเลข
ประเภทข้อมูลตัวเลขทศนิยม
ประเภทข้อมูลแบบทศนิยมใช้สำหรับเก็บตัวเลขใดๆ ที่มีหลักของทศนิยมด้วย ข้อมูลประเภทนี้ใช้สำหรับเก็บข้อมูลที่มีความอะเอียดหรือเศษส่วน เช่น ตัวเลขการทำควณทางวิทยาศาสตร์ ในภาษา C# ข้อมูลประเภทนี้จะมี float
double
และ decimal
มาดูตัวอย่างการประกาศและใช้งาน
using System;
class Booleanxample
{
static void Main(string[] args)
{
float speed = 8.3f;
float time = 10.25f;
float distance = speed * time;
Console.WriteLine("Mateo runs at speed {0} m/s in {1} seconds", speed, time);
Console.WriteLine("Total run distance {0} meters", distance);
float lightSpeed = 5.8786E12f; // 5.8786 x 10^12
Console.WriteLine("Light can travel {0} miles in 1 year", lightSpeed);
double day = 365.25;
double neutronMass = 1.674927471E-27;
double pi = 22 / 7.0f;
Console.WriteLine("Earth take about {0} day to orbit the sun", day);
Console.WriteLine("PI value = {0}", pi);
Console.WriteLine("Neutron Mass = {0} kg", neutronMass);
}
}
ในตัวอย่าง เราได้ประกาศตัวแปรประเภท float และ double เพื่อเก็บข้อมูลแบบทศนิยม ในการกำหนดค่าให้กับตัวแปรประเภท float
นั้นเราจะต้องลงท้ายตัวเลขด้วยตัวอักษร f
เสมอกเพื่อบ่งบอกว่าเป็นข้อมูลประเภท float เช่น ในคำสั่ง float speed = 8.3f;
สำหรับ double นั้นไม่ต้องมีตัวอักษร
float lightSpeed = 5.8786E12f; // 5.8786 x 10^12
...
double neutronMass = 1.674927471E-27;
double pi = 22 / 7.0f;
นอกจากนี้ การกำหนดค่าให้กับตัวแปรยังสามารถใช้ในรูปแบบวิทยาศาสตร์ได้ ดังในคำสั่งข้างบนโดยการใช้ตัวอักษร E
ซึ่งหมายถึงแทนสิบยกกำลัง ซึ่งในตัวอย่างหมายถึง 5.8786 x 10^12
หรือสามารถกำหนดค่าในรูปแบบของ Expression เหมือนในคำสั่ง double pi = 22 / 7.0f;
Mateo runs at speed 8.3 m/s in 10.25 seconds
Total run distance 85.075 meters
Light can travel 5.8786E+12 miles in 1 year
Earth take about 365.25 day to orbit the sun
PI value = 3.14285714285714
Neutron Mass = 1.674927471E-27 kg
นี่เป็นผลลัพธ์ของตัวอย่างในการใช้ประเภทข้อมูลแบบจำนวนจริง
Char and String
ตัวแปรอีกประเภทหนึ่งที่สำคัญคือ Char และ String ซึ่งข้อมูลประเภทนี้มีรูปแบบการเก็บข้อมูลเหมือนกัน แต่สิ่งที่แตกต่างกันคือ Char จะเก็บข้อมูลเพียงหนึ่งตัวอักษร และใช้เครื่องหมาย '
ล้อมรอบค่าของ Literal ส่วน String สามารถเก็บได้หลายตัวอักษรและใช้เครื่องหมาย "
ล้อมรอบค่าของ Literal มาดูตัวอย่างการประกาศตัวแปรประเภท Char และ String
char ch = 'C';
string siteName = "MarcusCode";
Console.WriteLine("You are learning {0}# on {1}", ch, siteName);
อย่างไรก็ตามคุณจะได้เรียนเกี่ยวกับ String ในภายหลังของบทนี้ เพราะว่า String เป็นประเภทข้อมูลที่สำคัญและมีการใช้งานค่อนข้างมากในการเขียนโปรแกรม
ในการเขียนโปรแกรม เพราะว่าเราจัดการกับข้อมูลหลากหลายประเภท ดังนั้นการแปลงประเภทข้อมูลจากประเภทหนึ่งไปยังประเภทหนึ่งจึงเป็นสิ่งที่สำคัญ ในภาษา C# มีเมธอดในการแปลงข้อมูลมาพร้อมกับคลาสของประเภทข้อมูลอย่างครบถ้วน เช่น Int32.Parse()
เป็นเมธอดในการแปลง String เป็นตัวเลขแบบ Integer หรือคุณสามารถใช้เมธอดในคลาส Convert
ได้เช่นกัน ซึ่งเราจะกล่าวในบทต่อไปของบทเรียนนี้
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับตัวแปร และประเภทข้อมูล ในภาษา C# เราได้พูดเกี่ยวกับประเภทข้อมูลแบบต่างๆ ขนาดและค่าที่มันสามารถเก็บได้ และการประกาศและการใช้งานตัวแปรซึ่งเป็นพื้นฐานในการในการเขียนโปรแกรม