Giáo trình Ngôn ngữ lập trình Fortran 90 - Phan Văn Tân

Tóm tắt Giáo trình Ngôn ngữ lập trình Fortran 90 - Phan Văn Tân: ...... END DO ... END IF Ví du 2.9. Ch−ơng trình sau đây sẽ kết thúc sau 20 lần lặp, mặc dù số lần lặp đ−ợc qui định bởi lệnh chu trình là 10000: PROGRAM IFinDO ! C.trúc IF nằm trong C.trình DO Do i=1,10000 If (mod(i,2)==0) write(*,*) i If (i == 20) then print*,' Ket thuc sau l...Nếu con trỏ cũng là mảng thì kích th−ớc của mỗi chiều cũng có thể bị thay đổi trong lúc ch−ơng trình chạy, giống nh− các mảng động. Các con trỏ có thể trỏ đến các biến mảng hoặc biến vô h−ớng. 5.2 Khai báo mảng Để sử dụng mảng nhất thiết cần phải khai báo nó. Khi khai báo mảng cần phải chỉ ...u ứng lỗi vào/ra sẽ đ−ợc xác định bởi iostat. iostat: Là tham số kết xuất, ngầm định là một số nguyên (INTEGER(4)). iostat = 0 nếu không có lỗi, = −1 nếu gặp kết thúc file (end-of-file), hoặc bằng một số chỉ thị thông báo lỗi. 147 rec: Tham số vào, ngầm định là một số nguyên d−ơng (INTEGER...

pdf223 trang | Chia sẻ: havih72 | Lượt xem: 109 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Ngôn ngữ lập trình Fortran 90 - Phan Văn Tân, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
FILE = FileName, STATUS = FileStatus, & 
 ACCESS = 'DIRECT', RECL = RecLen) 
Ans = "" ! Khởi tạo giá trị bằng trống rỗng 
DO WHILE (Ans /= "Q") 
 PRINT* 
 PRINT*, "A: Them ban ghi moi" 
 212 
 PRINT*, "D: Hien thi tat ca cac ban ghi" 
 PRINT*, "Q: Thoat" 
 PRINT*, "U: Cap nhat ban ghi dang co" 
 PRINT* 
 WRITE (*, "('Ban chon? (ENTER): ')", & 
 ADVANCE = "NO") 
 READ*, Ans 
 SELECT CASE (Ans) 
 CASE ("A", "a") 
 CALL ThemBanGhi 
 CASE ("D", "d") 
 CALL HienThi 
 CASE ("U", "u") 
 CALL CapNhat 
 END SELECT 
END DO 
CLOSE (1) 
CONTAINS 
 SUBROUTINE ThemBanGhi 
 ... 
 SUBROUTINE HienThi 
 ... 
 SUBROUTINE DocSoNguyen( Num ) 
 ... 
 SUBROUTINE XoaDauCach( Str ) 
 ... 
 SUBROUTINE CapNhat 
 ... 
END 
Trong ch−ơng trình trên, độ dài tr−ờng Name của MauHSSV đ−ợc khai báo là hằng 
vì nó sẽ đ−ợc sử dụng trong các khai báo khác nữa. Biến cơ bản trong ch−ơng trình là 
Student có kiểu dữ liệu MauHSSV. Câu lệnh INQUIRE để xác định độ dài bản ghi cho 
câu lệnh OPEN sau đó. Ch−ơng trình sẽ dùng hội thoại để ng−ời sử dụng nhập tên file. 
Câu lệnh INQUIRE tiếp theo xác định xem file có tồn tại không. Tùy thuộc vào trạng thái 
tồn tại của file mà tham số STATUS trong lệnh OPEN sẽ mở file cho hợp lý. 
Đoạn ch−ơng trình tiếp theo tạo thực đơn (Menu) dạng đối thoại, cho phép ng−ời sử 
dụng lựa chọn công việc sẽ làm. Trong thực đơn của ch−ơng trình ng−ời sử dụng có thể gõ 
ký tự in th−ờng hoặc in hoa. Tuy nhiên, sẽ thuận lợi hơn nếu ta xây dựng thêm một 
ch−ơng trình con đổi chữ th−ờng thành chữ hoa nh− sau. 
FUNCTION ChToUpper( Ch ) 
 ! Chuong trinh doi chu in thuong thanh chu in hoa 
 CHARACTER Ch, ChToUpper 
 ChToUpper = Ch 
 SELECT CASE (Ch) 
 CASE ( "a":"z" ) 
 ChToUpper = CHAR( ICHAR(Ch) + & 
 ICHAR("A") - ICHAR("a") ) 
 213
 END SELECT 
END FUNCTION ChToUpper 
Ch−ơng trình con ThemBanGhi làm nhiệm vụ chèn thêm một bản ghi mới vào cuối 
file dữ liệu đang tồn tại hoặc chèn vào đầu một file mới. 
SUBROUTINE ThemBanGhi 
RecNo = 0 
EOF = 0 
DO WHILE (EOF == 0) 
 READ( 1, REC = RecNo+1, IOSTAT = EOF ) 
 IF (EOF == 0) THEN 
 RecNo = RecNo + 1 
 END IF 
END DO 
RecNo = RecNo + 1 
Student = MauHSSV( "a", 0 ) 
DO WHILE ((VERIFY( Student % Name,NameChars )== 0)) 
 PRINT*, "Cho ten SV: " 
 READ "(A20)", Student % Name 
 IF (VERIFY(Student % Name,NameChars ) == 0) THEN 
 PRINT*, "Mark: " 
 CALL DocSoNguyen( Student % Mark ) 
 WRITE (1, REC = RecNo) Student 
 RecNo = RecNo + 1 
 END IF 
END DO 
END SUBROUTINE ThemBanGhi 
Vì Fortran không có khả năng xác định số bản ghi trong file, nên ta phải thực hiện 
việc “đọc bỏ qua” các bản ghi để nhận biết số bản ghi này. Cách đọc bỏ qua này không tốn 
nhiều thời gian. Số bản ghi sẽ đ−ợc xác định bởi biến RecNo trong vòng lặp DO WHILE. 
Câu lệnh WRITE sẽ ghi vào file toàn bộ thông tin của một sinh viên chứa trong bản ghi. 
Ch−ơng trình con DocSoNguyen đ−ợc gọi để nhập điểm là một số nguyên hợp lệ. Ch−ơng 
trình con HienThi sử dụng vòng lặp DO WHILE để đọc và hiển thị nội dung file. Ch−ơng 
trình con CapNhat thực hiện việc tìm tên một sinh viên và sửa đổi nội dung thông tin về 
sinh viên này. Trong tr−ờng hợp ở đây, thông tin chỉ có một tr−ờng điểm (Mark). Ch−ơng 
trình con XoaDauCach dùng để xóa bỏ các dấu cách (nếu có) trong biến đ−a vào để tìm 
(tên sinh viên) và tr−ờng Name của bản ghi để đảm bảo việc so sánh hai xâu ký tự. 
SUBROUTINE DocSoNguyen( Num ) 
 INTEGER Err, Num 
 Err = 1 
 DO WHILE (Err > 0) 
 READ (*, *, IOSTAT = Err) Num 
 IF (Err > 0) PRINT*, "Sai du lieu! Vao lai." 
 END DO 
 END SUBROUTINE DocSoNguyen 
SUBROUTINE HienThi 
 RecNo = 1 
 214 
 EOF = 0 
 DO WHILE (EOF == 0) 
 READ (1, REC = RecNo, IOSTAT = EOF) Student 
 IF (EOF == 0) THEN 
 PRINT "(A20, I3)", Student 
 END IF 
 RecNo = RecNo + 1 
 END DO 
 END SUBROUTINE HienThi 
SUBROUTINE CapNhat 
 CHARACTER (NameLen) Item, Copy 
 LOGICAL Found 
 Found = .false. 
 EOF = 0 
 PRINT*, "Sua diem cho ai?" 
 READ "(A20)", Item 
 CALL XoaDauCach( Item ) 
 RecNo = 1 
 DO WHILE (EOF == 0 .AND. .NOT. Found) 
 READ (1, IOSTAT = EOF, REC = RecNo) Student 
 IF (EOF == 0) THEN 
 Copy = Student % Name 
 CALL XoaDauCach( Copy ) 
 IF (Item == Copy) THEN 
 Found = .true. ! Tìm thấy 
 PRINT*, 'Found at recno', RecNo, & 
 ' Enter new mark:' 
 CALL DocSoNguyen( Student % Mark ) 
 WRITE (1, REC = RecNo) Student 
 ! Ghi vào file 
 ELSE 
 RecNo = RecNo + 1 
 END IF 
 END IF 
 END DO 
 IF (.NOT. Found) THEN 
 PRINT*, Item, ' Khong tim thay...' 
 END IF 
 END SUBROUTINE CapNhat 
SUBROUTINE XoaDauCach( Str ) 
 CHARACTER (*) Str 
 INTEGER I 
 I = 1 
 DO WHILE (I < LEN_TRIM( Str )) 
 IF (Str(I:I) == " ") THEN 
 Str(I:) = Str(I+1:) 
 ELSE 
 I = I + 1 
 215
 END IF 
 END DO 
 END SUBROUTINE XoaDauCach 
 216 
Bài tập ch−ơng 9 
9.1 Viết ch−ơng trình nhập vào một mảng một chiều gồm N phần tử là những số 
thực chứa giá trị quan trắc của một biến ngẫu nhiên. Tính các đặc tr−ng trung bình số 
học, ph−ơng sai, độ lệch chuẩn, độ bất đối xứng, trung vị và các tứ vị của chuỗi. In kết 
quả theo qui cách mỗi một đặc tr−ng trên một dòng với những chú thích hợp lý. 
9.2 Cho file số liệu dạng TEXT chứa kết quả quan trắc của các biến X1, X2, , Xm. 
Cấu trúc file nh− sau. Dòng 1 là tiêu đề mô tả nội dung file. Dòng 2 là hai số nguyên 
d−ơng (N, M) chỉ số lần quan trắc (N − dung l−ợng mẫu) và số biến (M). Các dòng tiếp 
theo mỗi dòng chứa M số thực là giá trị quan trắc xi1, xi2, , xim lần thứ i (i=1,2,,N) của 
các biến X1, X2, , Xm, các giá trị đ−ợc viết cách nhau ít nhất một dấu cách. Hãy đọc file 
số liệu và tính các đặc tr−ng thống kê của các biến X1, X2, , Xm: trung bình số học, trung 
vị (median), ph−ơng sai, độ lệch chuẩn, các mômen gốc và mômen trung tâm bậc 2, 3, 4. 
In kết quả vào một file mới d−ới dạng thích hợp. 
9.3 Cũng với file số liệu nh− ở bài tập 9.2, hãy viết ch−ơng trình tính: Trung bình số 
học, độ lệch chuẩn của các biến X1, X2, , Xm và các ma trận t−ơng quan, ma trận t−ơng 
quan chuẩn hóa của chúng. In kết quả vào một file mới. 
9.4 Cho file số liệu dạng TEXT chứa kết quả quan trắc của biến Y (biến phụ thuộc) 
và các biến X1, X2, , Xm (biến độc lập). Cấu trúc file nh− sau. Dòng 1 là tiêu đề mô tả nội 
dung file. Dòng 2 là hai số nguyên d−ơng (N, M) chỉ số lần quan trắc (N − dung l−ợng 
mẫu) và số biến độc lập (M). Các dòng tiếp theo mỗi dòng chứa M+1 số thực là giá trị 
quan trắc yi, xi1, xi2, , xim lần thứ i (i=1,2,,N) của các biến Y, X1, X2, , Xm, các giá trị 
đ−ợc viết cách nhau ít nhất một dấu cách. Hãy viết ch−ơng trình đọc file số liệu và tính: 
Trung bình số học và độ lệch chuẩn của các biến Y, X1, X2, , Xm, các hệ số a0, a1, , am 
của ph−ơng trình hồi qui y = a0 + a1x1 +  + amxm. In kết quả vào file mới. 
9.5 Cho hàm số f(x) = 3sin2x. Sử dụng công thức giải tích và các sơ đồ sai phân với 
độ chính xác bậc nhất: f'(x)=(f(x+∆x)−f(x))/∆x; độ chính xác bậc hai: f'(x)= (f(x+∆x) − 
f(x−∆x))/2∆x; và độ chính xác bậc bốn: f'(x)= (4/3) (f(x+∆x) − f(x−∆x)) / 2∆x − (1/3) 
(f(x+2∆x) − f(x−2∆x))/4∆x, tính đạo hàm bậc nhất của hàm số trên đoạn [−π/2; π/2]. Lấy 
∆x = 0.1 radian. In kết quả vào một file mới d−ới dạng (cột cuối cùng là giá trị đạo hàm 
tính theo công thức giải tích): 
HO TEN:.......  
DAO HAM BAC NHAT CUA HAM SO F(X) = 3*SIN(2*X) 
 X DH1_1 DH1_2 DH1_4 ANAL 
... ... ... ... ... 
 217
9.6 Cho hàm số f(x) = 2cosx. Sử dụng công thức giải tích và các sơ đồ sai phân với độ 
chính xác bậc hai và độ chính xác bậc bốn, tính đạo hàm bậc hai của hàm số trên đoạn 
[−π; π]. Lấy ∆x = 0.1 radian. In kết quả vào một file mới d−ới dạng t−ơng tự nh− ở bài tập 
9.5. 
9.7 Cho hàm số f(x,y)=sin(x)+cos(y)+sin(x+y), với x∈[0 ; 2π], y∈ [−π/2 ; π/2]. Sử 
dụng công thức giải tích và các sơ đồ sai phân 5 điểm độ chính xác bậc hai và 9 điểm độ 
chính xác bậc hai, tính Laplaxian của hàm số khi cho h = 0.1 radian. In kết quả vào một 
file mới d−ới dạng t−ơng tự nh− ở bài tập 9.5. 
9.8 Giả sử quá trình truyền nhiệt xuống các lớp đất sâu đ−ợc mô tả bởi ph−ơng 
trình 
2
2
z
TK
t
T
∂
∂=∂
∂ , trong đó T = T(z, t), với z là độ sâu tính từ bề mặt, t là thời gian trong 
ngày tính bằng giây (s); K là hệ số truyền nhiệt. Hãy viết ch−ơng trình tính sự phân bố 
nhiệt độ theo độ sâu và theo thời gian. Cho biết z ∈ [0; 1 (m)], t ∈ [0; 24 (h)]; K = 3ì10−7. 
Điều kiện ban đầu: 
⎩⎨
⎧
>
≤+=
5.020
5.05.183
)0,(
z
zz
zT ; điều kiện biên: T(0, t) = 3cos(2π/ 
(24*3600) * t + 2π/3) + 20; T(1, t) = 20. In kết quả vào file mới d−ới dạng thích hợp. 
9.9 Viết ch−ơng trình xây dựng một cơ sở dữ liệu l−u trữ hồ sơ cán bộ của một cơ 
quan. 
 218 
Tài liệu tham khảo 
1. Brian D. Hahn: Fortran 90 for scientists and engeneers. British Library 
Cataloguing in Publication Data, 1996, 352pp 
2. Elliot B. Koffman, Frank L. Friedman: Fortran with engineering applications. 
Addison−Wesley Publishing Company, Inc., 1993, 664pp 
3. Krishnamutri T. N., L. Bounoua: An introduction to numerical weather prediction 
techniques. CRC Press, Inc., 1996, 293 pp 
4. Phan Văn Tân: Các ph−ơng pháp thống kê trong khí hậu. NXB Đại học Quốc gia 
Hà Nội, 2003, 208 tr. 
5. Tuyển tập các ch−ơng trình máy tính (ứng dụng trong giao thông vận tải). Tập 1. 
NXB Giao thông vận tải, Hà Nội, 1987. 
 219
Phụ lục 
1. Trình tự các câu lệnh trong một đơn vị ch−ơng trình 
Fortran 
Câu lệnh PROGRAM, FUNCTION, SUBROUTINE hoặc MODUL 
Câu lệnh USE 
Câu lệnh IMPLICIT NONE 
Các câu lệnh 
PARAMETER và 
DATA 
Các câu lệnh định nghĩa 
kiểu dữ liệu, khối giao 
diện, khai báo biến, 
hằng và kiểu dữ liệu 
Các lệnh 
định dạng 
FORMAT 
Các câu lệnh thực hiện 
Câu lệnh CONTAINS 
Các ch−ơng trình con trong 
hoặc các ch−ơng trình con modul 
Câu lệnh END 
2. Tóm tắt các câu lệnh của Fortran 
Tên câu lệnh Mô tả 
ALLOCATABLE Chỉ định thuộc tính động cho biến mảng 
ALLOCATE Cấp phát bộ nhớ cho biến mảng động hoặc con trỏ động 
BACKSPACE Đ−a con trỏ file lùi về một bản ghi 
BLOCK DATA Ch−ơng trình con đặc biệt dùng để khởi tạo dữ liệu 
CALL Lời gọi ch−ơng trình con SUBROUTINE 
CASE Chỉ định tập giá trị đ−ợc chọn trong câu lệnh SELECT CASE 
CHARACTER Lệnh khai báo biến, hằng kiểu ký tự 
CLOSE Lệnh đóng file 
COMMON Lệnh khai báo dùng chung bộ nhớ 
COMPLEX Lệnh khai báo biến, hằng kiểu số phức 
CONTAINS Lệnh phân tách giữa phần thân đơn vị ch−ơng trình và khối các 
ch−ơng trình con trong 
CONTINUE Lệnh không thực hiện, th−ờng dùng để kết thúc chu trình hoặc 
chuyển tiếp giữa các đoạn trong ch−ơng trình 
 220 
Tên câu lệnh Mô tả 
CYCLE Chuyển điều khiển đến câu lệnh kết thúc chu trình (END DO) 
DATA Lệnh khởi tạo dữ liệu cho biến 
DEALLOCATE Giải phóng bộ nhớ cho biến mảng động hoặc con trỏ động 
DIMENSION Chỉ định thuộc tính mảng cho biến, có thể dùng nh− lệnh khai báo 
mảng 
DO Lệnh mở đầu cho một chu trình lặp 
DO WHILE Lệnh mở đầu cho một chu trình lặp có điều kiện 
DOUBLE PRECISION Lệnh khai báo biến, hằng thực có độ chính xác gấp đôi 
END Lệnh kết thúc đơn vị ch−ơng trình hoặc ch−ơng trình con 
ENDFILE Ghi vào file tuần tự bản ghi kết thúc file tại vị trí con trỏ file hiện 
thời 
ENTRY Khi chèn lệnh này kèm theo tên mới và danh sách đối số của ch−ơng 
trình con vào một vị trí nào đó trong ch−ơng trình con, nó có thể làm 
thay đổi vị trí bắt đầu của ch−ơng trình con khi dùng lời gọi với tên 
mới 
EQUIVALENCE Lệnh khai báo dùng chung bộ nhớ 
EXIT Lệnh thoát khỏi chu trình có điều kiện 
EXTERNAL Khai báo tên của ch−ơng trình con ngoài 
FORMAT Khai báo định dạng vào/ra dữ liệu 
FUNCTION Từ khóa khai báo đó là ch−ơng trình con dạng hàm 
GOTO Lệnh nhảy vô điều kiện 
IF Lệnh rẽ nhánh 
IMPLICIT Khai báo danh sách các biến, hằng có ký tự ký tự đầu đ−ợc chỉ ra là 
những biến, hằng có thuộc tính khai báo ẩn 
INCLUDE Chỉ ra tên file (cả đ−ờng dẫn) chứa đoạn ch−ơng trình sẽ chèn vào vị 
trị của lệnh 
INQUIRE Lệnh truy vấn về trạng thái và thuộc tính của file hoặc kích th−ớc bộ 
nhớ chiếm giữ của biến/bản ghi 
INTEGER Lệnh khai báo biến, hằng có kiểu dữ liệu số nguyên 
INTENT Lệnh khai báo thuộc tính dự định cho các đối số hình thức của 
ch−ơng trình con 
INTERFACE Từ khóa mở đầu khai báo khối giao diện 
LOGICAL Lệnh khai báo kiểu dữ liệu lôgic 
MODULE Từ khóa chỉ đơn vị ch−ơng trình là loại modul 
NAMELIST Lệnh khai báo danh sách các khối và biến trong namelist 
NULLIFY Đ−a biến con trỏ về trạng thái không trỏ vào đâu cả 
OPEN Lệnh mở file 
OPTIONAL Lệnh chỉ ra các đối số có thuộc tính tùy chọn trong ch−ơng trình con 
PARAMETER Khai báo chỉ định thuộc tính hằng 
PAUSE Lệnh tạm dừng ch−ơng trình 
POINTER Khai báo chỉ định biến có thuộc tính con trỏ 
PRINT Lệnh kết xuất thông tin ra thiết bị chuẩn (th−ờng là màn hình) 
 221
Tên câu lệnh Mô tả 
PRIVATE Khai báo biến, hằng có thuộc tính riêng chỉ trong nội bộ của modul 
PROGRAM Từ khóa chỉ đơn vị ch−ơng trình là ch−ơng trình chính 
PUBLIC Khai báo biến, hằng có thuộc tính công cộng, có thể truy cập đ−ợc 
từ các đơn vị ch−ơng trình khác có sử dụng modul 
READ Lệnh đọc dữ liệu vào từ thiết bị 
REAL Lệnh khai báo biến, hằng có kiểu dữ liệu số thực 
RECURSIVE Chỉ định thủ tục đệ qui cho ch−ơng trình con 
RETURN Lệnh chuyển điều khiển về ch−ơng trình gọi từ ch−ơng trình con 
REWIND Đ−a con trỏ file trở về đầu file của file tuần tự 
SAVE Khai báo thuộc tính bảo l−u giá trị của các biến trong ch−ơng trình 
con 
SELECT CASE Lệnh chỉ định cấu trúc rẽ nhánh 
SEQUENCE Chỉ định thuộc tính l−u trữ theo trình tự xuất hiện của kiểu dữ liệu 
do ng−ời dùng định nghĩa 
STOP Lệnh dừng hẳn ch−ơng trình tại một thời điểm nào đó khi ch−ơng 
trình ch−a kết thúc 
SUBROUTINE Từ khóa khai báo đó là một ch−ơng trình con dạng thủ tục 
TARGET Chỉ định thuộc tính đích cho biến mà nó là đích của con trỏ 
TYPE Từ khóa định nghĩa kiểu dữ liệu của ng−ời dùng tự thiết lập 
USE Từ khóa khai báo tên modul sẽ đ−ợc sử dụng trong ch−ơng trình 
WHERE Câu lệnh thực hiện việc tìm kiếm trong mảng 
WRITE Lệnh kết xuất thông tin ra thiết bị 
3. Một số hàm và thủ thục của Fortran 
Tên hàm, thủ tục Chức năng 
ABS(A) Giá trị tuyệt đối của số nguyên, số thực hoặc số phức A 
ACOS(X) Arccosine (hàm ng−ợc của cosine) của X 
AIMAG(Z) Phần ảo của số phức Z 
AINT(A [,KIND]) Phần nguyên (là số thực) lớn nhất không v−ợt quá A 
ANINT(A [,KIND]) Phần nguyên (là số thực) gần nhất của A 
ASIN(X) Arcsine (hàm ng−ợc của sine) của X 
ATAN(X) Arctang (hàm ng−ợc của tang) của X, trong phạm vi −π/2 đến π/2 
CEILING(A) Số nguyên nhỏ nhất không nhỏ hơn A 
CMPLX(X[,Y][,KIND]) Đổi số X hoặc (X, Y) ra số phức 
CONJG(Z) Liên hợp phức của Z 
COS(X) Cosine của X 
COSH(X) Cosine hyperbol của X 
DIM(X, Y) max(X−Y, 0) 
EXP(X) xe 
Tên hàm, thủ tục Chức năng 
 222 
FLOOR(A) Số nguyên lớn nhất không v−ợt quá A 
INT(A [,KIND]) Đổi số A thành số nguyên và chặt cụt phần thập phân 
LOG(X) Lôgarit cơ số tự nhiên của X 
LOG10(X) Lôgarit cơ số 10 của X 
MAX(A1,A2[,A3,...]) Giá trị lớn nhất của các số A1, A2, A3, 
MIN(A1,A2[,A3,...]) Giá trị nhỏ nhất của các số A1, A2, A3, 
MOD(A, P) Số d− của phép chia A cho P, bằng A-INT(A/P)*P 
NINT(A [,KIND]) Số nguyên gần nhất với A 
REAL(A [,KIND]) Đổi số A thành số thực 
SIGN(A, B) Trị tuyệt đối của A nhân với dấu của B 
SIN(A) Sine của A 
SINH(A) Sine hyberbol của A 
SQRT(A) Căn bậc hai của A 
TAN(A) Tang của A 
TANH(A) Tang hyberbol của A 
ACHAR(I) Ký tự có mã ASCII là I với I trong khoảng 0−127 
ADJUSTL(STR) Trả về xâu STR có cùng độ dài nh−ng đã căn lề trái 
ADJUSTR(STR) Trả về xâu STR có cùng độ dài nh−ng đã căn lề phải 
CHAR(I [,KIND]) Ký tự có vị trí là I của hệ thống sắp xếp thứ tự đ−ợc cho bởi KIND 
IACHAR(C) Mã ASCII của ký tự C 
ICHAR(C) Vị trí của ký tự C trong hệ thống sắp xếp thứ tự 
INDEX(STR, SUBSTR 
[BACK]) 
Vị trí bắt gặp đầu tiên của SUBSTR trong STR, tính từ bên trái 
(nếu BACK=FALSE−ngầm định) hoặc bên phải (nếu 
BACK=TRUE), bằng 0 nếu không tìm thấy 
LEN_TRIM(STR) Độ dài của xâu STR khi đã cắt bỏ các dấu cách bên phải 
LGE(STR_A, STR_B) Bằng TRUE nếu STR_A tiếp sau STR_B theo thứ tự ASCII hoặc 
bằng nhau (về mặt từ vựng), bằng FALSE nếu ng−ợc lại 
LGT(STR_A, STR_B) Bằng TRUE nếu STR_A tiếp sau STR_B theo thứ tự ASCII, bằng 
FALSE nếu ng−ợc lại 
LLE(STR_A, STR_B) Bằng TRUE nếu STR_A đứng tr−ớc STR_B theo thứ tự ASCII hoặc 
bằng nhau (về mặt từ vựng), bằng FALSE nếu ng−ợc lại 
LLT(STR_A, STR_B) Bằng TRUE nếu STR_A đứng tr−ớcc STR_B theo thứ tự ASCII, 
bằng FALSE nếu ng−ợc lại 
LEN(STR) Số ký tự của STR nếu là biến vô h−ớng, hoặc số phần tử của STR 
nếu nó là biến mảng 
REPEAT(STR,NCOPIES) Gộp NCOPIES lần xâu STR 
TRIM(STR) Trả về xâu STR đã cắt bỏ các dấu cách bên phải nhất 
EPSILON(X) Số mà hầu nh− có thể bỏ qua so với 1 (số vô cùng bé 21− p ) 
HUGE(X) Giá trị lớn nhất của biến X có kiểu thực hoặc nguyên 
PRECISION(X) Độ chính xác thập phân (số chữ số thập phân biểu diễn chính xác) 
của số thực hoặc số phức 
TINY(X) Số d−ơng nhỏ nhất của số thực 
 223
Tên hàm, thủ tục Chức năng 
BIT_SIZE(I) Số bit lớn nhất biểu diễn số nguyên 
BTEST(I, POS) Bằng TRUE nếu bít thứ POS của số nguyên I bằng 1 (Chú ý: Số thứ 
tự bít đánh số từ 0 tính từ bên phải sang của dãy bít biểu diễn số I) 
IAND(I, J) Trả về số nguyên biểu diễn các bít của I và J t−ơng ứng bằng 1, ví 
dụ IAND(255, 128)=128, vì bít thứ 7 của hai số đều bằng 1, tức 128 
= 1.27 + 0.26 +  0.20. 
ISHFT(I, SHIFT) Giá trị của I khi dịch chuyển tất cả các bít của I sang trái (SHIFT 
d−ơng) hoặc sang phải (SHIFT âm) SHIFT vị trí 
ALLOCATED(ARRAY) Nhận giá trị TRUE nếu ARRAY đã đ−ợc cấp phát bộ nhớ 
LBOUND(ARRAY[,DIM]) Trả về chỉ số mảng đầu tiên (nếu bỏ qua DIM) hoặc chỉ số đầu tiên 
của chiều DIM của ARRAY 
SHAPE(SOURCE) Trả về kích th−ớc các chiều của mảng SOURCE, nếu SOURCE là 
vô h−ớng thì kích th−ớc bằng không 
SIZE(ARRAY [,DIM]) Trả về kích th−ớc [chiều DIM] của mảng ARRAY 
UBOUND(ARRAY[,DIM]) T−ơng tự nh− LBOUND nh−ng là chỉ số cuối cùng 
MAXLOC(ARRAY[,MASK]) Trả về địa chỉ phần tử mảng có giá trị lớn nhất. Nếu có đối số 
MASK thì MASK là mảng các phần tử lôgic có cùng kích th−ớc với 
ARRAY; trong tr−ờng hợp này chỉ có các phần tử TRUE mới đ−ợc 
xét đến. 
MERGE(TSOURCE, 
FSOURCE, MASK) 
Trả về mảng có cùng kích th−ớc với cả ba tham số. Các phần tử của 
mảng kết quả sẽ là những giá trị lấy từ mảng TSOURCE hoặc 
FSOURCE tùy thuộc phần tử t−ơng ứng của MASK là TRUE hay 
FALSE. 
MINLOC(ARRAY[,MASK]) T−ơng tự nh− MAXLOC nh−ng là giá trị nhỏ nhất. 
TRANSPOSE(MATRIX) Trả về ma trận chuyển vị của MATRIX 
ASSOCIATED(POINTER 
[,TARGET]) 
Nếu không có TARGET, kết quả là TRUE nếu POINTER đ−ợc liên 
kết với một đích, là FALSE nếu ng−ợc lại. Trạng thái POINTER 
phải là ch−a xác định. Nếu có TARGET, kết quả là TRUE nếu 
POINTER đ−ợc liên kết với nó. Nếu TARGET cũng chính là con trỏ 
thì đích của nó đ−ợc so sánh với đích của POINTER, và sẽ trả về 
FALSE nếu hoặc POINTER hoặc TARGET ch−a đ−ợc liên kết. 
KIND(X) Trả về giá trị tham số loại dữ liệu của X 
SELECTED_INT_KIND(R) Giá trị tham số loại đối với dữ liệu kiểu số nguyên có thể biểu diễn 
tất cả các giá trị nguyên trong khoảng RR n 1010 <<− với R là 
một số nguyên. 
SELECTED_REAL_KIND([P] 
[,R]) 
Giá trị tham số loại đối với dữ liệu kiểu số thực có độ chính xác 
thập phân ít nhất là P, và phạm vi số mũ thập phân ít nhất là R. ít 
nhất một trong hai tham số P, R phải xuất hiện. 
RANDOM_NUMBER (X) Thủ tục tạo bộ số ngẫu nhiên (0 ≤ X < 1) 
RANDOM_SEED () Thủ tục khởi tạo giá trị gốc bộ số ngẫu nhiên của bộ xử lý 
 224 
Tên hàm, thủ tục Chức năng 
DATE_AND_TIME([DATE] 
[,TIME] [,ZONE] 
[,VALUES]) 
Thủ tục trả về các giá trị (là trống rỗng hoặc HUGE(0) nếu không 
có đồng hồ): 
− DATE (Character) dạng CCYYMMDD (thế kỷ−ngày) 
− TIME (Character) dạng HHMMSS.SSS (giờ−mili giây) 
− ZONE (Character) dạng Shhmm (hiệu giữa giờ địa ph−ơng và giờ 
UTC, S là dấu 
− VALUES mảng ít nhất 8 phần tử, mà giá trị của chúng t−ơng ứng 
là Năm, Tháng, Ngày, hiệu thời gian theo phút so với UTC, giờ, 
phút, giây và mili giây. 

File đính kèm:

  • pdfgiao_trinh_ngon_ngu_lap_trinh_fortran_90_phan_van_tan.pdf
Ebook liên quan