Basic Concept
Variable (ตัวแปร) คืออะไร ?
ใน C++ ตัวแปรคือตัวแทนที่ใช้เก็บค่าข้อมูล เพื่อให้สามารถนำมาใช้งานในโปรแกรมได้ โดยตัวแปรจะประกอบด้วยชื่อและประเภทข้อมูลที่เกี่ยวข้อง
ตัวอย่าง การประกาศตัวแปร
ใน C++ สามารถประกาศตัวแปรได้ด้วยการใช้คำสำคัญคือ ประเภทของตัวแปร (ซึ่งเดี๋ยวเราจะอธิบายอีกที) เช่น int
ที่บอกว่าเป็นประเภทของตัวเลข และตามด้วย ชื่อตัวแปรที่ต้องการ
เช่น
int myVariable;
ในตัวอย่างนี้ เราได้ประกาศตัวแปรชื่อ myVariable
โดยมีประเภทข้อมูลเป็น int
ซึ่งหมายถึงจำนวนเต็ม (integer)
ประเภทของตัวแปร
ใน C++ มีประเภทของตัวแปรหลายประเภทที่ใช้งานได้ ตัวอย่างประเภทของตัวแปรที่พบบ่อย ๆ ได้แก่
- เก็บค่าจำนวนเต็ม (integer) โดย
short
เก็บค่าได้ระหว่าง -32,768 ถึง 32,767int
เก็บค่าได้ระหว่าง -2,147,483,648 ถึง 2,147,483,647long
เก็บค่าได้ระหว่าง -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807
- เก็บค่าทศนิยม (floating-point) โดย
float
เก็บค่าได้ระหว่าง -3.4 x 10^38 ถึง 3.4 x 10^38- double เก็บค่าได้ราวๆ -1.7 x 10^308 ถึง 1.7 x 10^308
char
เก็บค่าอักขระ (character) เช่น ‘A’, ‘c’bool
เก็บค่าตรรกะ (boolean) คือ true (จริง) และ false (เท็จ)
เป็นต้น
ตัวอย่างการใช้งานตัวแปรประเภทต่างๆ และการรับ-ส่งข้อมูลใน C++
ตัวอย่างการใช้งานตัวแปรแบบ int, char
#include <iostream>
int main() {
int myNumber;
std::cout << "กรุณาใส่ตัวเลข: ";
std::cin >> myNumber;
std::cout << "ค่าที่คุณใส่คือ: " << myNumber << std::endl;
char myCharacter;
std::cout << "กรุณาใส่อักขระ: ";
std::cin >> myCharacter;
std::cout << "อักขระที่คุณใส่คือ: " << myCharacter << std::endl;
return 0;
}
ในตัวอย่างนี้ โปรแกรมจะรับค่าตัวเลขจากผู้ใช้และแสดงผลค่าที่ผู้ใช้ใส่เข้ามา และจะรับค่าอักขระจากผู้ใช้และแสดงผลอักขระที่ผู้ใช้ใส่เข้ามา
ผลลัพธ์ก็จะได้เป็นแบบนี้ออกมา (สังเกตว่า โปรแกรมจะไปต่อก็ต่อเมื่อ input มีการรับค่าเข้ามาเพิ่ม ดังนั้น หากไม่มีการใส่ input เข้ามาโปรแกรมก็จะยังคงไม่ทำงานต่อ)
ตัวอย่างการใช้งานตัวแปรแบบ float
#include <iostream>
int main() {
float myFloat;
std::cout << "กรุณาใส่ค่าทศนิยม: ";
std::cin >> myFloat;
std::cout << "ค่าที่คุณใส่คือ: " << myFloat << std::endl;
return 0;
}
ในตัวอย่างนี้ โปรแกรมจะรับค่าทศนิยมจากผู้ใช้และแสดงผลค่าที่ผู้ใช้ใส่เข้ามา เมื่อลอง run program และลองใส่ทศนิยมดูก็จะสามารถใส่ค่าเข้ามาได้
สังเกตว่า เมื่อเราใส่ตัวอักษรเข้ามา ภาษา c++ เองก็ทำการ handle ให้แสดงผลออกมาเป็นตัวเลขออกมาแทน รวมถึงกับเคสก่อนหน้าเช่นเดียวกัน หากเราใส่ตัวอักษรในส่วนของตัวเลข
ก็จะเจอว่า โปรแกรมเกิดการ crash เกิดขึ้น (โปรแกรมจะไม่ทำงานไปยัง cin
ตัวต่อไปที่รับค่า character) เมื่อพยายามใส่ตัวอักษรใน cin
ที่เป็น integer ในโปรแกรม C++ โปรแกรมจะไม่สามารถรับค่าได้ เนื่องจากการแปลงค่าตัวอักษรเป็น integer ไม่สามารถทำได้ ผลลัพธ์ที่เกิดขึ้นคือโปรแกรมจะอ่านค่าเป็น 0 เนื่องจากผลลัพธ์ของการแปลงค่าตัวอักษรเป็น integer ที่ไม่สามารถทำได้จะเป็น 0 ตลอดเวลา ดังนั้นค่าที่รับเข้ามาจะไม่มีผลต่อการทำงานหรือผลลัพธ์ของโปรแกรม
ดังนั้น หากมีการประกาศใช้ตัวแปรประเภทไหน ต้องรับค่าประเภทนั้นเข้าไปเช่นกัน (ในการ handle error เหล่านี้ เดี๋ยวเราจะมีการพูดถึงอีกทีในบทหลังๆกันนะครับ)
Operator
Operator คือสัญลักษณ์หรือตัวดำเนินการที่ใช้ในการดำเนินการกับตัวแปรหรือข้อมูลในโปรแกรม เพื่อทำการคำนวณหรือเปลี่ยนแปลงค่าข้อมูลตามต้องการ
ในภาษา C++ มีตัวดำเนินการหลายรูปแบบที่ใช้ในการทำงานกับตัวแปร จะขอแบ่งกลุ่มออกเป็น
- Arithmetic Operators คือ operator สำหรับการดำเนินการทางคณิตศาสตร์
+
: ใช้ในการบวกเลขหรือเชื่อมต่อสตริง (string concatenation)-
: ใช้ในการลบเลขหร ือเปลี่ยนเครื่องหมายลบ (negation)*
: ใช้ในการคูณเลขหรือการทำการซ้ำ (repetition)/
: ใช้ในการหารเลข%
: ใช้ในการหารเลขและคืนเศษจากการหาร (modulo)
- Relational Operators คือ operator สำหรับการเปรียบเทียบ และคืนค่ากลับออกมาเป็น boolean
==
: ใช้ในการเปรียบเทียบความเท่ากันของข้อมูล!=
: ใช้ในการเปรียบเทียบความไม่เท่ากันของข้อมูล>
: ใช้ในการเปรียบเทียบค่าข้อมูลว่ามีค่ามากกว่าหรือไม่<
: ใช้ในการเปรียบเทียบค่าข้อมูลว่ามีค่าน้อยกว่าหรือไม่>=
: ใช้ในการเปรียบเทียบค่าข้อมูลว่ามีค่ามากกว่าหรือเท่ากับหรือไม่<=
: ใช้ในการเปรียบเทียบค่าข้อมูลว่ามีค่าน้อยกว่าหรือเท่ากับหรือไม่
3. Logical Operators คือ operator ที่ใช้สำหรับรวม condition
&&
: ใช้ในการตรวจสอบเงื่อนไขทั้งสองว่าเป็นจริงหรือไม่ (logical AND)||
: ใช้ในการตรวจสอบเงื่อนไขใด ๆ ว่าเป็นจริงอย่างน้อยหนึ่งเงื่อนไข (logical OR)!
: ใช้ในการเปลี่ยนค่าจริงเป็นเท็จ หรือเท็จเป็นจริง (logical NOT)
Note =
Operator ที่ใช้ในการกำหนดค่าตัวแปร (Assignment) ไม่ได้ใช้สำหรับการเปรียบเทียบค่าที่เท่ากัน หากต้องการเปรียบเทียบการเท่ากันในการเขียนโปรแกรม ต้องใช้ ==
แทน
ตัวดำเนินการเหล่านี้ช่วยให้เราสามารถทำการคำนวณ ตรวจสอบเงื่อนไข หรือเปลี่ยนแปลงค่าข้อมูลได้ในโปรแกรม C++ ในหัวข้อนี้ เดี๋ยวเราจะแนะนำการใช้ Arithmetic Operators กันก่อน โดยเราจะลองใช้ร่วมกับตัวแปร เพื่อให้เห็นภาพการใช้งาน Operator ทั่วไปมากขึ้น ****ในส่วนของ Relational และ Logical นั้น เราจะมาพูดคุยกันในหัวข้อ Control Flow อีกที
Arithmetic Operators
มาดูตัวอย่างเบื้องต้น การใช้งานตัวดำเนินการทางคณิตศาสตร์ใน C++ กัน โดย
ตัวอย่างที่ 1 จะเป็นพื้นฐานการใช้ร่วมกับตัวแปร interger โดยทำการใช้ร่วมกับ +
, -
, *
, /
, %
ตามตัวอย่างต่อไปนี้
#include <iostream>
int main() {
int num1 = 10;
int num2 = 5;
int sum = num1 + num2;
int difference = num1 - num2;
int product = num1 * num2;
int quotient = num1 / num2;
int remainder = num1 % num2;
std::cout << "ผลรวม: " << sum << std::endl;
std::cout << "ผลต่าง: " << difference << std::endl;
std::cout << "ผลคูณ: " << product << std::endl;
std::cout << "ผลหาร: " << quotient << std::endl;
std::cout << "เศษ: " << remainder << std::endl;
return 0;
}
ในตัวอย่างนี้ เรามีตัวแปร num1
และ num2
ที่เก็บค่าตัวเลข และใช้ตัวดำเนินการ +
, -
, *
, /
, %
เพื่อดำเนินการทางคณิตศาสตร์กับตัวแปรเหล่านี้ โดยเก็บผลลัพธ์ลงในตัวแปร sum
, difference
, product
, quotient
, และ remainder
ตามลำดับ
ผลลัพธ์ที่ได้จะเป็นดังนี้:
ผลรวม: 15
ผลต่าง: 5
ผลคูณ: 50
ผลหาร: 2
เศษ: 0
ตัวอย่างที่ 2 ในภาษา C++ เราสามารถใช้ตัวดำเนินการ +
กับ character ได้ แต่หากเรานำมาต่อ character กันแบบนี้โดยตรงเช่นเคสนี้
#include <iostream>
int main() {
char firstCharacter = 'H';
char secondCharacter = 'i';
char space = ' ';
char exclamationMark = '!';
std::cout << firstCharacter + secondCharacter + space + exclamationMark << std::endl;
return 0;
}
ผลลัพธ์จะออกมาเป็นดังนี้
242
The char
type in C++ is essentially a small integer type that represents characters as their ASCII values. For example, the character 'H'
has an ASCII value of 72, 'i'
is 105, ' '
(space) is 32, and '!'
(exclamation mark) is 33.
char
ใน c++ โดยพื้นฐานนั้นมีการเก็บเป็นตัวเลขเอาไว้ เรียกว่า ASCII (การเข้ารหัสตัวอักษรให้กลายเป็นตัวเลขเพื่อใช้เป็น standard ในการเก็บระหว่าง computer และอุปกรณ์ electronic ที่แสดงผล Text ออกมาได้ สามารถอ่านเพิ่มเติมได้ ที่นี่) จากเคสนี้
'H'
มีค่าเท่ากับ 72'i'
มีค่าเท่ากับ 105' '
มีค่าเท่ากับ 32'!'
มีค่าเท่ากับ 33
จึงได้ผลลัพธ์เป็น 242 ออกมานั่นเอง (จริงๆ มีวิธีการต่อ character ให้กลายเป็น String อยู่ แต่จะขอเก็บไว้เป็นหัวข้อถัดไปเนื่องจากต้องมีการพึ่งพา library เพิ่มเติมสำหรับการทำเรื่องนี้)
และนี่คือตัวอย่างการใช้ Operator โดยประมาณ ในเรื่อง Operator นั้นเดี๋ยวเราจะได้เจอกันเรื่อยๆตลอดการเรียนใน Course นี้เช่นเดียวกัน
รู้จักกับ Array
Array (อาร์เรย์) คือโครงสร้างข้อมูลที่ใช้ในการเก็บข้อมูลหลายๆ ชิ้นในตำแหน่งเดียวกัน โดยสามารถเข้าถึงและใช้งานข้อมูลใน Array ได้โดยอ้างอิงถึงตำแหน่งของข้อมูลใน Array ด้วยตัวดัชนี (index) ซึ่งเริ่มต้นที่ 0
Array ทำให้เราสามารถจัดเก็บข้อมูลที่เกี่ยวข้องกันได้ในตำแหน่งเดียว ทำให้ง่ายต่อการเข้าถึงและประมวลผลข้อมูลใน Array โดยสามารถใช้ Loop (ที่เดี๋ยวเราจะอธิบายเพิ่มเติมกันอีกที) เพื่อทำงานกับข้อมูลใน Array ได้อย่างมีประสิทธิภาพ
ตัวอย่างเช่นเราสามารถใช้ Array เพื่อเก็บข้อมูลตัวเลขด้วยการสร้าง Array และกำหนดค่าให้กับแต่ละตำแหน่งของ Array ดังนี้:
int numbers[] = {1, 2, 3, 4, 5};
ในตัวอย่างนี้ เราสร้าง Array ชื่อ numbers
ที่เก็บตัวเลข 1, 2, 3, 4, 5 โดยใช้เครื่องหมาย []
เพื่อระบุว่าเป็น Array และกำหนดค่าให้แต่ละตำแหน่งของ Array ด้วยเครื่องหมาย {}
เมื่อเรามี Array เราสามารถเข้าถึงและใช้งานข้อมูลใน Array ได้โดยการอ้างอิงถึงตำแหน่งของข้อมูลใน Array ด้วยตัวดัชนี (index) โดยเริ่มต้นที่ 0
ตัวอย่างการเข้าถึงและใช้งานข้อมูลใน Array:
int firstNumber = numbers[0]; // ใช้ตัวดัชนี 0 เพื่อเข้าถึงตัวเลขแรกใน Array
int secondNumber = numbers[1]; // ใช้ตัวดัชนี 1 เพื่อเข้าถึงตัวเลขที่สองใน Array
ในตัวอย่างนี้ เราใช้ตัวดัชนี 0 เพื่อเข้าถึงตัวเลขแรกใน Array และใช้ตัวดัชนี 1 เพื่อเข้าถึงตัวเลขที่สองใน Array
Array เป็นสิ่งสำคัญในการเขียนโปรแกรมเพราะช่วยให้เราสามารถจัดเก็บและใช้งานข้อมูลหลายๆ ชิ้นในตำแหน่งเดียวกันได้อย่างมีประสิทธิภาพ
อีกเคสหนึ่งคือการประกาศประเภทก่อน แล้วค่อย assign ทีหลัง
#include <iostream>
int main() {
int numbers[5]; // ปร ะกาศ Array ชื่อ numbers ที่มีขนาด 5
numbers[0] = 10; // กำหนดค่าให้ตำแหน่งแรกของ Array เป็น 10
numbers[1] = 20; // กำหนดค่าให้ตำแหน่งที่สองของ Array เป็น 20
numbers[2] = 30; // กำหนดค่าให้ตำแหน่งที่สามของ Array เป็น 30
numbers[3] = 40; // กำหนดค่าให้ตำแหน่งที่สี่ของ Array เป็น 40
numbers[4] = 50; // กำหนดค่าให้ตำแหน่งที่ห้าของ Array เป็น 50
std::cout << "ตำแหน่งที่ 1 ของ Array คือ " << numbers[0] << std::endl;
std::cout << "ตำแหน่งที่ 2 ของ Array คือ " << numbers[1] << std::endl;
std::cout << "ตำแหน่งที่ 3 ของ Array คือ " << numbers[2] << std::endl;
std::cout << "ตำแหน่งที่ 4 ของ Array คือ " << numbers[3] << std::endl;
std::cout << "ตำแหน่งที่ 5 ของ Array คือ " << numbers[4] << std::endl;
return 0;
}
ในตัวอย่างนี้ เราประกาศ Array ชื่อ numbers
ที่มีขนาด 5 และกำหนดค่าให้แต่ละตำแหน่งของ Array ด้วยตัวดัชนี โดยกำหนดให้ตำแหน่งแรกของ Array เป็น 10, ตำแหน่งที่สองของ Array เป็น 20, ตำแหน่งที่สามของ Array เป็น 30, ตำแหน่งที่สี่ของ Array เป็น 40, และตำแหน่งที่ห้าของ Array เป็น 50
จากนั้นโปรแกรมจะแสดงผลลัพธ์ออกทางหน้าจอว่า "ตำแหน่งที่ 1 ของ Array คือ 10", "ตำแหน่งที่ 2 ของ Array คือ 20", "ตำแหน่งที่ 3 ของ Array คือ 30", "ตำแหน่งที่ 4 ของ Array คือ 40", และ "ตำแหน่งที่ 5 ของ Array คือ 50"
และนี่คือ Array เดี๋ยวเราจะให้เห็นภาพการใช้ประโยชน์จาก Array มากขึ้นในหัวข้อของ Loop กันอ ีกทีนะครับ
แนะนำตัวแปร String
ตัวแปรประเภท String ใน C++ คือตัวแปรที่ใช้เก็บข้อมูลเป็นชุดอักขระหรือข้อความ ซึ่งสามารถใช้ในการเก็บข้อมูลที่เป็นคำพูด ประโยค หรือข้อความต่าง ๆ ได้ เช่น การเก็บชื่อ นามสกุล ที่อยู่ หรือข้อความอื่น ๆ
โดยการใช้งาน String ใน c++ นั้นต้องนำเข้า library <string>
เพื่อใช้งานตัวแปรประเภท String ใน C++ ได้
ตัวอย่างการประกาศตัวแปรประเภท String ใน C++:
#include <iostream>
#include <string>
int main() {
std::string myString = "Hello, World!";
std::cout << myString << std::endl;
return 0;
}
ในตัวอย่างนี้ เราได้ประกาศตัวแปรชื่อ myString
ที่มีประเภทข้อมูลเป็น std::string
ซึ่งเป็นคลาสในไลบรารี <string>
ของ C++ และกำหนดค่าให้เป็น "Hello, World!" จากนั้นโปรแกรมจะแสดงผลค่าของตัวแปรนี้ออกทางหน้าจอ
ตัวแปรประเภท String ใช้ในการจัดการข้อมูลที่เป็นข้อความได้หลากหลาย เช่น การเชื่อมต่อสตริงด้วยตัวดำเนินการ +
หรือการเข้าถึงตัวอักษรแต่ละตัวในสตริงด้วยตัวดำเนินการแบบ Array []
(ระบุ index ที่ต้องการเข้าถึง) เป็นต้น (เดี๋ยวจะมีแนะนำเพิ่มเติมในหัวข้อ Loop อีกที)