Functions
Function คืออะไร
Function คือชุดของคำสั่งที่รวมกันเพื่อทำงานเฉพาะหน้าที่หนึ่ง โดยสามารถนำข้อมูลเข้าสู่ Function และส่งออกผลลัพธ์หรือการกระทำตามที่กำหนดได้
Function ใน C++ ใช้สำหรับการแบ่งโปรแกรมเป็นส่วนย่อยเพื่อให้ง่ายต่อการจัดการ โดยสามารถสร้างเพื่อทำอะไรก็ได้ที่ต้องการให้ตัวคำสั่งสามารถรวมชุดคำสั่งการทำงานได้ เช่น
- ประมวลผลข้อมูล
- ดำเนินการทางคณิตศาสตร์และตรรกะ
- เข้าถึงและแก้ไขข้อมูลในแหล่งที่เก็บข้อมูล เช่น File Database เป็นต้น
นอกจากนี้ยังสามารถสร้าง Function ที่กำหนดเองได้ ในการสร้างฟังก์ชันใน C++ จำเป็นต้องระบุ
- ชื่อฟังก์ชัน
- Parameter ที่รับเข้า
- ประเภทของผลลัพธ์ที่ส่งออก (ถ้ามี เดี๋ยวจะมีอธิบายเพิ่มเติมกันอีกที)
- และ body ของ function ที่มีคำสั่งที่ต้องการให้ทำงานเมื่อเรียกใช้ function ด้วย
เราจะลองมาดูพื้นฐานของ Function กัน
Basic function
Function พื้นฐานในภาษา C++ สามารถเขียนได้เป็นตัวอย่างดังนี้:
#include <iostream>
using namespace std;
// ตัวอย่างฟังก์ชันที่รับเลขจำนวนเต็มสองจำนวนแล้วนำมาบวกกัน
int add(int a, int b) {
return a + b;
}
// ตัวอย่างฟังก์ชันที่ไม่มีการรับค่าพารามิเตอร์ แต่มีการแสดงข้อความออกทางหน้าจอ
void greet() {
cout << "สวัสดีครับ!\n";
}
int main() {
int x = 5;
int y = 3;
int sum = add(x, y);
cout << "ผลรวมของ " << x << " และ " << y << " คือ " << sum << "\n";
greet();
return 0;
}
ใน code ตัวอย่างด้านบน เรามี function สองตัวคือ add
และ greet
ซึ่งเป็นตัวอย่างของ function พื้นฐานในภาษา C++:
ฟังก์ชัน add
int add(int a, int b) {
return a + b;
}
ฟังก์ชัน add
รับ parameters สองตัว a
และ b
ซึ่งเป็นจำนวนเต็ม และทำการบวก ค่า a
กับ b
แล้วส่งค่าผลลัพธ์กลับออกมาในรูปของจำนวนเต็ม
ฟังก์ชัน greet
void greet() {
std::cout << "สวัสดีครับ!\n";
}
ฟังก์ชัน greet
ไม่มีพารามิเตอร์ และมีการแสดงข้อความ "สวัสดีครับ!" ออกทางหน้าจอ
int main() {
int x = 5;
int y = 3;
int sum = add(x, y);
std::cout << "ผลรวมของ " << x << " และ " << y << " คือ " << sum << "\n";
greet();
return 0;
}
ในฟังก์ชัน main
เราสร้างตัวแปร x
และ y
โดยกำหนดค่าเป็น 5 และ 3 ตามลำดับ จากนั้นเราเรียกใช้ฟังก์ชัน add
และเก็บผลลัพธ์ในตัวแปร sum
และแสดงผลลัพธ์ออกทางหน้าจอ
นอกจากนี้ เรายังเรียกใช้ฟังก์ชัน greet
เพื่อแสดงข้อความ "สวัสดีครับ!" ออกทางหน้าจอด้วย
สุดท้ายเราให้ main
ส่งค่า 0 กลับไปยังระบบปฏิบัติการเพื่อบอกว่าโปรแกรมทำงานสมบูรณ์และไม่พบข้อผิดพลาดใด ๆ
ผลลัพธ์จากการ run ก็จะได้เป็นแบบนี้ออกมา
ผลรวมของ 5 และ 3 คือ 8
สวัสดีครับ!
นี่คือตัวอย่างการสร้าง function ทีนี้ เดี๋ยวเราจะมาแยกประเภทของ function กันว่า function แต่ละประเภทมีแบบไหนบ้าง
Type ของ function
โดยปกติ function จะมี 2 ประเภทใหญ่ๆคือ
- function ที่มีการส่งค่ากลับมา (return functions)
- function ที่ไม่มีการส่งค่ากลับมา (void functions)
function ที่มีการส่งค่ากลับ (return values) จะใช้คีย์เวิร์ด return
เพื่อส่งค่ากลับไปยังส่วนที่เรียกใช้งาน function ตัวอย่างเช่น:
int add(int a, int b) {
return a + b;
}
int main() {
int x = 5;
int y = 3;
int sum = add(x, y);
return 0;
}
อย่างกรณี add
ที่ยกตัวอย่างไปในตัวอย่างก่อนหน้า เป็น function ที่มีการ return ค่ากลับมา โดยตำแหน่ง return นั้นคือการคืนผลลัพธ์ของ function นั้น และส่งกลับไปยังตัวแปรที่กำลังรอรับค่าอยู่ และ return เป็นการบอกการสิ้นสุด function ด้วยเช่นเดียวกัน (คำสั่งหลัง return ใน function จะไม่ทำงานแล้ว หาก return ทำงานไปแล้วเรียบร้อย)
ส่วน function ที่ไม่มีการส่งค่ากลับ (void functions) จะไม่มีคำสั่ง return
หรือมีเฉพาะ return;
เพื่อสิ้นสุดการทำงานของฟังก์ชัน ตัวอย่างเช่น:
void greet() {
std::cout << "สวัสดีครับ!\n";
}
int main() {
greet();
return 0;
}
ภายใน greet()
ก็จะทำงานและจบด้วยตัวของมันเอง โดยไม่มีการส่งค่าอะไรกลับมา
Parameter function
รวมถึง function ที่มีพารามิเตอร์ (parameters) ใช้ในการรับค่าที่ส่งเข้ามาใน function เพื่อนำมาใช้ในการดำเนินการต่าง ๆ ตัวอย่างเช่น:
int multiply(int a, int b) {
return a * b;
}
int main() {
int x = 5;
int y = 3;
int product = multiply(x, y);
return 0;
}
Function multiply
ในตัวอย่างด้านบนเป็น function ที่รับพารามิเตอร์สองตัว a
และ b
ซึ่งเป็นจำนวนเต็ม และทำการคูณค่า a
กับ b
แล้วส่งค่าผลลัพธ์กลับออกมาในรูปของจำนวนเต็ม
int multiply(int a, int b) {
return a * b;
}
ในฟังก์ชัน main
เราสร้างตัวแปร x
และ y
แล้วกำหนดค่าเป็น 5 และ 3 ตามลำดับ จากนั้นเราเรียกใช้ฟังก์ชัน multiply
และเก็บผลลัพธ์ไว้ในตัวแปร product
เนื่องจากมีการ return ค่าออกมา (เป็น return function)
function ที่ไม่มีพารามิเตอร์ (functions without parameters) ไม่รับค่าเข้ามาในฟังก์ชัน แต่สามารถทำงานได้ตามที่กำหนด ตัวอ ย่างเช่น เคส greet()
ที่สามารถเรียกใช้งานได้ทันที โดยไม่มีการรับค่าใดๆเข้ามา
void greet() {
std::cout << "สวัสดีครับ!\n";
}
int main() {
greet();
return 0;
}
เพื่อให้ทุกคนเห็นภาพการใช้งาน function มากขึ้น เราจะลองมาดูตัวอย่างสัก 2 ตัวอย่างกันก่อน (ในบทต่อๆไปเราจะได้เห็นกันมากขึ้นแน่นอน)
มาลองดูตัวอย่าง Function กัน
ตัวอย่างที่ 1 คำนวนพื้นที่วงกลม
สูตรการคำนวนพื้นที่ของวงกลมคือ พื้นที่ = พิกัดรัศมี * รัศมี^2 * 3.14159
โดยที่รัศมีคือความยาวเส้นรอบวงของวงกลม ดังนั้นเราจึงนำ พิกัดรัศมี
มาเป็น parameter ของ function และสร้าง function สำหรับคำนวนพื้นที่วงกลมออกมา ชื่อ areaOfCircle(double radius)
เมื่อมีการเรียกใช้ function นี้ ก็จะสามารถส่ง radius
เข้าไปและได้ผลลัพธ์เป็นพื้นที่วงกลมออกมาได้
#include <iostream>
using namespace std;
double areaOfCircle(double radius) {
return 3.14159 * radius * radius;
}
int main() {
double radius;
cout << "Enter the radius of the circle: ";
cin >> radius;
double area = areaOfCircle(radius);
cout << "Area of the circle is: " << area << endl;
return 0;
}
code ด้านบนเป็นตัวอย่างโปรแกรมภาษา C++ ที่ใช้สำหรับคำนวณพื้นที่ของวงกลม
โดยในฟังก์ชัน areaOfCircle
รับ parameter radius
ซึ่งเป็นตัวเลขที่บอกค่ารัศมีของวงกลม และคำนวณพื้นที่ของวงกลมโดยใช้สูตร พื้นที่ = พิกัดรัศมี * รัศมี^2 * 3.14159
และส่งค่าพื้นที่กลับออกมา
ใน main
เราสร้างตัวแปร radius
เพื่อรับค่ารัศมีจากผู้ใช้ทาง keyboard ด้วย cin
จากนั้นเรียกใช้ฟังก์ชัน areaOfCircle
และเก็บผลลัพธ์ไว้ในตัวแปร area
และแสดงผลลัพธ์ออกทางหน้าจอ
ตัวอย ่างที่ 2 Prime number
ตัวอย่างนี้เป็นการลองเปลี่ยน code การหาจำนวนเฉพาะจากแต่เดิมที่ทำภายใน main()
แยกส่วนออกมาทำใน function ที่ชื่อ isPrime()
แทน เพื่อให้ function main()
หลักนั้นเหลือ code เพียงแค่ส่วนของการควบคุม logic การทำงานเท่านั้น (เป็นการแยกส่วนคำนวนเพิ่มเติมออกไป เพื่อทำให้ code อ่านง่ายขึ้น)
#include <iostream>
using namespace std;
bool isPrime(int number) {
if (number <= 1) return false;
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) return false;
}
return true;
}
int main() {
int number;
cout << "Enter a number: ";
cin >> number;
if (isPrime(number)) {
cout << number << " is a prime number." << endl;
} else {
cout << number << " is not a prime number." << endl;
}
return 0;
}
ใน function isPrime
เราใช้ parameter number
ซึ่งเป็นจำนวนเต็มที่ต้องการตรวจสอบว่าเป็นจ ำนวนเฉพาะหรือไม่ function นี้ทำการตรวจสอบว่า
number
มีค่าน้อยกว่าหรือเท่ากับ 1 หรือไม่- หากใช่ก็จะส่งค่า false กลับไป
- แต่หากไม่ใช่ จะใช้ for เพื่อตรวจสอบว่า
number
มีตัวเลขที่หารลงตัวหรือไม่ ถ้ามีจะส่งค่า false กลับไปเช่นกัน แต่ถ้าไม่มีจะส่งค่า true กลับไป - ใน function
main
เราใช้ตัวแปรnumber
เพื่อรับค่าจำนวนเต็มจากผู้ใช้ด้วยcin
จากนั้นเรียกใช้ functionisPrime
เพื่อตรวจสอบว่าnumber
เป็นจำนวนเฉพาะหรือไม่ และแสดงผลลัพธ์ออกทางหน้าจอได้
และนี่คือพื้นฐานการเขียนโปรแกรมขั้นต้น ในหัวข้อต่อไป เราจะเริ่มเอาความรู้พวกนี้มาเรียนรู้ผ่าน problem solving เบื้องต้นกันว่า หากเราต้องการฝึก Programming skill เบื้องต้น เราควรจะฝึกฝนอย่างไร และแนวทางในการฝึกฝนเพื่อให้ skill programming เราคล่องตัวยิ่งขึ้น