ฟังก์ชัน (Function)

Download Report

Transcript ฟังก์ชัน (Function)

1


ฟั งก์ ชัน (Function) หมายถึง กลุ่มโค้ ดส่ วนย่ อยๆ ของโปรแกรมเพื่อทางาน
บางอย่ างโดยเฉพาะ และสามารถเรี ยกใช้ ซา้ หลายๆครัง้ ได้
ส่วนอื่น ๆ ของโปรแกรมสามารถเรี ยกใช้ งานฟั งก์ชนั นี ้ได้ โดยการเรี ยกใช้ ชื่อฟั งก์ ชัน
นั้นๆ ให้ ถูกต้ องตามรู ปแบบทีก่ าหนดไว้
2



ช่วยให้ ไม่ต้องเขียน statement เดิม ๆ ซํ ้ากันหลายครัง้ ในโปรแกรมเดียวกัน
ทําให้ โปรแกรมมีขนาดกระทัดรัด
สามารถค้ นหาและปรับปรุงแต่ละส่วนการทํางานได้ ง่ายและรวดเร็ว เพราะเขียน
แบ่งเป็ นฟั งก์ชนั ตามหน้ าที่การทํางาน
3
1. Standard Function คือ ฟั งก์ ชันมาตรฐานที่บริษัทผู้สร้ าง Compiler ภาษา C++
ได้ สร้ างรวบรวมไว้ ในคลัง (Library) ผู้เขียนโปรแกรมสามารถเรี ยกใช้ ได้ ทนั ที
◦ ได้ แก่ ฟั งก์ชนั ที่ประกอบอยู่ใน header file ต่างๆ ขณะเรี ยกใช้ ต้อง #include ชื่อไฟล์
ที่รวบรวมฟั งก์ชนั นันไว้
้ ก่อน เช่น #include<cmath>
◦ เช่น ฟั งก์ชนั double sqrt(double x) ทําหน้ าที่คืนค่ารากที่สองของ x
◦ เช่น ฟั งก์ชนั double pow(double x, double x) ทําหน้ าที่คืนค่ายกกําลังสองของ x
อยูใ่ นไฟล์ไลบรารี่ cmath
ข้ อมูลเพิ่มเติมเกี่ยวกับไลบรารี่ และฟั งก์ชนั : http://www.cplusplus.com/reference/
4
#include<iostream>
#include<cmath>
using namespace std;
int main() {
cout << sqrt(16.0) << endl;
cout << pow(5.0,2.5) << endl;
system("pause");
return 0;
}
5
2. User Defined Function คือ ฟั งก์ ชันที่ผ้ ูเขียนโปรแกรมสร้ างขึน้ หรื อกาหนด
ขึน้ เอง ตามรูปแบบการสร้ างฟั งก์ชนั ของ C++ เพื่อนํามาใช้ ในการเขียนโปรแกรม
ของตนเอง
6

หากต้ องการเขียนฟั งก์ชนั ขึ ้นมาใช้ เอง มีสว่ นสําคัญที่ต้องเขียนดังนี ้
เขียนรายละเอียดการทํางานของฟั งก์ชนั
เขียนฟั งก์ชนั prototype
เขียนคําสัง่ เรี ยกใช้ ฟังก์ชนั
7
function_type function_name (type parameter1, type parameter2,…)
{
int …
//declaration variable in function
float …
//declaration variable in function
statement;
//statement in function
statement;
//statement in function
return(value); //function must return only one or null value
}
8

function_type คือ ชนิดข้ อมูลที่ได้ จากการทางานของฟั งก์ ชัน
◦ เช่น ประเภท int คือฟั งก์ชนั นันจะต้
้ องได้ คา่ ผลลัพธ์การทํางานเป็ นชนิดจํานวน
เต็ม
◦ ถ้ าเป็ นประเภท void จะเป็ นฟั งก์ชนั ประเภทที่ไม่ต้องมีการคืนค่าผลลัพธ์การ
ทํางาน

function_name คือ ชื่อฟั งก์ ชันที่กาหนดขึน้ ตามกฎเกณฑ์ การตัง้
ชื่อของ C++ และจะเป็ นชื่อที่ใช้ สําหรับการเรี ยกใช้ ฟังก์ชนั ต่อไป
9

(type parameter1, type parameter2,…) คือ พารามิเตอร์
◦ ประกอบไปด้ วย ประเภท และชื่อของตัวแปร
◦ ใช้ รับค่าเข้ ามาทํางานในฟั งก์ชนั
◦ พารามิเตอร์ ของฟั งก์ชนั มีมากกว่า 1 ตัว และสามารถมีได้ หลายประเภท

return(value);
◦ return เป็ นคีย์เวิร์ด ใช้ แทนการส่ งคืนค่ าให้ ฟังก์ ชัน
◦ value คือค่ าคงที่ท่ ีส่งคืนไปให้ แก่ ฟังก์ ชัน
 สามารถมีได้ 1 ค่า หรื ออาจจะไม่มีก็ได้ ( กรณีเป็ นฟั งก์ชนั ที่ไม่ให้ คา่ ใด ๆ)
10
1. จงเขียนฟั งก์ชนั เพื่อหาผลรวมของเลขจํานวนเต็มสองจํานวน โดยรับพารามิเตอร์ เข้ ามา
สองค่า แล้ ว return ผลลัพธ์กลับไป
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
2. จงเขียนฟั งก์ชนั เพื่อคํานวนพื ้นที่ของสามเหลี่ยม โดยรับพารามิเตอร์ เข้ ามาสองค่า แล้ ว
return ผลลัพธ์คา่ พื ้นที่ออกไป
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
11

ทุกครั ง้ ที่สร้ างฟั งก์ ชันต้ องมีการประกาศ prototype ฟั งก์ ชันก่ อนเสมอ

ความหมาย คือ ฟั งก์ชนั ชื่อ factorial() ค่าที่ได้ จากการทํางานของฟั งก์ชนั เป็ น int
และขณะเรี ยกใช้ ต้องมีการรับค่าพารามิเตอร์ มาเก็บไว้ ที่ตวั แปร number และเป็ น
ประเภท int เพื่อนํามาใช้ ภายในฟั งก์ชนั
12

ตัวอย่ าง prototype
float power(float base, int exp);
หรื อสามารถเขียนแบบย่ อได้ float power(float, int);

จากตัวอย่ างหน้ า 11 จงเขียน prototype ของทัง้ สองฟั งก์ ชัน
……………………………………………………………………………….
……………………………………………………………………………….
13
การเรี ยกใช้ ฟังก์ ชัน
ตัวอย่ างเช่ น




line();
int y = factorial(x);
ฟั งก์ชนั ใดที่มีการกําหนดพารามิเตอร์ เวลาเรี ยกใช้ ต้องใส่คา่ argument ให้ ถกู ต้ องด้ วย
เช่น ฟั งก์ชนั factorial(x) เราจะเรี ยก x ว่ า อากิวเมนต์ (argument)
ฟั งก์ชนั ใดมีคําสัง่ return ค่าออกมา ควรสร้ างตัวแปรมารับค่าโดยให้ มีชนิดข้ อมูลตรงกัน
เมื่อมีการเรี ยกใช้ ฟังก์ชนั ณ ตําแหน่งใด โปรแกรมจะไปทํางานในฟั งก์ชนั นันจนเสร็
้
จแล้ วจะ
กลับมาทํางานต่อใน statement ถัดไปจากตําแหน่งที่เรี ยกใช้ ฟังก์ชนั
สามารถเรี ยกใช้ ฟังก์ชนั กี่ครัง้ ก็ได้ ในโปรแกรม
14
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <iostream>
#include <cmath>
using namespace std;
int mysummation(int, int); //การประกาศ prototype function
int main() {
int first_number,second_number,result;
cout << "enter first number : ";
cin >> first_number;
cout << "enter second number : ";
cin >> second_number;
result = mysummation(first_number, second_number); //เรี ยกใช้ ฟังก์ชนั
cout << "result is : " << result << endl;
mysummation(5,10);
system("pause");
return 0;
}
int mysummation(int x, int y) { //การประกาศรายละเอียดฟั งก์ชนั
int sum = x + y;
return sum;
}
15

จงเขียนโปรแกรมเพื่อคํานวนหาพื ้นที่ของวงกลม โดยแบ่งการทํางานของโปรแกรม
ออกเป็ น 2 ฟั งก์ชนั ทําหน้ าที่ตา่ งๆ ดังนี ้
1. ฟั งก์ชนั คํานวนหาพื ้นที่วงกลม
รับพารามิเตอร์
: ค่ารัศมี(ทศนิยม) มาจาก main
การทํางาน
: เขียนคําสัง่ คํานวนพื ้นที่วงกลมจากสูตร
return
: ค่าผลลัพธ์ที่คํานวนได้ ออกมาให้ main
2. ฟั งก์ชนั แสดงผล
รับพารามิเตอร์
: ค่าพื ้นที่วงกลม(ทศนิยม) มาจาก main
การทํางาน
: เขียนคําสัง่ ให้ แสดงค่าพื ้นที่วงกลมออกทางหน้ าจอ
return
: ไม่ต้อง return ค่าใดออกมา
16

จงเขียนโปรแกรมเพื่อคํานวนหาผลรวมของช่วงตัวเลข(จํานวนเต็ม) สองจํานวนที่ผ้ ใู ช้
กรอกเข้ ามา โดยกําหนดให้ มี 1 ฟั งก์ชนั ดังนี ้
1. ฟั งก์ชนั คํานวนหาผลรวมของช่วงตัวเลขสองจํานวน
รับพารามิเตอร์
: ค่าตัวเลขเริ่มต้ น, ค่าตัวเลขสิ ้นสุด มาจาก main
การทํางาน
: เขียนคําสัง่ คํานวนหาผลรวมของช่วงตัวเลขทังสอง
้
return
: ค่าผลลัพธ์ที่คํานวนได้ ออกมาให้ main
กําหนดให้ ฟังก์ชนั main เป็ นตัวเรี ยกใช้ ฟังก์ชนั นี ้
17
18







จงเขียนโปรแกรมเพื่อตัดเกรด จากคะแนนดิบที่รับค่าจากผู้ใช้ โดยมีชว่ งคะแนนดังนี ้
A มากกว่า 80 คะแนนขึ ้นไป
B มากกว่า 70 คะแนนขึ ้นไป แต่ไม่ถงึ 80
C มากกว่า 60 คะแนนขึ ้นไป แต่ไม่ถงึ 70
D มากกว่า 50 คะแนนขึ ้นไป แต่ไม่ถงึ 60
F ตํ่ากว่า 50 คะแนนขึ ้นไป
โดยเขียนฟั งก์ชนั การตัดเกรด และกําหนดให้ มีการ return ค่าเกรดกลับมายัง main()
19