ตัวแปรและประเภทข้อมูล

11 February 2016

ตัวแปร

ตัวแปรถูกใช้เพื่อเก็บข้อมูลในหน่วยความจำเพื่อนำข้อมูลเหล่านั้นไว้ใช้ภายหลังในโปรแกรม ในภาษา 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# เราได้พูดเกี่ยวกับประเภทข้อมูลแบบต่างๆ ขนาดและค่าที่มันสามารถเก็บได้ และการประกาศและการใช้งานตัวแปรซึ่งเป็นพื้นฐานในการในการเขียนโปรแกรม

บทความนี้เป็นประโยชน์หรือไม่? Yes · No