ค่าคงที่

ค่าคงที่ในภาษา C

ค่าคงที่ (constant) เป็นตัวแปรที่ไม่สามารถเปลี่ยนแปลงค่าในภายหลังได้ ค่าของตัวแปรค่าคงที่จะต้องถูกกำหนดพร้อมกับการประกาศตัวแปรเสมอ ค่าคงที่สามารถเป็นข้อมูลประเภทต่างๆ เหมือนประเภทข้อมูลพื้นฐานได้ เช่น integer, floating-point, characters, boolean, pointers, และ user-defined literals.

Typed constant

ในภาษา C เราสามารถประกาศค่าคงที่ได้ โดยมีรูปแบบตามนี้

const data_type identifier = value;

การประกาศค่าคงที่นั้นเหมือนกับตัวแปร แต่แตกต่างคือต้องมีคำสั่ง const นำหน้า และต้องกำหนดข้อมูลให้กับค่าคงที่ทันทีเมื่อมันถูกสร้าง มาดูตัวอย่างการประกาศค่าคงที่ในภาษา C

const int myConstant = 100;
const float PI = 3.14;

ในตัวอย่างเราได้สร้างค่าคงที่สองตัว ตัวแรกมีประเภทข้อมูลเป็นแบบ integer และมีชื่อว่า myConstant ตัวที่สองมีประเภทเป็น floating-point number และมีชื่อว่า PI การใช้ค่าคงที่นั้นเหมือนกับการใช้ตัวแปร นี่เป็นตัวอย่างของการใช้งานที่รวมทั้งค่าคงที่และตัวแปร

#include <stdio.h>

int main () {
const float PI = 3.14;
int r = 2;
double result = 2 * PI * r;
printf("Area of the circle is %f", result );
return 0;
}

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

Area of the circle is 12.56

ต่อไปมาดูตัวอย่างเพิ่มเติมของการใช้งานค่าคงที่ในภาษา C เราจะประกาศค่าคงที่และนำมาใช้ในการคำนวณทางวิทยาศาสตร์

#include <stdio.h>

int main ()
{
const float EARTH_GRAVITY = 9.801f;

float time = 4.5;

float velocity = EARTH_GRAVITY * time;
float height = 0.5 * EARTH_GRAVITY * time * time;

printf("Speed at the ground: %f m/s\n", velocity);
printf("Building height: %f m\n", height);

return 0;
}

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

Speed at the ground: 44.131500 m/s
Building height: 99.295876 m

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

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

Preprocessor definitions

อีกทางหนึ่งในการสร้างค่าคงที่คือการใช้ processor definitions ซึ่งเป็นการประกาศค่าคงที่ในรูปแบบของ macro ถึงแม้ว่านี่จะไม่ได้เป็นค่าคงที่จริงๆ แต่ในการเขียนโปรแกรมในภาษา C นั้นเรานิยมที่จะใช้วิธีนี้มาก โดยมีรูปแบบดังนี้

 #define identifier replacement 

ในการประกาศค่าคงที่แบบ marco เราใช้คำสั่ง #define ตามด้วยชื่อของค่าคงที่และค่าของมัน คำสั่งนี้จะกระทำโดย preprocessor ก่อนที่โปรแกรมจะถูกคอมไพล์ มันไม่จำเป็นต้องใช้เครื่องหมายเซมิโคลอนในตอนท้าย การทำงานของมันคือจะแทนที่ทุกคำที่พบที่ตรงกับ identifier ให้เป็น replacement คุณสามารถดูได้จากตัวอย่างด้านล่าง

#include <stdio.h>
#define PI = 3.14

int main () {
int r = 2;
double result = 2 * PI * r;
printf("Area of the circle is %f", result );
return 0;
}

มันเหมือนกันกับตัวอย่างก่อนหน้า แต่เราเปลี่ยนมาใช้วิธีของ processor definitions แทน ต่อไปมาดูตัวอย่างการใช้งาน processor definitions สำหรับการประกาศค่าคงที่ที่กำหนดขนาดของอาเรย์ในภาษา C

#include <stdio.h>
#define SIZE 10

int main ()
{
int number[SIZE];

// Reading number to array
int i;
for (i = 0; i < SIZE; i++) {
scanf("%d", &number[i]);
}

// Display array
for (i = 0; i < SIZE; i++) {
printf("number[%d] = %d\n", i, number[i]);
}

int sum = 0;
int min = number[0];
int max = number[0];

for (i = 0; i < SIZE; i++) {
sum += number[i];
// Find minimum value in array
if (number[i] > max) {
max = number[i];
}
// Find maximum value in array
if (number[i] < min) {
min = number[i];
}
}

printf("Sum = %d\n", sum);
printf("Min = %d\n", min);
printf("Max = %d\n", max);

return 0;
}

ในตัวอย่าง เป็นโปรแกรมสำหรับเก็บตัวเลขลงไปในอาเรย์ หลังจากนั้นนำตัวเลขในอาเรย์มาแสดงผล รวมทั้งการหาผลรวมของตัวเลขทั้งหมดในอาเรย์ และค่าน้อยที่สุดและมากที่สุด ในตอนแรกเราใช้ processor definitions สำหรับกระกาศค่าคงที่ SIZE ที่เป็นขนาดของอาเรย์ เมื่อโปรแกรมถูกคอมไฟล์นั้นจะทำการแทนที่ SIZE ที่พบในโปรแกรมด้วย 10 ทั้งหมด

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

10
-4
23
5
3
-8
9
-1
7
2
number[0] = 10
number[1] = -4
number[2] = 23
number[3] = 5
number[4] = 3
number[5] = -8
number[6] = 9
number[7] = -1
number[8] = 7
number[9] = 2
Sum = 46
Min = -8
Max = 23

และนี่เป็นผลลัพธ์การทำงานของโปรแกรมโดยการประกาศค่าคงที่ด้วย processor definitions สำหรับประกาศขนาดของอาเรย์

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการประกาศและใช้งานค่าคงที่ในภาษา C ทั้งวิธีพื้นฐานและโดยการใช้ processor definitions รวมทั่งได้ทราบถึงประโยชน์ของการใช้งานค่าคงที่ในการเขียนโปรแกรม


บทความเกี่ยวกับ ค่าคงที่

ค่าคงที่ ในภาษา C#

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

ค่าคงที่ ในภาษา Java

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับค่าคงที่ (constants) ในภาษา Java ตั้งแต่วิธีการประกาศค่าคงที่ การใช้งาน ประโยชน์และข้อได้เปรียบของการใช้งานค่าคงที่ และเรียนรู้...

ค่าคงที่ ในภาษา Visual Basic

ค่าคงที่ (constants) เป็นตัวแปรหรือประเภทของข้อมูลที่ไม่สามารถเปลี่ยนแปลงค่าได้ในภายหลัง นั่นหมายความว่ามันจะต้องกำหนดค่าก่อนการทำงานของคอมไพเลอร์เสมอ ค่าคงที่ท...

ค่าคงที่ ในภาษา C++

ค่าคงที่ (constant) เป็นตัวแปรประเภทหนึ่งที่ไม่สามารถเปลี่ยนแปลงค่าได้ในขณะที่โปรแกรมทำงาน นี่หมายความว่าเราจะต้องกำหนดค่าให้ตัวแปรในเวลาที่คอมไพเลอร์ทำงานหรือใ...

ค่าคงที่ ในภาษา PHP

ค่าคงที่ (Constants) คือค่าของ Literal ใดๆ ที่ถูกกำหนดให้กับตัวแปรค่าคงที่ ค่าคงที่จะไม่สามารถเปลี่ยนแปลงได้ภายในโปรแกรมและเป็นได้เพียงค่าเดียวตั้งแต่โปรแกรมเริ...