注冊(cè)結(jié)構(gòu)工程師基礎(chǔ)輔導(dǎo)之(計(jì)算機(jī)應(yīng)用基礎(chǔ))復(fù)習(xí)講義(18)

字號(hào):

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á)式中只能出現(xiàn)整型變量,且這種變量必須是 形參或出現(xiàn)在COMMON 語句中。但在某些FORTRAN 77子集中,定義可調(diào)數(shù)組各維下 標(biāo)上下只能是整型變量,而不能是任何算術(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)如果字符型形參的長(zhǎng)度小于對(duì)應(yīng)的實(shí)參長(zhǎng)度,則從實(shí)參中最左邊的字符開始與形 參結(jié)合,而實(shí)參中右邊多余的字符被截去。例如:
    CHARACTER A*5
    A=ABCDE'
    CALL SB (A)
    END
    SUBROUTINE SB (X)
    CHARACTER X*3
    WRITE (* , *) X
    END
    程序執(zhí)行后的輸出結(jié)果為: ABC。
    (3)在FORTRAN 77中,對(duì)字符型形參的長(zhǎng)度還可以用"*"號(hào)來說明,此時(shí),形 參字符變量自動(dòng)與對(duì)應(yīng)的實(shí)參取相同的長(zhǎng)度。例如在上面的子程序SB中,如果將CHARACTER X*3改變?yōu)镃HARACTER X* (*) ,則執(zhí)行后,輸出的結(jié)果為: ABCDE。
    (4)當(dāng)子程序中形參為字符型數(shù)組時(shí),如果形參字符型數(shù)組元素的長(zhǎng)度與對(duì)應(yīng)實(shí)參字符型數(shù)組元素長(zhǎng)度一致,則其虛實(shí)結(jié)合的情況與一般的數(shù)組虛實(shí)結(jié)合的情況相同。如果形參與實(shí)參的字符型數(shù)組元素長(zhǎng)度不同,則按字符依次對(duì)應(yīng)。例如,有主程序與子程序 如下:
    CHARACTER A (5) *3
    DATA A(' ABC', 'DEF', 'GHI', 'JKL', 'MNO' )
    CALL SB (A)
    END
    SUBROUTINE SB (D)
    CHARACTER D (4) *2
    END
    則形參數(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語句說明。