การเขียนโปรแกรมคอมพิวเตอร์ - ฟังก์ชั่น

ฟังก์ชันคือบล็อกของโค้ดที่จัดระเบียบและใช้ซ้ำได้ซึ่งใช้ในการดำเนินการเดียวที่เกี่ยวข้อง ฟังก์ชั่นให้ความเป็นโมดูลาร์ที่ดีขึ้นสำหรับแอปพลิเคชันของคุณและการนำโค้ดกลับมาใช้ใหม่ในระดับสูง คุณได้เห็นฟังก์ชั่นต่างๆเช่น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