ค่าคงที่ในภาษา 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 รวมทั่งได้ทราบถึงประโยชน์ของการใช้งานค่าคงที่ในการเขียนโปรแกรม