Fortran Formula Translator IBM 1954 1957 1978 FORTRAN
Fortran 簡介 • • 全名-Formula Translator IBM 1954 ~ 1957 第一個被廣泛使用的高階語言 演化 – 1978 FORTRAN 77 – 1992 FORTRAN 90 – 1997 FORTRAN 95 3
FORTRAN COMPILER 簡介1 • Visual FORTRAN – Microsoft Digital Compaq HP? – Microsoft Visual Studio – 完整的windows程式開發 具 – 可與Visual C++相互連結使用 4
FORTRAN COMPILER 簡介2 • 計中 作站 – 提供Fortran 90 及 Fortran 77 • 編譯方式 – 輸出至a. out • f 77 filename. for • f 90 filename. f 90 – 輸出至指定檔案(sample) • f 77 filename. for -o sample • f 90 filename. for -o sample 5
FORTRAN 基本事項5 ! Free Format program main write(*, *) “hello” ! 列印出hello這個字 write(*, *) & “hello” wri& te(*, *) “hello” end 11
輸出 1 program main write(*, *) “hello” stop end 12
結束程式 • 結束程式 1. END 2. END PROGRAM 3. END PROGRAM MAIN ! MAIN是主程式 的名字 • • Fortran 90 1, 2, 3 Fortran 77 1 16
資料型態3 • 複數 – 宣告:complex a – 使用:a=(x, y) !x為實部,y為虛部 program main complex a, b a=(1. 0, 1. 0) b=(3. 0, 4. 3) write(*, *) “a+b=”, a+b write(*, *) “a-b=”, a-b write(*, *) “a*b=”, a*b write(*, *) “a/b=”, a/b stop end 19
資料型態4 • 執行結果: a+b= (4. 0, 5. 3) a-b= (-2. 0, -3. 3000001) a*b= (-1. 3000002, 7. 3) a/b= (0. 2655511, -0. 047289926) 20
變數名稱取名原則2 PROGRAM MAIN I=11+22 WRITE(*, *) “ 11+22=”, J STOP END • 結果: 11+22=0 29
常數的宣告 • 方式一 REAL PI PARAMETER(PI=3. 14159) • 方式二 REAL, PARAMETER ::PI=3. 14159 31
FLOW CONTROL 1 • IF … THEN… ELSE語法: IF(邏輯判斷式) THEN 執行動作 1 ELSE 執行動作 2 END IF 33
FLOW CONTROL 2 PROGRAM MAIN IMPLICIT NONE REAL HIEGHT REAL WEIGHT READ(*, *) HEIGHT READ(*, *) WEIGHT IF (WEIGHT > HEIGHT-100) THEN WRITE(*, *) “TOO FAT!” ELSE WRITE(*, *) “UNDER CONTROL” END IF STOP END 34
FLOW CONTROL 6 • 結果: 10 9 8 7 6 5 38
FLOW CONTROL 7 • Do…while語法: DO WHILE (邏輯運算) 程式碼 END DO 39
陣列 1 • FORTRAN 90 陣列的宣告 integer a(10) !宣告a這個陣列有10個元素 integer , dimension(10) : : a ! 同上,另一種作法 • FORTRAN 77 陣列的宣告 integer a dimension a(10) • 注意!!index值從 1開始算起!! 40
函式 1 • 副程式(SUBROUTINE)的使用:(可錯位) PROGRAM MAIN 主程式碼 END SUBROUTINE SUB 1() 程式碼 END SUBROUTINE SUB 2() 程式碼 END SUBROUTINE 42
函式 3 PROGRAM MAIN IMPLICIT NONE INTEGER : : A=1 WRITE (*, *) “A的初始值是”, A CALL ADD(A) WRITE(*, *) “A後來的值是”, A STOP END SUBROUTINE ADD(NUM) IMPLICIT NONE INTEGER NUM = NUM + 1 RETURN END SUBROUTINE 44
函式 5 • 自訂函數(function) – 類似SUBROUTINE – 不同點 • 呼叫前必需宣告 • 有回傳值 – 宣告方式 • Fortran 90 REAL , EXTERNAL : : ADD • Fortran 77 REAL ADD EXTERNAL ADD 46
函式 6 PROGRAM MAIN IMPLICIT NONE REAL, EXTERNAL: : TRIPPLE real: : A=1. 38 WRITE (*, *) "A的初始值是", A WRITE (*, *) "呼叫函數", TRIPPLE(A) WRITE(*, *) "A後來的值是", A STOP END REAL FUNCTION TRIPPLE(NUM) IMPLICIT NONE REAL NUM TRIPPLE = NUM * 3 RETURN END 47
Any Question • Please email : caster@cis. nctu. edu. tw 50
- Slides: 50