FORTRAN90第6章子程序.ppt_第1頁
FORTRAN90第6章子程序.ppt_第2頁
FORTRAN90第6章子程序.ppt_第3頁
FORTRAN90第6章子程序.ppt_第4頁
FORTRAN90第6章子程序.ppt_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

FORTRAN90程序設計,計算機中心 2006.3,Visual Fortran 90 程序設計,6.1概述,6.5 子程序的嵌套調用,6.2 函數(shù)子程序,6.6 模塊,6.3 子例子程序,6.7 遞歸過程,6.4 虛實結合,6.8 其他部分,6.9 程序舉例,6.1 概述,主程序的結構:,單位定義 說明部分 輸入 計算或處理 輸出 END,引入子程序的目的:模塊化設計,所有功能都在主程序單位內完成,1、一個Fortran90程序主程序單元個數(shù):1個 2、子程序單元:0-n個 子程序單元被主程序單元或被其它子程序單元調用,甚至可以遞歸調用(調用本身),源程序的結構,最簡單的源程序的結構,子程序分類,1、函數(shù)子程序 分為內部函數(shù)子程序 外部函數(shù)子程序,2、子例行子程序 分為內部子例行子程序 外部子例行子程序,用于完成復雜的計算 返回 一個或多個值,用于完成復雜計算,返回一個或多個值,或用于其它數(shù)據(jù)處理,6.2外部函數(shù)子程序,單位定義語句 說明部分 程序體:具體計算 END語句,外部函數(shù)子程序的結構,FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL:X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END,PROGRAM NAIN READ*,A,B D=F(A,B,c) PRINT*,C,D END,兩單位相互獨立編譯 必須進行數(shù)據(jù)的傳遞,END FUNCTION 函數(shù)名,子程序END語句寫法,1、函數(shù)單位的結束標志 2、將控制返回到主調程序。,子程序END語句功能,函數(shù)單位定義語句的寫法,RECURSIVEFUNCTION 函數(shù)名(虛元表)RESULT(結果名) 1、函數(shù)子程序的第一行(注釋行除外)。 2、如果函數(shù)是遞歸的,則應以RECURSIVE開頭。 3、函數(shù)名為全局名:作用域為整個程序,不與已有的全局名同名。 各獨立程序單位的名字為全局名,4、主調程序與被調程序 兩個單位之間的數(shù)據(jù)傳遞,結果名:子程序的一個輸出 一般寫法:函數(shù)名_RESULT,用于保存一個計算結果,稱為函數(shù)值。且結果名有類型,必須在子程序說明部分說明類型。,虛元表:子程序的所有輸入,及除函數(shù)值之外的其他計算結果的輸出。,函數(shù)值返回給調用式,由實元傳遞給對應的虛元,虛元數(shù)據(jù)返回給對應的實元,FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL:X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END,PROGRAM NAIN READ*,A,B D=F(A,B,c) PRINT*,C,D END,主,子,5、虛元的含義:編寫子程序時沒有具體值(調用時或調用結束后才獲得數(shù)值),因此只是一個符號,表示輸入、輸出,名字可隨便用戶取。 6、虛元可以是變量名、數(shù)組名、過程名、指針等。 7、虛元的可選屬性INTENT: INTENT(IN):作為子程序的輸入(不得再改變其值) INTENT(OUT):子程序的輸出(對應的實元不能是表達式) INTENT(INOUT):子程序的輸入輸出 例:REAL,INTENT(IN):X,Y,子程序程序體的寫法,分為說明部分和執(zhí)行部分。 1、說明部分應對程序體內一切變量、數(shù)組等實體(包括虛元)作出說明,同時還要說明函數(shù)結果變量名,但不可說明函數(shù)名。 2、執(zhí)行部分中必須對函數(shù)結果名至少賦值一次。,FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL:X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END,兩單位獨立編譯,1、調用式是表達式, 調用結束后調用式得到函數(shù)值。 2、常見形式: Y=函數(shù)名(實元表) PRINT*,函數(shù)名(實元表) IF(函數(shù)名(實元表) 注意:實元與虛元一般必須在個數(shù)、次序、類型上保持一致;但實元與虛元名字可以不同。,函數(shù)子程序的調用,例1:編寫子程序求K=M*N,L=M-N,主程序輸入2,3,調用子程序,計算2*3及2-3。,Program main Implicit none Integer:M,N,K,L,F Read*,M,N K=F(M,N,L) PRINT*,K,L END,FUNCTION F(M,N,L)RESULT(F_RESULT) IMPLICIT NONE INTEGER:M,N,L,F_RESULT F_RESULT=M*N L=M-N END,注意:虛元名任意,但一般與實元一致。 檢查調用原則,程序體編寫規(guī)則。,不能省略說明 兩單位獨立編譯,PROGRAM MAIN IMPLICIT NONE REAL:X,Y,F,G,GF READ*,X F=X+SIN(30*3.1415926/180) G=GF(X,F) Y=F+G PRINT*,Y END,FUNCTION GF(X,F)RESULT(GF_RESULT) IMPLICIT NONE REAL:X,F,GF_RESULT IF(F0)THEN GF_RESULT=X+1 ELSEIF(F0)THEN GF_RESULT=X-1,ELSE GF_RESULT=0 ENDIF END,G,GF不能同名,練習: 計算函數(shù)Sinh(x)的值,當ex的通項值小于等于1E-6時停止。計算公式如下:,!主程序如下: Program main1 Real: MyExp,y,x Write(*,*) Enter x: Read(*,*)x Y=(MyExp(x)-MyExp(-x) /2.0 Write(*,)Y END PROGRAM,!函數(shù)子程序 Function MyExp(x) result (Exp_res) Real:Exp_res,x,s,T integer:N N=1; T=1; S=1 do T=T*X/N IF(ABS(T)=1E-5)EXIT S=S+T;N=N+1 end do Exp_res=S END FUNCTION,兩次調用,1、計算實元值(作為輸出的可預先無值) 2、虛實按地址結合:虛元按順序借用實元存儲單元 3、運行權至子程序的第一句,直至遇子程序的END語句返回到主調程序: 運行權返回至調用點 函數(shù)值返回給調用表達式 虛實脫離結合,但子程序運行時造成的實元值的改變將保留。,調用的執(zhí)行過程,子程序閱讀技巧:畫出虛實結合表,INTEGER:X,Y,Z,f Y=f(X,X) PRINT*,Y Z=f(y,x) PRINT*,Z END,FUNCTION f(X,Y)RESULT(f_RESULT) INTEGER:X,Y,f_RESULT,I I=1;X=3*I;Y=2*I f_RESULT=X+Y END,注意:一個變量只有一個存儲單元 按順序結合,不是按名結合,1、虛元為變量,實元為同類型的變量,開辟臨時單元存放常量或表達式的值 REAL:MN,X,S X=3.0 PRINT*,S(X,MN(X),X END FUNCTION S(A,C)RESULT( S_RESULT ) REAL:A,S,S_RESULT A=A+1;B=A*A S_RESULT=B-C END FUNCTION S FUNCTION MN(X)RESULT(MN_RESULT) MN_RESULT=3.0*X END FUNCTION MN,247.0 4.0,、虛元為變量,實元為常量、表達式:,6.3 外部子例行子程序,外部子例行子程序的結構,外部子例行子程序:用戶定義,用于完成復雜計算任務,返回一個或多個值,或用于其它數(shù)據(jù)處理,RecursiveSubroutine 子程序名(虛元表) 說明部分 程序體 End Subroutine 子程序名,與函數(shù)子程序的區(qū)別,1.沒有RESULT關鍵字。 2、虛元:負責子程序的全部輸入和全部輸出 3、無虛元時:SUBROUTINT 子程序名 或 SUBROUTINT 子程序名() 4、函數(shù)子程序的調用是表達式中。 而子例子程序必須通過CALL語句來調用。 CALL 子程序名(實元表),例子程序求K=M+N,L=M-N 主程序輸入2,3調用子程序求2+3,2-3的值。,Program main Implicit none Integer:M,N,K,L Read*,M,N CALL S(M,N,K,L) PRINT*,K,L END,Subroutien S(m,n,k,l) Implicit None Integer:m,n,k,l K=m+n L=m-n End,所有的輸入、輸出,1、計算實元值(作為輸出的可預先無值) 2、虛實按地址結合:虛元按順序借用實元存儲單元 3、運行至子程序的第一句,直至遇子程序的END語句返回到主調程序: 運行返回至CALL語句的下一個語句 虛實脫離結合

溫馨提示

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

評論

0/150

提交評論