Trên cơ bản, định nghĩa hàm trong Pascal gồm tiêu đề hàm, các khai báo cục bộ (local declaration) và phần thân hàm (function body). Cách viết hàm (Function) trong Pascal dưới đây sẽ là hướng dẫn chi tiết, giúp bạn làm thế nào để sử dụng hàm một cách mạch lạc ở cấp độ cơ bản.
Bí quyết viết hàm (Function) trong Pascal
Đơn vị chương trình nhỏ (subprogram)
Đơn vị chương trình nhỏ (subprogram) là một khối mã với nhiệm vụ riêng biệt. Những đơn vị này kết hợp linh hoạt, tạo nên một bức tranh tổng thể vô cùng sáng tạo. Đây là Thiết kế Modular được Mytour giới thiệu.
Bất cứ chương trình nhỏ nào cũng có thể được gọi từ một chương trình / chương trình nhỏ khác, hay còn gọi là chương trình gọi (calling program).
Trong thế giới Pascal, có 2 dạng chương trình nhỏ:
- Hàm (function): một đơn vị chương trình trả về một giá trị duy nhất.
- Thủ tục (procedure): chương trình con không trực tiếp trả về giá trị.
Hàm (function)
Hàm là một tập hợp câu lệnh thực hiện một nhiệm vụ cụ thể. Trong thế giới Pascal, mỗi chương trình ít nhất cũng phải có một hàm, thường là chương trình chính, và có thể bổ sung thêm các hàm khác theo nhu cầu.
Khai báo hàm thông báo với trình biên dịch tên hàm, kiểu giá trị trả về và các tham số. Một định nghĩa hàm cung cấp phần thân của hàm.
Thư viện chuẩn của Pascal mang đến nhiều hàm tích hợp sẵn mà chương trình có thể gọi. Ví dụ, hàm AppendStr( ) dùng để nối 2 chuỗi, 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 xác định bằng từ khóa hàm. Công thức chung của một định nghĩa hàm như sau:
hàm_ten(tham_số(s): kiểu1; tham_số(s): kiểu2; ...): kiểu_trả_về;
khai_báo_cục_bộ;
bắt_đầu
...
< câu_lệnh=''>
...
tên:= biểu_thức;
kết_thúc;
Cách viết hàm (Function) trong Pascal
Một định nghĩa hàm trong Pascal gồm tiêu đề hàm (header), khai báo cục bộ (local declaration) và phần thân của hàm (function body). Tiêu đề hàm bao gồm 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:
- Tham số (Argument): Các tham số liên kết giữa chương trình gọi và các hàm, còn được gọi là tham số hình thức (formal parameter). Tham số giống như placeholder. Khi gọi hàm, bạn sẽ truyền giá trị cho tham số.
Giá trị này là tham số thực tế hoặc đối số. Danh sách tham chơi xổ số cập đến kiểu tham số, thứ tự và số lượng tham số của hàm. Có thể sử dụng hoặc không sử dụng các tham số hình thức. 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ố xuất hiện trong câu lệnh hàm, có thể là biến đơn giản, biến con, biến mảng, hoặc biến cấu trúc, thậm chí cả chương trình con.
- Loại trả về: Mọi hàm phải trả về một giá trị, vì vậy mọi hàm đều phải có một kiểu. Kiểu này có thể là kiểu dữ liệu chuẩn, kiểu do người dùng định nghĩa hoặc kiểu của một hàm con, nhưng không thể là kiểu của một hàm cấu trúc.
- Khai báo cục bộ: Các khai báo cục bộ tham chiếu đến các khai báo về hàm, hằng số, biến, và các chương trình con chỉ sử dụng trong phần thân của hàm.
- Phần thân hàm: Nơi chứa tập hợp các câu lệnh định nghĩa nhiệm vụ của hàm.
Phần thân của hàm được đặt giữa các lệnh begin và end. Đây là nơi thực hiện nhiệm vụ của hàm. Cần có một lệnh gán như name := expression;, phần thân hàm sẽ gán giá trị cho tên hàm. Kết quả này sẽ đượ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 với end.
Dưới đây là ví dụ về cách sử dụng định nghĩa hàm trong Pascal:
(* Hàm trả về số lớn nhất giữa hai số *)
function max(num1, num2: integer): integer;
Danh sách biến
(* Khai báo biến cục bộ *)
kết_quả: integer;
Bắt đầu
Nếu (num1 > num2) thì
kết_quả := num1
ngược_lại
kết_quả := num2;
lớn_nhất := kết_quả;
kết_thúc;
Cách viết hàm (Function) trong Pascal
Khai_báo hàm
Khai báo hàm thông báo với trình biên dịch tên hàm cùng cách sử dụng. Phần thân hàm có thể được định nghĩa theo cách đặc biệt.
Một bản khai báo hàm bao gồm các phần sau đây:
function tên(argument(s): kiểu1; argument(s): kiểu2; ...): kiểu_hàm;
Đối với hàm max() đã được định nghĩa trước, dưới đây là cách bản khai báo hàm:
function max(num1, num2: integer): integer;
Khi bạn định nghĩa một hàm trong file nguồn và sau đó gọi nó từ một file khác, việc khai báo hàm là quan trọng. Trong trường hợp này, bạn nên đặt khai báo hàm ở đầu của file gọi hàm.
Gọi một hàm
Trong quá trình tạo một hàm, bạn chỉ định nghĩa về công việc cụ thể mà hàm sẽ thực hiện. Để sử dụng hàm, bạn cần gọi nó để thực hiện nhiệm vụ được định nghĩa.
Khi một chương trình gọi một hàm, quyền điều khiển chương trình sẽ được chuyển đến hàm được gọi. Hàm này sẽ thực hiện nhiệm vụ được định nghĩa và khi lệnh return được thực thi hoặc khi đến lệnh end, quyền điều khiển sẽ trở lại chương trình chính.
Để gọi một hàm, bạn chỉ cần cung cấp các tham số cần thiết và nếu hàm trả về một giá trị, bạn có thể lưu lại giá trị đó.
Dưới đây là ví dụ đơn giản về cách gọi một hàm:
chương trình exFunction;
biến
so_sanh_1, so_sanh_2, ket_qua : nguyen;
(*định nghĩa hàm *)
chức_năng lon_nhat(so1, so2: nguyen): nguyen;
biến
(* phần khai báo biến cục bộ *)
kết_quả: nguyên;
bắt_đầu
nếu (num1 > num2) thì
kết_quả := num1
ngược_lại
kết_quả := num2;
lớn_nhất := kết_quả;
kết_thúc;
bắt_đầu
a := 100;
b := 200;
(* gọi một hàm để lấy giá trị lớn nhất *)
kết_quả := lớn_nhất(a, b);
ghi_dòng('Giá trị lớn nhất là: ', kết_quả);
ket_thuc.
Cách tạo hàm (Function) trong Pascal
Sau khi biên dịch và chạy, đoạn mã trên sẽ hiển thị kết quả là:
Giá trị lớn nhất là: 200
Mô phỏng quá trình tạo hàm (Function) trong Pascal. Hi vọng sau bài viết này, độc giả sẽ có cái nhìn rõ ràng hơn về Pascal, về những hàm phổ biến và cách viết hàm (function) trong Pascal. Chúc các bạn gặp nhiều thành công.