Về cơ bản định nghĩa hàm trong Pascal bao gồm tiêu đề hàm, các khai báo cục bộ (local declaration) và phần thân của hàm (function body). Cách viết hàm (Function) trong Pascal dưới đây sẽ chỉ rõ cho bạn những kiến thức, làm thể nào để sử dụng hàm trong Pascal ở mức cơ bản.
Chương trình con (subprogram)
Chương trình con (subprogram) là một đơn vị chương trình / module thực hiện một nhiệm vụ cụ thể. Các chương trình con này kết hợp với nhau để tạo thành một chương trình lớn hơn. Về cơ bản nó được gọi là Modular design.
Một chương trình con có thể được gọi bởi một chương trình / chương trình con khác, được gọi là chương trình gọi (calling program).
Pascal cung cấp 2 loại chương trình con:
- Hàm (function): chương trình con này trả về một giá trị duy nhất.
- Thủ tục (procedure): chương trình con này không trả về giá trị trực tiếp.
Hàm (function)
Hàm là 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 sẽ có ít nhất một hàm, đó là chương trình chính, và tất cả các chương trình không quan trọng khác có thể xác định các hàm bổ sung.
Khai báo hàm sẽ nói với trình biên dịch tên của hàm, kiểu trả về giá trị và các tham số. Một định nghĩa hàm cung cấp phần thân của của một hàm.
Thư viện chuẩn của Pascal cung cấp nhiều hàm được tích hợp sẵn mà chương trình có thể gọi. Ví dụ hàm AppendStr( ) nối 2 chuỗi, hàm New( ) phân bổ tự động cho các biến và nhiều hàm khác.
Định nghĩa hàm
Trong Pascal, một hàm được định nghĩa bằng cách sử dụng các từ khóa hàm. Công thức chung của một định nghĩa hàm như sau:
function name(argument(s): type1; argument(s): type2; ...): function_type;
local declarations;
begin
...
< statements="">
...
name:= expression;
end;
Cách viết hàm (Function) trong Pascal
Một định nghĩa hàm trong Pascal bao gồm tiêu đề hàm (header), các khai báo cục bộ (local declaration) và phần thân của hàm (function body). Tiêu đề hàm chứa từ khóa hàm và tên hàm. Dưới đây là chi tiết các phần của một hàm:
- Đối số (Argument): Các đối số liên kết giữa chương trình gọi và các hàm định danh, còn được gọi là tham số hình thức (formal parameter). Tham số giống như placeholder. Khi một hàm được gọi, bạn sẽ nhận được giá trị cho tham số.
Giá trị này được gọi là tham số thực tế hoặc đối số. Danh sách tham số đề cập đến kiểu tham số, thứ tự và số của tham số của một hàm. Có thể tùy chọn sử dụng các tham số hình thức hoặc không. Các tham số này có thể là 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 miền con.
Danh sách tham số hình thức xuất hiện trong câu lệnh của hàm, có thể là các biến đơn giản hoặc các biến con, các biến mảng hoặc biến cấu trúc, hoặc các chương trình con.
- Return Type: Tất cả các hàm phải trả về một giá trị, do đó tất cả các hàm phải được gán một kiểu. Kiểu khai báo dữ liệu hàm trả về giá trị của hàm, có thể là kiểu khai báo chuẩn, khai báo do người dùng định nghĩa hoặc khai báo hàm con nhưng không thể là khai báo hàm cấu trúc.
- Khai báo cục bộ (local declaration): khai báo cục bộ tham khảo các khai báo hàm, hằng, biến, hàm và các thủ tục mà chỉ áp dụng trong phần thân của hàm.
- Phần thân hàm (function body): Phần thân hàm có chứa tập hợp các câu lệnh định nghĩa hàm đó.
Phần thân hàm nằm ở giữa các lệnh begin và end. Nó là phần được tính toán trong hàm. Phải có một lệnh gán kiểu name := expression;, phần thân hàm được gán một giá trị cho tên hàm. Giá trị này được trả về khi hàm được thực thi. Lệnh cuối cùng trong phần thân hàm kết thúc bằng lệnh end.
Dưới đây là ví dụ sử dụng định nghĩa 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;
Cách viết hàm (Function) trong Pascal
Khai báo hàm
Khai báo hàm nói với trình biên dịch tên hàm và cách để gọi hàm. Phần thân hàm có thể định nghĩa riêng.
Một khai báo hàm bao gồm các phần dưới đây:
function name(argument(s): type1; argument(s): type2; ...): function_type;
Với hàm max () được định nghĩa ở trên, dưới đây là cách khai báo hàm:
function max(num1, num2: integer): integer;
Hàm khai báo được yêu cầu khi bạn xác định một hàm trong file nguồn và bạn gọi hàm đó trong một file khác. Trường hợp này bạn nên khai báo hàm ở đầu file gọi hàm.
Gọi một hàm
Trong quá trình tạo một hàm, bạn cung cấp định nghĩa về hàm cần làm những gì. Để sử dụng hàm, bạn sẽ phải gọi hàm đó để thực hiện nhiệm vụ nào đó.
Khi một chương trình gọi một hàm, chương trình điều khiển sẽ được truyền đến hàm được gọi. Hàm được gọi thực hiện nhiệm vụ được định nghĩa, và khi lệnh return được thực thi hoặc khi đạt đến lệnh end, nó sẽ trả lại chương trình điều khiển về chương trình chính.
Để gọi một hàm, chỉ cần cung cấp các tham số yêu cầu và nếu hàm trả về một giá trị thì bạn có thể lưu lại giá trị trả về này.
Dưới đây là ví dụ đơn giản gọi một hàm:
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.
Cách viết hàm (Function) trong Pascal
Khi được biên dịch và thực thi, đoạn code trên sẽ cho kết quả là:
Max value is : 200
Trên đây là cách viết hàm (Function) trong Pascal. Hy vọng sau bài viết này bạn đọc sẽ hiểu hơn về Pascal, hàm Pascal phổ biến cũng như cách viết hàm (function) trong Pascal. Chúc các bạn thành công.