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