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 เราคล่องต ัวยิ่งขึ้น