當前位置: 首頁 > 結構工程師 > 結構工程師備考資料 > 一級基礎科目(一)輔導---函數(shù)與子程序

一級基礎科目(一)輔導---函數(shù)與子程序

更新時間:2009-10-19 15:27:29 來源:|0 瀏覽0收藏0

結構工程師報名、考試、查分時間 免費短信提醒

地區(qū)

獲取驗證 立即預約

請?zhí)顚憟D片驗證碼后獲取短信驗證碼

看不清楚,換張圖片

免費獲取短信驗證碼

  七、函數(shù)與子程序(過程)

  (一)內部函數(shù)

  內部函數(shù)是預先編制的一些常用函數(shù)或算法的過程,由FORTRAN語言提供,可以直接調用。內部函數(shù)調用時的一般形式是:

  內部函數(shù)名(實元表)

  實元表中元素的數(shù)據(jù)類型、個數(shù)是預先規(guī)定的。

  常用內部函數(shù)及其功能可查閱FORTRAN教材或用戶手冊。

  (二)語句函數(shù)

  1.語句函數(shù)的定義

  定義語句函數(shù)的語句稱為語句函數(shù)語句。其一般形式為:

  函數(shù)名(形參表)=表達式。

  其中,函數(shù)名的命名規(guī)則與一般變量名相同,所以它也可以用類型說明語句等來說明。形參又稱啞元,是一些變量名,一般應出現(xiàn)在表達式中。

  語句函數(shù)在程序單位中的位置,應在所有可執(zhí)行語句之前。

  2.語句函數(shù)的調用

  調用語句函數(shù)的結果是得到一個函數(shù)值,因此,調用語句函數(shù)時代之以實際變量(又 稱實元)。

  (三)函數(shù)子程序

  一個函數(shù)子程序是一個獨立的FORTRAN程序單位。它的第一個語句必須是FUNCTION語句,最后一個語句必須是END語句。即函數(shù)子程序的一般結構為:

  [類型說明]FUNCTION函數(shù)名(形參表)

  語句塊

  [RETURN]

  END

  也可以寫為:FUNCTION函數(shù)名(形參表)

  [類型說明 函數(shù)名]

  語句塊

  [RETURN]

  END

更多信息請訪問結構工程師頻道    結構工程師論壇

?2009年結構工程師考試時間:9月19、20日
?08年考試規(guī)范、標準: 2008年一級注冊結構工程師考試成績查詢匯總

 

  其中函數(shù)名的命名規(guī)則與變量相同,而函數(shù)名的類型決定了函數(shù)值的類型。在函數(shù)子程序中,形參可以是變量名、數(shù)組名、外部過程名,而形參的命名與類型說明也與變量相同,形參數(shù)組也必須在函數(shù)子程序中予以定義.

  函數(shù)子程序的函數(shù)值由函數(shù)名帶回到調用該函數(shù)子程序的程序,因此,在函數(shù)子程序中必須對函數(shù)名賦值。在函數(shù)子程序中,函數(shù)名應該像普通變量那樣來使用。

  在函數(shù)子程序中,所有的名字、語句標號都可以和其他程序單位中的相同而彼此沒有任何關系。

  在函數(shù)子程序中,END語句的功能有兩個:一是表示該程序單位的結束,二是具有返回語句RETURN的功能。函數(shù)子程序中必須有并且只有一個END語句,而且只能是子程序的最后一個語句。當在子程序的其他位置須要返回時,可以使用RETURN

  語句。

  (四)子程序

  1.子程序的結構

  一個子程序是一個獨立的FORTRAN程序單位。子程序的第一個語句必須是SUBROUTINE語句,最后一個語句必須是END語句。

  即子程序的一般結構為:

  SUBROUTINE子程序名(形參表)

  語句塊

  [RETURN]

  END

  SUBROUTINE語句中的形參表可以省略。這時子程序名后的括弧不要保留。對子程序的其他有關規(guī)定與函數(shù)子程序相同。

  2.子程序的調用

  子程序調用通過CALL語句實現(xiàn)。其形式為:

  CALL子程序名(實參)

  其他有關對子程序的調用規(guī)定與函數(shù)子程序相同。

  八、程序單位間的數(shù)據(jù)傳遞

  (一)虛實結合

  虛實結合又稱啞實結合,是各程序單位(主程序和各種過程如函數(shù)子程序)之間傳遞數(shù)據(jù)的一種重要途徑。

  1.變量的虛實結合

  當子程序等過程的形參為變量時,則在調用時所對應的實參可以是類型相同的常數(shù)、變量、數(shù)組元素或表達式;子程序調用后,其運行的結果通過這些實參返回到調用者。在FORTRAN 77中,當形參變量所對應的實參是變量或數(shù)組元素時,則它們之間的結合方式是地址結合;而當形參變量所對應的實參是常數(shù)或表達式時,其結合方法對于不同的

  FORTRAN系統(tǒng)有可能是不同的。

  2.數(shù)組的虛實結合

  當子程序中的形參為數(shù)組名時,則在調用時所對應的實參必須是數(shù)組名或數(shù)組元素。如果實參是數(shù)組名,則實參數(shù)組與形參數(shù)組按地址結合,實參數(shù)組與形參數(shù)組都從第一個元素開始按列逐個對應。例如,有主程序與子程序如下:

  PROGRAMMAIN

  INTEGERA(0:5)

  …

  CALLSB(A)

  END

  SUBROUTINESB(B)

  INTEGERB(-1:2)

  …

  END

  則在主程序中使用CALL語句調用子程序SB時,實參數(shù)組與形參數(shù)組的結合情況如下:

  實參數(shù)組 形參數(shù)組 ,

  A(0)――B(-1)

  A(1)――B(0)

  A(2)――B(1)

  A(3)――B(2)

  A(4)

  A(5)

  也即調用SB時,A數(shù)組的頭4個元素與B數(shù)組的元素對應,這些對應元素實際上為同一存儲地址。如果實參是數(shù)組元素,則從該元素開始依次與形參數(shù)組的第一個元素起按列逐個對應,它們也是按地址結合。例如,有主程序與子程序如下:

  PROGRAMMAIN

  DIMENTION A(8)

  … ,

  CALLSB(A(5))

  END

  SUBROUTINE SB(B)

  DIMENSION B(3)

  … ,

  END

  則在調用語句執(zhí)行時,實參數(shù)組A與形參數(shù)組B的結合情況如下:

  實參數(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ù)可以和與之結合的形參數(shù)組不同,但要求從與形參數(shù)組的第一個元素結合的實參數(shù)組元素算起,以后的實參數(shù)組元素的個數(shù)不能少于形參數(shù)組元素的個數(shù)。

  多維數(shù)組或數(shù)組元素虛實結合時,要特別注意FORTRAN中數(shù)組按列存放的規(guī)定,不要摘錯存儲地址的對應關系。例如:

  PROGRAMMAIN

  DIMENSIONA(3,2)

  …

  CALL SB(A)

  END

  SUBROUTINE SB(B)

  DIMENSION B(2,3)

  … ,

  END

  這種情況下,數(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.可調數(shù)組

  在主程序中定義數(shù)組元素時,?定義說明符中各維下標的上下限必須為整常數(shù),不能是變量或算術表達式。但在子程序中定義數(shù)組時,允許用變量來定義各維下標的上下限。子程序中用變量來定義各維下標上下限的數(shù)組稱為可調數(shù)組。但使用可調數(shù)組必須遵循以下幾個原則。

  (1)可調數(shù)組名必須是形參數(shù)組名。

  (2)說明可調數(shù)組各維下標上下限的表達式中只能出現(xiàn)整型變量,且這種變量必須是 形參或出現(xiàn)在COMMON語句中。但在某些FORTRAN 77子集中,定義可調數(shù)組各維下標上下限時只能是整型變量,而不能是任何算術表達式。

  (3)可調數(shù)組的大小不得超過對應實參數(shù)組的大小。

  4.字符型變量的虛實結合

  (1)當子程序中的形參為字符型變量時,對應的實參必須是字符型變量、字符常數(shù)、

  字符型數(shù)組元素或字符表達式。字符型實參必須用CHARACTER語句加以說明。

  (2)如果字符型形參的長度小于對應的實參長度,則從實參中最左邊的字符開始與形

  參結合,而實參中右邊多余的字符被截去。例如:

  CHARACTERA* 5

  A=’ABCDE’

  CALL SB(A)

  END

  SUBROUTINESB(X)

  CHARACTER X*3

  WRITE(*,*)X

  END

  程序執(zhí)行后的輸出結果為:ABC。

  (3)在FORTRAN77中,對字符型形參的長度還可以用“*”號來說明,此時,形參字符變量自動與對應的實參取相同的長度。例如在上面的子程序SB中,如果將CHARACTER X*3改變?yōu)镃HARACTER X*(*),則執(zhí)行后,輸出的結果為:ABCDE。

  (4)當子程序中形參為字符型數(shù)組時,如果形參字符型數(shù)組元素的長度與對應實參字符型數(shù)組元素長度一致,則其虛實結合的情況與一般的數(shù)組虛實結合的情況相同。如果形參與實參的字符型數(shù)組元素長度不同,則按字符依次對應。例如,有主程序與子程序如下:

  CHARACTFER A(5)* 3

  DATA A/’ABC’,’DEF’,’GHI’,’JKL’,’MNO’/

  CALL SB(A)

  END

  SUBROUTINE SB(D)

  CHARACTERD(4)*2

  …

  END

  則形參數(shù)組D中元素的值為:

  D(1):’AB’

  D(2):’CD’

  D(3):’EF’

  D(4):’GH’

  (5)過程名的虛實結合

  FORTRAN允許子程序中的形參為過程名,此時,調用程序中的實參必須是過程名。

  如果實參是外部過程名(如函數(shù)子程序名、子程序名),則該外部過程名在調用程序中必須用EXTERNAL語句說明。

  如果實參是內部過程名(如內部函數(shù)名),則該內部過程名在調用中必須用INTRINSIC語句說明。

  (二)公用區(qū)語句

  1.公用區(qū)語句的一般形式 -

  COMMON[/公共區(qū)名1/]變量表1,[/公共區(qū)名2/變量表2]…

  沒有公用區(qū)名的就稱為無名公用區(qū),其他都是有名公用區(qū);一個完整的程序只能設置一個無名公用區(qū),但可以有多個有名公用區(qū);變量表中,可以是變量名、數(shù)組名、數(shù)組說明符,互相之間用逗號隔開。例如:

  COMMON a,b(3),c(2)

  定義了b是3個元素的一維數(shù)組,c是2個元素的一維數(shù)組。這條語句與下面兩句語句是等價的:

  DIMENSION b(3),c(2)

  COMMON a,b,c

  2.利用公用區(qū)進行數(shù)據(jù)傳遞時,在無名公用區(qū)或同名的有名公用區(qū)中,位置排列相同的變量、數(shù)組,實際上使用同一存儲地址,亦即共享同一數(shù)據(jù)。例如:

  PROGRAMMAIN

  COMMON a,I(2)/COM l/d,c

  …

  CALL SB

  …

  END

  SUBROUTINE SB

  COMMON aa,JK(2)/COM l/f,g

  END

  其中,主程序中的變量a的數(shù)據(jù)與子程序的變量aa共享,數(shù)組1的數(shù)據(jù)與JK共享,而d,c的數(shù)據(jù)分別與f,g共享。由此可以知道,各個程序單位中COMMON語句中的變量類型必須按位置一一對應一致才能正確傳遞數(shù)據(jù)。

分享到: 編輯:環(huán)球網(wǎng)校

資料下載 精選課程 老師直播 真題練習

結構工程師資格查詢

結構工程師歷年真題下載 更多

結構工程師每日一練 打卡日歷

0
累計打卡
0
打卡人數(shù)
去打卡

預計用時3分鐘

結構工程師各地入口
環(huán)球網(wǎng)校移動課堂APP 直播、聽課。職達未來!

安卓版

下載

iPhone版

下載

返回頂部