ค่าคงที่

ค่าคงที่ เป็นตัวแปรที่ค่าของมันไม่สามารถเปลี่ยนแปลงได้หลังจากที่ถูกสร้างขึ้น และค่าของมันจะต้องถูกกำหนดให้ในตอนที่สร้างทันที เนื่องจากมันคือตัวแปรประเภทหนึ่ง การใช้งานของมันจะเหมือนกับตัวแปรปกติ แต่ในการประกาศต้องใช้คำสั่ง const นำหน้าเพื่อบ่งบอกว่าเป็นตัวแปรค่าค่งที่

การประกาศค่าคงที่ในภาษา C# มีรูปแบบดังนี้

const type identifier = value;

const เป็นคำสั่งที่ใช้ในการประกาศค่าคงที่ type เป็นประเภทข้อมูลของค่าคงที่โดยมีหลักการเหมือนกับการประกาศตัวแปรทั่วไป identifier นั้นเป็นชื่อของค่าคงที่ โดยส่วนมากมักจะนิยมใช้เป็นตัวพิมพ์ใหญ่ทั้งหมด value เป็นค่าของค่าคงที่ที่สร้างขึ้นและต้องกำหนดพร้อมกับตอนประกาศค่าคงที่เสมอ

การประกาศค่าคงที่

เพื่อประกาศค่าคงที่ เราทำทุกอย่างเหมือนการประกาศตัวแปรปกติ แต่จะใช้คำสั่ง const คำหน้าและกำหนดค่าให้กับมันทันที

const int SIZE= 5;
const float PI = 3.14f;
const double G = 9.8;

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

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

using System;

class Constant
{
    static void Main(string[] args)
    {
        const float PI = 3.14f;
        float r = 4;

        float area = PI * r * r;
        float circumference = 2 * PI * r;
        float volume = (4 / 3.0f) * PI * r * r * r;
        float surface = 4 * PI * r * r;

        Console.WriteLine("Circle radius = {0}", r);
        Console.WriteLine("Circle area = {0}", area);
        Console.WriteLine("Circle circumference = {0}", circumference);
        Console.WriteLine("Circle volume = {0}", volume);
        Console.WriteLine("Circle surface = {0}", surface);
    }
}

ในตัวอย่าง เราได้ประกาศตัวแปรค่าคงที่ PI และนำมาคำนวณหาพื้นที่ของวงกลมด้วยสมการหาพื้นที่ เส้นรอบวง ปริมาตร และพื้นที่ผิวจากรัศมีที่ได้กำหนดในตัวแปร r ในการใช้ค่าคงที่แสดงให้เห็นว่า เราสามารถเรียกใช้ค่าคงที่ PI ที่มีความหมายเป็นค่าของตัวเลข 3.14 ซึ่งมันง่ายในการใช้งานและจดจำ ซึ่งช่วยลดความผิดพลาดในการเขียนโปรแกรมได้เป็นอย่างมาก คุณจะสังเกตุได้ว่าการใช้งานของมันนั้นจะเหมือนการใช้ตัวแปรปกติ

อย่างที่เราได้บอกไปก่อนหน้า สิ่งหนึ่งที่คุณไม่สามารถทำได้กับค่าคงที่ก็คือการกำหนดค่าใหม่ให้กับมัน ยกตัวอย่างเช่น:

const float PI = 3.14f;
PI = 1.0f; // Invalid

ซึ่งนี่จะทำให้เกิดข้อผิดพลาดขึ้น เพราะว่าโปรแกรมจะไม่ให้คุณเปลี่ยนแปลงค่าคงที่หลังจากที่มันถูกสร้างแล้ว ซึ่งมันจะมีได้เพียงค่าเดียวตลอดการทำงานของโปรแกรม

Circle radius = 4
Circle area = 50.24
Circle circumference = 25.12
Circle volume = 267.9467
Circle surface = 200.96

และนี่เป็นผลลัพธ์ของโปรแกรมในการใช้งานค่าคงที่กับการหาพื้นที่ของวงกลม และค่าต่างๆ ของวงจากรัศมีที่ระบุ

การใช้งานค่าคงที่กับอาเรย์

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

using System;

class Constant
{
    static void Main(string[] args)
    {
        const int SIZE = 5;

        string[] names = new string[SIZE];
        int[] scores = new int[SIZE];

        Console.WriteLine("Enter name and score of {0} players", SIZE);
        for (int i = 0; i < SIZE; i++)
        {
            Console.Write("Player {0} name: ", i + 1);
            names[i] = Console.ReadLine();
            Console.Write("Player {0} score: ", i + 1);
            scores[i] = Int32.Parse(Console.ReadLine());
        }

        int maxIndex= 0;

        for (int i = 0; i < SIZE; i++)
        {
            if (scores[i] > scores[maxIndex])
            {
                maxIndex = i;
            }
        }

        Console.WriteLine("{0} is the winner with score {1}", 
            names[maxIndex], scores[maxIndex]);
    }
}

ในตัวอย่าง เราได้การประกาศค่าคงที่ SIZE สำหรับกำหนดขนาดของอาเรย์ที่จะใช้เก็บชื่อและคะแนน เราได้สร้างอาเรย์ names และ scores ที่มีขนาดตามที่ได้กำหนดในค่าคงที่ SIZE คือ 5 นั่นหมายความว่าเราสร้างอาเรย์เหล่านี้มาสำหรับเก็บชื่อและคะแนนของผู้เล่นจำนวน 5 คน

 for (int i = 0; i < SIZE; i++)
{
     Console.Write("Player {0} name: ", i + 1);
     names[i] = Console.ReadLine();
     Console.Write("Player {0} score: ", i + 1);
     scores[i] = Int32.Parse(Console.ReadLine());
}

ต่อมาเราใช้คำสั่ง For loop ในการวนอ่านชื่อและคะแนนลงไปในอาเรย์ทั้งสอง โดยการวนนั้นจะวนตามจำนวนค่าคงที่ SIZE ซึ่งใช้ตัวแปร i เป็น index ของอาเรย์

int maxIndex= 0;

for (int i = 0; i < SIZE; i++)
{
    if (scores[i] > scores[maxIndex])
    {
        maxIndex = i;
    }
}

Loop ต่อมาเป็นการหาคนที่ได้คะแนนมากที่สุด เพราะว่าเรามีอาเรย์สองตัวแปร ดังนั้นเราจะหาว่า Index ไหนของอาเรย์ที่จะมีคะแนนมากที่สุดใน scores ซึ่งก็จะเป็น Index เดียวกันกับชื่อในอาเรย์ names เราได้ใช้คำสั่ง For loop ในการวนซ้ำสำหรับเปรียบเทียบเพื่อหาค่าสูงสุด และในตอนท้ายเราจะได้ Index ของอาเรย์ที่มีค่าสูงสุด

Enter name and score of 5 players
Player 1 name: Marcus
Player 1 score: 52
Player 2 name: Mateo
Player 2 score: 34
Player 3 name: Danny
Player 3 score: 80
Player 4 name: Emily
Player 4 score: 61
Player 5 name: Kate
Player 5 score: 26
Danny is the winner with score 80

นี่เป็นผลลัพธ์การทำงานของโปรแกรม โดยเราได้กรอกชื่อและคะแนนของผู้เล่นทั้ง 5 คน และได้ผู้ชนะที่มีคะแนนมากที่สุดคือ Danny ซึ่งเขามีคะแนนเป็น 80

จากในทั้งสองตัวอย่างที่ผ่านมา คุณจะเห็นได้ว่าเราสามารถใช้ค่าคงที่ในการช่วยให้การเขียนโปรแกรมมีประสิทธิภาพมากขึ้น และในตัวอย่างที่สอง เราใช้ค่าคงที่ SIZE สำหรับแทนด้วย 5 นั่นหมายความว่ามันจะเป็นเรื่องง่ายถ้าหากเราต้องการที่จะประกาศอาเรย์ที่มีขนาดเป็น 10 หรือ 20 เราเพียงแค่เปลี่ยนจากค่าคงที่เท่านั้น ดังนั้นมันจึงช่วยลดความผิดพลาดและความสับสนในการเขียนโปรแกรมได้เป็นอย่างมาก

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับค่าคงที่ในภาษา C# เราได้คุณเห็นถึงวิธีการประกาศและใช้งานค่าคงที่ และการใช้ค่าคงที่กับการกำหนดขนาดของอาเรย์