การเขียนโปรแกรมคอมพิวเตอร์ - ฟังก์ชั่น
ฟังก์ชันคือบล็อกของโค้ดที่จัดระเบียบและใช้ซ้ำได้ซึ่งใช้ในการดำเนินการเดียวที่เกี่ยวข้อง ฟังก์ชั่นให้ความเป็นโมดูลาร์ที่ดีขึ้นสำหรับแอปพลิเคชันของคุณและการนำโค้ดกลับมาใช้ใหม่ในระดับสูง คุณได้เห็นฟังก์ชั่นต่างๆเช่นprintf() และ main(). สิ่งเหล่านี้เรียกว่าฟังก์ชันในตัวที่มีให้โดยภาษาเอง แต่เราสามารถเขียนฟังก์ชันของเราเองได้เช่นกันและบทช่วยสอนนี้จะสอนวิธีเขียนและใช้ฟังก์ชันเหล่านั้นในภาษาโปรแกรม C
สิ่งที่ดีเกี่ยวกับฟังก์ชั่นคือมีชื่อเสียงหลายชื่อ ภาษาโปรแกรมที่แตกต่างกันตั้งชื่อภาษาต่างกันเช่นฟังก์ชันวิธีการกิจวัตรย่อยขั้นตอน ฯลฯ หากคุณเจอคำศัพท์ดังกล่าวลองจินตนาการถึงแนวคิดเดียวกันซึ่งเราจะพูดถึงในบทช่วยสอนนี้
เริ่มต้นด้วยโปรแกรมที่เราจะกำหนดอาร์เรย์ของตัวเลขสองอาร์เรย์จากนั้นเราจะพบตัวเลขที่ใหญ่ที่สุดจากแต่ละอาร์เรย์ ด้านล่างนี้เป็นขั้นตอนในการค้นหาจำนวนสูงสุดจากชุดตัวเลขที่กำหนด -
1. Get a list of numbers L1, L2, L3....LN
2. Assume L1 is the largest, Set max = L1
3. Take next number Li from the list and do the following
4. If max is less than Li
5. Set max = Li
6. If Li is last number from the list then
7. Print value stored in max and come out
8. Else prepeat same process starting from step 3
มาแปลโปรแกรมข้างต้นเป็นภาษาซี -
#include <stdio.h>
int main() {
int set1[5] = {10, 20, 30, 40, 50};
int set2[5] = {101, 201, 301, 401, 501};
int i, max;
/* Process first set of numbers available in set1[] */
max = set1[0];
i = 1;
while( i < 5 ) {
if( max < set1[i] ) {
max = set1[i];
}
i = i + 1;
}
printf("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = set2[0];
i = 1;
while( i < 5 ) {
if( max < set2[i] ) {
max = set2[i];
}
i = i + 1;
}
printf("Max in second set = %d\n", max );
}
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -
Max in first set = 50
Max in second set = 501
หากคุณมีความชัดเจนเกี่ยวกับตัวอย่างข้างต้นมันจะกลายเป็นเรื่องง่ายที่จะเข้าใจว่าทำไมเราถึงต้องการฟังก์ชัน ในตัวอย่างข้างต้นมีชุดตัวเลขเพียงสองชุดคือ set1 และ set2 แต่ให้พิจารณาสถานการณ์ที่เรามีชุดตัวเลขที่คล้ายกัน 10 ชุดขึ้นไปเพื่อหาจำนวนสูงสุดจากแต่ละชุด ในสถานการณ์เช่นนี้เราจะต้องทำซ้ำประมวลผล 10 ครั้งขึ้นไปและท้ายที่สุดโปรแกรมจะมีขนาดใหญ่เกินไปเมื่อใช้รหัสซ้ำ เพื่อจัดการกับสถานการณ์ดังกล่าวเราเขียนฟังก์ชันของเราโดยที่เราพยายามเก็บซอร์สโค้ดซึ่งจะถูกใช้ซ้ำแล้วซ้ำอีกในการเขียนโปรแกรมของเรา
ตอนนี้เรามาดูวิธีการกำหนดฟังก์ชันในการเขียนโปรแกรมภาษาซีจากนั้นในส่วนต่อไปเราจะอธิบายวิธีการใช้งาน
การกำหนดฟังก์ชัน
รูปแบบทั่วไปของนิยามฟังก์ชันในโปรแกรมภาษาซีมีดังนี้ -
return_type function_name( parameter list ) {
body of the function
return [expression];
}
ความหมายฟังก์ชั่นในการเขียนโปรแกรม C ประกอบด้วยส่วนหัวของฟังก์ชั่นและการทำงานของร่างกาย นี่คือส่วนทั้งหมดของฟังก์ชัน -
Return Type- ฟังก์ชันอาจส่งคืนค่า return_typeคือชนิดข้อมูลของค่าที่ฟังก์ชันส่งกลับ บางฟังก์ชันดำเนินการตามที่ต้องการโดยไม่ส่งคืนค่า ในกรณีนี้ return_type คือคีย์เวิร์ดvoid.
Function Name- นี่คือชื่อจริงของฟังก์ชัน ชื่อฟังก์ชันและรายการพารามิเตอร์ประกอบกันเป็นลายเซ็นฟังก์ชัน
Parameter List- พารามิเตอร์เปรียบเสมือนตัวยึด เมื่อเรียกใช้ฟังก์ชันคุณจะส่งค่าเป็นพารามิเตอร์ ค่านี้เรียกว่าพารามิเตอร์หรืออาร์กิวเมนต์จริง รายการพารามิเตอร์หมายถึงประเภทลำดับและจำนวนพารามิเตอร์ของฟังก์ชัน พารามิเตอร์เป็นทางเลือก นั่นคือฟังก์ชันอาจไม่มีพารามิเตอร์
Function Body - เนื้อความของฟังก์ชันประกอบด้วยชุดของคำสั่งที่กำหนดสิ่งที่ฟังก์ชันทำ
เรียกใช้ฟังก์ชัน
ในขณะที่สร้างฟังก์ชัน C คุณให้คำจำกัดความว่าฟังก์ชันนี้มีไว้ทำอะไร ในการใช้ฟังก์ชันคุณจะต้องเรียกใช้ฟังก์ชันนั้นเพื่อทำงานที่กำหนดไว้
ตอนนี้เรามาเขียนตัวอย่างข้างต้นด้วยความช่วยเหลือของฟังก์ชัน -
#include <stdio.h>
int getMax( int set[] ) {
int i, max;
max = set[0];
i = 1;
while( i < 5 ) {
if( max < set[i] ) {
max = set[i];
}
i = i + 1;
}
return max;
}
main() {
int set1[5] = {10, 20, 30, 40, 50};
int set2[5] = {101, 201, 301, 401, 501};
int max;
/* Process first set of numbers available in set1[] */
max = getMax(set1);
printf("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = getMax(set2);
printf("Max in second set = %d\n", max );
}
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -
Max in first set = 50
Max in second set = 501
ฟังก์ชันใน Java
หากคุณมีความชัดเจนเกี่ยวกับฟังก์ชันในการเขียนโปรแกรม C คุณก็สามารถเข้าใจฟังก์ชันเหล่านี้ใน Java ได้โดยง่ายเช่นกัน การเขียนโปรแกรม Java ตั้งชื่อเป็นmethodsแต่แนวคิดที่เหลือยังคงเหมือนเดิมไม่มากก็น้อย
ต่อไปนี้เป็นโปรแกรมเทียบเท่าที่เขียนด้วย Java คุณสามารถลองดำเนินการเพื่อดูผลลัพธ์ -
public class DemoJava {
public static void main(String []args) {
int[] set1 = {10, 20, 30, 40, 50};
int[] set2 = {101, 201, 301, 401, 501};
int max;
/* Process first set of numbers available in set1[] */
max = getMax(set1);
System.out.format("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = getMax(set2);
System.out.format("Max in second set = %d\n", max );
}
public static int getMax( int set[] ) {
int i, max;
max = set[0];
i = 1;
while( i < 5 ) {
if( max < set[i] ) {
max = set[i];
}
i = i + 1;
}
return max;
}
}
เมื่อโปรแกรมด้านบนถูกเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -
Max in first set = 50
Max in second set = 501
ฟังก์ชันใน Python
อีกครั้งถ้าคุณรู้แนวคิดของฟังก์ชันในการเขียนโปรแกรม C และ Java แล้ว Python ก็ไม่แตกต่างกันมากนัก ด้านล่างนี้เป็นไวยากรณ์พื้นฐานของการกำหนดฟังก์ชันใน Python -
def function_name( parameter list ):
body of the function
return [expression]
การใช้ไวยากรณ์ของฟังก์ชันนี้ใน Python ตัวอย่างข้างต้นสามารถเขียนได้ดังนี้ -
def getMax( set ):
max = set[0]
i = 1
while( i < 5 ):
if( max < set[i] ):
max = set[i]
i = i + 1
return max
set1 = [10, 20, 30, 40, 50]
set2 = [101, 201, 301, 401, 501]
# Process first set of numbers available in set1[]
max = getMax(set1)
print "Max in first set = ", max
# Now process second set of numbers available in set2[]
max = getMax(set2)
print "Max in second set = ", max
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
Max in first set = 50
Max in second set = 501