D On in d= ini, li m, inc
Chương trình con loại hàm
Khi xây dựng chương trình giải một bài toán tương đối phức tạp, ta sẽ thấy chương trình thường dài và khó đọc. Nhiều khi cùng một số thao tác như nhau được thực hiện lặp lại ở một số chỗ trong một chương trình cũng làm cho chương trình của chúng ta trở thành dài hơn. Những vấn đề này có thể khắc phục bằng cách sử dụng những chương trình con (subprogram) - là một nhóm các lệnh được tách riêng ra và sau đó sẽ được gọi thực hiện khi cần trong chương trình của chúng ta. Trong Fortran có hai loại chương trình con: chương trình con loại hàm (function) và chương trình con loại thủ tục (subroutine). Trong mục 2.4 chương 2 đã giới thiệu và thỉnh thoảng trong các bài khác chúng ta đã sử dụng một vài hàm chuẩn hay hàm riêng của Fortran. Thí dụ, khi tính sin của một góc ta dùng hàm SIN, khi cần giá trị tuyệt đối của một đại lượng ta dùng hàm ABS... Những hàm này thực chất cũng là những chương trình con, nhưng chúng đã được xây dựng sẵn (hàm chuẩn) và nằm trong bộ biên dịch, chúng ta chỉ việc gọi trực tiếp trong chương trình khi cần. Trong chương này sẽ tóm tắt về những đặc điểm của các hàm chuẩn. Sau đó ta học cách tự xây dựng những chương trình con loại hàm để giải quyết những bài toán riêng của mình. Những chương trình con loại thủ tục sẽ xét trong chương 9.
8.1. Các hàm chuẩn
Một hàm tính ra một giá trị, thí dụ căn bậc hai của một số hay giá trị trung bình của một mảng. Fortran có rất nhiều hàm chuẩn (xem danh sách các hàm chuẩn trong phụ lục 1).
Những đặc điểm chính của các hàm chuẩn là:
1) Tên hàm và các giá trị đầu vào (các đối số) cùng thể hiện một giá trị. 2) Một hàm không thể được sử dụng ở vế trái của dấu = trong một lệnh gán.
3) Tên của hàm chuẩn xác định kiểu dữ liệu của đầu ra của hàm. Thí dụ, nếu tên bắt đầu bằng một trong các chữ cái từ I đến N thì giá trị hàm là số nguyên. 4) Các đối số của hàm thường cùng kiểu như hàm, trừ một số ngoại lệ (xem phụ lục 1).
5) Các đối số của một hàm phải nằm trong cặp dấu ngoặc đơn.
6) Các đối số của một hàm có thể là các hằng, biến, biểu thức hay các hàm khác.
7) Các hàm tự sinh (generic function) chấp nhận nhiều kiểu đối số và trả lại giá trị hàm cùng kiểu với đối số. (Thí dụ hàm ABS(X) nếu đối số X là số nguyên thì giá trị hàm ABS(X) cho ra giá trị tuyệt đối là số nguyên, nếu X thực thì giá trị hàm sẽ là thực.)
Thí dụ 22: Đọc từ bàn phím một số nguyên. Kiểm tra xem nó là số chẵn hay số lẻ và in ra thông báo thích hợp. Ta có thể sử dụng hàm chuẩn MOD (I, J) trong bài tập này. Hàm MOD có hai đối số nguyên I và J. Hàm này trả về số dư của phép chia I/J. Vậy chương trình giải bài tập này có thể như sau:
READ *, K
IF (MOD (K, 2) .EQ. 0) THEN PRINT 5, K
ELSE
PRINT 8, K END IF