fortran第3章2-Fortran語(yǔ)言程序設(shè)計(jì)初步課件_第1頁(yè)
fortran第3章2-Fortran語(yǔ)言程序設(shè)計(jì)初步課件_第2頁(yè)
fortran第3章2-Fortran語(yǔ)言程序設(shè)計(jì)初步課件_第3頁(yè)
fortran第3章2-Fortran語(yǔ)言程序設(shè)計(jì)初步課件_第4頁(yè)
fortran第3章2-Fortran語(yǔ)言程序設(shè)計(jì)初步課件_第5頁(yè)
已閱讀5頁(yè),還剩133頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、3.4 FORTRAN 字符集3.5 常量3.6 變量 3.7 內(nèi)部函數(shù)3.8 算術(shù)表達(dá)式3.9 賦值語(yǔ)句3.10簡(jiǎn)單的輸出語(yǔ)句(表控輸出)3.11簡(jiǎn)單的輸入語(yǔ)句(表控輸入)3.12 PARAMETER語(yǔ)句(參數(shù)說(shuō)明) 3.13 PROGRAM語(yǔ)句,END語(yǔ)句,STOP語(yǔ)句,PAUSE語(yǔ)句不是任何一種外文字母或數(shù)字符號(hào)都能被某一計(jì)算機(jī)語(yǔ)言接受。每一種計(jì)算機(jī)的高級(jí)語(yǔ)言分別規(guī)定了它允許使用的字符。Fortran允許使用的字符如下:英文字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 阿拉伯?dāng)?shù)字:0 1 2 3 4 5 6 7 8 9 特殊

2、符號(hào):空格 = + - * / ( ) , . : ! % & ; $ ? _ (F90中新增的字符)3.4 FORTRAN 字符集文字字符英文字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z數(shù)字 0 1 2 3 4 5 6 7 8 9 下劃線 _特殊字符圖形名稱圖形名稱空格: 冒號(hào) 等號(hào)!嘆號(hào) 十加號(hào)” 引號(hào) 一減號(hào) 百分號(hào) * 星號(hào) 英語(yǔ)的and 斜線; 分號(hào) ( 左括號(hào) 小于 ) 右活號(hào) 大于 ,逗號(hào)?問(wèn)號(hào) 小數(shù)點(diǎn)或句號(hào) 貨幣符號(hào) 撇號(hào)表3-1基本的FORTRAN 90/95字符集 基本字符分為兩大類:文字字符和特殊字符。除了貨

3、幣符號(hào)可以本地化之外,其他任何字符都必須依照表里的形式。注意: 一. 文字字符的用處 主要是命名的作用,可以用來(lái)命名語(yǔ)言中的一切對(duì)象,這三種符號(hào)可以混合使用; 其中數(shù)字還具有它本來(lái)的含義,就是表示數(shù)目。 二. 特殊字符的用處特殊字符主要具有功能的意義,如編輯功能,運(yùn)算功能,語(yǔ)法功能等。FORTRAN 90/95標(biāo)準(zhǔn)原則上接受小寫字母。因此除了以下位置,大小寫是等價(jià)的。 三.大小寫必須區(qū)分的位置 作為字符常量的字符串里面; 輸入輸出的紀(jì)錄里面; 作為編輯描述符的引號(hào)或撇號(hào)里面。四. CVF編譯平臺(tái)接受小寫字母。 在OPEN或者INQUIRE語(yǔ)句里面的FILE=或NAME=后面是否區(qū)分大小寫,也是

4、由編譯平臺(tái)指定的。五.如果是需要調(diào)用其他語(yǔ)言寫的子程序, 而恰好該種語(yǔ)言(例如C語(yǔ)言)是區(qū)分大小寫的,這時(shí)就需要特別小心?!纠?_1】 如果用C寫了兩個(gè)子程序EIGEN和eigen,然后有如下的FROTRAN片斷: EXTERNAL EIGEN . CALL EIGEN . END這時(shí)它是該引用EIGEN還是eigen呢?如果所使用的FROTRAN系統(tǒng)正好是怪異的那種,沒(méi)問(wèn)題。如果是常見的如CVF,這時(shí)它就無(wú)法區(qū)分EIGEN和eigen,這樣就必須給它們更換名稱了。 六.數(shù)字的涵義:除了以下情形,數(shù)字總是表示十進(jìn)位數(shù)字 屬于二進(jìn)制,八進(jìn)制,十六進(jìn)制的字面常量; 帶有B,O,Z編輯描述符的輸入輸

5、出紀(jì)錄。【例3_2】 以下語(yǔ)句當(dāng)中的數(shù)字不是屬于十進(jìn)位數(shù)字: DATA I, J, K / O1001, 23.54, Z5CA2 / 其中第一個(gè)為八進(jìn)制數(shù),第二個(gè)為十進(jìn)制數(shù),第三個(gè)為十六進(jìn)制數(shù)。七.下劃線的涵義: 下劃線的主要作用就是置于單詞之間代替空格,使得我們?cè)诿麜r(shí)使用清楚的英語(yǔ)詞匯。 下劃線不能置于任意名稱的前面,但是可以置于名稱的最后。 下劃線也用于在字面常量中區(qū)隔常量的值和種別參數(shù)。無(wú)論給什么對(duì)象起名,都盡量使用完整的英語(yǔ)單詞,同時(shí)使用下劃線以區(qū)隔不同的單詞。所謂好記性不如爛筆頭,只有這樣才能切實(shí)保證你在任何時(shí)候,在程序代碼的任意位置都知道任意變量等的含義。 與平臺(tái)有關(guān)的FORT

6、RAN輔助字符集基本字符集是在一切FROTRAN的編譯平臺(tái)都可以使用的,被FORTRAN 95標(biāo)準(zhǔn)規(guī)定為必須使用的默認(rèn)字符集。另外還有些輔助的字符則是不同的平臺(tái)有不同的用法約定。輔助字符分兩類:可打印字符和不可打印字符。 可打印字符;各種本地化語(yǔ)言的字符,象漢字,希臘字母等,都可以應(yīng)用在字符串,注釋,和輸入輸出紀(jì)錄當(dāng)中。 不可打印字符。主要就是控制字符,例如制表符Tab鍵。制表符(Tab鍵) 對(duì)于一個(gè)FORTRAN77標(biāo)準(zhǔn)的編譯系統(tǒng)來(lái)說(shuō),在固定源程序形式里的Tab被看成是至少6個(gè)空格,而在自由源程序形式里的Tab被看成1個(gè)空格。這樣如果Tab被放在文本當(dāng)中用于輸出格式控制,那么這種默認(rèn)的轉(zhuǎn)換方

7、式,有時(shí)就會(huì)導(dǎo)致輸出格式的混亂。有關(guān)FORTRAN 95的輔助字符集的使用規(guī)則,請(qǐng)參考具體的編譯系統(tǒng)的說(shuō)明。 所謂FORTRAN的詞匯就是一個(gè)語(yǔ)句的最小的意義單位,它由一個(gè)或多個(gè)FORTRAN字符集里的字符組成。包括兩類共6種,分類例舉如下: 3.5 詞匯 由文字字符組成的詞匯,包括4種: 語(yǔ)句關(guān)鍵詞 名稱 由單個(gè)詞匯組成的字面常量 標(biāo)識(shí)符 由特殊字符組成 算符: +,.OR. 定界符:逗號(hào),=,=,:,:,;,%。1.語(yǔ)句關(guān)鍵詞標(biāo)志語(yǔ)句本身 【例3-3】下面的DO語(yǔ)句中的關(guān)鍵詞DO本身標(biāo)志了該語(yǔ)句 DO I=1,500 標(biāo)志選項(xiàng)。 【例3-4】下面的INTENT語(yǔ)句當(dāng)中的IN,OUT,或IN

8、OUT。 INTENT(IN),A。B INTENT(INOUT),X,Y,Z 用在語(yǔ)句當(dāng)中,起分界的作用。 【例3-5】 如下面DO語(yǔ)句當(dāng)中的WHILE DO WHILE( .NOT. VECTOR )并非所有的語(yǔ)句都必須包含關(guān)鍵詞,在FORTRAN里面,賦值語(yǔ)句和函數(shù)都不需要關(guān)鍵詞。在一個(gè)程序當(dāng)中,任何對(duì)象都需要有一個(gè)名稱,給它們命名所得到的詞匯,可以說(shuō)就是一般語(yǔ)言里的名詞,這樣的對(duì)象包括:變量,命名常量,程序單元,過(guò)程,公用塊,構(gòu)造,派生類型,啞元等。2.名稱名稱的拼寫規(guī)則為: 名稱必須由字母開頭,可以由文字字符混合組成,而下劃線不能作為名稱的第一個(gè)字符。 一個(gè)名稱至多允許含有31個(gè)字符

9、。 一個(gè)常量就是對(duì)一個(gè)值的合乎語(yǔ)法的字符標(biāo)記。常量分為字面常量和命名常量?jī)煞N:一個(gè)值如果沒(méi)有在程序里面經(jīng)過(guò)命名,則稱為字面常量,這種常量不能取派生數(shù)據(jù)類型?!纠?-6】 66953 Z5120A 2.3417 .TRUE. (33.2, 5.0)3. 常量 一個(gè)值如果在程序里面經(jīng)過(guò)命名,則稱為命名常量,這種常量能取派生數(shù)據(jù)類型?!纠?-7】 在如下聲明語(yǔ)句當(dāng)中的常量UNSTABLE_POINT為命名常量: PARAMETER (UNSTABLE_POINT=5.332) 對(duì)于常量的語(yǔ)義,將在說(shuō)明數(shù)據(jù)時(shí)進(jìn)一步討論。 在一個(gè)程序單元內(nèi)部,對(duì)任何一條語(yǔ)句,都可以在該語(yǔ)句的前面加上語(yǔ)句標(biāo)簽,以便在該程

10、序單元內(nèi)部的任何其他位置引用該語(yǔ)句。需要引用其他語(yǔ)句的語(yǔ)句包括CALL語(yǔ)句,DO結(jié)構(gòu),分支語(yǔ)句,輸入輸出語(yǔ)句等。4. 語(yǔ)句標(biāo)簽語(yǔ)句標(biāo)簽的書寫規(guī)則為: 語(yǔ)句標(biāo)簽由1到5個(gè)十進(jìn)制數(shù)字組成,其中必須至少有一個(gè)數(shù)字不能是0,例如000不能作為標(biāo)識(shí)符; 標(biāo)識(shí)符以0開頭是沒(méi)有任何意義的,例如0034與34沒(méi)有區(qū)別。 標(biāo)識(shí)符不能放置于空語(yǔ)句之前。算符用在表達(dá)式當(dāng)中,通過(guò)運(yùn)算而獲得某種類型的值。算符分為固有算符和自定義算符兩類: 固有算符在FORTRAN 95語(yǔ)法當(dāng)中,R310規(guī)定了固有算符的構(gòu)成法則。【例4-9】 /表示字符串的連接 + 表示對(duì)數(shù)值的加法 .NOT. 表示邏輯否 .OR. 表示邏輯或5. 算

11、符6. 定界符全部的定界符有如下12種形式:/ ( ) (/ /) , = = : : ; %其中(和),(/和/)都必須成對(duì)出現(xiàn)顧名思義,這些定界符的功能就是在一個(gè)連續(xù)的源碼文本當(dāng)中,用來(lái)把不同性質(zhì)的源碼成分區(qū)分開。它們的具體含義將在具體的語(yǔ)句當(dāng)中說(shuō)明。數(shù)據(jù)表示的實(shí)現(xiàn)具有一個(gè)重要的參數(shù),即存儲(chǔ)空間,所以當(dāng)問(wèn)題要求的數(shù)據(jù),不能滿足于默認(rèn)的存儲(chǔ)空間的時(shí)候,這時(shí),就需要進(jìn)一步給出數(shù)據(jù)的種別參數(shù),這是更加詳細(xì)的數(shù)據(jù)描述。 如果在真實(shí)世界問(wèn)題當(dāng)中出現(xiàn)的的數(shù)據(jù)對(duì)象,不符合已有的固有數(shù)據(jù)類型以及數(shù)組的定義,這時(shí)就需要根據(jù)用戶的要求構(gòu)造一個(gè)依賴于問(wèn)題的特定的數(shù)據(jù)結(jié)構(gòu),這就是數(shù)據(jù)描述時(shí)會(huì)遇到的三種情況。對(duì)于這

12、三種情況,F(xiàn)ORTRAN的解決方式如下: 數(shù)據(jù)的性質(zhì) (數(shù)據(jù)的類型以及其他屬性)3.6 常量與變量第一種情況: 確定(固有)數(shù)據(jù)的類型以及相應(yīng)的可能具有的屬性。 FORTRAN所能辨識(shí)的數(shù)據(jù)類型首先分為兩大類: 固有數(shù)據(jù)類型 派生數(shù)據(jù)類型 所謂固有類型,是FORTRAN語(yǔ)言所定義的最基本的數(shù)據(jù)類型,每一種固有類型是和該種數(shù)據(jù)類型相應(yīng)的各種運(yùn)算一起隱式定義的,也就是說(shuō)一旦聲明引入某種固有數(shù)據(jù)類型,則系統(tǒng)總是默認(rèn)為對(duì)它進(jìn)行相應(yīng)的運(yùn)算是合法的,并且總是可訪問(wèn)的。固有類型包括五種:整型(INTEGER)、實(shí)型(REAL)、復(fù)型(COMPLEX)、邏輯型(LOGICAL)和字符型(CHARACTER)。

13、所謂派生類型是由用戶定義的,非隱式定義的類型,只要用一個(gè)類型定義來(lái)聲明其成員是何種固有類型,或者是何種其它已經(jīng)定義過(guò)的派生類型,就能夠被FORTRAN認(rèn)可為一種數(shù)據(jù)類型。 由于派生數(shù)據(jù)類型正是由固有數(shù)據(jù)類型充當(dāng)成員而構(gòu)成的,因此在結(jié)構(gòu)關(guān)系上,可以把固有數(shù)據(jù)類型看成原子,而把派生數(shù)據(jù)類型看成分子。 派生類型數(shù)據(jù)最重要的用途就是擴(kuò)充了數(shù)組這種重要的數(shù)據(jù)結(jié)構(gòu)。 每一種固有數(shù)據(jù)類型的存儲(chǔ)模式:在FORTRAN77中: 整型,實(shí)型,邏輯型數(shù)據(jù)都是使用了一個(gè)數(shù)值存儲(chǔ)單元,復(fù)型和雙精度數(shù)據(jù)則使用了兩個(gè)數(shù)值存儲(chǔ)單元, 字符型數(shù)據(jù)使用一個(gè)字符存儲(chǔ)單元。在FORTRAN90與95中:默認(rèn)在FORTRAN77中的規(guī)

14、定, 在FORTRAN90之后的標(biāo)準(zhǔn)里,開始允許在一個(gè)程序單元內(nèi),由用戶定義特定的不依賴于固有數(shù)據(jù)存儲(chǔ)模式的數(shù)據(jù)類型,這就是派生數(shù)據(jù)類型。第二種情況: 指定固有數(shù)據(jù)類型的種別參數(shù)。用來(lái)指定程序當(dāng)中需要使用的每一種固有數(shù)據(jù)類型所要求占據(jù)的內(nèi)存空間大小的屬性由種別參數(shù)表示。給這個(gè)變量(參數(shù))指定一個(gè)數(shù)值,就可以說(shuō)明數(shù)據(jù)所需要的存儲(chǔ)空間的大小,也就是程序允許的數(shù)值數(shù)據(jù)的位數(shù)和字符串的字符數(shù)目。 KIND(種類種別參數(shù))分別說(shuō)明整數(shù)類型的十進(jìn)制指數(shù)范圍,實(shí)數(shù)類型和復(fù)數(shù)類型的十進(jìn)制精度和指數(shù)范圍,字符類型和邏輯類型的表示方法。 LEN(長(zhǎng)度種別參數(shù))對(duì)字符類型規(guī)定了字符的個(gè)數(shù)?!纠?REAL(KIND

15、2):ABC,X,LONG CHARACTER(LEN40,KINDGREECE):NAME如果沒(méi)有聲明數(shù)據(jù)的種別,那么程序就會(huì)采用默認(rèn)的參數(shù),F(xiàn)ORTRAN的早期版本沒(méi)有引入種別參數(shù),直接采用了兩種不同的數(shù)據(jù)類型: REAL和DOUBLE PRECISIONFORTRAN90以來(lái)的版本里,引入種別參數(shù),對(duì)種別參數(shù)的不同取值,就足夠表達(dá)不同的精度,對(duì)于在指定種別參數(shù)的數(shù)值時(shí),一般是以字或字節(jié)為單位,這樣對(duì)于字長(zhǎng)不同的機(jī)器而言,相互之間就會(huì)出現(xiàn)程序移植的困難,下面分情況予以說(shuō)明:實(shí)型-由于DOUBLE PRECISION是屬于老式標(biāo)準(zhǔn)的遺留物,因此使用DOUBLE PRECISION作為數(shù)據(jù)聲明

16、的程序就不具備良好的可移植性,因?yàn)樗^雙精度是針對(duì)具體的機(jī)器的字長(zhǎng)而言的,對(duì)于32位的機(jī)器,雙精度就是64位,而對(duì)于64位機(jī)器,雙精度就意味著128位,這樣在不同字長(zhǎng)的機(jī)器環(huán)境里,雙精度就具有不同的位數(shù),使得程序無(wú)法在不同字長(zhǎng)的平臺(tái)之間進(jìn)行直接的移植。最好統(tǒng)一使用REAL的種別參數(shù)來(lái)表達(dá)算法所要求的實(shí)數(shù)精度。整型-在程序應(yīng)用當(dāng)中會(huì)出現(xiàn)幾乎任何大小的整型數(shù)據(jù),因此無(wú)法在語(yǔ)言標(biāo)準(zhǔn)里面統(tǒng)一的規(guī)定整型數(shù)據(jù)的存儲(chǔ)空間大小,這就同樣需要依靠種別參數(shù)來(lái)指定應(yīng)該給具體問(wèn)題當(dāng)中的整型數(shù)據(jù)確定多大的存儲(chǔ)空間。具體地指定方式屬于編譯器設(shè)計(jì)者的選擇,需要參考相應(yīng)編譯器的語(yǔ)言說(shuō)明。 復(fù)型-由于所謂復(fù)型本質(zhì)上就是由兩個(gè)實(shí)

17、數(shù)表達(dá)的,因此按道理復(fù)型同樣應(yīng)該能夠具有表達(dá)多種精度的能力,而實(shí)際上早期的版本在這方面是有欠缺的,不過(guò)隨著FORTRAN90引入種別參數(shù),就可以在COMPLEX的聲明語(yǔ)句里通過(guò)運(yùn)用種別參數(shù)來(lái)實(shí)現(xiàn)多種精度的表達(dá),對(duì)于任何FORTRAN的實(shí)現(xiàn),至少能表達(dá)兩種精度,而一般來(lái)說(shuō)是多于兩種的。 字符型-對(duì)于字符,一般的機(jī)器都是用單字節(jié)8bits來(lái)表示一個(gè)字符,這樣就可以總共表示28=256個(gè)不同的字符,這對(duì)于任何以字母寫出來(lái)的語(yǔ)言都是足夠的了,不過(guò)對(duì)于漢語(yǔ),日語(yǔ)這樣一些語(yǔ)言就不夠用了,一般得需要雙字節(jié),即16bits,這樣就可以表達(dá)216個(gè)字符。因此字符型數(shù)據(jù)同樣需要附加種別參數(shù),以便除了使用默認(rèn)的基本

18、字符之外,還可以使用輔助字符集里的字符,從而實(shí)現(xiàn)程序的本地化。不過(guò)某個(gè)具體的編譯器是否支持雙字節(jié)字符,必須參考相應(yīng)的手冊(cè)。 邏輯型-由于一切邏輯型數(shù)據(jù)都只有兩個(gè)值,因此如何確定邏輯型數(shù)據(jù)的存儲(chǔ)空間應(yīng)該是非常好辦的,不過(guò)不幸的是,F(xiàn)ORTRAN的早期版本規(guī)定邏輯型數(shù)據(jù)使用和實(shí)型數(shù)據(jù)一樣大小的機(jī)器存儲(chǔ)單位,這樣當(dāng)機(jī)器的字長(zhǎng)很大時(shí),就會(huì)非常的浪費(fèi)機(jī)器的存儲(chǔ)空間。因此到了FORTRAN90和FORTRAN 95,除了作為默認(rèn)的情形,和舊的語(yǔ)言標(biāo)準(zhǔn)保持兼容之外,還可以通過(guò)指定種別參數(shù),使得邏輯型數(shù)據(jù)的存儲(chǔ)空間大小只有一個(gè)字,甚至一個(gè)bit。當(dāng)然具體的使用方法需要參考相應(yīng)編譯器的說(shuō)明。第三種情況: 派生數(shù)

19、據(jù)類型。在計(jì)算機(jī)語(yǔ)言里,把對(duì)象的每一個(gè)需要描述的性質(zhì)用一個(gè)適當(dāng)?shù)幕緮?shù)據(jù)類型來(lái)表示,這樣用一組基本數(shù)據(jù)類型就可以描述該對(duì)象。而這一組數(shù)據(jù)可以看成是一個(gè)新的數(shù)據(jù)類型,表示了一個(gè)變量。這樣構(gòu)造出來(lái)的數(shù)據(jù)類型稱為派生數(shù)據(jù)類型,和固有數(shù)據(jù)類型一樣,在聲明派生數(shù)據(jù)類型時(shí),需要給出名稱,描述它的每一個(gè)元素的固有數(shù)據(jù)類型以及相應(yīng)屬性和種別參數(shù)(如果非默認(rèn)的話),當(dāng)然也需要適當(dāng)?shù)囟x其運(yùn)算。派生數(shù)據(jù)類型是由一組數(shù)組成,就會(huì)出現(xiàn)兩種情況:這組數(shù)據(jù)都是屬于一個(gè)數(shù)據(jù)類型這樣構(gòu)成的派生數(shù)據(jù)類型就是數(shù)組,顯然對(duì)于數(shù)組的元素的描述就可以統(tǒng)一進(jìn)行。具體的用法會(huì)在后面專門說(shuō)明。這組數(shù)據(jù)的各個(gè)元素屬于不同的數(shù)據(jù)類型這樣構(gòu)成的派

20、生數(shù)據(jù)類型稱為結(jié)構(gòu),這時(shí)就需要對(duì)每個(gè)數(shù)據(jù)元素進(jìn)行分別的說(shuō)明, 即每一個(gè)元素的數(shù)據(jù)類型,可能有的屬性,種別參數(shù)等等?!纠?-2】 下面是一個(gè)典型的派生數(shù)據(jù)類型。 TYPE SAMPLE REAL CURRENT COMPLEX (KIND = QUAD) PHASE CHARACTER (LEN = 50) SOURCE END TYPE SAMPLE TYPE (SAMPLE)SI401,SI402,SI403,SI404在上面的例子里,首先定義了一個(gè)名稱為SAMPLE的數(shù)據(jù)類型,每一個(gè)SAMPLE類型的數(shù)據(jù)由三個(gè)分量組成,它們的名稱分別為CURRENT,PHASE,SOURCE,分別屬于實(shí)型

21、,復(fù)型和字符型,其中復(fù)型和字符型還分別說(shuō)明了種別參數(shù)和字符長(zhǎng)度屬性,然后給出了程序當(dāng)中需要使用的四個(gè)屬于該種數(shù)據(jù)類型的變量:SI401,SI402,SI403,SI404。數(shù)據(jù)不同種類的存儲(chǔ)模式對(duì)于計(jì)算機(jī)來(lái)說(shuō),數(shù)據(jù)分類的第一個(gè)反應(yīng)就是針對(duì)不同類型的數(shù)據(jù)約定不同的存儲(chǔ)模式。由于存儲(chǔ)模式的規(guī)定涉及到編譯環(huán)境的設(shè)置,因此存儲(chǔ)模式的約定是與系統(tǒng)環(huán)境相關(guān)的,鑒于Compaq Visual Fortran的廣泛應(yīng)用,本節(jié)特別針對(duì)Compaq Visual Fortran系統(tǒng)而言的說(shuō)明了數(shù)據(jù)的各種存儲(chǔ)模式。下表5-1列出了Compaq Visual Fortran所有的固有數(shù)據(jù)類型的存儲(chǔ)空間要求,和相應(yīng)的能

22、夠在這個(gè)空間里表達(dá)的數(shù)據(jù)規(guī)模。 數(shù)據(jù)類型單位存儲(chǔ)空間能表示的數(shù)據(jù)規(guī)模BYTEINTEGER(1) 1 byte (8 bits) BYTE表示等價(jià)于INTEGER(1)的帶符號(hào)的整型數(shù)據(jù)類型。 INTEGER 參見INTEGER(2), INTEGER(4), 以及 INTEGER(8). 帶符號(hào)的整型數(shù)據(jù), 包括INTEGER(2), INTEGER(4), or INTEGER(8)。數(shù)據(jù)規(guī)模由編譯器選項(xiàng)/integer_size:nn 控制。默認(rèn)的規(guī)模控制選項(xiàng)為/integer_size:32 (等價(jià)于INTEGER(4)。INTEGER(1)1 byte (8 bits)從-128到1

23、27帶符號(hào)的整數(shù)。INTEGER(2)2 bytes (16 bits)從-32,768到32,767帶符號(hào)的整數(shù)。INTEGER(4) 4 bytes (32 bits) 從-2,147,483,648到2,147,483,647帶符號(hào)的整型數(shù)據(jù)。INTEGER(8) 8 bytes (64 bits) 從-9,223,372,036,854,775,808到9,223,372,036,854,775,807帶符號(hào)的整型數(shù)據(jù)。 REAL(4)REAL 4 bytes (32 bits) 從1.17549435E-38到 3.40282347E38的按照IEEE S_floating格式的單精

24、度實(shí)型浮點(diǎn)值。在1.17549429E-38和1.40129846E-45之間的值是非常態(tài)的。REAL(8)DOUBLE PRECISION8 bytes (64 bits)從2.2250738585072013D-308到1.7976931348623158D308的按照IEEE T_floating格式的雙精度實(shí)型浮點(diǎn)值。在2.2250738585072008D-308和4.94065645841246544D-324之間的值是非常態(tài)的。COMPLEX(4)COMPLEX8 bytes (64 bits)由一對(duì)從1.17549435E-38到 3.40282347E38的按照IEEE S_

25、floating格式的單精度實(shí)型浮點(diǎn)值組成的單精度復(fù)型浮點(diǎn)值。在1.17549429E-38和1.40129846E-45之間的值是非常態(tài)的。COMPLEX(8)DOUBLE COMPLEX16 bytes (128 bits)由一對(duì)從2.2250738585072013D-308到1.7976931348623158D308的按照IEEE T_floating格式的雙精度實(shí)型浮點(diǎn)值組成的雙精度復(fù)型浮點(diǎn)值。在2.2250738585072008D-308和4.94065645841246544D-324之間的值是非常態(tài)的。LOGICAL參見LOGICAL(2), LOGICAL(4), 以及L

26、OGICAL(8).邏輯型值, 包括LOGICAL(2), LOGICAL(4),以及 LOGICAL(8). 數(shù)據(jù)規(guī)模由編譯器選項(xiàng)/integer_size:nn 控制。默認(rèn)的規(guī)??刂七x項(xiàng)為/integer_size:32 (等價(jià)于LOGICAL(4)。LOGICAL(1)1 byte (8 bits)邏輯型值.TRUE. 或.FALSE.LOGICAL(2) 2 bytes (16 bits)邏輯型值.TRUE. 或.FALSE.LOGICAL(4) 4 bytes (32 bits)邏輯型值.TRUE. 或.FALSE.LOGICAL(8) 8 bytes (64 bits)邏輯型值.T

27、RUE. 或.FALSE.CHARACTER每個(gè)字符1 byte (8 bits) 根據(jù)約定的字符編碼表示的字符數(shù)據(jù),通過(guò)字符數(shù)據(jù)的聲明形式:CHARACTER(LEN=n)或 CHARACTER*n,其中n 表示byte數(shù),來(lái)表示數(shù)據(jù)規(guī)模。 HOLLERITH每個(gè)Hollerith 字符1 byte (8 bits) Hollerith 常量。 對(duì)于字符型數(shù)據(jù)來(lái)說(shuō),它的存儲(chǔ)空間完全和字符串長(zhǎng)度成正比,因此只要直接規(guī)定字符串的字符個(gè)數(shù),就可以一致地得到其存儲(chǔ)空間分配標(biāo)準(zhǔn)。至于復(fù)型和派生類型,則完全以其他數(shù)據(jù)類型作為成員,自身沒(méi)有什么特別的規(guī)定,因此也就沒(méi)有獨(dú)特的針對(duì)這兩種數(shù)據(jù)類型的種別參數(shù)。顯

28、然,F(xiàn)ORTRAN通過(guò)運(yùn)用種別參數(shù)來(lái)明確地規(guī)定數(shù)據(jù)的表示,使得Fortran的標(biāo)準(zhǔn)化程度得到了進(jìn)一步提高,從而提高了程序的可移植性。 數(shù)據(jù)的基本(固有)類型 對(duì)于計(jì)算機(jī)來(lái)說(shuō),數(shù)據(jù)的意義無(wú)非就是要知道在存儲(chǔ)空間為一個(gè)特定的數(shù)據(jù)劃出多大的空間來(lái)裝載它。 FORTRAN早期的做法統(tǒng)一地給一類數(shù)據(jù)指定固定的存儲(chǔ)模式。 FORTRAN90引進(jìn)的種別參數(shù),這樣就擴(kuò)充了固有數(shù)據(jù)類型的存儲(chǔ)模式。 整型(INTEGER) 實(shí)型(REAL) 雙精度型(DOUBLE PRECISION) 復(fù)型(COMPLEX) 邏輯型(LOGICAL) 字符型(CHARACTER)隱含說(shuō)明IMPLICIT固有數(shù)據(jù)類型:Fortra

29、n中有七種類型說(shuō)明語(yǔ)句:類型說(shuō)明 1隱式類型描述法 當(dāng)初FORTRAN使用隱式類型聲明方法,是與語(yǔ)言的簡(jiǎn)樸形態(tài)相適應(yīng)的除非首先聲明了IMPLICIT語(yǔ)句。 隱式類型聲明方法的約定,就是讓名稱的第一個(gè)字母來(lái)標(biāo)記它的類型,隱含說(shuō)明(I-N規(guī)則) I-N規(guī)則:若不加說(shuō)明,以字母I,J,K,L,M,N六個(gè)字母開頭的所有變量名,其變量類型為整型,以其他字母開頭的為實(shí)型變量。例如:I,J,IMAX,NUMBER,LINE,JOB Kl為整型變量A,Bl,COUNT,AMOUNT,TOTAL 為實(shí)型變量 FORTRAN沿用了數(shù)學(xué)里的很多習(xí)慣,這里使用I,J,K,L,M,N來(lái)表述整數(shù),就是一個(gè)明顯的數(shù)學(xué)習(xí)慣。

30、 利用IMPLICIT語(yǔ)句來(lái)自定義字母分配模式,一般的 IMPLICIT語(yǔ)句的句法形式有2種,分別行使不同的功能: IMPLICIT type-specification(letter-specification-list) IMPLICIT NONE (f90) 其中的字母分配說(shuō)明列表的句法形式為: letter-letter 例如:IMPLICIT INTEGER (A,C,T-V)IMPLICIT REAL (I,J)IMPLICIT INTEGER (A,B),REAL(I,K),INTEGER (X-Z) 隱式類型的一般規(guī)則如下: 如果要使用IMPLICIT NONE語(yǔ)句,那么它必須

31、放置在任何PARAMETER語(yǔ)句之前,并且在其作用域內(nèi),再也不能出現(xiàn)其他IMPLICIT語(yǔ)句。 IMPLICIT語(yǔ)句當(dāng)中出現(xiàn)的表述字母范圍的letter-letter,左邊的字母絕對(duì)不能是右邊字母的按照字母表順序的后面的字母。 letter-letter的字母之間為減號(hào),而非下劃線,表示按照字母表順序從左邊字母到右邊字母的所有字母。 在一個(gè)作用域里面的IMPLICIT語(yǔ)句里面,同一個(gè)字母不能出現(xiàn)在字母分配說(shuō)明列表里面的不同項(xiàng)里,例如作為單個(gè)字母出現(xiàn)了,又同時(shí)處于另一個(gè)字母范圍之中,或同時(shí)處于2個(gè)不同的字母范圍里面。 IMPLICIT語(yǔ)句同樣可以用來(lái)為派生數(shù)據(jù)類型分配首字母作為類型標(biāo)記。 例如:

32、 IMPLICIT COMPLEX(E-G,W-Z) IMPLICIT NONE f90中每個(gè)變量名都應(yīng)該在說(shuō)明部分中說(shuō)明其類型,不應(yīng)該使用隱式說(shuō)明、為了抑制隱式說(shuō)明發(fā)生作用,應(yīng)該在程序說(shuō)明部分開始就寫出語(yǔ)句:IMIPLlCIT NONE 既聲明不使用隱式說(shuō)明?!纠?-15】 下面的IMPLICIT語(yǔ)句都是合法語(yǔ)句: IMPLICIT CHARACTER*30(B,T),COMPLEX(W-Z) IMPLICIT LOGICAL(KIND=BIT)(Q) IMPLICIT REAL(QUAD)(X-Z) IMPLICIT TYPE(NUMBER)(A-E) IMPLICIT TYPE(ARTI

33、CAL)(A,V),CHARACTER*100(B)【例7-16】 下面的IMPLICIT語(yǔ)句都是非法語(yǔ)句: IMPLICIT CHARACTER*30(B,T),COMPLEX(Z -W) !W應(yīng)該放置在Z 之前。 IMPLICIT LOGICAL(KIND=BIT)(Q),REAL(QUAD)(P-T) ! Q同時(shí)表示2種類型。 IMPLICIT TYPE(ARTICAL)(A-H),CHARACTER*100(B,Q) !B同時(shí)表示2種類型。 使用隱式類型聲明在一個(gè)嵌套作用域里面所導(dǎo)致的變量作用域混亂問(wèn)題在有關(guān)作用域之間通訊時(shí)再討論。 注: (1) “IN規(guī)則”的隱含約定級(jí)別最低。 如下

34、程序中IMAX變量為整型,而其它以I、J開頭的 變量為實(shí)型: IMPLICIT REAL(I,J) INTEGER IMAX (2) 類型說(shuō)明語(yǔ)句和IMPLICIT語(yǔ)句是非執(zhí)行語(yǔ)句。 (3) 類型說(shuō)明只在本程序單位內(nèi)有效。 (4) IMPLICIT語(yǔ)句和類型說(shuō)明語(yǔ)句應(yīng)該出現(xiàn)在本程序單位中的所有執(zhí)行語(yǔ)句之前,其中IMPLICIT語(yǔ)句又應(yīng)在所有的類型說(shuō)明語(yǔ)句之前。a)一般形式 類型說(shuō)明(種別說(shuō)明),屬性說(shuō)明表 : 變量名表=初值 2類型說(shuō)明語(yǔ)句 F90程序中的數(shù)據(jù)都有三個(gè)特征:類型、種別、屬性,由類型說(shuō)明語(yǔ)句來(lái)定義說(shuō)明 例:REAL(KIND=2), DIMENSION(1:10): X,Y說(shuō)明變

35、量X,Y都是實(shí)型,種別是2,屬性是一維數(shù)組。這樣X、Y實(shí)際上是兩個(gè)種別參數(shù)為2的一維實(shí)型數(shù)組,各具有10個(gè)元素。在某些場(chǎng)合下,種別說(shuō)明與屬性說(shuō)明可以省略,此時(shí)它的一般形式是最基本形式: 類型說(shuō)明: 變量名表 (90/95) 類型說(shuō)明 變量名表 (77) b)類型說(shuō)明內(nèi)部類型一共有五種,三種數(shù)值型: 整數(shù)型INTEGER 、實(shí)數(shù)型、復(fù)數(shù)型COMPLEX ; 兩種非數(shù)值型: 邏輯型LOGICAL 、字符型CHARACTER 。例:INTEGER: X,YREAL: A,BCOMPLEX: C,D或:INTEGER X,Y REAL A,B COMPLEX C,D c) 賦初值F90中置初值不需要專

36、門語(yǔ)句,只需在類型說(shuō)明語(yǔ)句的變量表中,把要置的初值寫在指定的變量名后即可。它的形式為:類型說(shuō)明: 變量名1=初值1,變量名2=初值2,例如 REAL: X=1.1, Y=2.2, Z, W=4.4注意:在過(guò)程中這種賦初值的方法實(shí)際上是對(duì)變量賦于了SAVE屬性,即當(dāng)過(guò)程被調(diào)用以后,變量的新值將被保存下來(lái),過(guò)程再次被調(diào)用時(shí)變量的初值不再是類型說(shuō)明語(yǔ)句中的初值,而是上次被保留下來(lái)的值。例如,如果希望上面的變量X在過(guò)程每次被調(diào)用時(shí)都有相同的初值,則應(yīng)該寫成: REAL, SAVE : X, Y=2.2, Z, W=4.4 X=1.1 d)DATA語(yǔ)句在F77中,有一個(gè)專門給變量賦初值的說(shuō)明語(yǔ)句,即DA

37、TA語(yǔ)句。它的一般形式為:DATA 變量名表1/初值表1/,變量名表2/初值表2/ 變量名表可以是隱DO循環(huán),初值表中的常數(shù)之間須用逗號(hào)分開,重復(fù)的常數(shù)表值可以采用如下表示方法: 重復(fù)次數(shù)*常數(shù)值 在DATA語(yǔ)句中賦值的變量都有SAVE屬性,除非變量名又出現(xiàn)在COMMON語(yǔ)句中,可以通過(guò)SAVE語(yǔ)句或類型說(shuō)明中的SAVE屬性對(duì)其顯式說(shuō)明。 例如,可以對(duì)數(shù)組作以下的初始化:DIMENSION A(10,10)DATA A/100*1.0/ ! 按數(shù)組變量名統(tǒng)一初始化DATA A(1,1), A(10,1), A(3,3) /2*2.5, 2.0/! 按數(shù)組元素逐個(gè)初始化DATA (A(I,J),

38、I=1,5,2),J=1,5) /15*1.0/! 按隱DO循環(huán)初始化對(duì)數(shù)值型數(shù)據(jù)作初始化: INTEGER n, order, list(100)REAL coef(4),eps(2),pi(5),x(5,5)COMPLEX*8 cstuffDATA n/0/, order/3/, list/100*0/DATA coef/1.0,2*3.0,1.0/, eps(1)/.00001/DATA pi/5*3.14159/DATA (x(j,i),i=1,j),j=1,5)/15*1.0/DATA cstuff/(-1.0,-1.0)/ a)種別說(shuō)明方法種別是F90的新概念。一個(gè)數(shù)據(jù),不僅有一個(gè)

39、類型,并在同一類型下可分為若干種別,種別值確定了數(shù)據(jù)的大小范圍和精度。有了種別說(shuō)明后,程序更易于移植。為了提高效率,節(jié)約內(nèi)存,按照該變量表達(dá)的值范圍與表達(dá)的精度范圍,把同一類劃分成幾個(gè)種別,不同種別分配不同數(shù)目的內(nèi)存單元。3種別說(shuō)明種別由種別選擇符說(shuō)明,寫在類型關(guān)鍵字后括號(hào)內(nèi),其關(guān)鍵字是KIND,后跟=號(hào)及種別值。其形式為: 類型說(shuō)明(KIND=種別值) 例如:要說(shuō)明變量X是實(shí)型,種別值是2 REAL(KIND=2): X 一個(gè)變量必有一個(gè)種別,如果變量的類型說(shuō)明語(yǔ)句中沒(méi)有種別說(shuō)明符,如: REAL: X, Y或 REAL X, Y則表示變量X,Y的種別缺省,這時(shí)采用系統(tǒng)規(guī)定的標(biāo)準(zhǔn)值。 b)

40、種別值Compaq Fortran 提供了如下幾類種別值:整數(shù):有4種,種別值即為字節(jié)數(shù)n。 種別值n取值范圍 (-28n-128n-1-1)INTEGER(KIND=1) 或 INTEGER*1 -128127INTEGER(KIND=2) 或 INTEGER*2 -3276832767INTEGER(KIND=4) 或 INTEGER*4 -21474836482147483647缺省值INTEGER(KIND=8) 或 INTEGER*8 -92233720368547758089223372036854775807僅用于Alpha芯片機(jī)型實(shí)型數(shù):有3種。F90標(biāo)準(zhǔn)沒(méi)有規(guī)定指數(shù)的允許范圍

41、和有效位數(shù)。 REAL(KIND=4) or REAL*4通常實(shí)數(shù)的范圍是10-381038之間的7位有效數(shù)字缺省值REAL(KIND=8) or REAL*8等價(jià)于雙精度型DOUBLE PRECISIONREAL(KIND=16) or REAL*16僅用于OpenVMS、Tru64 UNIX、Linux操作系統(tǒng)復(fù)型數(shù):有3種。每種表示整型數(shù)據(jù)或?qū)嵭蛿?shù)據(jù)的方法都可以用來(lái)表示復(fù)型數(shù)據(jù)的實(shí)部和虛部。注意簡(jiǎn)寫與完整寫法之間的差別。 COMPLEX(KIND=4) or COMPLEX*8缺省值COMPLEX(KIND=8) or COMPLEX*16等價(jià)于雙精度復(fù)型DOUBLE COMPLEXCO

42、MPLEX(KIND=16) or COMPLEX*32僅用于OpenVMS、Tru64 UNIX、Linux操作系統(tǒng)邏輯型:有4種 LOGICAL(KIND=1) or LOGICAL*1LOGICAL(KIND=2) or LOGICAL*2LOGICAL(KIND=4) or LOGICAL*4缺省值LOGICAL(KIND=8) or LOGICAL*8僅用于Alpha芯片機(jī)型字符型:有1種CHARACTER(KIND=1)字節(jié)型BYTE:取值為1個(gè)字節(jié),等價(jià)于INTEGER(KIND=1)。 c)種別函數(shù)F90中關(guān)于種別選擇的內(nèi)部函數(shù)有:KIND(X): 函數(shù)KIND用于查詢變量的種

43、別,它返回X的種別值,當(dāng)X取值為0時(shí),返回標(biāo)準(zhǔn)種別值即缺省值。 如:KIND(0)返回值是整型的標(biāo)準(zhǔn)種別值 KIND(0.)返回值是實(shí)型的標(biāo)準(zhǔn)種別值 KIND(.FALSE.)返回值是邏輯型的標(biāo)準(zhǔn)種別值 KIND(“A”)返回字符型的標(biāo)準(zhǔn)種別值。SELECTED_REAL_KIND(n,m): 該函數(shù)返回實(shí)型變量對(duì)所取的值范圍和精度恰當(dāng)?shù)姆N別值。其中n是指明十進(jìn)制有效位的位數(shù),m指明值范圍內(nèi)以10為底的冪次。例如: SELECTED_REAL_KIND(6,70)的返回值為8,表示一個(gè)能表達(dá)6位精度、值范圍在10701070之間實(shí)型數(shù)的種別值為8。 如該機(jī)型上不能提供滿足要求的種別值時(shí),它的返

44、回值是:-1(當(dāng)精度位數(shù)達(dá)不到時(shí)),-2(當(dāng)數(shù)值范圍達(dá)不到時(shí)),-3(兩者都達(dá)不到時(shí))。對(duì)給定的實(shí)型和復(fù)型量X,它的精度和范圍可通過(guò)內(nèi)部函數(shù)PRECISION(X)和RANGE(X)查出。 SELECTED_INT_KIND(m): 該函數(shù)返回整型變量對(duì)所取的值范圍恰當(dāng)?shù)姆N別值。m指明值的范圍是10m10m??梢杂肧ELECTED_REAL_KIND或SELECTED_INT_KIND定義一個(gè)PARAMETER常數(shù)以備后用。例如:下面的語(yǔ)句定義了有9位數(shù)的整型數(shù)。INTEGER, PARAMETER : MY_INT_KIND = SELECTED_INT_KIND(9)INTEGER(MY_

45、INT_KIND) : HILL d)常數(shù)種別程序中的常數(shù)如要標(biāo)明種別,方法有二。若是數(shù)值型常數(shù)或邏輯型常數(shù)則用后輟法,即后加一下劃線,再跟種別值。注意: 當(dāng)實(shí)數(shù)型數(shù)據(jù)的指數(shù)字母是D時(shí),禁止說(shuō)明種別值。 如果復(fù)型數(shù)據(jù)的實(shí)部和虛部都是整數(shù),則它的精度和范圍與缺省的實(shí)型相同。如果兩部分都是實(shí)型,則它的精度和范圍按如下的方法確定:兩部分有相同的種別,為該種別,兩部分中有不同的種別,則由較大的種別值確定。例如:21_2+7.6_4 表示整型種別為2的數(shù)21與實(shí)型種別為4的數(shù)7.6相加。3.8E-5_40.87D-16雙精度數(shù)據(jù)禁止說(shuō)明種別值(4.7_8,5)復(fù)型數(shù)據(jù)表示用括號(hào),逗號(hào)分開前面的實(shí)部(種別

46、值為8的實(shí)數(shù))和后面的虛部(缺省種別值的整數(shù))。.FALSE._4 表示邏輯型,其常數(shù)值是假,種別值是4。 例: INTEGER,PARAMETER: LONG=SELECTED_REAL_KIND(9,99) REAL : A=2.8_LONG, B=1.23456789E60_LONG來(lái)保證常數(shù)有需要的9位有效數(shù)字和-10-991099的指數(shù)范圍。PRECISION(A)和RANGE(A)的返回值應(yīng)是9和99。若是字符型常數(shù),則用前輟法,把種別值列在字符常數(shù)之前,其間用下劃線連接。例如:對(duì)Compaq Fortran 1_或: 1_計(jì)算數(shù)學(xué)或:計(jì)算數(shù)學(xué) 字符串的字符不只限于Fortran字

47、符集內(nèi),處理系統(tǒng)支持的圖形符號(hào)也是允許的。在FORTRAN語(yǔ)言標(biāo)準(zhǔn)里面,規(guī)定了十進(jìn)制之外的三種進(jìn)制形式: 二進(jìn)制常量形式: B digit digit B “ digit digit ”其中的數(shù)字只能是0或1.即二進(jìn)制常量表示為以字母B開頭,后跟用一對(duì)撇號(hào)或引號(hào)括起來(lái)的數(shù)字串,而且每個(gè)數(shù)字不是0就是l。 e)整數(shù)的其他進(jìn)制 八進(jìn)制常量形式: O digit digit O “ digit digit ”其中的數(shù)字只能是0到7.八進(jìn)制常量表示為以字母O開頭,后跟用一對(duì)撇號(hào)或引號(hào)括起來(lái)的數(shù)字串,而且每個(gè)數(shù)字是0到7之間的一個(gè)數(shù)字。十六進(jìn)制常量形式: Z digit digit Z “ digit

48、digit ”其中的數(shù)字只能是0到9,和A到F這五個(gè)字母,用來(lái)表示10到15.十六進(jìn)制常量表示為以字母z開頭,后服用一對(duì)撇號(hào)或引號(hào)括起來(lái)的數(shù)字或字母的串,而且每個(gè)數(shù)字是數(shù)字0到9或字母A到F之一。 這里定義的二進(jìn)制、八進(jìn)制和十六進(jìn)制的字面常量形式只能用于DATA語(yǔ)句中。 如果要在CVF系統(tǒng)里面使用非十進(jìn)制來(lái)表示數(shù)值,除了屬于FORTRAN標(biāo)準(zhǔn)的二進(jìn)制,八進(jìn)制,十六進(jìn)制三種額外的進(jìn)制形式之外,還可以使用如下的語(yǔ)法形式表示更多的進(jìn)制形式: s base # nnn.其中:base是從2到36的任意整數(shù)。這表明CVF可以使用從2進(jìn)制一直到36進(jìn)制來(lái)表示整數(shù)。而如果base省略了,但是給出了符號(hào)#,那

49、么表示后面的整型數(shù)據(jù)被看成16進(jìn)制,如果base 和#都被省略了,那么后面的整型數(shù)據(jù)就被看成默認(rèn)的10進(jìn)制。s 數(shù)的符號(hào)例: 下面的7個(gè)變量所賦予的整型數(shù)值都是表示十進(jìn)制的3,994,575:I = 2#1111001111001111001111m = 7#45644664J = +8#17171717K = #3CF3CFn = +17#2DE110L = 3994575index = 36#2DM8F例: 這些都是正確的整型常量; 0 -112 +43212 62_2 1992110235764803_831_SHORT 9999999999999999999_LONG例: 這些都是錯(cuò)誤

50、的整型常量:9999999999999999999 !對(duì)于默認(rèn)的種別參數(shù)來(lái)說(shuō),這個(gè)數(shù)太大了。3.14 !不允許出現(xiàn)小數(shù)點(diǎn)。32,767 !不允許出現(xiàn)逗號(hào)。33_3 !3不是一個(gè)有定義的種別參數(shù)。 4屬性說(shuō)明說(shuō)明語(yǔ)句除說(shuō)明對(duì)象的類型、種別外,還可說(shuō)明對(duì)象的屬性。每種屬性說(shuō)明都有專門的關(guān)鍵字,各屬性關(guān)鍵字間用逗號(hào)分開,全部屬性關(guān)鍵字寫在說(shuō)明語(yǔ)句種別說(shuō)明符之后,雙分隔號(hào):之前,各屬性關(guān)鍵字之間次序任意。屬性不僅用于說(shuō)明數(shù)據(jù),還用于說(shuō)明過(guò)程。 a)屬性屬性說(shuō)明關(guān)鍵字有很多,將在有關(guān)章節(jié)中詳細(xì)說(shuō)明。一般來(lái)說(shuō),數(shù)據(jù)屬性描述了一個(gè)對(duì)象是如何在程序中被應(yīng)用的,可以使用一個(gè)或多個(gè)語(yǔ)句來(lái)規(guī)定某個(gè)數(shù)據(jù)對(duì)象的屬性。V

51、isual Fortran的數(shù)據(jù)屬性如下表所示。屬性關(guān)鍵字描述適用范圍ALLOCATABLE說(shuō)明動(dòng)態(tài)數(shù)組數(shù)組AUTOMATIC聲明變量在堆棧中而不是在內(nèi)存中變量DIMENSION說(shuō)明數(shù)組數(shù)組變量EXTERNAL聲明外部函數(shù)的名稱過(guò)程INTENT說(shuō)明過(guò)程啞元的用意過(guò)程啞元INTRINSIC聲明一個(gè)內(nèi)部函數(shù)過(guò)程OPTIONAL允許過(guò)程被調(diào)用時(shí)省略啞元過(guò)程啞元PARAMETER聲明常量常量POINTER聲明數(shù)據(jù)對(duì)象為指針變量PRIVATE限制模塊中的實(shí)體訪問(wèn)于本塊內(nèi)常量、變量或模塊PUBLIC允許模塊中的實(shí)體被外部使用常量、變量或模塊SAVE保存過(guò)程執(zhí)行后其中的變量值變量或公共塊STATIC說(shuō)明變量

52、為靜態(tài)存儲(chǔ)變量TARGET聲明變量為目標(biāo)變量VOLATILE聲明對(duì)象為完全不可預(yù)測(cè)并在編譯時(shí)無(wú)優(yōu)化數(shù)據(jù)對(duì)象或公共塊 a) PARAMETER屬性PARAMETER屬性也稱常數(shù)名屬性。被說(shuō)明對(duì)象一旦附加了PARAMETER屬性,就不再是變量名,而是一個(gè)常數(shù)的名字,它的形式雖與變量名形式一樣,但在程序中不能改變值,只能當(dāng)常數(shù)使用。在F77中: PARAMETER參數(shù)語(yǔ)句 例:PARAMETER (LOCAL=100) 具體使用在后面張杰介紹例如:INTEGER,PARAMETER : K=20REAL(8),PARAMETER : PI=3.141592654, K_PAI=K*PI, Light

53、_Speed=2.99654E10b) DIMENSION屬性說(shuō)明一個(gè)符號(hào)名是數(shù)組名,只要在說(shuō)明語(yǔ)句中附加數(shù)組屬性關(guān)鍵字。數(shù)組屬性關(guān)鍵字是:DIMENSION(數(shù)組形狀說(shuō)明)。例如: INTEGER(KIND=2),DIMENSION(-2:8) : X 說(shuō)明了X是種別為2的整型一維數(shù)組名,數(shù)組下標(biāo)以-2為下界,8為上界,共有11個(gè)元素。注意:F77中不允許DIMENSION和類型說(shuō)明語(yǔ)句出現(xiàn)在同一個(gè)語(yǔ)句中。 a) 邏輯型變量類型說(shuō)明語(yǔ)句一般形式為:LOGICAL(KIND=種別值),屬性說(shuō)明表: 變量名表=初始值例如:LOGICAL(KIND=2),DIMENSION(1:10) : X說(shuō)明

54、X數(shù)組內(nèi)有元素X(1),X(2),X(10)都是種別值為2的邏輯型數(shù)據(jù)。變量名表中要說(shuō)明為邏輯型的對(duì)象可以是一般變量名、數(shù)組名、函數(shù)名、構(gòu)造名等等,彼此用逗號(hào)分開,還可以對(duì)變量賦以初值。例如要說(shuō)明L1,L2是邏輯型變量,并且置L1初值為真,可寫成: LOGICAL : L1=.TRUE.,L2 或 LOGICAL L1,L25 邏輯型數(shù)據(jù)b) 邏輯賦值邏輯變量取值的方法和數(shù)值型數(shù)據(jù)類似:賦初值、讀入、使用邏輯賦值語(yǔ)句賦值。邏輯賦值語(yǔ)句的一般形式是: 邏輯變量邏輯表達(dá)式它通常用來(lái)將一個(gè)較長(zhǎng)的表達(dá)式的值賦給一個(gè)邏輯型變量,而后作為條件寫在IF語(yǔ)句或選擇構(gòu)造中,使條件變得簡(jiǎn)短明確。例:輸入實(shí)數(shù)x,求

55、下面的函數(shù)值。Program Sampleimplicit nonereal : x,ylogical : in_sideread *, x ; print *,x=,xin_side=x1.and.x字符型數(shù)據(jù) a) 字符變量字符常數(shù)的一般形式是由一對(duì)單引號(hào) 或一對(duì)雙引號(hào)“”(90)限定的一串字符。字符串中的字符,允許是PORTRAN字符集的任意字符,如果系統(tǒng)還支持其它字符,例如漢字、希臘字、化學(xué)符號(hào)、數(shù)學(xué)符號(hào),也可引入字符串內(nèi),用一對(duì) 或“”界定。字符型數(shù)據(jù)除了有類型、種別外,比其它類型還多了一個(gè)長(zhǎng)度特性,即規(guī)定它有幾個(gè)字符數(shù)。其一般形式是:CHARACTER(LEN=整型字符長(zhǎng)度表達(dá)式,

56、KIND=種別值),屬性說(shuō)明 : 變量名表=初始值或 CHARACTER *字符長(zhǎng)度 變量名表 CHARACTER 變量名1*字符長(zhǎng)度,變量名2*字符長(zhǎng)度, 例如:CHARACTER(LEN=12,KIND=1) : A,BCHARACTER(KIND=1,LEN=12) : A,BCHARACTER(12,1) : A,BCHARACTER *12 : A,BCHARACTER *12 A,B都是等價(jià)的,前者說(shuō)明X、Y2是字符型變量,種別參數(shù)為3每個(gè)變量長(zhǎng)度為12。后者說(shuō)明表明長(zhǎng)度為12,種別值為1。例如:CHARACTER(LEN=*),PARAMETER : C_NAME=GIRLCHA

57、RACTER(LEN=*),PARAMETER : C_NAME=BOY都是合法的說(shuō)明語(yǔ)句,說(shuō)明字符常量C_NAME,前者長(zhǎng)度為4,后者長(zhǎng)度為3。 CHARACTER后面說(shuō)明的長(zhǎng)度是其后所有實(shí)體名的公共長(zhǎng)度,如果某一變量的長(zhǎng)度與其它不同,可以在其變量名后標(biāo)出自己的特有長(zhǎng)度,方法是在變量名后寫上*及長(zhǎng)度。例加:CHARACTER(LEN=12) : A,B*5,C,D*7,E長(zhǎng)度也可以寫成一個(gè)*號(hào),表示長(zhǎng)度暫不確定,待以后與程序中實(shí)際需要的長(zhǎng)度相一致。b)字符子串字符數(shù)據(jù)中某一部分相連的字符為字符子串,也可以作為一個(gè)實(shí)體與字符變量一樣參加操作。字符子串的一般形式是:V(e1:e2)。 V是字符型

58、實(shí)體名,包括字符變量名、字符函數(shù)名、字符數(shù)組元素等等。 e1,e2是整型表達(dá)式或正整常數(shù),e1的值指明子串在V中的起始列號(hào),e2的值指明子串在V中的終止列號(hào)。如果e1省略,表示子串從第一個(gè)字符取起;e2省略,表示子串取到末尾;如e1,e2都省略,表示子串從頭取到尾。例如:設(shè)有字符變量A,其取值為ABCDE12345FGH,則下面的子串取值為:A(3:11) - CDE12345F,A(I+4:9) - E1234(I=1),1234(I=2)A(:5) - ABCDEA(11:) - FGHA(:) - ABCDE12345FGHA(3:3) - Cc) 字符操作與賦值字符操作符只有一個(gè),稱并

59、置符,為兩相連的斜杠“/”,其功能是把前后兩個(gè)字符串拼連在一起。例如:AB/CDE的值為ABCDE。 C/ABC/A(2:6)/B(1:4)/D是把幾個(gè)字符串連在一起。字符賦值語(yǔ)句的一般形式: 字符變量字符表達(dá)式 在字符賦值語(yǔ)句中,要求兩邊種別值一致,此外還有長(zhǎng)度問(wèn)題。當(dāng)兩邊長(zhǎng)度不等時(shí),賦值時(shí)以左邊的字符變量說(shuō)明長(zhǎng)度為準(zhǔn),當(dāng)右邊小于左邊時(shí),尾部補(bǔ)空格,否則將右邊尾部的多余部分截去。對(duì)字符串作初始化: CHARACTER (LEN=10) nameCHARACTER BELL, TAB, LF, FF, STARS*6CHARACTER*8 helpDATA name,STARS /Zhang

60、Fei,*/DATA BELL,TAB,LF,FF /7,9,10,12/! 對(duì)ACSII控制字符碼賦于值DATA help(1:4),help(5:8) /2*HELP/! 對(duì)字符子串分段賦值 d) 字符比較在書寫FORTRAN語(yǔ)句時(shí),大小寫字母是等價(jià)的,但當(dāng)進(jìn)行字符操作和字符比較時(shí)必須看成是不同的。字符作比較實(shí)際上是比較它們的ASCII碼代碼大小。字符比較的一般形式:字符表達(dá)式關(guān)系操作符字符表達(dá)式例如:A=(XY/C2)/C3 當(dāng)C1、C2、C3是字符型變量名時(shí)是合法的,要先計(jì)算兩端字符表達(dá)式的值,而后比較它們是否滿足關(guān)系。比較的方法隨關(guān)系操作符而異: 、關(guān)系操作符只要兩邊表達(dá)式第一個(gè)字符

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論