Change Global Skin Color

ค่าคงที่

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