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...
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:
- giao_trinh_ngon_ngu_lap_trinh_fortran_90_phan_van_tan.pdf