fortran-简明教程-(为非编程专业的同学选读)

上传人:小** 文档编号:54680352 上传时间:2018-09-17 格式:PPT 页数:106 大小:966.50KB
返回 下载 相关 举报
fortran-简明教程-(为非编程专业的同学选读)_第1页
第1页 / 共106页
fortran-简明教程-(为非编程专业的同学选读)_第2页
第2页 / 共106页
fortran-简明教程-(为非编程专业的同学选读)_第3页
第3页 / 共106页
fortran-简明教程-(为非编程专业的同学选读)_第4页
第4页 / 共106页
fortran-简明教程-(为非编程专业的同学选读)_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《fortran-简明教程-(为非编程专业的同学选读)》由会员分享,可在线阅读,更多相关《fortran-简明教程-(为非编程专业的同学选读)(106页珍藏版)》请在金锄头文库上搜索。

1、Fortran,Chapter 3 Fortran 的基本事項,3,高階語言發展年表,圖片來源: http:/ 在 IBM 704 上發展 1957:IBM發表,Fortran Formula Translator 1966:American Standards Association 制訂 Fortran 66 鑑於各家編輯器無法相容,故統一標準 American Standards Association:美國國家標準局(ANSI)的前身 1978:ANSI 公布 Fortran 77 標準 刪去部分內容,新增邏輯與輸出入方面的功能 1992:國際標準組織 ISO 公布 Fortran 9

2、0 標準 與 77 版本差異大 加入物件導向、提供指標與加強陣列功能、自由格式寫作 1997:國際標準組織 ISO 公布 Fortran 95 標準 加強平行運算 Fortran 200x,書面格式,Fixed Format是舊式的寫法,有較多的限制,Fixed Format副檔名用 *.F 或 *.FOR 。 Free Format則是Fortran 90以後新增的作法,以副檔名做為區隔,Free Format使用 *.F90。,字元集,英文26個字母 A-Z與a-z 數字 0-9 22個特殊符號 :=+-*/(),.!”%&;?$_ (空白鍵),Fixed Format(固定格式) 字元位

3、置意義: 第 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 +

4、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: writ

5、e (*,20) & 7: sum 8:20 format (1x,f6.1) 9: end,FORTRAN 的資料型態,整數 長整數-231+1231 (4 bytes) 短整數-215+1215 (2 bytes) 浮點數 單精確度 (4 bytes) 雙精確度 (8 bytes) 複數 (a+bi) 字元 邏輯判斷 True 1 False 0,Fortran 的數學運算式,加法+ 減法- 乘法* 除法/ 乘冪* 括號()優先權:括號乘冪除法=乘法減法=加法 22=2*2 2*A 2A,Fortran 的數學運算式,(A+B)*(C+D)/(2*(E+F),Chapter 4 輸出輸入的

6、宣告,輸出入指令,WRITE write(*,*) “Hello“ “*“星號意義: 前者代表使用預設輸出裝置(一般即為螢幕) 後者代表不特別設定輸出格式 嚴謹用法: write(UNIT=*,FMT=*) “Hello“ ! 使用預設輸出裝置,不設定特別格式 write(6,*) “Hello“ ! 使用螢幕輸出,不設定特別格式 write(UNIT=6,FMT=*) “Hello” ! 最嚴謹的寫法,PRINTprint *, “Hello“ print指令沒有指定輸出裝置的能力,只能針對螢幕輸出,變數宣告,變數名稱命名原則注意: 名稱可使用英文字母a-z、底線_、數字0-9(首字需為英文

7、字母) 變數名稱長度,F77規定至少支援1-6個字元,F90支援1-31個字元 雖未規定,但建議不要與執行指令相同(比如PRINT) 建議取有意義的英文單字,增加程式可讀性並減少出錯的機會 一般變數宣告請參閱:變數型態,變數型態,基本概念,以整數為例: integer a “a“為自己取的變數名稱,代表一個儲存整數的空間位置,稱為變數 宣告後透過該名稱來給予或提供變數內容,如: 1. program example 2. integer a, b 3. a = 3 ! 將a變數設定為3 4. b = a * 2 ! 將b變數設定為a*2,即3*2 5. print *, “a=“, a ! 寫

8、出a的內容 6. print *, “b=“, b ! 寫出b的內容 7. stop 8. end example,執行結果 a= 3 b= 9 使用注意: 等號意義代表將左邊變數的內容,設定成右邊的數值或計算結果 名稱命名等原則及注意事項,請參考變數宣告,整數型態 (INTEGERAL),integer a 使用注意: 計算結果無條件捨去小數部分 常見錯誤! 如:a=3/2 a=1 、a=1/2 a=0 宣告未指定長度時,通常表示為長整數 2.長整數 - 使用4位元組(4 bytes, 32 bits) integer(kind=4) a ! F90新增作法 integer(4) b ! I

9、NTEGER*4 c ! F77傳統作法 可儲存範圍:-2,147,483,648 +2,147,483,647,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,浮點數型

10、態 (REAL),real a 未指定kind值時,通常宣告為單精準度(kind=4) 單精準度 - 使用4位元組(4 bytes, 32 bits) real(kind=4) a ! F90新增作法 real(4) b ! REAL*4 c ! F77傳統作法 可表示範圍(PC):1.18*10-38 3.40*1038 單精準度有效位數為6-7位,注意可能有以下問題: a = 1000000. + 0.1 a = 1000000. 常見錯誤,大數加小數!,2. 雙精準度 - 使用4位元組(8 bytes, 64 bits) real(kind=8) a ! F90新增作法 real(8)

11、b ! REAL*8 c ! F77傳統作法 可表示範圍(PC):2.23*10-308 1.79*10308 雙精準度有效位數為15位 3. 使用注意: 常數部分請加上“.0“,如3 3.0(只加“.“亦可) real a a= 1.5+3./2. a= 3.0 (3.與2.被視為浮點數) a= 1.5+3/2 a= 2.5 (3/2視為整數,小數無條件捨去) 常見錯誤! 雙精準度(REAL*8),常數請加上“d0“,如3 3.d0 常見 忽略! 或採用 a = 1.0_4 表示 kind = 4 a = 1.0_8 表示 kind = 8 可用科學記號表示法,如 10,000,000,00

12、0 = 1E10 (1D10 代表雙精準度) 0.0000000001 = 1E-10 (1D-10代表雙精準度),複數型態 (COMPLEX),complex a (複數由實部與虛部組成,a=x+yi,x 為實部、y 為虛部,皆為實數型態) 使用注意: 設定數值a = (x,y) ! a = x + yi ,若x=1.5,y=2.5,a=1.5 + 2.5i a = (1.5,2.5) ! a = 1.5 + 2.5i a = 1.5 ! a = 1.5 + 0i 2. 單精準度 - 使用兩個單精準浮點數 complex(kind=4) a ! F90新增作法 complex(4) b !

13、COMPLEX*8 c ! F77傳統作法 3. 雙精準度 - 使用兩個雙精準浮點數 complex(kind=8) a ! F90新增作法 complex(8) b ! COMPLEX*16 c ! F77傳統作法,字元與字串 (CHARACTER),character a (此例僅能儲存一個字元) 長度超過一個字元時,需指定長度,如需十個字元長度時: character(len=10) a ! F90新增作法 character(10) b ! CHARACTER*10 c ! F77傳統作法 CHARACTER*(10) d !,2. 使用注意: 設定字串變數: a = “Hello“

14、! F90使用單或雙引號來包裝字串 b = Hello ! F77使用單引號來包裝字串 c = “Thats right“ ! 使用雙引號中,有單引號不受影響 d = Thats right ! 使用單引號,字串又包含單引號時,請連續使用 兩個單引號 e = “”“Hello”“” ! 使用雙引號,字串又包含雙引號時,請連續使用兩 個雙引號,本例輸出為“Hello“ 設定部分字串: string(1:4) = “Good“ ! 指定1-4字元 string(5:5) = “ “ ! 指定第5字元 string(6:) = “morning“ ! 指定第6個字元以後的字串 使用 / 連接兩字串:

15、string_a = string_b / string_c 副程序中宣告為不定長度(依呼叫端長度決定),邏輯變數 (LOGICAL),logical a使用注意: 設定邏輯變數: a = .true. ! 設定為真 a = .false. ! 設定為假 使用 WRITE 輸出時,僅顯示 T 或 F 但實務上邏輯變數很少用於輸出 通常不指定使用空間大小,由編輯器自行決定,最少只需1個位元(1 bit) 若指定使用4個位元組時(4 bytes, 32 bits) logical(kind=4) a ! F90新增作法 LOGICAL*4 b ! F77傳統作法 LOGICAL(4) c ! F77傳統作法 (也可使用2個位元組,將上例4換為2即可),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号