7.ค่าคงที่, Escape codes,การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl

ค่าคงที่

ค่าคงที่ (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 ซึ่งเป็นค่าคงแบบ int และค่าคงที่ที่สองชื่อว่า 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 แทน ซึ่งจะช่วยลดความผิดพลาดในการเขียนโปรแกรมและทำให้โปรแกรมของคุณเข้าใจง่ายมากขึ้น ซึ่งโดยทั่วไปแล้วค่าคงที่นั้นจะนิยมตั้งชื่อโดยใช้ตัวใหญ่ทั้งหมด ทำให้มันสังเกตุได้ง่ายจากตัวแปรปกติ
อ่านต่อคลิก:http://marcuscode.com/lang/cpp/constants

ค่าคงที่ (Constants)

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

การนิยามค่าคงที่

      ในการนิยามค่าคงที่จะใช้ตัวกระทำการล่วงหน้า (pre-processor directive) ซึ่งได้แก่ “define” เพื่อใช้ในการนิยามค่าคงที่โดยมีลักษณะรูปแบบการใช้งานดังนี้
#define identifier value
      ดังตัวอย่างต่อไปนี้
1
2
3
#define PI 3.14
 
#define A 5

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

การนิยามค่าคงที่

      ในการนิยามค่าคงที่จะใช้ตัวกระทำการล่วงหน้า (pre-processor directive) ซึ่งได้แก่ “define” เพื่อใช้ในการนิยามค่าคงที่โดยมีลักษณะรูปแบบการใช้งานดังนี้
#define identifier value
      ดังตัวอย่างต่อไปนี้
1
2
3
#define PI 3.14
 
#define A 5

Escape codes

      Escape codes ใช้สำหรับแสดงอักขระที่อยากในการเขียนลงบนโค้ดของโปรแกรมเมอร์ตัวอย่าง เช่น tab จะแทนด้วย (\t) ซึ่ง Escape codes ทั้งหมดจะเริ่มต้นด้วยตัว backslash (\) ดังตารางต่อไปนี้
ตารางที่ 1. Escape Codes
Escape codesรายละเอียด
\nnew line ขึ้นบรรทัดใหม่
\r;carriage return ตัวบอกจุดสิ้นสุดของบรรทัด
\ttab
\vvertical tab
\bbackspace
\fpage feed
\aalert (ส่งเสียง beep ออกมาทางลำโพงของเมนบอร์ด)
\'single quote
\"double quote
\?question mark
\backslash
      สามารถใช้งาน Escape codes ได้ดังนี้
1
2
3
"devxcon"
 
"devxcot website"
      นอกจากนี้ Escape codes ยังสามารถนำมาใช้แสดงค่าตัวเลขฐานแปด หรือ ฐานสิบหก ได้หากเป็นเลขฐานแปดจะใช้เครื่องหมาย backslash ตามด้วยตัวเลข เช่น 1234 หากเป็นฐานสิบหกจะใช้ backslash ตามด้วยตัวอักษร x และตัวเลข ตัวอย่างเช่น xF12A ดังตัวอย่างต่อไปนี้
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
 
using namespace std;
 
  
 
#define PI 3.14159     
 
#define NEW_LINE '\n'  
 
  
 
void main ()
 
{
 
  cout << "Pi value is " << PI << NEW_LINE;
 
  cout << "Goodbye!";
 
  cin.get();
 
}
      #define directive ไม่ใช่คำสั่งของ C++ แต่เป็นตัวกำหนดการทำงานของคอมไพเลอร์ก่อนจะทำการคอมไพล์โค้ดทั้งหมด จึงเรียกว่า directive หรือตัวกำหนดทิศทางการทำงานของคอมไพเลอร์ เป็นเสมือนการกำหนดค่าเริ่มต้นให้กับคอมไพเลอร์ก่อนจะทำการคอมไพล์นั่นเอง ดังนั้นจึงไม่ตำเป็นต้องใส่เครื่องหมาย “;” อยู่ด้านหลังการกำหนดค่านี้
      หากใส่ “;” คอมไพเลอร์จะถือว่า “;” เป็นส่วนหนึ่งของการกำหนดค่าด้วยตัวอย่าง เช่น
1
#define PI 3.14;
      หากนำไปใช้งานไว้ส่วนสุดท้ายของคำสั่งจะไม่เกิดข้อผิดพลาดใด ๆ
1
int a = PI;
      เนื่องจากคอมไพเลอร์จะแปรเป็น
1
int a = 3.14;;
      แต่หากวางไว้ในส่วนอื่นจะทำให้เกิดความผิดพลาดในการคอมไพล์ได้ เช่น
1
int a = PI +5;
      ผลลัพธ์ที่ได้จากคอมไพเลอร์จะเป็น
1
int a = 3.14; +5;
      ซึ่งเห็นได้ชัดว่าผิดวยากรณ์ของ C++ ทำให้ไม่สามารถคอมไพล์ต่อไปได้

const

      const เป็นคำที่วางไว้ด้านหน้าชนิดตัวแปรในขณะที่ทำการประกาศตัวแปรตัวอย่าง เช่น
1
2
3
4
5
const int x = 50;
 
const char newline = '\n';
 
const y = 50;
      หากไม่มีการนิยามประเภทตัวแปรไว้คอมไพเลอร์จะกำนหดให้เป็นเลขจำนวนเต็ม (int)

String

      string คือประเภทตัวแปรที่เพิ่มเช้ามาใน C++ ซึ่งใช้ในการเก็บตัวอักษรได้มากกว่าหนึ่งตัว ก่อนการใช้งาน string ต้องทำการเรียกใช้ Standard Template Library (STL) ของ C++ ก่อนดังตัวอย่างต่อไปนี้
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
 
#include<string>   //add for std::string
 
using namespace std;
 
  
 
int main()
 
{
 
  string mystring = "This is a string";
 
  cout << mystring;
 
  return 0;
 
}
      ประเภทตัวแปร string ใน C++ สามารถใช้งานตัวกระทำการพื้นฐานเช่นเดียวกับที่ใช้ในตัวแปรได้ และยังสามารถประกาศตัวแปรชนิดนี้โดยไม่ต้องทำการกำหนดค่าเริ่มต้นได้เช่นกัน ดังตัวอย่างต่อไปนี้
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
 
#include<string>
 
using namespace std;
 
  
 
int main ()
 
{
 
  string mystring;
 
  mystring = "First value";
 
  cout << mystring << endl;
 
  mystring = "Second value";
 
  cout << mystring << endl;
 
  return 0;
 
}



การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl

การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl
การขึ้นบรรทัดใหม่ คือ การที่เราบอกให้ส่วน Output (จอดำๆ) ทำการขึ้นบรรทัดใหม่ ตามที่เราต้องการ
รูปแบบคำสั่งการขึ้นบรรทัดใหม่
cout << endl;

เงื่อนไข ใช้คำสั่ง endl
อย่าลืม ต้องใช้คู่กับคำสั่ง cout และมี เครื่องหมาย << คั่นเสมอ 
#include <iostream>
using namespace std;
int main()
{
  
 cout << "Line 1";
   cout << endl;
   
cout << "Line 2";
  
    cin.get();
  
    return 0;
}

ลองเขียน Source Code การขึ้นบรรทัดใหม่ด้วยคำสั่ง endl
ขั้นที่ 1)
ทำการสร้าง Source File ใหม่ใน Dev_C++ จากนั้น ทำการ Copy Source code ลงใน พื้นที่การเขียน Source code
#include <iostream>
using namespace std;
int main()
{
   
cout << "Hello this C++ programming Lesson 6.";
   cout << endl;
   cout << "Line 1";
   cout << endl;
   cout << "Line 2";

    cin.get();
  
    return 0;
}

ขั้นที่ 2)
Save Source file ชื่อ test_endl.cpp และ ทำการ Complie และ Run เพื่อดูผลลัพธ์
 
สอน C++ : บทที่ 6 การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl

อธิบาย Source Code เพิ่มเติม
#include <iostream>
using namespace std;
int main()
{
   
 //แสดงผลข้อความ
   cout << "Hello this C++ programming Lesson 6.";
 

    // ขึ้นบรรทัดใหม่
   cout << endl;
   

    //แสดงผลข้อความ

   cout << "Line 1";
  

   // ขึ้นบรรทัดใหม่
   cout << endl;

    //แสดงผลข้อความ

   cout << "Line 2";

    cin.get();
  
    return 0;
}

การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl โดยใช้การเขียนแบบบรรทัดเดียว
เป็นการใช้ endl รวมอยู่ในส่วนการแสดงผลด้วยคำสั่ง cout โดยต้องมี << คั่นระหว่าง endl กับ สิ่งที่ต้องการแสดงผลอื่นๆ เช่น ข้อความ หรือ ตัวแปร เป็นต้น
รูปแบบคำสั่งการขึ้นบรรทัดใหม่
cout << "String" << endl;
ตัวอย่างการใช้งาน
cout << "Line 1" << endl;
cout << "Line 1" << endl << "Line 2";

ลองเขียน Source Code การขึ้นบรรทัดใหม่ด้วยคำสั่ง endl แบบการเขียนบรรทัดเดียว
ขั้นที่ 1)
ทำการสร้าง Source File ใหม่ใน Dev_C++ จากนั้น ทำการ Copy Source code ลงใน พื้นที่การเขียน Source code
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello this C++ programming Lesson 6.";
    cout << endl;
    cout << "Line 1" << endl << "Line 2";
    cout << " In Line 2 " << endl << "Line 3";

    cin.get();
  
    return 0;
}

ขั้นที่ 2)
Save Source file ชื่อ test_endl_inline.cpp และ ทำการ Complie และ Run เพื่อดูผลลัพธ์
 
สอน C++ : บทที่ 6 การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl

อธิบาย Source Code เพิ่มเติม
#include <iostream>
using namespace std;
int main()
{
     
// แสดงผลข้อความ
    cout << "Hello this C++ programming Lesson 6.";
   
    
// ขึ้นบรรทัดใหม่
    cout << endl;
 
    
// แสดงผล ข้อความ ตามด้วย เว้นบรรทัด ตามด้วย ข้อความ
    cout << "Line 1" << endl << "Line 2";
    

    // แสดงผล ข้อความ ตามด้วย เว้นบรรทัด ตามด้วย ข้อความ
    cout << " In Line 2 " << endl << "Line 3";

    cin.get();
  
    return 0;
}

GOTCHA !!
เอาล่ะครับเป็นยังไงกันบ้างครับ กับพื้นฐานอีกหนึ่งเรื่อง การขึ้นบรรทัดใหม่ ด้วยคำสั่ง endl ไม่ยากใช่ไหมครับ แค่นี้เราก็สามารถจัดการแสดงผลหน้า Output ของเราให้สวยงามขึ้นได้แล้วล่ะครับ หากท่านในยังไม่ค่อยเข้าใจ สามารถเข้ามาถามได้ที่ Fanpage TUTORTONG ได้เลยนะครับ ^^

สิ่งที่คุณจะทำได้หลังจากอ่านบทความนี้
- คุณสามารถแสดงผลขึ้นบรรทัดใหม่ได้