Skip to main content

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 ประเภทใหญ่ๆคือ

  1. function ที่มีการส่งค่ากลับมา (return functions)
  2. 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 จากนั้นเรียกใช้ function isPrime เพื่อตรวจสอบว่า number เป็นจำนวนเฉพาะหรือไม่ และแสดงผลลัพธ์ออกทางหน้าจอได้

และนี่คือพื้นฐานการเขียนโปรแกรมขั้นต้น ในหัวข้อต่อไป เราจะเริ่มเอาความรู้พวกนี้มาเรียนรู้ผ่าน problem solving เบื้องต้นกันว่า หากเราต้องการฝึก Programming skill เบื้องต้น เราควรจะฝึกฝนอย่างไร และแนวทางในการฝึกฝนเพื่อให้ skill programming เราคล่องตัวยิ่งขึ้น