版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 函 數(shù), 8-5特殊參數(shù)的使用方法,Fortran 90 中:可設(shè)置某些參數(shù)的屬性:為只讀或可寫(xiě)等 參數(shù)個(gè)數(shù)可以不定 傳遞參數(shù)的順序可變,8-5-1 參數(shù)的屬性,FORTRAN 90用INTENT設(shè)置虛參的屬性: 類型,INTENT(IN): 參數(shù)變量名 !參數(shù)為只讀,不能改變數(shù)值,否則編譯會(huì)出現(xiàn)錯(cuò)誤信息 類型,INTENT(OUT): 參數(shù)變量名 !參數(shù)在程序中重新設(shè)置數(shù)值,否則編譯會(huì)出現(xiàn)警告 類型,INTENT(INOUT): 參數(shù)變量名 !參數(shù)可讀可寫(xiě),和沒(méi)指定一樣 Fortran 中,變量作為實(shí)參傳遞出去之后,在調(diào)用函數(shù)后有可能被改變,以此來(lái)限制或提醒。,8-5-2 函數(shù)的使用
2、接口(INTERFACE),INTERFACE是一段程序模塊,說(shuō)明所要調(diào)用的函數(shù)的參數(shù)類型及返回值的類型等。,例:,結(jié)構(gòu):,Interface !interface定義開(kāi)始 Function func_name(n1, n2nm) !開(kāi)始定義函數(shù) func_name Implicit none Integer !聲明n1nm及返回值func_name Real !的數(shù)值類型 End function func_name !定義函數(shù)func_name結(jié)束 Subroutine sun_name !定義子程序sub_name Implicit none Integer . Real . End s
3、ubroutine sub_name . End interface !interface 結(jié)束,8-5-2 函數(shù)的使用接口(INTERFACE),必須要使用的情況: 函數(shù)返回值為數(shù)組 指定參數(shù)位置來(lái)傳遞參數(shù)時(shí) 所調(diào)用的函數(shù)的參數(shù)數(shù)目不固定 輸入指針參數(shù)時(shí) 函數(shù)返回值為指針時(shí),8-5-3 不定個(gè)數(shù)的參數(shù)的傳遞,Fortran 90 中采用optional 命令來(lái)聲明可省略參數(shù),要用interface作函數(shù)的參數(shù)定義,或用Module來(lái)定義,8-5-4 改變參數(shù)的傳遞位置,Fortran 90中,可以改變參數(shù)傳遞位置,要用interface聲明 subroutine sub(a, b,c) Ca
4、ll sub(b=2, c=3, a=1) 直接代入函數(shù)變量名來(lái)傳遞 子程序接受到的是a=1, b=2, c=3 對(duì)于有多個(gè)可省略參數(shù)的函數(shù),調(diào)用時(shí)可使用這個(gè)辦法只傳遞其中的部分參數(shù),例:,Subroutine sub(a, b, c, d, e, f) implicit none integer, optional: a, b, c, d, e, f end subroutine sub Call sub(b=3, f=5) !只輸入b和f的值,其他省略,例:要計(jì)算A*X*2+B*X+C, 對(duì)于A, B,C沒(méi)有的情況默認(rèn)為0來(lái)計(jì)算,8-6 特殊的函數(shù)類型,Fortran 90中的函數(shù)可以特別
5、指定成 RECURSIVE 遞歸 PURE ELEMENTAL 這三種特殊類型,并行及數(shù)組設(shè)置時(shí)使用,8-6-1 遞歸(RECURSIVE),遞歸函數(shù)除了被其他程序塊調(diào)用外,可以自己調(diào)用自己來(lái)執(zhí)行程序 必要條件: 每次被調(diào)用時(shí),遞歸函數(shù)中的局部變量(那些不是傳遞的參數(shù)和SAVE的變量)獨(dú)立存在,每次被調(diào)用會(huì)使用不同的內(nèi)存地址。 用result來(lái)設(shè)置另一個(gè)儲(chǔ)存返回值的變量 程序中要設(shè)置調(diào)用終點(diǎn),以免無(wú)限循環(huán)調(diào)用,格式 : Recursive 類型 function func_name( parameters) result (ans),Result可以用來(lái)在程序代碼中使用另外一個(gè)名字來(lái)設(shè)置函數(shù)的
6、返回值,根據(jù)fortran 90標(biāo)準(zhǔn),最開(kāi)始加上recursive才能遞歸調(diào)用,Recursive subroutine ( parameters ),例題, 計(jì)算N!,執(zhí)行: 【ans = n * fact(n-1) 】 n=4 第一次調(diào)用:ans=4*fact(3) , 調(diào)用fact(n-1) 第二次調(diào)用:n=3, ans=3*fact(2), 調(diào)用fact(n-1) 第三次調(diào)用:n=2, ans=2*fact(1), 調(diào)用fact(n-1) 第四次調(diào)用:n=1, ans=1, 返回,返回值 Fact(1)=Ans=1 Fact(2)=ans=2*fact(1)=2! Fact(3)=an
7、s=3*fact(2)=3! Fact(4)=ans=4*fact(3)=4!,每次被調(diào)用時(shí),遞歸函數(shù)中的局部變量獨(dú)立存在,每次被調(diào)用會(huì)使用不同的內(nèi)存地址。,執(zhí)行: n=4 第一次調(diào)用:ans=4*fact(3) , count=1, localcount=1, count=2 第二次調(diào)用:n=3, ans=3*fact(2), localcount=2, count=3 第三次調(diào)用:n=2, ans=2*fact(1), localcount=3, count=4 第四次調(diào)用:n=1, ans=1, localcount=4, count=5返回,返回后 N=2, Fact(1)=Ans=1
8、, count=5, localcount=3; N=3, Fact(2)=ans=2*fact(1)=2! Count5,localcount=2; N=4, Fact(3)=ans=3*fact(2)=3! Count=5, localcount=1 主程序: Fact(4)=ans=4*fact(3)=4!,write(6,(I2,th enter, n=,I2) localcount, nans = n * fact(temp) write(6,(I2,th exit, n=,I2, ans=,I5, count=, i3) localcount, n, ans, count,特別注意改變傳遞參數(shù)帶來(lái)的問(wèn)題,非遞歸函數(shù)的局部變量可能每次調(diào)用放在相同的內(nèi)存位置,WRITE(6, 100) localcount, n FORMAT(I2,th enter, n=,I2) . Temp=n-1 fact = n * ifact(temp) WRITE(6, 200) localcount, n, fact,從第2次調(diào)用開(kāi)始temp和虛參的n
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息技術(shù)課程教學(xué)設(shè)計(jì)與實(shí)施策略
- 建筑企業(yè)項(xiàng)目經(jīng)營(yíng)管理實(shí)戰(zhàn)方案分享
- 幼兒園節(jié)日慶典活動(dòng)方案范例
- 信息系統(tǒng)安全解決方案匯編
- 國(guó)際數(shù)學(xué)奧林匹克歷年競(jìng)賽試題集
- 寫(xiě)作教學(xué)設(shè)計(jì)與課后反思模板
- 2026年高考政治新高考二卷真題試卷及答案
- 小學(xué)英語(yǔ)單詞記憶技巧與測(cè)試題
- 2026年高考北京卷英語(yǔ)真題試卷(+答案)
- 2026年三年級(jí)語(yǔ)文上冊(cè)期末真題及答案
- 2025年度醫(yī)養(yǎng)結(jié)合養(yǎng)老機(jī)構(gòu)健康管理咨詢合同
- 2025中國(guó)供銷集團(tuán)校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 不擾民協(xié)議書(shū)范文多人簽字模板
- 玻璃陽(yáng)光房合同模板
- 重力式、擋墻施工方案
- JJG 705-2014液相色譜儀行業(yè)標(biāo)準(zhǔn)
- 媽媽產(chǎn)后營(yíng)養(yǎng)平衡的課件
- 《李彥宏個(gè)人介紹》課件
- 糖尿病核心信息知識(shí)講座
- 美容外科臨床診療指南診療規(guī)范2023版
- 【語(yǔ)文】西安高新一小小學(xué)四年級(jí)上冊(cè)期末試題
評(píng)論
0/150
提交評(píng)論