Tổng quan về chức năng

Theo thuật ngữ lập trình, a functionlà một khối các câu lệnh thực hiện một nhiệm vụ cụ thể. Các hàm chấp nhận dữ liệu, xử lý nó và trả về một kết quả. Các hàm được viết chủ yếu để hỗ trợ khái niệm khả năng tái sử dụng. Khi một hàm được viết, nó có thể được gọi một cách dễ dàng mà không cần phải viết lại cùng một đoạn mã.

Các ngôn ngữ hàm khác nhau sử dụng cú pháp khác nhau để viết một hàm.

Điều kiện tiên quyết để viết một hàm

Trước khi viết một hàm, một lập trình viên phải biết những điểm sau:

  • Mục đích của hàm phải được lập trình viên biết.

  • Lập trình viên phải biết thuật toán của hàm.

  • Các biến dữ liệu hàm và mục tiêu của chúng phải được lập trình viên biết.

  • Dữ liệu của hàm nên được lập trình viên biết và được người dùng gọi.

Kiểm soát luồng của một chức năng

Khi một hàm được "gọi", chương trình "chuyển" điều khiển để thực thi chức năng và "luồng điều khiển" của nó như sau:

  • Chương trình đến câu lệnh có chứa "hàm gọi".

  • Dòng đầu tiên bên trong hàm được thực thi.

  • Tất cả các câu lệnh bên trong hàm được thực thi từ trên xuống dưới.

  • Khi hàm được thực thi thành công, điều khiển quay trở lại câu lệnh bắt đầu từ đâu.

  • Bất kỳ dữ liệu nào do hàm tính toán và trả về đều được sử dụng thay cho hàm trong dòng mã gốc.

Cú pháp của một hàm

Cú pháp chung của một hàm trông như sau:

returnType functionName(type1 argument1, type2 argument2, . . . ) {     
   // function body 
}

Định nghĩa một hàm trong C ++

Hãy lấy một ví dụ để hiểu cách một hàm có thể được định nghĩa trong C ++, một ngôn ngữ lập trình hướng đối tượng. Đoạn mã sau có một hàm thêm hai số và cung cấp kết quả của nó dưới dạng đầu ra.

#include <stdio.h> 

int addNum(int a, int b);     // function prototype  

int main() {    
   int sum; 
   sum = addNum(5,6);         // function call 
   printf("sum = %d",sum); 
   return 0; 
}  
int addNum (int a,int b) {    // function definition      
   int result; 
   result = a + b; 
   return result;             // return statement 
}

Nó sẽ tạo ra kết quả sau:

Sum = 11

Định nghĩa một hàm trong Erlang

Hãy xem cách định nghĩa hàm tương tự trong Erlang, một ngôn ngữ lập trình hàm.

-module(helloworld).  
-export([add/2,start/0]).   

add(A,B) ->
   C = A + B,  
   io:fwrite("~w~n",[C]).  
start() ->  
   add(5,6).

Nó sẽ tạo ra kết quả sau:

11

Nguyên mẫu hàm

Nguyên mẫu hàm là một khai báo của hàm bao gồm kiểu trả về, tên hàm & danh sách đối số. Nó tương tự như định nghĩa hàm mà không có hàm-body.

For Example - Một số ngôn ngữ lập trình hỗ trợ tạo mẫu hàm và một số thì không.

Trong C ++, chúng ta có thể tạo nguyên mẫu hàm của hàm 'sum' như thế này:

int sum(int a, int b)

Note - Các ngôn ngữ lập trình như Python, Erlang, v.v. không hỗ trợ tạo mẫu hàm, chúng ta cần khai báo hàm hoàn chỉnh.

Việc sử dụng nguyên mẫu hàm là gì?

Nguyên mẫu hàm được trình biên dịch sử dụng khi hàm được gọi. Trình biên dịch sử dụng nó để đảm bảo kiểu trả về chính xác, danh sách đối số thích hợp được chuyển vào và kiểu trả về của chúng là chính xác.

Chữ ký chức năng

Chữ ký hàm tương tự như nguyên mẫu hàm trong đó số lượng tham số, kiểu dữ liệu của tham số và thứ tự xuất hiện phải theo thứ tự tương tự. Ví dụ -

void Sum(int a, int b, int c);         // function 1  
void Sum(float a, float b, float c);   // function 2  
void Sum(float a, float b, float c);   // function 3

Function1 và Function2 có các chữ ký khác nhau. Function2 và Function3 có cùng chữ ký.

Note - Nạp chồng hàm và ghi đè hàm mà chúng ta sẽ thảo luận trong các chương tiếp theo dựa trên khái niệm về chữ ký hàm.

  • Quá tải hàm có thể xảy ra khi một lớp có nhiều hàm có cùng tên nhưng khác chữ ký.

  • Có thể ghi đè hàm khi một hàm lớp dẫn xuất có cùng tên và chữ ký với lớp cơ sở của nó.