




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Fortran 95 變量名稱的取名策略:變量的名字中可以使用的字符集包括英文的26個(gè)字母、09這10個(gè)數(shù)字以及下劃線“_”,不過前綴必須是英文字母。變量名稱的長度限制隨著各家編譯器的不同而不同,F(xiàn)ortran 標(biāo)準(zhǔn)規(guī)定最少要支持到6個(gè)字符,F(xiàn)ortran90則最少要支持到31個(gè)字符 ImplicitFortran 標(biāo)準(zhǔn)中有一項(xiàng)不太好的功能,它的變量不一定要經(jīng)過程序聲明才能使用,編譯器會根據(jù)變量的第一個(gè)字母來自東決定這個(gè)變量的類型。第一個(gè)字母為I、J、K、L、M、N的變量會被視為整數(shù)類型,其他的變量則會被當(dāng)成浮點(diǎn)數(shù)來使用。Implicit命令的功能是用來設(shè)置“默認(rèn)類型”。所謂的默認(rèn)類型,是指Fortran不經(jīng)過聲明,由第一個(gè)字母來決定變量類型??梢越?jīng)過Implicit描述來決定哪些字母開頭的變量會自動(dòng)使用某種類型Implicit integer (A,B,C) !A、B、C開頭的都被視為整型數(shù)Implicit integer(A-F,I,K) !A到F及I、K開頭的變量都視為整型數(shù)Implicit real(M-P) !M到P開頭的變量都視為浮點(diǎn)數(shù)Implicit none !關(guān)閉默認(rèn)類型功能,所有變量都要事先聲明 常數(shù)的聲明方法(Parameter)Program exImplicit noneReal :piParameter(pi = 3.14129)Write(*,”(F4.2)”) sin(pi/6)end 在Fortran90里,Parameter可以作為形容詞,和變量的聲明同時(shí)寫在一起Real, parameter :pi=3.14159 !這里pi前面的冒號不能省,和上面代碼不同(上面的可以省略)設(shè)置變量的初值變量內(nèi)容并不一定要在程序執(zhí)行時(shí)才設(shè)置,可以在聲明時(shí)同時(shí)給予初值。在Fortran90偶那個(gè),在設(shè)置變量初值時(shí),直接把數(shù)值寫在聲明的變量后面就行了。使用這個(gè)方法來設(shè)置初值是,不能省略聲明中間的那兩個(gè)冒號(Fortran90)在fortran77中則要使用Data命令設(shè)置初值Fortran 90 Fortran 77 program ex90implicit noneinteger :a=1real :b=2.0complex :c=(1.0,2.0)character (len=20) :str=Hello Acuzio!write (*,*) a,b,c,strend program ex77implicit noneinteger areal bcomplex ccharacter (len=20) strdata a,b,c,str/1,2.0,(1.0,2.0),Hello /write (*,*) a,b,c,strend 等價(jià)聲明(equivalence)把兩個(gè)以上的變量,聲明它們使用同一個(gè)內(nèi)存地址,就是“等價(jià)聲明”。使用同一個(gè)內(nèi)存位置的變量,只要改變其中一個(gè)變量,就會同時(shí)改變其他變量的數(shù)值Integer a,bEquivalence(a,b) Fortran 90 的自定義數(shù)據(jù)類型使用關(guān)鍵字:typeType :person Character(len=30) :name Integer :age Integer :length Integer :weightEnd type person Type(person) :a !聲明一個(gè)person類型的變量a%name !引用person中的name Kind的使用Kind描述如果搭配上一些Fortran90的庫函數(shù),可以增加程序代碼的“跨平臺”能力Fortran 90提供庫函數(shù)來判斷所要記錄的數(shù)值值域范圍所需要的kind值Selected_int_kind(n) : 返回如果想要記錄n位整數(shù)時(shí),所應(yīng)聲明的kind.返回-1時(shí),表示無法提供所想要的值域范圍Selected_real_kind(n,e) : 返回如果想要能夠記錄具有N位有效位數(shù)、指數(shù)達(dá)到e位的浮點(diǎn)數(shù)所需要的kind值。返回-1表示無法滿足所要求的有效位數(shù)、返回-2表示無法滿足所要求的指數(shù)范圍、返回-3表示兩者都無法滿足IF基本用法If(邏輯判斷式) thenEnd if If(邏輯判斷式) thenElseEnd if 邏輯運(yùn)算符:Fortran 90 Fortran 77 = 判斷是否“相等” .eq. 判斷是否“等于” /= 判斷是否“不相等” .ne. 判斷是否“不等于” 判斷是否“大于” .gt. 判斷是否“大于” = 判斷是否“大于或等于” .ge. 判斷是否“大于或等于” 判斷是否“小于” .lt. 判斷是否“小于” e)Write(*,*) “Weight”Read(*,*) guessEnd do 循環(huán)控制:Cycle和exitCycle 命令可以略過循環(huán)的程序模塊中,在cycle命令后面的所有程序代碼,直接跳回循環(huán)的開頭來進(jìn)行下一次循環(huán)Exit 功能:可以直接“跳出”一個(gè)正在運(yùn)行的循環(huán)署名循環(huán)循環(huán)還可以取“名字”,這個(gè)用途是可以在編寫循環(huán)是能明白地直到End do這個(gè)描述的位置是否正確,尤其是在多層循環(huán)當(dāng)中。署名的循環(huán)也可以配合Cycle、exit來使用。數(shù)組(Array)數(shù)組的聲明方法:Datatype name(size)賦初值:integer A(5)Data a /1,2,3,4,5/ Integer a(5)Data a /5*3/ !5個(gè)3 Integer A(5)Integer iData(A(i),i=2,4) /2,3,4/!這是一個(gè)隱含式循環(huán),I會從2增加到4,依照順序到后面取數(shù)字。初值設(shè)定結(jié)果為A(2)=2、A(3)=3、A(4)=4,A(1)和A(5)沒有設(shè)定 Fortran 90隱含式循環(huán)的功能可以更強(qiáng)大Integer :a(5)=(/(I,I=1,5)/) !設(shè)置結(jié)果:a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=5 WhereWhere是Fortran95添加的功能,它也是用來取出部分?jǐn)?shù)組內(nèi)容進(jìn)行設(shè)置ForallForall是fortran95添加的功能。間斷地說,它也可以看出是一種使用隱含循環(huán)來使用數(shù)組的方法,不過它的功能可以做得更強(qiáng)大。Integer iInteger :a(5)Forall(i=1:5)A(1)=5End forall Forall詳細(xì)語法為Forall(triplet1,triplet2,triplet3,mask)End forall其中mask用來做條件判斷Fortran90 可以聲明可變大小數(shù)組Integer,allocatable :a(:) !聲明一個(gè)可變大小的一位數(shù)組Integer :studentsRead(*,*) studentsAllocate(a(students) !配置內(nèi)存空間 計(jì)算機(jī)的內(nèi)存是有限的,當(dāng)然也就不能無限制地去要求空間來使用。所以allocate命令在內(nèi)存滿載是,有可能會要求不到使用空間。Allocate命令中可以加上stat的文本框得知內(nèi)存配置是否成功Allocate(a(100),stat=err) !err是事先聲明號的整型變量,做allocate這個(gè)動(dòng)作時(shí)會經(jīng)有stat這個(gè)敘述傳給err一個(gè)數(shù)值,如果err等于0則表示allocate數(shù)組成功,而如果err不等于0則表示allocate數(shù)組失敗Deallocate(a) 表示刪除分配的內(nèi)存跟allocate相關(guān)的函數(shù)還有allocated,它用來檢查一個(gè)可變大小的矩陣是否已經(jīng)配置內(nèi)存使用,他會返回一個(gè)邏輯值 If(.not. allocated(a)thenAllocate(a(5)End if 函數(shù)子程序(subroutine)的使用子程序代碼以subroutine開頭,它同樣要取一個(gè)名字,以end或end subroutine來結(jié)束。嚴(yán)格地講,end subroutine后還可以再接上這個(gè)子程序的名字program eximplicit noneinteger :a=1integer :b=2call add(a,b)end subroutine add(first,second)implicit noneinteger :first,secondwrite(*,*) first+secondreturnend 函數(shù)的調(diào)用program eximplicit nonereal :a=5,b=4real,external :add !聲明add是函數(shù)而不是變量!調(diào)用函數(shù)add,調(diào)用函數(shù)不必使用call命令write(*,*) add(a,b)end function add(a,b)implicit nonereal :a,breal :addadd =a+breturn end 全局變量Common是fortran77使用“全局變量”的方法,它用來定義一塊共享的內(nèi)存空間program eximplicit noneinteger :a,bcommon a,b !定義a,b是全局變量中的第1及第2個(gè)變量a=1b=2call showCommon()end subroutine showCommon()implicit noneinteger :num1,num2common num1,num2 !定義num1,num2是全局變量中的第1及第2個(gè)變量write(*,*) num1,num2return end Block data關(guān)于common還有最后要介紹的就是設(shè)置初值的方法,common變量不能直接在子程序或主程序中使用data來設(shè)置初值,要在block data程序模塊中使用data命令來設(shè)置初值program eximplicit noneinteger :a,bcommon a,b !a,b放在不署名的全局變量空間中integer :c,dcommon /group1/c,d !c,d放在group1的全局變量空間中integer :e,fcommon /group2/e,f !e,f放在group2的全局變量空間中 write (*,(6I4) a,b,c,d,e,fend block dataimplicit noneinteger a,bcommon a,b !a,b放在不署名的全局變量空間中data a,b /1,2/ !設(shè)置a,b的初值integer c,dcommon /group1/c,d !c,d放在group1的全局變量空間中data c,d /3,4/ !設(shè)置c,d的初值integer e,fcommon /group2/e,f !e,f放在group2的全局變量空間中data e,f /5,6/ !設(shè)置e,f的初值end block data 變量的生命周期在聲明中加入save 可以拯救這些變量、增加變量的生命周期、保留住所保存的數(shù)據(jù)。這些變量可以在程序執(zhí)行中永久記憶住上一次函數(shù)調(diào)用時(shí)所被設(shè)置的數(shù)值program eximplicit nonecall sub()call sub()call sub()end subroutine sub()implicit noneinteger :count = 1save count !賦值count變量會永遠(yuǎn)活著,不會忘記它的內(nèi)容write(*,*) countcount = count + 1return end 在Fortran 90 中,可以把save跟聲明寫作同一行Integer ,save :count=1傳遞函數(shù)傳遞參數(shù)時(shí),除了傳遞數(shù)字、字符等等數(shù)據(jù)之外,還可以把一個(gè)函數(shù)名稱當(dāng)成參數(shù)傳送出去program eximplicit nonereal,external :func !聲明func是個(gè)自定義函數(shù)real,intrinsic :sin !聲明sin是庫函數(shù) call ExecFunc(f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑行業(yè)的投標(biāo)策略試題及答案
- 2025年危機(jī)管理的理論與實(shí)踐試題及答案
- 建筑工程環(huán)保政策的試題及答案
- 管理心理學(xué)的創(chuàng)新訓(xùn)練方法試題及答案
- 現(xiàn)代管理學(xué)在企業(yè)改革中的應(yīng)用試題及答案
- 2025年心理學(xué)知識前瞻試題及答案
- 行政管理中的沖突解決與調(diào)解原則試題及答案
- 公司咨詢費(fèi)合同范例
- 現(xiàn)代管理與公共政策試題及答案
- 行政管理人事管理試題及答案
- 2025年中考?xì)v史專題復(fù)習(xí)講義(含練習(xí)題及答案)
- 歷史文化遺產(chǎn)類博物館文旅融合發(fā)展的路徑探索
- 2024年至2025年山東省泰安市公開招聘警務(wù)輔助人員輔警結(jié)構(gòu)化面試必練經(jīng)典模擬題庫一含答案
- 社區(qū)居委會筆試題及答案
- 汽修廠三人合伙協(xié)議
- 統(tǒng)編版語文八年級下冊24 唐詩三首課件
- 金融法律知識培訓(xùn)課件
- 山東省臨沂市普通高中學(xué)業(yè)水平等級考試模擬試題政治含答案
- 2025年個(gè)人家政服務(wù)合同標(biāo)準(zhǔn)
- 《外科感染》課件
- 《亞洲文化概覽》課件
評論
0/150
提交評論