Presentation is loading. Please wait.

Presentation is loading. Please wait.

FORTRAN 語言簡介 By 陳鯨太.

Similar presentations


Presentation on theme: "FORTRAN 語言簡介 By 陳鯨太."— Presentation transcript:

1 FORTRAN 語言簡介 By 陳鯨太

2 Outline 語言簡介、編譯器簡介 Fortran 基本事項 輸出、輸入及宣告 格式化輸出 程式結構 流程控制 陣列 函式

3 Fortran 簡介 全名-Formula Translator IBM 1954 ~ 1957 第一個被廣泛使用的高階語言 演化

4 FORTRAN COMPILER 簡介1 Visual FORTRAN Microsoft  Digital  Compaq  HP?
Microsoft Visual Studio 完整的windows程式開發工具 可與Visual C++相互連結使用

5 FORTRAN COMPILER 簡介2 計中工作站 編譯方式 提供Fortran 90 及 Fortran 77 輸出至a.out
f77 filename.for f90 filename.f90 輸出至指定檔案(sample) f77 filename.for -o sample f90 filename.for -o sample

6 FORTRAN COMPILER 簡介3 計中工作站之 Fortran 登入 只提供在 ccsun26~35 總數:2套
telnet ccsun27.cc.nctu.edu.tw 帳號:u9031XXX 密碼:預設值是身份証字號

7 FORTRAN 基本事項1 字元集 英文字母:A~Z (大小寫不分) 數字:0~9 特殊符號:冒號、等號、加、減、乘、除、底線 …etc

8 FORTRAN 基本事項2 程式碼寫作格式 Fixed Format Free Format Fortran 77 的舊格式
為了使用打孔卡而發明 詳細規定每個字元的“用法” Free Format Fortran 90之後的新格式 提供較大彈性

9 FORTRAN 基本事項3 Fixed Format 第1個字元 第1-5個字元 第6個字元 第7-72個字元 第73個字元之後
如果是字母c,C或*(星號),表示此行是註解 第1-5個字元 如果這邊是數字,表示這一行的代號,否則應為空白 第6個字元 如果是0以外的字元,表示這一行程式會接續上一行 第7-72個字元 FORTRAN程式碼的寫作區域 第73個字元之後 不使用,超過部份會被忽略,有的編譯器會有錯誤訊息

10 FORTRAN 基本事項4 Free Format 不規定每一行第幾字元有什麼作用 驚嘆號 ! 後面文字是註解 每行可寫作132個字元
行號在每行程式最前面 一行程式碼的最後如果是符號&,代表下一行程式會和這一行連接。

11 FORTRAN 基本事項5 ! Free Format program main
write(*,*) “hello” ! 列印出hello這個字 write(*,*) & “hello” wri& te(*,*) “hello” end

12 輸出1 program main write(*,*) “hello” stop end

13 輸出2 Write(*,*) 第一個參數:輸出的位置 第二個參數:輸出格式 相等寫法: WRITE(*,*) “HELLO”
WRITE(UNIT=6, FMT=*) “HELLO”

14 輸出3 關於write(*,*) 自動換行 印出雙引號使用連續2個雙引號 FORTRAN 90 雙引號/單引號
WRITE(*,*) “ MY NAME IS “”CASTER””. ” FORTRAN 90 雙引號/單引號 FORTRAN 77 單引號

15 輸出4 PRINT 語法:PRINT *, ”輸出字串” 專門對螢幕輸出

16 結束程式 結束程式 Fortran 90  1, 2, 3 Fortran 77  1 END END PROGRAM
END PROGRAM MAIN ! MAIN是主程式的名字 Fortran 90  1, 2, 3 Fortran 77  1

17 資料型態1 整數(integer) 宣告方式:integer a 內定範圍為2^32~ -2^32

18 資料型態2 浮點數 宣告方式:real a 或 real*4 a 單精確度 雙精確度:real*8 a
3.4*10^38 ~ -3.4*10^38 有效位數6~7位 雙精確度:real*8 a 1.79*10^308 有效位數15~16位

19 資料型態3 複數 宣告:complex a 使用:a=(x,y) !x為實部,y為虛部 program main complex a,b
write(*,*) “a+b=”, a+b write(*,*) “a-b=”, a-b write(*,*) “a*b=”,a*b write(*,*) “a/b=”, a/b stop end

20 資料型態4 執行結果: a+b= (4.0,5.3) a-b= (-2.0,-3.3000001)

21 資料型態5 字元及字串 其它寫法 給予初始值 Character a !宣告字元 Character*10 a !宣告長度為10的字串
CHARACTER(LEN=10) CHARACTER*(10) 給予初始值 A=”字串內容”

22 輸入指令 輸入指令的基本語法如下: INTEGER A READ (*,*) A !讀入一個整數,並存到A內
READ(UNIT=5, FMT=*) A !同上

23 格式化輸出1 關於I WRITE(*,”(I5)”) 100 !用5個字元的欄位來輸出一個整數 OUTPUT : _ _ 1 0 0
!輸出五個字元欄位,至少輸出4位,不足補0 OUTPUT: _

24 格式化輸出2 關於F 關於E WRITE(*,”(F9.3)”) 123.45 !輸出9個字元欄位,包括小數部份3個位數
OUTPUT: _ _ 關於E WRITE(*,”(E15.7)”) !用科學計號表示法,輸出15個字元欄位,小數部份佔7位 OUTPUT : _ _ E + 0 3

25 格式化輸出3 關於A WRITE (*,”(A10)”) “HELLO” !用10個字元寬度輸出字串
OUTPUT: _ _ _ _ _ H E L L O WRITE (*,”(A3)”) “HELLO” OUTPUT : H E L

26 格式化輸出4 關於B WRITE (*,”(B6.5)”) 3 !把3變成二進位輸出,字6個字元寬,至少輸出5位
OUTPUT : _

27 格式化輸出5 關於X WRITE (*,”(3X)”) 20 !輸出前先填3個空白字元 OUTPUT: _ _ _ 2 0

28 變數名稱取名原則1 長度限制 不需宣告就能使用 FORTRAN 77  至少6 FORTRAN 90  至少31
第一個字母為I, J, K, L, M, N 整數 其它浮點數

29 變數名稱取名原則2 PROGRAM MAIN I=11+22 WRITE(*,*) “11+22=”, J STOP END 結果:
11+22=0

30 變數名稱取名原則3 關閉內定型態的功能 IMPLICIT NONE 每個變數必需事先宣告 位置:PROGRAM指令的下一行

31 常數的宣告 方式一 方式二 REAL PI PARAMETER(PI=3.14159)
REAL, PARAMETER ::PI=

32 程式結構

33 FLOW CONTROL1 IF … THEN… ELSE語法: IF(邏輯判斷式) THEN 執行動作1 ELSE 執行動作2
END IF

34 FLOW CONTROL2 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

35 FLOW CONTROL3 邏輯運算式 = = 相等 / = 不相等 > 大於 > = 大於等於 < 小於
= = 相等 / = 不相等 > 大於 > = 大於等於 < 小於 < = 小於等於 .AND. 如果兩邊式子都成立,整個條件就成立 .OR. 兩邊的式子只要有一個成立,整個條件就成立 .NOT. 如果後面的式子不成立,整個式子就算成立 .EQV. 兩邊式子的邏輯運算結果相同時,整個式子就成立 .NEQV. 兩邊式子的邏輯運算結果不同時,整個式子就成立

36 FLOW CONTROL4 FORTRAN 77的邏輯運算式 .EQ. 等於 .NE. 不等於 .GT. 大於 .GE. 大於等於
.LT. 小於 .LE. 小於等於

37 FLOW CONTROL5 DO迴圈語法: 例: DO 起始值, 終止值, 累加值 執行程式碼 END DO DO I=10, 5, -1
WRITE(*,*) I

38 FLOW CONTROL6 結果: 10 9 8 7 6 5

39 FLOW CONTROL7 Do…while語法: DO WHILE (邏輯運算) 程式碼 END DO

40 陣列1 FORTRAN 90 陣列的宣告 FORTRAN 77 陣列的宣告 注意!!index值從1開始算起!!
integer a(10) !宣告a這個陣列有10個元素 integer , dimension(10) :: a ! 同上,另一種作法 FORTRAN 77 陣列的宣告 integer a dimension a(10) 注意!!index值從1開始算起!!

41 陣列2 使用陣列 a(1)=18 INTEGER A(3) DATA A /36, 24, 36/
在FORTRAN 90中,還可以省略DATA這個敘述 INTEGER :: A(3) = (/36, 26, 36/) ◎ 括號跟除號之間不能有空格,並且冒號不能省略。

42 函式1 副程式(SUBROUTINE)的使用:(可錯位) PROGRAM MAIN 主程式碼 END SUBROUTINE SUB1()

43 函式2 特性: CALL BY REFERENCE 無回傳值 副程式最後一個指令通常是RETURN 在主程式呼叫副程式:CALL

44 函式3 PROGRAM MAIN IMPLICIT NONE INTEGER :: A=1 WRITE (*,*) “A的初始值是”, A
CALL ADD(A) WRITE(*,*) “A後來的值是”, A STOP END SUBROUTINE ADD(NUM) INTEGER NUM NUM = NUM + 1 RETURN END SUBROUTINE

45 函式4 這個程式的輸出: A的初始值是 1 A後來的值是 2 因為呼叫了subroutine,使得A的值被改變!

46 函式5 自訂函數(function) 類似SUBROUTINE 不同點 宣告方式 呼叫前必需宣告 有回傳值 Fortran 90
REAL , EXTERNAL :: ADD Fortran 77 REAL ADD EXTERNAL ADD

47 函式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) REAL NUM TRIPPLE = NUM * 3 RETURN END

48 執行結果 A的初始值是 1.38 呼叫函數 4.14 A後來的值是 1.38

49 作業 圓面積計算公式 輸入:半徑(浮點數),輸出:圓面積(浮點數) 必需使用subroutine, function其中一種方式
圓周率使用課堂上教的方法宣告 Pi=3.1416

50 Any Question Please


Download ppt "FORTRAN 語言簡介 By 陳鯨太."

Similar presentations


Ads by Google