fortran第九章-過程附加特性課件_第1頁
fortran第九章-過程附加特性課件_第2頁
fortran第九章-過程附加特性課件_第3頁
fortran第九章-過程附加特性課件_第4頁
fortran第九章-過程附加特性課件_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Fortran95/2003第九章過程的附加特性1精選課件ppt本章學習目標:

學習在Fortran過程中如何使用多維數(shù)紐?理解何時、如何使用SAVE屬性或者SAVE語句?理解可分配數(shù)組和自動數(shù)組之間的區(qū)別以及何時在過程中分別使用它們?理解純過程和逐元過程?學習怎樣聲明和使用內(nèi)部子程序及函數(shù)2精選課件ppt9.1給子程序和函數(shù)傳遞多維數(shù)組9.1.1顯式結(jié)構(gòu)的形參數(shù)組9.1.2不定結(jié)構(gòu)的形參數(shù)組(assumed-shapedummyarrays)3精選課件ppt在聲明不定結(jié)構(gòu)的數(shù)組時,數(shù)組中的下標都用冒號來代替。只有子程序或者函數(shù)有顯式接口,才能使用這種數(shù)組,調(diào)用程序不知道子程序接口的所有信息。通常采用的方式是將子程序放在模塊中,然后在調(diào)用程序中use該模塊。例9-1使用不定結(jié)構(gòu)的形參數(shù)組4精選課件ppt9.2SAVE屬性和語句當離開過程后,過程中的所有局部變量和數(shù)組的值都成為未定義的值。Fortran提供了一種方式來保存在調(diào)用過程之間的局部變量和數(shù)組。例如定義局部變量:任意在類型聲明語句中初始化的局部變量都會被自動保存,例如:5精選課件pptFortran也提供了SAVE語句,任何列在SAVE語句中的局部變量都會在調(diào)用過程中保存;如果SAVE語句中沒有變量,那么所有的局部變量都會被被保存起來。任何共享數(shù)據(jù)的模塊都應該使用SAVE語句保存數(shù)據(jù),并通過USE語句使用該模塊數(shù)據(jù)。例9-2計算均值注意,使用save僅在子程序中保留變量值,其值如果沒有返回,則調(diào)用程序仍不可見該值。6精選課件ppt9.3過程中的動態(tài)數(shù)組如果用SAVE屬性來聲明可分配數(shù)組,或者數(shù)組出現(xiàn)在一個SAVE語句中,那么數(shù)組只會在該過程第一次被調(diào)用的時候利用ALLOCATE語句分配一次內(nèi)存。如果沒有用SAVE屬性來聲明可分配數(shù)組,那么在每次調(diào)用過程的時候都必須用ALLOCATE語句給數(shù)組分配空間,當返回到調(diào)用程序的時候,數(shù)組的內(nèi)容會被自動地釋放掉。7精選課件ppt9.4過程中的自動數(shù)組Fortran95/2003提供了另外一種簡單的方式在過程執(zhí)行的時候自動創(chuàng)建臨時數(shù)組,在過程執(zhí)行到返回之后自動釋放掉數(shù)組。這種數(shù)組被稱為自動數(shù)組(automaticarrays)。自動數(shù)組是局部的顯式結(jié)構(gòu)數(shù)組,它的下標由形式參數(shù)或者來自于模塊的數(shù)據(jù)指定。8精選課件ppt回顧一下不同的數(shù)組類型:1.帶有常數(shù)下標的顯式結(jié)構(gòu)數(shù)組2.形參數(shù)組(1)顯式結(jié)構(gòu)形參數(shù)組。9精選課件ppt(2)不定結(jié)構(gòu)形參數(shù)組。(3)不定大小的形參數(shù)組。3.自動數(shù)組4.預定義結(jié)構(gòu)數(shù)組10精選課件ppt9.5在Fortran2003過程中的可分配數(shù)組在Fortran2003的兩點改變:(1)可以使用可分配形式參數(shù)(2)函數(shù)可以返回可分配的值9.5.1可分配形式參數(shù)如果Fortran2003子程序有顯式接口,那么對于子程序來說,它的形式參數(shù)可以是可分配的。如果聲明形式參數(shù)為可分配的,那么用于調(diào)用子程序的相應實際參數(shù)也必須是可分配的。11精選課件ppt形式參數(shù)可以有INTENT屬性。INTENT屬性可能影響到子程序的操作:(1)如果可分配參數(shù)具有INTENT(IN)屬性,那么不允許在子程序中對這個數(shù)組分配或者釋放空間,數(shù)組中的值也不能被修改。(2)如果可分配參數(shù)具有INTENT(INOUT)屬性,那么當調(diào)用子程序的時候,將會傳遞給它相應的實際參數(shù)的狀態(tài)(是否可分配)和數(shù)據(jù)。數(shù)組可以在子程序的任何位置被釋放、重分配或者修改。形式參數(shù)的最終狀態(tài)(是否可分配)和數(shù)據(jù)將會返回給實際參數(shù)所在的調(diào)用程序。12精選課件ppt(3)如果可分配參數(shù)具有INTENT(OUT)屬性,那么調(diào)用程序中的實際參數(shù)將會在入口處被自動地釋放掉,實際數(shù)組中的所有數(shù)據(jù)都會丟失。子程序可以以任何方式來使用沒有分配的參數(shù),形式參數(shù)的最終狀態(tài)(是否可分配)和數(shù)據(jù)將會返回給實際參數(shù)所在的調(diào)用程序。例9-3:說明可分配數(shù)組形式參數(shù)用法的程序9.5.2可分配函數(shù)(AllocatableFunctions)Fortran2003函數(shù)的返回值允許有ALLOCATABLE屬性。在函數(shù)的入口不會分配返回變量。在函數(shù)內(nèi)部每當需要的時候,可以分配和釋放變量。但是返回之前必須分配和賦值。13精選課件ppt例9-4:說明可分配函數(shù)用法的程序。9.6純過程(pureprocedures)和逐元過程(elementalprocedures)9.6.1純過程純函數(shù)是沒有任何副作用的函數(shù)。即,它們不會修改輸入?yún)?shù),不會修改任何在函數(shù)外部可見的其他數(shù)據(jù)(如模塊中的數(shù)據(jù)),它的局部變量沒有SAVE屬性,不能在類型聲明語句中初始化局部變量(因為這一初始化隱含有SAVE屬性)。任何被純函數(shù)調(diào)用的過程也必須是純過程。在純函數(shù)中每個參數(shù)都必須定義為INTENT(IN),不能有任何外部文件I/O操作,不能包含STOP語句。14精選課件ppt在函數(shù)語句中增加一個PURE前綴就可以定義純函數(shù)。純子程序(puresubroutine)是沒有任何副作用的子程序。除了允許它們修改用INTENT(OUT)或者INTENT(INOUT)聲明的參數(shù)外,它們的限制和純函數(shù)是相同的。在SUBROUTINE語句中增加PURE前綴可以聲明純子程序。15精選課件ppt9.6.2逐元過程逐元函數(shù)(elementalfunctions)是為標量參數(shù)指定的函數(shù)。它也適用于數(shù)組參數(shù)。如果一個逐元函數(shù)的參數(shù)是標量,那么這個函數(shù)的返回值也是標量。如果函數(shù)的參數(shù)是數(shù)組,那么函數(shù)的返回值也是和輸入?yún)?shù)相同結(jié)構(gòu)的數(shù)組。用戶自定義的逐元函數(shù)必須是PURE函數(shù),且滿足:16精選課件ppt1.所有的形式參數(shù)都必須是標量,不能帶有POINTER屬性。2.函數(shù)的返回值也必須是標量,不能帶有POINTER屬性。3.除了作為某種內(nèi)置函數(shù)的參數(shù),形式參數(shù)不能用在類型聲明語句中。在函數(shù)語句中增加一個ELEMENTAL前綴可以聲明用戶自定義逐元函數(shù)。17精選課件ppt18精選課件ppt9.7內(nèi)部過程除了外部過程(externalprocedures)和模塊過程(moduleprocedures)。還有第三種過程--內(nèi)部過程(intemalprocedures)。內(nèi)部過程是完全包含在另一個被稱為宿主程序單元(hostprogramunit,host)的過程中。內(nèi)部過程和宿主一起編譯,且只能從宿主程序單元中調(diào)用它。像模塊過程一樣,內(nèi)部過程用CONTAINS語句來引入。內(nèi)部過程必須跟在宿主過程的所有執(zhí)行語句之后,而且必須用CONTAINS語句引入。19精選課件ppt為什么要使用內(nèi)部過程呢?在某些問題中,作為解決方案的一部分,有一些低級操作可能要重復執(zhí)行。經(jīng)定義內(nèi)部過程未完成這些操作,可以簡化這些低級操作。例9-5:內(nèi)部過程示例。20精選課件ppt內(nèi)部過程函數(shù)和外部過程有以下三方面的區(qū)別:(1)內(nèi)部過程只能被宿主過程調(diào)用,程序中的其他過程不能訪問它。(2)內(nèi)部過程的名字不能作為命令行參數(shù)傳遞給其他的過程。(3)內(nèi)部過程通過宿主關(guān)聯(lián)(hostassociat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論