当前位置:文档之家› Fortran95简介-全文版

Fortran95简介-全文版

Fortran95簡介-全文版By陳鯨太FORTRAN的演進FORTRAN的起源,要追溯到1954年IBM公司的一項計畫。

由JOHN BACKUS 領導的一個小組,嘗試著在IBM 704電腦上面發展一套程式,它可以把使用接近數學語言的文字,翻譯成機械語言。

這個計畫在剛開始並不被大家看好,但他們在1957年交出了成果,也就是第一套FORTRAN編譯器,FORTRAN語言也就因此誕生了。

FORTRAN語言的執行效率普遍的令各界滿意,它證明了這項計畫的可行性,也成為第一個被廣泛使用的高階語言。

FORTRAN的名字來自於英文的FORMULA TRANSLATOR這兩個字,而這兩個字恰是數學公式翻譯器的意思。

舊版的FORTRAN77是在1978年由美國國家標準局(ANSI)所正式公布的,之後改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是為了FORTRAN 95所撰寫。

編譯器簡介1、VISUAL FORTRANVISUAL FORTRAN一開始是起源於MICROSOFT的FORTRANPOWERSTATION 4.0,這套工具後來賣給DIGITAL公司來繼續發展,下一個版本稱為DIGITAL VISUAL FORTRAN 5.0,DIGITAL後來被COMPAQ合併,所以接下來的6.0及6.5版就稱為COMPAQ VISUAL FORTRAN。

而COMPAQ目前又跟HP合併,也許下一個版本會稱為HP VISUAL FORTRAN。

VISUAL FORTRAN被整合在一個叫作MICROSOFT VISUAL STUDIO的圖形介面開發環境中,VISUAL STUDIO提供一個統一的使用介面,這個介面包括文書編輯功能,PROJECT的管理、除錯工具等等,所以在使用上其實跟上學期的VISUAL C++滿類似的,同學們上課用過VISUAL C++,對VISUAL FORTRAN應該不會陌生。

VISUAL FORTRAN 6.5除了完全支援FORTRAN 95的語法外,擴充功能方面提供完整的WINDOWS程式開發工具,專業版還內含IMSL數值程式庫。

另外它還可以和VISUAL C++直接互相連結使用,也就是把FORTRAN和C語言的程式碼混合編譯成同一執行檔案。

2、在工作站使用FORTRAN學校計中工作站也提供FORTRAN COMPILER,使用方式很簡單,只需要在存放FORTRAN檔案的目錄下面輸入下面敘述即可:ccsun33 [u8623033/fortran]% f77 filename.for這個指令使用f77的compiler,其中filename.for就是我們所編寫的FORTRAN 程式檔案ccsun33 [u8623033/fortran]% f90 filename.for這個指令使用f90的compiler而指令按下enter鍵之後,會把結果COMPILE到a.out這個檔案裡面,我們想要執行這個程式,只要在命令提示字元後打a.out就可以看到執行結果:ccsun33 [u8623033/fortran]% a.out如果在compile的過程中想要把執行檔改成別的檔名,不要每次都變成a.out,那我們可以輸入下列指令ccsun33 [u8623033/fortran]%f77 filename1.for –o filename2或者ccsun33 [u8623033/fortran]%f90 filename1.for –o filename2則filename2會變成我們的執行檔名字在COMPILE FORTRAN的時候,我們必需登入學校計中ccsun26~ccsun35的機器才可以使用(學校規定),並且因為軟體總數只有兩套,同時間只有兩個人能可compile。

FORTRAN基本事項字元集是指使用FORTRAN的時候,所能使用的所有字元有符號。

FORTRAN所能使用的字元集有1、英文26個字母:大小寫不分2、數字:0到93、22個特殊符號:有冒號、等號、加號、減號、驚嘆號…等等FORTRAN程式碼的寫作格式有兩種,FREE FORMAT(自由格式)以及FIXED FORMAT(固定格式)。

簡單來說,FIXED FORMAT是屬於舊式的寫法,它在寫作版面上有很多限制。

FREE FORMAT是FORTRAN90之後的新寫法,取消了許多舊的限制。

FORTRAN程式碼附加檔名為*.F或*.FOR的檔案,就是指以FIXED FORMAT來寫作的程式,若以*.F90為附加檔名的檔案,就是以FREE FORMAT來寫作的程式。

建議現在都應該改用FREE FORMAT來寫作程式。

FIXED FORMAT固定格式之中,規定了程式碼每一行中每個字元欄位的意義。

如下表所示:FIXED FORMAT是為了配合早期需要使用打洞卡來輸入程式才發明出來的格式。

現在都應該要使用FREE FORMAT來寫作程式。

早期的電腦,還沒有使用顯示器作為輸出裝置,不能像現在一樣直接利用鍵盤來修改程式。

早期的程式是利用打洞卡片一張一張的記錄下來,再拿給電腦執行。

有著打洞卡的淘汰,FIXED FORMAT也沒有必要再繼續使用下去。

不過同學們還是可以大概瞭解一下,因為仍有些舊程式是用這種格式來寫作。

FREE FORMATFREE FORMAT基本上允許非常自由的寫作格式,它沒有再去規定每一行的第幾個字元有什麼作用。

需要注意的事項只有下面幾點:1、驚嘆號「!」後面的文字都是註解。

2、每行可以寫作132個字元。

(注意! 並不是無限長)3、行號放在每行程式的最前面。

4、一行程式碼的最後如果是符號&,代表下一行程式會和這一行連接。

例子:sample1.f90輸出、輸入及宣告輸出使用write指令,如下例FORTRAN程式通常以PROGRAM敘述來開頭,PROGRAM後面還要接一個自訂的程式名稱。

這個名稱可以完全自訂,不需要和檔名有任何的關係,這個名字表示「主程式」的名字。

我在這裡取名為MAIN,這個名字可以看個人喜好修改。

FORTRAN程式最後還要有END這個敘述,表示程式碼寫到這一行結束。

WRITE指令就是作為輸出用,WRITE(*,*)之中兩個星號各有各自的意義,前面的星號表示輸出的位置使用內定值,也就是螢幕,後面的星號表示不特別設定輸出格式。

另外,下面三種輸出格式其實會得到一樣的結果:WRITE(*,*) “HELLO”WRITE(6,*) “HELLO”WRITE(UNIT=6, FMT=*) “HELLO”關於WRITE還有幾點要注意1、每一次執行write指令之後,會自動換到下一行來準備做下一次的輸出。

2、因為雙引號是用來包裝字串用的,所以想要印出雙引號的時候,要連用兩個雙引號。

例:想要印出MY NAME IS “CASTER”.就要下達WRITE(*,*) “ MY NAME IS “”CASTER””. ”這個敘述3、FORTRAN90可以使用雙引號或單引號來包裝字串,FORTRAN77標準中只能使用單引號,不過大部份的FORTRAN77還是可以接受雙引號。

範例中還有另一個指令STOP,STOP是終止程式的意思,它可以出現在程式的任何地方,程式執行到這個指令就會中止。

除非必要,不要把STOP指令使用在主程式結束之外的其它地方。

因為一個程式如果有太多的終止點會容易出錯。

STOP指令在這個地方可以省略,因為主程式的程式碼執行完畢後,程式會自動終止。

加上這個指令只是為了更明確表示程式到此結束而已。

END是用來包裝程式碼使用的,說明程式碼已經寫作完畢。

FORTRAN 90標準中,可以使用下面三種方法來表示程式碼寫作結束,FORTRAN77只能使用第一種方法。

ENDEND PROGRAMEND PROGRAM MAIN ! MAIN是主程式的名字PRINT指令用法大致上和WRITE相同,只是專門針對螢幕作輸出,因此少了指定輸出的能力,它也具有限定輸出格式的功能,其語法如下:PRINT *,”輸出字串”1、整數整數的宣告法很簡單,如下:integer a !宣告a為一個整數,內定範圍為2^32~ -2^322、浮點數real a !宣告a為一個浮點數,預設值為單精確度浮點數real*4 a !宣告a為一個單精確度浮點數,大小為4bytereal*8 a !宣告a為一個雙精確度浮點數,大小為8byte單精確度可記錄的數值最大為3.4*10^38,最小為-3.4*10^383、複數FORTRAN是少數有提供複數型態的程式語言,宣告方法如下complex a設定複數的方法如下:a=(x,y) !x為實部,y為虛部例如我們設a=(3,8)就表示a是3+8i範例:sample3.f90則執行結果如下a+b= (4.0,5.3)a-b= (-2.0,-3.3000001)a*b= (-1.3000002,7.3)a/b= (0.2655511,-0.047289926)4、字元及字串宣告一個字元的方法如下CHARACTER a宣告字串的方法如下CHARACTER(10) A !宣告A這個字串的最大長度為10另外使用下面幾種宣告語法也是相同的結果CHARACTER*10CHARACTER(LEN=10)CHARACTER*(10)宣告好之後,我們要給予這個變數一個初始值的方法如下:A=”字串內容”!雙引號在FORTRAN90適用A=’字串內容’!單引號在部份FORTRAN77及所有FORTRAN 90都適用輸入指令的基本語法如下:INTEGER AREAD (*,*) A !讀入一個整數,並存到A內READ (5,*) A !同上READ(UNIT=5, FMT=*) A !同上第一個星號表示輸入的來源使用內定的裝置,第二顆星號來源表示不指定輸出格式。

鍵盤的輸入位置是5,也就是預設位置,所以可以用星號代替鍵盤代碼。

格式化輸出格式化輸出入的控制字元非常豐富,但是常用的並不多,在這裡我們只示範幾個比較常用的部份。

A.關於IWRITE(*,”(I5)”) 100 !用5個字元的欄位來輸出一個整數OUTPUT : _ _ 1 0 0WRITE(*,”(I3)”) 100000OUTPUT: * * *輸出10000需要5個欄位,但是輸出格式只給三個字的欄位,因此印出三顆星號作為警告WRITE(*,”(I5.4)”) 3 !輸出五個字元欄位,至少輸出4位,不足補0OUTPUT: _ 0 0 0 3B.關於FWRITE(*,”(F9.3)”) 123.45 !輸出9個字元欄位,包括小數部份3個位數OUTPUT: _ _ 1 2 3 . 4 5 0C.關於EWRITE(*,”(E15.7)”) 123.45! 用科學計號表示法,輸出15個字元欄位,小數部份佔7位OUTPUT : _ _ 0 . 1 2 3 4 5 0 0 E + 0 3D.關於AWRITE (*,”(A10)”) “HELLO”!用10個字元寬度輸出字串OUTPUT: _ _ _ _ _ H E L L OWRITE (*,”(A3)”) “HELLO”OUTPUT : H E LE.關於BWRITE (*,”(B6.5)”) 3 !把3變成二進位輸出,字6個字元寬,至少輸出5位OUTPUT : _ 0 0 0 1 1F.關於XWRITE (*,”(3X)”) 20 !輸出前先填3個空白字元OUTPUT: _ _ _ 2 0變數名稱的取名原則變數名稱的長度限制隨著各家編譯器而有所不同。

相关主题