Fortran 發展簡史 1954:IBM 在 IBM 704 上發展 1957:IBM發表,Fortran → Formula Translator 1966:American Standards Association 制訂 Fortran 66 鑑於各家編輯器無法相容,故統一標準 American Standards Association:美國國家標準局(ANSI)的前身 1978:ANSI 公布 Fortran 77 標準 刪去部分內容,新增邏輯與輸出入方面的功能 1992:國際標準組織 ISO 公布 Fortran 90 標準 與 77 版本差異大 加入物件導向、提供指標與加強陣列功能、自由格式寫作 1997:國際標準組織 ISO 公布 Fortran 95 標準 加強平行運算 Fortran 200x 書面格式 Fixed Format是舊式的寫法,有較多的限制, Fixed Format副檔名用 *.F 或 *.FOR 。 Free Format則是Fortran 90以後新增的作法,以副檔名做為區隔,Free Format使用 *.F90。 Fixed Format(固定格式) 字元位置意義: 第 1??? 字元:如果是字母 C 或 c 或是星號 *,本行視為註解 第 1-5? 字元:空白,或是一組數字為本行程式的代號 第 6??? 字元:放上 0 以外的字元,表示為接續上一行程式碼 第 7-72 字元:程式碼寫作區域 第 73?? 字元以後:不使用,編輯器會忽略,有些則發出錯誤訊息 程式碼之間多餘的空格不具意義,僅作分隔與方便閱讀 配合打孔卡片所發展,Fortran 90之後可採用Free Format 例如: 1:C?? ?? FIXED FORMAT 2:????? PROGRAM FIXED 3:???? READ (*,10) A,B 4:?? 10 FORMAT (F5.1,F5.1) 5:????? SUM = A + B 6:????? WRITE (*,20) 7:???? +SUM 8:?? 20 FORMAT (1X,F6.1) 9:????? END Free Format(自由格式) Fortran 90 開始使用,附加檔名為 *.F90 不再規定第幾字元有何特定用途 驚嘆號「!」後都是註解 每行可以寫作 132 字元 如有行號放在每行最前面 程式連接符號改為「&」,放在每行程式碼最前或最後,表連結前一行或是下一行 例如: 1:! free format 2: program free 3: read (*,10) a,b 4:10 format (f5.1,f5.1) 5: sum=a+b 6: write (*,20) & 7: sum 8:20 format (1x,f6.1) 9: end 輸出入指令 WRITE write(*,*) "Hello" "*"星號意義: 前者代表使用預設輸出裝置(一般即為螢幕) 後者代表不特別設定輸出格式 嚴謹用法: write(UNIT=*,FMT=*) "Hello"? ! 使用預設輸出裝置,不設定特別格式 write(6,*) "Hello"?????????? ! 使用螢幕輸出,不設定特別格式 write(UNIT=6,FMT=*) “Hello”? ! 最嚴謹的寫法 輸出字串若包含有單或雙引號,請參考字串宣告 格式化請參見FORMAT PRINT print *, "Hello" print指令沒有指定輸出裝置的能力,只能針對螢幕輸出 READ read (*,*) a 讓使用者能透過鍵盤輸入變數內容 "*"星號意義: 前者代表使用預設輸入裝置(一般為鍵盤) 後者代表不指定輸入格式 嚴謹用法: read(UNIT=*,FMT=*) "Hello"? ! 使用預設輸入裝置,不指定輸入格式 read(5,*) "Hello"????????? ? ! 使用鍵盤輸入,不指定輸入格式 read(UNIT=5,FMT=*) "Hello"? ! 最嚴謹的寫法 注意事項: 輸入字串無須加上雙引號,但字串中若有空格或逗號,將被視為兩筆資料,比如: read (*,*) a, b 若輸入 Happy Birthday,則a="Happy","b="Birthday" read (*,*) a 若輸入 Happy Birthday,則a="Happy" FORMAT 變數型態 基本概念 整數型態 (INTEGERAL) 3. 短整數 - 使用2位元組(2 bytes, 16 bits) integer(kind=2) a? ! F90新增作法 integer(2)????? b? ! INTEGER*2?????? c? ! F77傳統作法 可儲存範圍:-32,768 ~ +32,767 4. 部分編譯器支援 - 使用1位元組(1 bytes, 8 bits) integer(kind=1) a? ! F90新增作法 integer(1)????? b? ! INTEGER*1?????? c? ! F77傳統作法 可儲存範圍:-128 ~ +127 浮點數型態 (REAL) 複數型態 (COMPLEX) 字元與字串 (CHARACTER) 邏輯變數 (LOGICAL) 自訂資料型態 (TYPE) - F90新增 KIND的應用 - F90新增 變數宣告 IMPLICIT 給定初值.DATA PARAMETER EQUIVALENCE(等位宣告) 流程控制與邏輯運算 The Logical IF Statement IF (logical expression) statement The Arithmetic IF Statement IF (arithmetic expression) num1,num2,num3 expression 0 then goto num1 expression = 0 then goto num2 expression 0 then goto num3 The IF-ENDIF Statement IF ( ) THEN ... ... (statement group) ... ENDIF ... The ELSE Statement The IF-ENDIF Statement IF ( ) THEN ? ? ... ?? ... (statement group 1) ?? ... ENDIF IF ( ) THEN ?? ... ?? ... (statement group 2) ?? ... ENDIF The ELSE Stateme
fortran教程.ppt.ppt
下载此电子书资料需要扣除0点,