Lập trình máy tính - Chức năng

Hàm là một khối mã có tổ chức, có thể sử dụng lại được dùng để thực hiện một hành động có liên quan. Các chức năng cung cấp mô-đun tốt hơn cho ứng dụng của bạn và mức độ tái sử dụng mã cao. Bạn đã thấy các chức năng khác nhau nhưprintf()main(). Đây được gọi là các hàm dựng sẵn do chính ngôn ngữ cung cấp, nhưng chúng ta cũng có thể viết các hàm của riêng mình và hướng dẫn này sẽ dạy bạn cách viết và sử dụng các hàm đó trong ngôn ngữ lập trình C.

Điều tốt về các chức năng là chúng nổi tiếng với một số tên. Các ngôn ngữ lập trình khác nhau đặt tên cho chúng khác nhau, ví dụ: hàm, phương thức, thói quen con, thủ tục, v.v. Nếu bạn bắt gặp bất kỳ thuật ngữ nào như vậy, thì hãy tưởng tượng về cùng một khái niệm mà chúng ta sẽ thảo luận trong hướng dẫn này.

Hãy bắt đầu với một chương trình trong đó chúng ta sẽ xác định hai mảng số và sau đó từ mỗi mảng, chúng ta sẽ tìm ra số lớn nhất. Dưới đây là các bước để tìm ra số lớn nhất từ ​​một tập hợp số nhất định -

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

Hãy dịch chương trình trên sang ngôn ngữ lập trình C -

#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 );
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Max in first set = 50
Max in second set = 501

Nếu bạn hiểu rõ về ví dụ trên, thì sẽ dễ hiểu tại sao chúng ta cần một hàm. Trong ví dụ trên, chỉ có hai bộ số, set1 và set2, nhưng hãy xem xét một tình huống mà chúng ta có 10 bộ số giống nhau trở lên để tìm ra số lớn nhất từ ​​mỗi bộ. Trong tình huống như vậy, chúng ta sẽ phải lặp lại, xử lý 10 lần hoặc hơn và cuối cùng, chương trình sẽ trở nên quá lớn với mã lặp lại. Để xử lý tình huống như vậy, chúng tôi viết các hàm của chúng tôi trong đó chúng tôi cố gắng giữ mã nguồn sẽ được sử dụng nhiều lần trong lập trình của chúng tôi.

Bây giờ, chúng ta hãy xem cách định nghĩa một hàm trong ngôn ngữ lập trình C và sau đó trong các phần tiếp theo, chúng tôi sẽ giải thích cách sử dụng chúng.

Xác định một chức năng

Dạng tổng quát của định nghĩa hàm trong ngôn ngữ lập trình C như sau:

return_type function_name( parameter list ) {
   body of the function
   
   return [expression];
}

Định nghĩa hàm trong lập trình C bao gồm tiêu đề hàmthân hàm . Đây là tất cả các phần của một hàm -

  • Return Type- Một hàm có thể trả về một giá trị. Cácreturn_typelà kiểu dữ liệu của giá trị mà hàm trả về. Một số hàm thực hiện các hoạt động mong muốn mà không trả về giá trị. Trong trường hợp này, return_type là từ khóavoid.

  • Function Name- Đây là tên thực của hàm. Tên hàm và danh sách tham số cùng nhau tạo thành chữ ký hàm.

  • Parameter List- Một tham số giống như một trình giữ chỗ. Khi một hàm được gọi, bạn chuyển một giá trị làm tham số. Giá trị này được gọi là tham số hoặc đối số thực tế. Danh sách tham số đề cập đến kiểu, thứ tự và số lượng các tham số của một hàm. Các thông số là tùy chọn; nghĩa là, một hàm có thể không chứa tham số.

  • Function Body - Phần thân của hàm chứa một tập hợp các câu lệnh xác định những gì hàm thực hiện.

Gọi một hàm

Trong khi tạo một hàm C, bạn đưa ra định nghĩa về những gì hàm phải làm. Để sử dụng một hàm, bạn sẽ phải gọi hàm đó để thực hiện một tác vụ đã xác định.

Bây giờ, hãy viết ví dụ trên với sự trợ giúp của một hàm -

#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 );
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Max in first set = 50
Max in second set = 501

Các hàm trong Java

Nếu bạn hiểu rõ về các hàm trong lập trình C, thì bạn cũng dễ dàng hiểu chúng trong Java. Lập trình Java đặt tên cho chúng làmethods, nhưng phần còn lại của các khái niệm vẫn ít nhiều giống nhau.

Sau đây là chương trình tương đương được viết bằng Java. Bạn có thể thử thực thi nó để xem kết quả -

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;
   }
}

Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

Max in first set = 50
Max in second set = 501

Các hàm trong Python

Một lần nữa, nếu bạn biết khái niệm hàm trong lập trình C và Java, thì Python cũng không khác mấy. Dưới đây là cú pháp cơ bản để xác định một hàm trong Python:

def function_name( parameter list ):
   body of the function
   
   return [expression]

Sử dụng cú pháp của hàm này trong Python, ví dụ trên có thể được viết như sau:

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

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

Max in first set =  50
Max in second set =  501