ค่าคงที่

ค่าคงที่ (constant) เป็นตัวแปรประเภทหนึ่งที่ไม่สามารถเปลี่ยนแปลงค่าได้ในขณะที่โปรแกรมทำงาน นี่หมายความว่าเราจะต้องกำหนดค่าให้ตัวแปรในเวลาที่คอมไพเลอร์ทำงานหรือในตอนแรกที่เราสร้างตัวแปรแบบค่าคงที่ขึ้นมา ค่าคงที่ที่เราใช้กันบ่อยๆ นั้นเรียกว่า literal ซึ่ง literal สามารถแบ่งแยกได้เป็น integer, floating-point, characters, strings, Boolean, pointers และที่ผู้ใช้สร้างขึ้นเอง

Typed constant

ในการประกาศค่าคงที่ในภาษา C++ นั้นเหมือนกันกับการประกาศตัวแปร แต่สำหรับการประกาศค่าคงที่นั้นจะมีคำสั่ง const เพิ่มเข้ามาข้างหน้า นี่เป็นรูปแบบของการประกาศค่าคงที่ในภาษา C++

const data_type identifier = value;

เราสามารถประกาศค่าคงที่โดยการตั้งชื่อและกำหนดค่าให้กับมันในตอนที่เราประกาศตัวค่าคงที่เสมอ หลังจากนั้นเราสามารถเรียกใช้ตัวแปรค่าคงที่โดยใช้ชื่อของมันได้ในโปรแกรม ชนิดของตัวแปรประเภทค่าคงที่นั้นเหมือนกับตัวแปรปกติ ซึ่งจะมี integer, floating-point, characters, strings, Boolean, pointers มาดูตัวอย่าง

const int LENGTH= 100;
const double PI = 3.1415926;
const char N = 'a';

ในตัวอย่าง เราได้ทำการประกาศค่าคงที่สามตัว ค่าคงที่แรกชื่อว่า LENGTH ซึ่งเป็นค่าคงแบบ Integer และค่าคงที่ที่สองชื่อว่า PI ซึ่งเป็นค่าคงแบบ float และค่าคงที่สุดท้าย N ซึ่งเป็นค่าคงที่แบบ char การตั้งชื่อให้กับค่าคงที่นั้นนิยมใช้ตัวพิมพ์ใหญ่ทั้งหมดและคั่นด้วยเครื่องหมาย underscore (_) หากเป็นชื่อที่ยาว ต่อไปเป็นตัวอย่างการใช้งานค่าคงที่ในการเขียนโปรแกรมในภาษา C++

#include <iostream>

using namespace std;

int main(){

const float PI = 3.14f;

int r1 = 3;
int r2 = 5;
int r3 = 10;

cout << "Area of circle 1 is " << (PI * r1 * r1) << endl;
cout << "Area of circle 2 is " << (PI * r2 * r2) << endl;
cout << "Area of circle 3 is " << (PI * r3 * r3) << endl;

cout << "Circumstance of circle 1 is " << (2 * PI * r1) << endl;
cout << "Circumstance of circle 2 is " << (2 * PI * r2) << endl;
cout << "Circumstance of circle 3 is " << (2 * PI * r3) << endl;

return 0;
}

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

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

Area of circle 1 is 28.26
Area of circle 2 is 78.5
Area of circle 3 is 314
Circumstance of circle 1 is 18.84
Circumstance of circle 2 is 31.4
Circumstance of circle 3 is 62.8

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

#include <iostream>

using namespace std;

int main(){

const float SPEED = 182305.92f; // mph

cout << "Spacecraft can travel in space with average speed at " << SPEED << " mph." << endl;
cout << "How far does it move in 1 second: " << (1 * SPEED / 3600.f) << " miles." << endl;
cout << "How far does it move in 1 minute: " << (60 * SPEED / 3600.f) << " miles." << endl;
cout << "How far does it move in 1 hour: " << (3600 * SPEED / 3600.f) << " miles." << endl;
cout << "How far does it move in 1 day: " << (86400 * SPEED / 3600.f) << " miles." << endl;
cout << "How far does it move in 1 month: " << (86400 * 30 * SPEED / 3600.f) << " miles." << endl;
cout << "How far does it move in 1 year: " << (86400 * 365 * SPEED / 3600.f) << " miles." << endl;

cout << "How long does it take from the earth to the moon: " << (238855.086 / SPEED) << " hours." << endl;
cout << "How long does it take from the earth to the sun: " << (92.95713e6 / SPEED / 24) << " days." << endl;
cout << "How long does it take to travel in 1 light year: " << (5.8786e12 / SPEED / 24 / 365) << " years." << endl;

return 0;
}

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

Spacecraft can travel in space with average speed at 182306 mph.
How far does it move in 1 second: 50.6405 miles.
How far does it move in 1 minute: 3038.43 miles.
How far does it move in 1 hour: 182306 miles.
How far does it move in 1 day: 4.37534e+006 miles.
How far does it move in 1 month: 1.3126e+008 miles.
How far does it move in 1 year: 1.597e+009 miles.
How long does it take from the earth to the moon: 1.31019 hours.
How long does it take from the earth to the sun: 21.2457 days.
How long does it take to travel in 1 light year: 3681.03 years.

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Preprocessor definitions

ในการเขียนโปรแกรมในภาษา C++ มีอีกทางหนึ่งในการประกาศค่าคงที่คือการใช้ processor definitions โดยมีรูปแบบดังนี้

 #define identifier replacement 

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

#define PI 3.14159
#define NAME 'Mateo'

ตอนนี้ เราสามารถใช้ค่าคงที่ที่เราเพิ่งได้สร้าง โดยการใช้ชื่อของมัน

#include <iostream>
using namespace std;

#define PI 3.14159
#define NAME "Mateo"

int main(){
cout << "Pi is " << PI << endl;
cout << "Name is " << NAME ;
return 0;
}

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

#include <iostream>
using namespace std;

#define SIZE 10

int number[SIZE];

int main(){

for (int i = 0; i < SIZE; i++) {
cout << "Enter number " << (i + 1) << ": ";
cin >> number[i];
}

cout << "Numbers in array: ";
for (int i = 0; i < SIZE; i++) {
cout << number[i] << ", ";
}

return 0;
}

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

Enter number 1: 2
Enter number 2: 5
Enter number 3: 3
Enter number 4: 2
Enter number 5: 7
Enter number 6: 0
Enter number 7: 7
Enter number 8: 2
Enter number 9: 3
Enter number 10: 6
Numbers in array: 2, 5, 3, 2, 7, 0, 7, 2, 3, 6,

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เราได้กรอกตัวเลข 10 จำนวนลงไปในอาเรย์และแสดงผลออกมา

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


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

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

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

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

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

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

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

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

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

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

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