版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
朽木易折,金石可鏤。千里之行,始于足下。PAGE第頁/共頁7八、程序單位間的數(shù)據(jù)傳遞(一)虛實(shí)結(jié)合虛實(shí)結(jié)合又稱啞實(shí)結(jié)合,是各程序單位(主程序和各種過程如函數(shù)子程序)之間傳遞數(shù)據(jù)的一種重要途徑。1.變量的虛實(shí)結(jié)合當(dāng)子程序等過程的形參為變量時(shí),則在調(diào)用時(shí)所對(duì)應(yīng)的實(shí)參可以是類型相同的常數(shù)、變量、數(shù)組元素或表達(dá)式;子程序調(diào)用后,其運(yùn)行的結(jié)果通過這些實(shí)參返回到調(diào)用者。在FORTRAN77中,當(dāng)形參變量所對(duì)應(yīng)的實(shí)參是變量或數(shù)組元素時(shí),則它們之間的結(jié)合方式是地址結(jié)合;而當(dāng)形參變量所對(duì)應(yīng)的實(shí)參是常數(shù)或表達(dá)式時(shí),其結(jié)合主意對(duì)于不同的FORTRAN系統(tǒng)有可能是不同的。2.數(shù)組的虛實(shí)結(jié)合當(dāng)子程序中的形參為數(shù)組名時(shí),則在調(diào)用時(shí)所對(duì)應(yīng)的實(shí)參必須是數(shù)組名或數(shù)組元素。倘若實(shí)參是數(shù)組名,則實(shí)參數(shù)組與形參數(shù)組按地址結(jié)合,實(shí)參數(shù)組與形參數(shù)組都從第一個(gè)元素開始按列逐個(gè)對(duì)應(yīng)。例如,有主程序與子程序如下:PROGRAMMAININTEGERA(0:5)CALLSB(A)ENDSUBROUTINESB(B)INTEGERB(-1:2)END則在主程序中使用CALL語句調(diào)用子程序SB時(shí),實(shí)參數(shù)組與形參數(shù)組的結(jié)合情況如下:實(shí)參數(shù)組形參數(shù)組A(0)——B(-1)A(1)一一B(0)A(2)——B(1)A(3)一一B(2)A(4)A(5)也即調(diào)用SB時(shí),A數(shù)組的頭4個(gè)元素與B數(shù)組的元素對(duì)應(yīng),這些對(duì)應(yīng)元素實(shí)際上為同一存儲(chǔ)地址。倘若實(shí)參是數(shù)組元素,則從該元素開始依次與形參數(shù)組的第一個(gè)元素起按列逐個(gè)對(duì)應(yīng),它們也是按地址結(jié)合。例如,有主程序與子程序如下:PROGRAMMAINDIMENTIONA(8)CALLSB(A(5))ENDSUBROUTINESB(B)DIMENSIONB(3)END則在調(diào)用語句執(zhí)行時(shí),實(shí)參數(shù)組A與形參數(shù)組B的結(jié)合情況如下:實(shí)參數(shù)組形參數(shù)組A(1)A(2)A(3)A(4)A(5)——B(1)A(6)一一B(2)A(7)——B(3)A(8)FORTRAN77規(guī)定,不管實(shí)參是數(shù)組名還是數(shù)組元素,用作實(shí)參的數(shù)組,其維數(shù)、各維下標(biāo)的上下限及數(shù)組中元素個(gè)數(shù)可以和與之結(jié)合的形參數(shù)組不同,但要求從與形參數(shù)組的第一個(gè)元素結(jié)合的實(shí)參數(shù)組元素算起,以后的實(shí)參數(shù)組元素的個(gè)數(shù)不能少于形參數(shù)組元素的個(gè)數(shù)。多維數(shù)組或數(shù)組元素虛實(shí)結(jié)合時(shí),要異常注重FORTRAN中數(shù)組按列存放的規(guī)定,不要搞錯(cuò)存儲(chǔ)地址的對(duì)應(yīng)關(guān)系。例如:PROGRAMMAINDIMENSIONA(3,2)CALLSB(A)。。。ENDSUBROUTINESB(B)DIMENSIONB(2,3)。。。END這種情況下,數(shù)組元索地址的對(duì)應(yīng)關(guān)系是:實(shí)參數(shù)組形參數(shù)組A(1,1)一一B(1,1)A(2,1)一一B(2,1)A(3,1)一一B(1,2)A(1,2)一一B(2,2)A(2,2)一一B(1,3)A(3,2)一一B(2,3)3.可調(diào)數(shù)組在主程序中定義數(shù)組元素時(shí),定義說明符中各維下標(biāo)的上下限必須為整常數(shù),不能是變量或算術(shù)表達(dá)式。但在子程序中定義數(shù)組時(shí),允許用變量來定義各維下標(biāo)的上下限。子程序中用變量來定義各維下標(biāo)上下限的數(shù)組稱為可調(diào)數(shù)組。但使用可調(diào)數(shù)組必須遵循以下幾個(gè)原則。(1)可調(diào)數(shù)組名必須是形參數(shù)組名。(2)說明可調(diào)數(shù)組各維下標(biāo)上下限的表達(dá)式中只能浮上整型變量,且這種變量必須是形參或浮上在COMMON語句中。但在某些FORTRAN77子擴(kuò)散,定義可調(diào)數(shù)組各維下標(biāo)上下限時(shí)只能是整型變量,而不能是任何算術(shù)表達(dá)式。(3)可調(diào)數(shù)組的大小不得超過對(duì)應(yīng)實(shí)參數(shù)組的大小。4.字符型變量的虛實(shí)結(jié)合(1)當(dāng)子程序中的形參為字符型變量時(shí),對(duì)應(yīng)的實(shí)參必須是字符型變量、字符常數(shù)、字符型數(shù)組元素或字符表達(dá)式。字符型實(shí)參必須用CHARACTER語句加以說明。(2)倘若字符型形參的長度小于對(duì)應(yīng)的實(shí)參長度,則從實(shí)參中最左邊的字符開始與形參結(jié)合,而實(shí)參中右邊多余的字符被截去。例如:CHARACTERA*5A=ABCDE'CALLSB(A)ENDSUBROUTINESB(X)CHARACTERX*3WRITE(*,*)XEND程序執(zhí)行后的輸出結(jié)果為:ABC。(3)在FORTRAN77中,對(duì)字符型形參的長度還可以用"*"號(hào)來說明,此時(shí),形參字符變量自動(dòng)與對(duì)應(yīng)的實(shí)參取相同的長度。例如在上面的子程序SB中,倘若將CHARACTERX*3改變?yōu)镃HARACTERX*(*),則執(zhí)行后,輸出的結(jié)果為:ABCDE。(4)當(dāng)子程序中形參為字符型數(shù)組時(shí),倘若形參字符型數(shù)組元素的長度與對(duì)應(yīng)實(shí)參字符型數(shù)組元素長度一致,則其虛實(shí)結(jié)合的情況與普通的數(shù)組虛實(shí)結(jié)合的情況相同。倘若形參加實(shí)參的字符型數(shù)組元素長度不同,則按字符依次對(duì)應(yīng)。例如,有主程序與子程序如下:CHARACTERA(5)*3DATAA('ABC','DEF','GHI','JKL','MNO')CALLSB(A)ENDSUBROUTINESB(D)CHARACTERD(4)*2END則形參數(shù)組D中元素的值為:D(1):'AB'D(2):'CD'D(3):'EF'D(4):'GH'(5)過程名的虛實(shí)結(jié)合FORTRAN允許子程序中的形參為過程名,此時(shí),調(diào)用程序中的實(shí)參必須是過程名.倘若實(shí)參是外部過程名(如函數(shù)子程序名、子程序名),則該外部過程名在調(diào)用程序中必須用EXTERNAL語句說明。倘若實(shí)參是內(nèi)部過程名(如內(nèi)部函數(shù)名),則該內(nèi)部過程名在調(diào)用中必須用INTRINSIC語句說明。(二)公用區(qū)語句1.公用區(qū)語句的普通形式COMMON[公用區(qū)名l/]變量表1,[公用區(qū)名2/變量表2]…沒有公用區(qū)名的就稱為無名公用區(qū),其他都是聞名公用區(qū);一個(gè)殘破的程序只能設(shè)置一個(gè)無名公用區(qū),但可以有多個(gè)聞名公用區(qū);變量表中,可以是變量名、數(shù)組名、數(shù)組說明符,互相之間用逗號(hào)隔開。例如:COMMONa,b(3),c(2)定義了b是3個(gè)元素的一維數(shù)組,c是2個(gè)元素的一維數(shù)組。這條語句與下面兩句語句是等價(jià)的:DIMENSIONb(3),c(2)COMMONa,b,c2.利用公用區(qū)舉行數(shù)據(jù)傳遞時(shí),在元名公用區(qū)或同名的聞名公用區(qū)中,位置羅列相同的變量、數(shù)組,實(shí)際上使用同一存儲(chǔ)地址,亦即分享同一數(shù)據(jù)。例如:PROGRAMMAINCOMMONa,I(2)/COMl/d,c。。。CALLSBENDSUBROUTINESBCOMMONaa,]K(2)/COMl/f,gEND其中,主程序中的變量a的數(shù)據(jù)與子程序的變量aa分享,數(shù)組1的數(shù)據(jù)與JK分享,而d,c的數(shù)據(jù)分離與f,g分享。由此可以知道,各個(gè)程序單位中COMMON語句中的變量類型必須按位置一一對(duì)應(yīng)一致才干準(zhǔn)確傳遞數(shù)據(jù)。九、文件FORTRAN程序輸入輸出的基本單位稱為記錄。記錄是數(shù)值或字符的序列。記錄的集合稱作文件。(一)文件的存取方式1.順序文件順序文件中的記錄是一個(gè)接一個(gè)按順序存放的,即總從第1個(gè)記錄開始,然后是第2個(gè)記錄,第3個(gè)記錄,…,要取任何一個(gè)記錄,都必須從第1個(gè)記錄開始。2.直接文件直接文件又稱直接存取文件,或隨機(jī)文件。它可以按隨意順序讀寫某一記錄。直接文件中每個(gè)記錄的長度都是相等的。(二)文件操作語句文件操作語句有打開文件的OPEN語句和關(guān)閉文件的CLOSE語句。此外還有文件的讀寫語句READ語句和WRITE語句。(三)文件定位設(shè)想在文件的讀寫操作時(shí)存在一根指針。起先指針停在文件的開始處,隨著文件存取的舉行,指針在文件中移動(dòng)??刂浦羔樀奈恢?即定位,在FORTRAN中可以通過如下語句來實(shí)現(xiàn)。I.REWIND語句REWIND語句也稱回繞語句。它的形式是:REWIND設(shè)備號(hào)它使與指定設(shè)備號(hào)相連的文件中的指針定位在文件的開始。在FORTRAN中,用OPEN語句打開一個(gè)文件,指針也是在文件的開始位置。因此對(duì)一個(gè)已經(jīng)打開的文件,要使指針移到開始,也可組合使用CLOSE和OPEN語句。2.BACKSPACE語句語句BACKSPACE的形式是:BACKSPACE設(shè)備號(hào)它使與指定設(shè)備號(hào)相連的文件中的指針退回一個(gè)記錄。例題:1.閱讀下列FORTRAN程序:INTEGERSUMSUM=0DO10I=1,10,4DO10J=5,100,20DO10K=-10,-5,210SUM=SUM+1上面程序的運(yùn)行結(jié)果為(C)。A.15;B.30;C.45;D.60K取值3次,J取值5次,I取值3次,共取值45次2.若有INTEGERA(-2:2,0:3,1:2),按照在內(nèi)存中的存儲(chǔ)次序,數(shù)組A中第8號(hào)元素為(B)(A)A(-1,0,2)(B)A(0,1,1)(C)A(2, 1,2)(D)A(1,1,1)A中數(shù)據(jù)按列排序,A(5,4,2)第八個(gè)元素是A(3,2,1),對(duì)應(yīng)本題應(yīng)為A(0,1,1)3.對(duì)下列程序段READ(*,*)XIF((X.LT.-5.0).OR.(X.EQ.-1.0))THENY=0.0ELSEIF(X.LT.0.0)THENY=1.0/(X+1.0)ELSEIF(X.LT.5.0)THENY=1.0/(X+2.0)ELSEY=0.0ENDIFWRITE(*,*)Y若輸入4.0,則結(jié)果為:(C)(A)0.0(B)1/5(C)1/6(D)1/4十2.0輸入的是4,小于5,所以輸出結(jié)果為1/(2+4)=1/64.閱讀下列FORTRAN程序:DIMENSIONA(2,2)INTEGERA,YY=0DO20I=1,2DO20J=1,2A(I,J)=I*I+J*JY=(Y+A(I,J))/220CONTINUEWRITE(*,*)YEND此程序運(yùn)行的結(jié)果為(A)。A.6;B.9;C.10;D20Y1=2/2=1,Y2=(1+5)/2=3,Y3=(3+5)/2=4,Y4=(4+8)/2=65.閱讀下列FORTRAN程序:K=0DO10I=1,6,2DO10J=1,6,3IF(K.LT.I*J)K=I*J10CONTINUEWRITE(*,*)KEND此程序執(zhí)行后的輸出結(jié)果為(C)。A.18;B.30;C.20;D.36I,J乘積的最大值為4×5=206.以下程序段DIMENSIONA(4)READ*,AI=110J=I+120IF(A(I).LT.A(J))THENT=A(J)A(J)=A(I)A(I)=TENDIFJ=J+lIF(J.LE.4)GOTO20I=I+1IF(1.LE.3)GOTO10PRINT*,A(4)END若輸入4,2,3,5,則程序運(yùn)行結(jié)果為(B)(A)4 (B)2 (C)3(D)5相當(dāng)于把數(shù)列從大到小羅列,最后5,4,3,2,故選B7.對(duì)下列程序段PARAMETER(N=3)INTEGERA(N,N)READ*,ADO10J=1,NLS=0DO201=1,N20LS=LS+A(I,J)LS=LS/NDO30I=1,N30A(I,J)=A(I,J)10CONTINUEPRINT*,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第3章結(jié)締組織課件講課資料
- 更年期用藥未來發(fā)展趨勢(shì)報(bào)告
- 開展三責(zé)兩對(duì)標(biāo)教育活動(dòng)培訓(xùn)資料
- 2024年浙江舟山群島新區(qū)旅游與健康職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年陽春市中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 二零二五年度門窗安裝工程質(zhì)保合同范本2篇
- 2024年武漢鐵路橋梁職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 二零二五版不履行離婚協(xié)議贍養(yǎng)費(fèi)追償起訴狀3篇
- 2024年杭州職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 湖北省部分市州2024-2025學(xué)年高二(上)期末考試物理試卷(含答案)
- 危急值登記及流程
- 《麻醉并發(fā)癥》課件
- 【指導(dǎo)規(guī)則】央企控股上市公司ESG專項(xiàng)報(bào)告參考指標(biāo)體系
- 2025年中國國新控股限責(zé)任公司招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 股東合作協(xié)議書標(biāo)準(zhǔn)范本
- 非營利組織薪酬標(biāo)準(zhǔn)與管理
- 2024房顫治療指南
- 2024年農(nóng)村工作總結(jié)(3篇)
- 膿毒性休克集束化治療
- 《供應(yīng)鏈管理》課件 第9章 供應(yīng)鏈金融管理
評(píng)論
0/150
提交評(píng)論