Pascal - Hàm
Chương trình con
Chương trình con là một đơn vị / mô-đun chương trình thực hiện một tác vụ cụ thể. Các chương trình con này được kết hợp với nhau để tạo thành các chương trình lớn hơn. Về cơ bản đây được gọi là 'Thiết kế mô-đun.' Một chương trình con có thể được gọi bởi một chương trình con / chương trình, được gọi là chương trình gọi.
Pascal cung cấp hai loại chương trình con:
Functions - các chương trình con này trả về một giá trị duy nhất.
Procedures - các chương trình con này không trực tiếp trả về một giá trị.
Chức năng
A functionlà một nhóm các câu lệnh cùng thực hiện một nhiệm vụ. Mọi chương trình Pascal đều có ít nhất một hàm, đó là chính chương trình và tất cả các chương trình tầm thường nhất đều có thể định nghĩa các hàm bổ sung.
Một chức năng declarationcho trình biên dịch biết về tên, kiểu trả về và các tham số của hàm. Một chức năngdefinition cung cấp phần thân thực tế của hàm.
Thư viện chuẩn Pascal cung cấp nhiều hàm dựng sẵn mà chương trình của bạn có thể gọi. Ví dụ, hàmAppendStr() nối hai chuỗi, hàm New() cấp phát động bộ nhớ cho các biến và nhiều hàm khác.
Xác định một chức năng
Trong Pascal, một functionđược định nghĩa bằng cách sử dụng từ khóa chức năng. Dạng tổng quát của định nghĩa hàm như sau:
function name(argument(s): type1; argument(s): type2; ...): function_type;
local declarations;
begin
...
< statements >
...
name:= expression;
end;
Định nghĩa hàm trong Pascal bao gồm một hàm header, địa phương declarations và một chức năng body. Tiêu đề hàm bao gồm hàm từ khóa vànamecho hàm. Đây là tất cả các phần của một hàm -
Arguments- (Các) đối số thiết lập mối liên kết giữa chương trình đang gọi và các định danh hàm và còn được gọi là các tham số hình thức. 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ị cho 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 tham số của một hàm. Việc sử dụng các tham số chính thức như vậy là tùy chọn. Các tham số này có thể có kiểu dữ liệu chuẩn, kiểu dữ liệu do người dùng xác định hoặc kiểu dữ liệu dải con.
Danh sách tham số chính thức xuất hiện trong câu lệnh hàm có thể là các biến đơn giản hoặc được chỉ định con, mảng hoặc biến có cấu trúc hoặc chương trình con.
Return Type- Tất cả các hàm phải trả về một giá trị, vì vậy tất cả các hàm phải được gán một kiểu. Cácfunction-typelà kiểu dữ liệu của giá trị mà hàm trả về. Nó có thể là loại vô hướng hoặc dải con tiêu chuẩn, do người dùng xác định nhưng nó không thể là loại có cấu trúc.
Local declarations - Khai báo cục bộ tham chiếu đến các khai báo nhãn, hằng, biến, hàm và thủ tục, chỉ áp dụng cho phần thân của hàm.
Function Body- Phần thân hàm chứa một tập hợp các câu lệnh xác định chức năng thực hiện. Nó phải luôn được đặt giữa các từ dành riêng bắt đầu và kết thúc. Nó là một phần của một chức năng mà tất cả các tính toán được thực hiện. Phải có một câu lệnh gán kiểu -name := expression;trong phần thân hàm gán giá trị cho tên hàm. Giá trị này được trả về khi và khi hàm được thực thi. Câu lệnh cuối cùng trong phần nội dung phải là câu lệnh kết thúc.
Sau đây là một ví dụ cho thấy cách xác định một hàm trong pascal:
(* function returning the max between two numbers *)
function max(num1, num2: integer): integer;
var
(* local variable declaration *)
result: integer;
begin
if (num1 > num2) then
result := num1
else
result := num2;
max := result;
end;
Khai báo hàm
Một chức năng declarationcho trình biên dịch biết về tên hàm và cách gọi hàm. Phần thân thực của hàm có thể được định nghĩa riêng biệt.
Một khai báo hàm có các phần sau:
function name(argument(s): type1; argument(s): type2; ...): function_type;
Đối với hàm max () được định nghĩa ở trên, sau đây là khai báo hàm:
function max(num1, num2: integer): integer;
Khai báo hàm là bắt buộc khi bạn xác định một hàm trong một tệp nguồn và bạn gọi hàm đó trong một tệp khác. Trong trường hợp này, bạn nên khai báo hàm ở đầu tệp gọi hàm.
Gọi một hàm
Trong khi tạo một hàm, 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 tác vụ đã xác định. Khi một chương trình gọi một hàm, điều khiển chương trình sẽ được chuyển sang hàm được gọi. Một hàm được gọi thực hiện nhiệm vụ đã xác định và khi câu lệnh trả về của nó được thực thi hoặc khi đạt đến câu lệnh kết thúc cuối cùng, nó sẽ trả lại quyền điều khiển chương trình cho chương trình chính.
Để gọi một hàm, bạn chỉ cần chuyển các tham số bắt buộc cùng với tên hàm và nếu hàm trả về một giá trị, thì bạn có thể lưu trữ giá trị trả về. Sau đây là một ví dụ đơn giản để hiển thị cách sử dụng -
program exFunction;
var
a, b, ret : integer;
(*function definition *)
function max(num1, num2: integer): integer;
var
(* local variable declaration *)
result: integer;
begin
if (num1 > num2) then
result := num1
else
result := num2;
max := result;
end;
begin
a := 100;
b := 200;
(* calling a function to get max value *)
ret := max(a, b);
writeln( 'Max value is : ', ret );
end.
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Max value is : 200