




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、函數(shù)與子例行程序第1頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/概述使用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)可設(shè)計(jì)和編寫一些比較復(fù)雜的程序了。使用函數(shù)和子例行程序能編寫編寫結(jié)構(gòu)清晰、層次分明、短小簡(jiǎn)潔的好程序,是編寫高質(zhì)量、高水平、高效率程序的有效手段。通常在設(shè)計(jì)和編寫程序時(shí),會(huì)遇到以下三種情況:同一程序內(nèi)多次出現(xiàn)相同或相似的運(yùn)算或處理過程。不同程序內(nèi)多次出現(xiàn)相同或相似的運(yùn)算或處理過程。程序復(fù)雜。 概述 情況1 情況2 情況3 說明9.1 概述第九章 函數(shù)與子例行程序第2頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1
2、 概述/情況19.1 概述 在設(shè)計(jì)和編寫程序時(shí),程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。 例如:求五邊形ABCDE的面積問題,如圖9-1所示。 已知:五邊形5條邊長(zhǎng)為:a、b、c、d、e,兩條對(duì)角線為:f、g。五邊形面積計(jì)算問題變?yōu)?個(gè)三角形面積計(jì)算問題,3個(gè)三角形面積area1、area2、area3之和就是五邊形面積area。 三角形面積A求解公式:三邊長(zhǎng)為x,y,z。一般方法求解(程序)。函數(shù)方法求解(程序)。 ABCDEabcdefgarea1area2area3圖9-1 五邊形 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第3頁(yè),共45頁(yè),202
3、2年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況29.1 概述 在設(shè)計(jì)和編寫程序時(shí),不同程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。問題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū),地價(jià)為每平方米1000元,求這塊地的總價(jià)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。問題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱,平均每天消耗2水箱水,水價(jià)為每立方米8角錢,計(jì)算每天需支付的水費(fèi)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。用函數(shù)方法求解兩問題(程序)。 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第4
4、頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況39.1 概述 對(duì)于比較復(fù)雜的問題,設(shè)計(jì)和編寫程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法,使用這些方法可大大降低問題的復(fù)雜性,使復(fù)雜問題的求解變得相對(duì)容易。使用函數(shù)和子例行程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫大型、復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)(30個(gè)),對(duì)其排序,輸出排序結(jié)果數(shù)據(jù)。 一般方法求解(程序)。結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解(分層結(jié)構(gòu)圖、程序)。 對(duì)復(fù)雜問題逐層進(jìn)行任務(wù)分解,得到問題分層結(jié)構(gòu)圖,如圖9-2所示。根據(jù)分層結(jié)構(gòu)圖,采用
5、自頂向下或自底向上方法逐層設(shè)計(jì)和編寫程序。最頂層問題用主程序?qū)崿F(xiàn),其余層子問題用函數(shù)或子例行程序?qū)崿F(xiàn),最后將主程序和若干函數(shù)或子例行程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編寫主程序時(shí),可假定下一層子問題已經(jīng)通過函數(shù)或子例行程序?qū)崿F(xiàn),暫不考慮其具體實(shí)現(xiàn)內(nèi)容,假定:“輸入”子問題由子例行程序input(A)實(shí)現(xiàn),功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“排序”子問題由子例行程序sort(A)實(shí)現(xiàn),功能是對(duì)數(shù)組A進(jìn)行排序,排序結(jié)果在A中;“輸出”子問題由子例行程序output(A)實(shí)現(xiàn),功能是輸出數(shù)組A的內(nèi)容。 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第5頁(yè),共45頁(yè),2022年,5月20日,
6、19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/說明9.1 概述FORTRAN 90子程序,也稱過程,劃分為兩類:函數(shù)和子例行程序。函數(shù)是指產(chǎn)生一個(gè)運(yùn)算結(jié)果且通過操作數(shù)調(diào)用執(zhí)行的子程序。 如上面計(jì)算三角形面積的子程序area就是一個(gè)函數(shù)。子例行程序是指可產(chǎn)生多個(gè)處理結(jié)果且通過CALL語(yǔ)句調(diào)用執(zhí)行的子程序。 如上面完成輸入操作的子程序input(A)就是一個(gè)子例行程序。每類子程序又劃分為標(biāo)準(zhǔn)子程序和用戶自定義子程序。用戶自定義子程序又劃分為內(nèi)部子程序、外部子程序和模塊子程序。FORTRAN 90的子程序分類如圖9-3所示。 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第6頁(yè),
7、共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況1/程序19.1 概述ABCDEabcdefgarea1area2area3圖9-1 五邊形 在設(shè)計(jì)和編寫程序時(shí),程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。 例如:求五邊形ABCDE的面積問題,如圖9-1所示。 已知:五邊形5條邊長(zhǎng)為:a、b、c、d、e,兩條對(duì)角線為:f、g。五邊形面積計(jì)算問題變?yōu)?個(gè)三角形面積計(jì)算問題,3個(gè)三角形面積area1、area2、area3之和就是五邊形面積area。 三角形面積A求解公式:三邊長(zhǎng)為x,y,z。一般方法求解(程序)。函數(shù)方法求解(程序)
8、。 PROGRAM pentagonREAL a,b,c,d,e,f,gREAL area1,area2,area3,area,p,q!輸入五邊形5個(gè)邊長(zhǎng)和兩條對(duì)角線READ *,a,b,c,d,e,f,g!計(jì)算三角形ABE的面積area1p=(a+f+e)/2q=p*(p-a)*(p-f)*(p-e)area1=SQRT(q)!計(jì)算三角形BDE的面積area2p=(g+d+f)/2q=p*(p-g)*(p-d)*(p-f)area2=SQRT(q)!計(jì)算三角形BCD的面積area3p=(b+c+g)/2q=p*(p-b)*(p-c)*(p-g)area3=SQRT(q) !計(jì)算五邊形面積ar
9、eaarea=area1+area2+area3PRINT *,五邊形面積:,area END 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第7頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況1/程序29.1 概述ABCDEabcdefgarea1area2area3圖9-1 五邊形 在設(shè)計(jì)和編寫程序時(shí),程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。 例如:求五邊形ABCDE的面積問題,如圖9-1所示。 已知:五邊形5條邊長(zhǎng)為:a、b、c、d、e,兩條對(duì)角線為:f、g。五邊形面積計(jì)算問題變?yōu)?個(gè)三角形面積計(jì)算問題,
10、3個(gè)三角形面積area1、area2、area3之和就是五邊形面積area。 三角形面積A求解公式:三邊長(zhǎng)為x,y,z。一般方法求解(程序)。函數(shù)方法求解(程序)。 PROGRAM pentagonREAL a,b,c,d,e,f,gREAL area!輸入五邊形5條邊長(zhǎng)和兩條對(duì)角線READ *,a,b,c,d,e,f,g!計(jì)算五邊形面積areaarea=t_area(a,f,e)+t_area(g,d,f)+t_area(b,c,g)PRINT *,五邊形面積為:,areaCONTAINS!定義計(jì)算任意三角形面積函數(shù)t-areaFUNCTION t_area(a,b,c) REAL t_ar
11、ea,a,b,c,p,q p=(a+b+c)/2 q=p*(p-a)*(p-b)*(p-c) t_area=SQRT(q)END FUNCTION t_areaEND計(jì)算任意三角形 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第8頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況2/程序19.1 概述 在設(shè)計(jì)和編寫程序時(shí),不同程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。問題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū),地價(jià)為每平方米1000元,求這塊地的總價(jià)。 求解問題的核心是計(jì)算三角形面積。用一般方法
12、求解(程序)。問題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱,平均每天消耗2水箱水,水價(jià)為每立方米8角錢,計(jì)算每天需支付的水費(fèi)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。用函數(shù)方法求解兩問題(程序)。PROGRAM total_pricesREAL a,b,c,area,p,q,t_prices!輸入三角形邊長(zhǎng)a,b,cREAD *,a,b,c!計(jì)算三角形面積areap=(a+b+c)/2q=p*(p-a)*(p-b)*(p-c)area=SQRT(q)!計(jì)算總價(jià)t_pricest_prices=area*1000PRINT *,地塊總價(jià)為:,t_pricesEND 概述 情況1 情況
13、2 情況3 說明第九章 函數(shù)與子例行程序第9頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況2/程序29.1 概述 在設(shè)計(jì)和編寫程序時(shí),不同程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。問題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū),地價(jià)為每平方米1000元,求這塊地的總價(jià)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。問題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱,平均每天消耗2水箱水,水價(jià)為每立方米8角錢,計(jì)算每天需支付的水費(fèi)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。用函數(shù)方法求解兩問題(
14、程序)。PROGRAM water_pricesREAL a,b,c,h,area,cubage,p,q,w_prices!輸入三棱臺(tái)底面三角形邊長(zhǎng)a,b,c和三棱臺(tái)高h(yuǎn)READ *,a,b,c,h!計(jì)算三角形面積areap=(a+b+c)/2q=p*(p-a)*(p-b)*(p-c)area=SQRT(q)!計(jì)算三棱臺(tái)容積cubagecubage=area*h!計(jì)算水價(jià)w_pricesPRINT *,每天需支付水價(jià)為:,t_pricesEND 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第10頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心 概述
15、情況1 情況2 情況3 說明9.1 概述/情況2/程序39.1 概述 在設(shè)計(jì)和編寫程序時(shí),不同程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過程(程序代碼)。問題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū),地價(jià)為每平方米1000元,求這塊地的總價(jià)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。問題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱,平均每天消耗2水箱水,水價(jià)為每立方米8角錢,計(jì)算每天需支付的水費(fèi)。 求解問題的核心是計(jì)算三角形面積。用一般方法求解(程序)。用函數(shù)方法求解兩問題(程序)。!使用函數(shù)求解問題一程序,area為外部函數(shù)PROGRAM total_pricesE
16、XTERNAL area !聲明area為外部函數(shù)REAL a,b,c,t_pricesREAD *,a,b,c !輸入三角形邊長(zhǎng)a,b,ct_prices=area(a,b,c)*1000 !計(jì)算總價(jià)t_pricesPRINT *,地塊總價(jià)為:,t_pricesEND!使用函數(shù)求解問題二程序,area為外部函數(shù)PROGRAM water_pricesEXTERNAL area !聲明area為外部函數(shù)REAL a,b,c,h,cubage,w_pricesREAD *,a,b,c,h !輸入棱臺(tái)底面三角形邊長(zhǎng)a,b,c和臺(tái)高h(yuǎn)cubage=area(a,b,c)*h !計(jì)算三棱臺(tái)容積cuba
17、gew_prices=cubage*0.8*2 !計(jì)算水價(jià)w_pricesPRINT *,每天需支付水價(jià)為:,w_prices END!定義外部函數(shù)areaFUNCTION area(x,y,z) REAL area,x,y,z,p,q !計(jì)算三角形面積area p=(x+y+z)/2 q=p*(p-x)*(p-y)*(p-z) area=SQRT(q)END FUNCTION area 第九章 函數(shù)與子例行程序第11頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況3/程序19.1 概述 對(duì)于比較復(fù)雜的問題,設(shè)計(jì)和編寫程序需要采用科學(xué)的程序設(shè)計(jì)方
18、法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法,使用這些方法可大大降低問題的復(fù)雜性,使復(fù)雜問題的求解變得相對(duì)容易。使用函數(shù)和子例行程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫大型、復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)(30個(gè)),對(duì)其排序,輸出排序結(jié)果數(shù)據(jù)。 一般方法求解(程序)。結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解(分層結(jié)構(gòu)圖、程序)。 對(duì)復(fù)雜問題逐層進(jìn)行任務(wù)分解,得到問題分層結(jié)構(gòu)圖,如圖9-2所示。根據(jù)分層結(jié)構(gòu)圖,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫程序。最頂層問題用主程序?qū)崿F(xiàn),其余層子問題用函數(shù)或子例行程序?qū)崿F(xiàn),最后將主程序和若干函數(shù)或子例行程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編
19、寫主程序時(shí),可假定下一層子問題已經(jīng)通過函數(shù)或子例行程序?qū)崿F(xiàn),暫不考慮其具體實(shí)現(xiàn)內(nèi)容,假定:“輸入”子問題由子例行程序input(A)實(shí)現(xiàn),功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“排序”子問題由子例行程序sort(A)實(shí)現(xiàn),功能是對(duì)數(shù)組A進(jìn)行排序,排序結(jié)果在A中;“輸出”子問題由子例行程序output(A)實(shí)現(xiàn),功能是輸出數(shù)組A的內(nèi)容。 PROGRAM sort PARAMETER(N=30) REAL dat(N) DO I=1,N !輸入N個(gè)數(shù)據(jù) READ *,dat(I) END DO I=1,N-1 !對(duì)N個(gè)原始數(shù)據(jù)進(jìn)行排序 DO J=I+1,N IF (dat(J)dat(I) THEN t=
20、dat(J);dat(J)=dat(I);dat(I)=t ENDIF ENDDO ENDDO DO I=1,N !輸出排序后的N個(gè)數(shù)據(jù) PRINT *,dat(I) END END END 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第12頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.1 概述/情況3/結(jié)構(gòu)圖9.1 概述 對(duì)于比較復(fù)雜的問題,設(shè)計(jì)和編寫程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法,使用這些方法可大大降低問題的復(fù)雜性,使復(fù)雜問題的求解變得相對(duì)容易。使用函數(shù)和子例行程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)
21、方法設(shè)計(jì)和編寫大型、復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)(30個(gè)),對(duì)其排序,輸出排序結(jié)果數(shù)據(jù)。 一般方法求解(程序)。結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解(分層結(jié)構(gòu)圖、程序)。 對(duì)復(fù)雜問題逐層進(jìn)行任務(wù)分解,得到問題分層結(jié)構(gòu)圖,如圖9-2所示。根據(jù)分層結(jié)構(gòu)圖,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫程序。最頂層問題用主程序?qū)崿F(xiàn),其余層子問題用函數(shù)或子例行程序?qū)崿F(xiàn),最后將主程序和若干函數(shù)或子例行程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編寫主程序時(shí),可假定下一層子問題已經(jīng)通過函數(shù)或子例行程序?qū)崿F(xiàn),暫不考慮其具體實(shí)現(xiàn)內(nèi)容,假定:“輸入”子問題由子例行程序input(A)實(shí)現(xiàn),功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A
22、;“排序”子問題由子例行程序sort(A)實(shí)現(xiàn),功能是對(duì)數(shù)組A進(jìn)行排序,排序結(jié)果在A中;“輸出”子問題由子例行程序output(A)實(shí)現(xiàn),功能是輸出數(shù)組A的內(nèi)容。 問題:將測(cè)試數(shù)據(jù)排序并輸出子問題:排序子問題:輸入子問題:輸出自頂向下自底向上圖9-2 任務(wù)分解及分層結(jié)構(gòu)圖 概述 情況1 情況2 情況3 說明第九章 函數(shù)與子例行程序第13頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心第九章 函數(shù)與子例行程序 概述 情況1 情況2 情況3 說明9.1 概述/情況3/程序29.1 概述 對(duì)于比較復(fù)雜的問題,設(shè)計(jì)和編寫程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)
23、計(jì)方法是常用的程序設(shè)計(jì)方法,使用這些方法可大大降低問題的復(fù)雜性,使復(fù)雜問題的求解變得相對(duì)容易。使用函數(shù)和子例行程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫大型、復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)(30個(gè)),對(duì)其排序,輸出排序結(jié)果數(shù)據(jù)。 一般方法求解(程序)。結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解(分層結(jié)構(gòu)圖、程序)。 對(duì)復(fù)雜問題逐層進(jìn)行任務(wù)分解,得到問題分層結(jié)構(gòu)圖,如圖9-2所示。根據(jù)分層結(jié)構(gòu)圖,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫程序。最頂層問題用主程序?qū)崿F(xiàn),其余層子問題用函數(shù)或子例行程序?qū)崿F(xiàn),最后將主程序和若干函數(shù)或子例行程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編寫主程序時(shí),可假定下一層
24、子問題已經(jīng)通過函數(shù)或子例行程序?qū)崿F(xiàn),暫不考慮其具體實(shí)現(xiàn)內(nèi)容,假定:“輸入”子問題由子例行程序input(A)實(shí)現(xiàn),功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“排序”子問題由子例行程序sort(A)實(shí)現(xiàn),功能是對(duì)數(shù)組A進(jìn)行排序,排序結(jié)果在A中;“輸出”子問題由子例行程序output(A)實(shí)現(xiàn),功能是輸出數(shù)組A的內(nèi)容。 !主程序PROGRAM main PARAMETER(N=30) REAL dat(N) CALL input(dat) !輸入N個(gè)數(shù)據(jù) CALL sort(dat) !對(duì)N個(gè)原始數(shù)據(jù)進(jìn)行排序 CALL output(dat) !輸出排序后的N個(gè)數(shù)據(jù)CONTAINSEND!輸入子例行程序SUB
25、ROUTINE input(A) REAL A(N) DO I=1,N READ *,A(I) ENDDOEND SUBROUTINE input!排序子例行程序SUBROUTINE sort(A) REAL A(N),t DO I=1,N-1 DO J=I+1,N IF (A(J)A(I) THEN t=A(J);A(J)=A(I);A(I)=t ENDIF ENDDO ENDDOEND SUBROUTINE sort !輸出子例行程序SUBROUTINE output(A) REAL A(N) DO I=1,N PRINT *,A(I) ENDDOEND SUBROUTINE output
26、第14頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心 概述 情況1 情況2 情況3 說明9.1 概述/說明/分類圖示9.1 概述FORTRAN 90子程序,也稱過程,劃分為兩類:函數(shù)和子例行程序。函數(shù)是指產(chǎn)生一個(gè)運(yùn)算結(jié)果且通過操作數(shù)調(diào)用執(zhí)行的子程序。 如上面計(jì)算三角形面積的子程序area就是一個(gè)函數(shù)。子例行程序是指可產(chǎn)生多個(gè)處理結(jié)果且通過CALL語(yǔ)句調(diào)用執(zhí)行的子程序。 如上面完成輸入操作的子程序input(A)就是一個(gè)子例行程序。每類子程序又劃分為標(biāo)準(zhǔn)子程序和用戶自定義子程序。用戶自定義子程序又劃分為內(nèi)部子程序、外部子程序和模塊子程序。FORTRAN 90的子程
27、序分類如圖9-3所示。 FORTRAN 90 子程序子例行程序標(biāo)準(zhǔn)子例行程序用戶自定義子例行程序內(nèi)部子例行程序外部子例行程序模塊子例行程序函數(shù)標(biāo)準(zhǔn)函數(shù)用戶自定義函數(shù)內(nèi)部函數(shù)外部函數(shù)模塊函數(shù)語(yǔ)句函數(shù)標(biāo)準(zhǔn)子程序內(nèi)部子程序外部子程序模塊子程序標(biāo)準(zhǔn)子程序內(nèi)部子程序外部子程序模塊子程序圖9-3 FORTRAN 90子程序分類第九章 函數(shù)與子例行程序第15頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.2 標(biāo)準(zhǔn)子程序/概述標(biāo)準(zhǔn)子程序用于求解是現(xiàn)實(shí)生活中比較常見的問題。 如:求絕對(duì)值、三角函數(shù)值、指數(shù)值、獲取當(dāng)前系統(tǒng)日期、獲取隨機(jī)數(shù)等。標(biāo)準(zhǔn)子程序的使用為程序設(shè)計(jì)帶來了極大的
28、方便,讀者應(yīng)更多地了解、熟悉和掌握標(biāo)準(zhǔn)子程序的使用。為了提高子程序的執(zhí)行效率,子程序一般用執(zhí)行效率比較高的匯編語(yǔ)言編寫,并匯編成機(jī)器語(yǔ)言目標(biāo)代碼,它們被集中保存在一個(gè)子程序庫(kù)中,供用戶直接使用。 概述 標(biāo)準(zhǔn)函數(shù) 注意事項(xiàng)1 標(biāo)準(zhǔn)子例行程序 注意事項(xiàng)29.2 標(biāo)準(zhǔn)子程序第九章 函數(shù)與子例行程序第16頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.2 標(biāo)準(zhǔn)子程序/標(biāo)準(zhǔn)函數(shù) 標(biāo)準(zhǔn)函數(shù)有時(shí)稱系統(tǒng)函數(shù)、內(nèi)部函數(shù),FORTRAN 90的編譯系統(tǒng)提供130多個(gè)標(biāo)準(zhǔn)函數(shù)。有以下幾大類: 三角函數(shù)計(jì)算數(shù)值計(jì)算數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型查詢隨機(jī)數(shù)生成日期時(shí)間處理字符串處理地址計(jì)算位運(yùn)算
29、9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)函數(shù)可作為表達(dá)式中操作數(shù)進(jìn)行調(diào)用,并參與表達(dá)式運(yùn)算。調(diào)用標(biāo)準(zhǔn)函數(shù)時(shí),只需寫出函數(shù)名,后面括號(hào)中給出符合要求的所要計(jì)算的變?cè)?。例如:已?x=3.0,y=4.0,計(jì)算表達(dá)式2.5*SQRT(x*x+y*y)+ABS(-8.5*3),結(jié)果為38.0。 概述 標(biāo)準(zhǔn)函數(shù) 注意事項(xiàng)1 標(biāo)準(zhǔn)子例行程序 注意事項(xiàng)2第九章 函數(shù)與子例行程序第17頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.2 標(biāo)準(zhǔn)子程序/注意事項(xiàng)1使用標(biāo)準(zhǔn)函數(shù)需要注意以下幾點(diǎn): 標(biāo)準(zhǔn)函數(shù)對(duì)變?cè)膫€(gè)數(shù)和類型有明確的規(guī)定和要求。要求有一個(gè)變?cè)?如函數(shù)SIN(x),要求兩個(gè)變?cè)?如函數(shù)M
30、OD(m,n),要求多個(gè)變?cè)?如函數(shù)MAX(x1,x2,xn)。要求變?cè)愋蜑檎?如函數(shù)MOD(m,n),要求變?cè)愋蜑閷?shí)型,如SIND(x),要求變?cè)愋蜑檎?、?shí)型、雙精度、復(fù)型等多種類型,如ABS(x)。標(biāo)準(zhǔn)函數(shù)的函數(shù)值只有一個(gè),且有明確的類型規(guī)定。多數(shù)函數(shù)函數(shù)值類型與變?cè)愋拖嗤?如函數(shù)SQRT(9.0D0)=3.0D0,類型都為雙精度,也有函數(shù)函數(shù)值類型與變?cè)愋筒幌嗤?如函數(shù)INT(8.5)=8,變?cè)愋蜑閷?shí)型,而函數(shù)值類型為整型。對(duì)于“弧度”和“角度”單位,使用不同的三角函數(shù)。函數(shù)變?cè)仨殞懺诤瘮?shù)名后括號(hào)內(nèi),變?cè)墒浅?shù)、變量或表達(dá)式,少數(shù)標(biāo)準(zhǔn)函數(shù)變?cè)笞兞?如LOC(v)I
31、MPLICIT語(yǔ)句不能改變一個(gè)標(biāo)準(zhǔn)函數(shù)的類型。9.2 標(biāo)準(zhǔn)子程序 概述 標(biāo)準(zhǔn)函數(shù) 注意事項(xiàng)1 標(biāo)準(zhǔn)子例行程序 注意事項(xiàng)2第九章 函數(shù)與子例行程序第18頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.2 標(biāo)準(zhǔn)子程序/標(biāo)準(zhǔn)子例行程序 標(biāo)準(zhǔn)子例行程序也稱系統(tǒng)子例行程序,FORTRAN 90的編譯系統(tǒng)提供20多個(gè)標(biāo)準(zhǔn)子例行程序。 有以下幾大類: 程序控制(EXIT、SLEEPQQ)文件管理(PACKTIMEQQ、UNPACKTIMEQQ)隨機(jī)數(shù)生成(RANDOM、RANDOM_NUMBER)日期處理(DATE、GETDAT、TIME、GETTIM)數(shù)組處理(SUM、S
32、ORTQQ、COUNT、SIZE)9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子例行程序可作為語(yǔ)句進(jìn)行調(diào)用執(zhí)行,不通過子程序名返回結(jié)果,只通過變?cè)蛲饨绶祷亟Y(jié)果。調(diào)用標(biāo)準(zhǔn)子例行程序時(shí),需通過關(guān)鍵子CALL完成,其后給出被調(diào)用標(biāo)準(zhǔn)子例行程序名,并在后面的括號(hào)中給出符合要求的變?cè)?一般為變量、數(shù)組、結(jié)構(gòu)體,也可為常數(shù)或表達(dá)式)。例如:CALL GETDAT( year,month,day),獲取當(dāng)前系統(tǒng)日期,年、月和日數(shù)據(jù),通過變?cè)獃ear、month和day返回。 概述 標(biāo)準(zhǔn)函數(shù) 注意事項(xiàng)1 標(biāo)準(zhǔn)子例行程序 注意事項(xiàng)2第九章 函數(shù)與子例行程序第19頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大
33、學(xué)計(jì)算中心9.2 標(biāo)準(zhǔn)子程序/注意事項(xiàng)2 使用標(biāo)準(zhǔn)子例行程序要注意以下幾點(diǎn):標(biāo)準(zhǔn)子例行程序?qū)ψ冊(cè)膫€(gè)數(shù)和類型有明確的規(guī)定和要求??捎幸粋€(gè)變?cè)⒍€(gè)、多個(gè)變?cè)?也可以沒有變?cè)W冊(cè)愋涂梢允钦?、?shí)型、復(fù)型、字符型、邏輯型、數(shù)組、派生類型、指針等任意類型。標(biāo)準(zhǔn)子例行程序可以產(chǎn)生多個(gè)結(jié)果數(shù)據(jù),通過變?cè)祷卣{(diào)用程序,也可不產(chǎn)生返回?cái)?shù)據(jù),而是產(chǎn)生某種操作,如輸出一批數(shù)據(jù)。如果標(biāo)準(zhǔn)子例行程序調(diào)用時(shí)沒有變?cè)?則子程序名字后的一對(duì)括號(hào)可省略。如CALL EXIT()和CALL EXIT是等價(jià)的。標(biāo)準(zhǔn)子例行程序的變?cè)仨殞懺谧映绦蛎竺娴睦ㄌ?hào)內(nèi),一般變?cè)獮樽兞?少數(shù)變?cè)扇〕?shù)或表達(dá)式。標(biāo)準(zhǔn)子例行程序在程序中
34、直接調(diào)用執(zhí)行,無需用USE語(yǔ)句聲明。9.2 標(biāo)準(zhǔn)子程序 概述 標(biāo)準(zhǔn)函數(shù) 注意事項(xiàng)1 標(biāo)準(zhǔn)子例行程序 注意事項(xiàng)2第九章 函數(shù)與子例行程序第20頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/概述 概述 定義 調(diào)用 說明 示例1 示例2 示例39.3 語(yǔ)句函數(shù) 在求解實(shí)際問題時(shí),特別是在求解有關(guān)科學(xué)與工程數(shù)值計(jì)算問題時(shí),常常會(huì)遇到計(jì)算一些數(shù)學(xué)表達(dá)式,如: 這些數(shù)學(xué)表達(dá)式在程序中多次出現(xiàn),需要重復(fù)書寫它們,不但浪費(fèi)了寶貴的時(shí)間和精力,而且也容易出錯(cuò)。任何數(shù)學(xué)表達(dá)式實(shí)際上都可表示成一元、二元或多元函數(shù)關(guān)系,即F(x1,x2,xn),這些函數(shù)關(guān)系如果沒有對(duì)
35、應(yīng)的標(biāo)準(zhǔn)函數(shù),則需要用戶設(shè)法定義新的函數(shù)來實(shí)現(xiàn)它們。 FORTRAN 90提供了語(yǔ)句函數(shù)定義功能來定義一些簡(jiǎn)單的函數(shù),用于實(shí)現(xiàn)有關(guān)的函數(shù)關(guān)系。用戶自定義語(yǔ)句函數(shù)其使用方法與標(biāo)準(zhǔn)函數(shù)相同,可以作為操作數(shù)在表達(dá)式中調(diào)用。 (示例) 第九章 函數(shù)與子例行程序第21頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/定義9.3 語(yǔ)句函數(shù) 一般形式為:F(x1,x2,xn) F為函數(shù)名,x1,x2,xn為虛擬變?cè)?或稱形式參數(shù)或啞元)。 要求:不能重名,只能為普通變量名。類型可用隱含規(guī)則定義,也可用類型聲明語(yǔ)句定義,但須放在該語(yǔ)句函數(shù)定義語(yǔ)句之前。 下面程序通
36、過語(yǔ)句函數(shù)實(shí)現(xiàn)例9.1問題。 PROGRAM F92 F(x1,x2,x3)=3.14159*(x1+x2/60.0+x3/3600.0)/180.0 A=F(36.0,43.0,27.0) B=F(15.0,24.0,0.0) C=F(8.0,16.0,54.0) S=COS(A)*2-4*SIN(B)*TAN(C) WRITE (*,*) A,B,C,S END 概述 定義 調(diào)用 說明 示例1 示例2 示例3第九章 函數(shù)與子例行程序第22頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/調(diào)用9.3 語(yǔ)句函數(shù) 調(diào)用一般形式為: () 說明:同語(yǔ)句
37、函數(shù)定義語(yǔ)句中的語(yǔ)句函數(shù)名相同。為實(shí)在參數(shù)或?qū)崊?其個(gè)數(shù)、次序和類型應(yīng)與定義語(yǔ)句中形式參數(shù)一致。實(shí)在參數(shù)之間用逗號(hào)分隔。實(shí)參可是常數(shù)、變量、數(shù)組元素、函數(shù)名、表達(dá)式。 當(dāng)調(diào)用語(yǔ)句函數(shù)時(shí),其執(zhí)行過程如下:首先計(jì)算實(shí)參表達(dá)式的值;將實(shí)參值賦予對(duì)應(yīng)的形參,即形實(shí)參結(jié)合用被賦值的形參對(duì)語(yǔ)句函數(shù)定義語(yǔ)句中的表達(dá)式進(jìn)行求值運(yùn)算;將運(yùn)算后的表達(dá)式值轉(zhuǎn)換為函數(shù)名類型,并將其按函數(shù)值返回到調(diào)用位置。 概述 定義 調(diào)用 說明 示例1 示例2 示例3第九章 函數(shù)與子例行程序第23頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/說明9.3 語(yǔ)句函數(shù) 使用語(yǔ)句函數(shù)的一些規(guī)
38、定: 一個(gè)語(yǔ)句函數(shù)只能在一行內(nèi)定義。如果太長(zhǎng),可續(xù)行書寫。語(yǔ)句函數(shù)只有一個(gè)函數(shù)返回值。定義語(yǔ)句函數(shù),右端表達(dá)式中可調(diào)用已定義語(yǔ)句函數(shù)或標(biāo)準(zhǔn)函數(shù),但不能調(diào)用該語(yǔ)句函數(shù)自己,即不能遞歸調(diào)用。 H(x1,x2)=x1*x1+x2*x2 F(x1,x2)=SQRT(H(x1,x2)語(yǔ)句函數(shù)的形式參數(shù)不允許為數(shù)組或下標(biāo)變量。 DIMENSION A(10),B(2,3) F1(x,y)=x+A(1)+y-B(1,2) !表達(dá)式中可以引用數(shù)組元素 F(C)=C+100語(yǔ)句函數(shù)名屬于局部變量,只能在定義它的程序單位中引用。語(yǔ)句函數(shù)可無形參,稱為無參函數(shù),圓括號(hào)不能省略,即:F()。 概述 定義 調(diào)用 說明
39、示例1 示例2 示例3第九章 函數(shù)與子例行程序第24頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/示例19.3 語(yǔ)句函數(shù) 例9.3計(jì)算空間一點(diǎn)P(x,y,z)的方向弦,其計(jì)算公式如下:其中:、為點(diǎn)P到原點(diǎn)直線與坐標(biāo)軸x、y、z的夾角。PROGRAM F931F(a,b,c,r)=rSQRT(a*a+b*b+c*c)WRITE(*,*) 輸入 x,y,z:READ(*,*) x,y,zDAF(x,y,z,x)DBF(x,y,z,y)DGF(x,y,z,z)WRITE(*,*) DA,DB,DGEND 概述 定義 調(diào)用 說明 示例1 示例2 示例3
40、第九章 函數(shù)與子例行程序第25頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/示例29.3 語(yǔ)句函數(shù) 例9.4已知=30,=38,=58,編寫程序求:PROGRAM F94PARAMETER(pi=3.1415926)F(A)1.0+SIN(A*pi/180)+SIN(A*pi/180)*2F1(A)F(A)/(1.0+COS(A*pi/180)WRITE(*,*) 輸入, 角度(度數(shù)):READ(*,*) alfa,bata,gamay=F1(alfa)*SQRT(F1(bata)-F1(gama)WRITE(*,10) INT(alfa),I
41、NT(bata),INT(gama),y10 FORMAT(1x, y(,I2, , ,I2, , ,I2, )=,F10.7)END 概述 定義 調(diào)用 說明 示例1 示例2 示例3第九章 函數(shù)與子例行程序第26頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/示例39.3 語(yǔ)句函數(shù) 例9.5試用下列公式編寫求面積的程序。 其中:PROGRAM F95f(x)EXP(-x*x)READ(*,*)A,B,Nh=(B-A)/N;sum=(f(A)+f(B)/2.0;x=A+hDO i=1, N-1 sumsum+f(x);x=x+hENDDOsum=s
42、um*hWRITE(*,*) A,B,N,sumEND 概述 定義 調(diào)用 說明 示例1 示例2 示例3第九章 函數(shù)與子例行程序第27頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.3 語(yǔ)句函數(shù)/概述/示例 概述 定義 調(diào)用 說明 示例1 示例2 示例39.3 語(yǔ)句函數(shù) 在求解實(shí)際問題時(shí),特別是在求解有關(guān)科學(xué)與工程數(shù)值計(jì)算問題時(shí),常常會(huì)遇到計(jì)算一些數(shù)學(xué)表達(dá)式,如: 這些數(shù)學(xué)表達(dá)式在程序中多次出現(xiàn),需要重復(fù)書寫它們,不但浪費(fèi)了寶貴的時(shí)間和精力,而且也容易出錯(cuò)。任何數(shù)學(xué)表達(dá)式實(shí)際上都可表示成一元、二元或多元函數(shù)關(guān)系,即F(x1,x2,xn),這些函數(shù)關(guān)系如果沒有對(duì)應(yīng)
43、的標(biāo)準(zhǔn)函數(shù),則需要用戶設(shè)法定義新的函數(shù)來實(shí)現(xiàn)它們。 FORTRAN 90提供了語(yǔ)句函數(shù)定義功能來定義一些簡(jiǎn)單的函數(shù),用于實(shí)現(xiàn)有關(guān)的函數(shù)關(guān)系。用戶自定義語(yǔ)句函數(shù)其使用方法與標(biāo)準(zhǔn)函數(shù)相同,可以作為操作數(shù)在表達(dá)式中調(diào)用。 (示例) 例9.1已知角度A364327,B1524,C81654,計(jì)算 : Scos2A-4sinBtgC角度Dnx1x2 x3的弧度轉(zhuǎn)換公式: PROGRAM F91p13.14159/180.0A=p1*(36.0+43.0/60+27.0/3600.0)B=p1*(15.0+24.0/60)C=p1*(8.0+16.0/60+54.0/3600)S=COS(A)*2-4.0
44、*SIN(B)*TAN(C)WRITE (*,10) A,B,C,S10 FORMAT(A=,F10.7,B=,F10.7,C=,F10.7,/S=,F10.7)END第九章 函數(shù)與子例行程序第28頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/概述9.4 內(nèi)部子程序FORTRAN90提供標(biāo)準(zhǔn)子程序、語(yǔ)句函數(shù)、內(nèi)部子程序(內(nèi)部函數(shù)、內(nèi)部子例行程序)等。內(nèi)部子程序是包含在程序 單元CONTAINS結(jié)構(gòu)中用戶 自定義的函數(shù)和子例行程 序。只有定義它們的程序 單元才能調(diào)用它們。 PROGRAM mainINTEGER add PRINT*,add(5
45、,3)END PROGRAM mainFUNCTION add(m,n) INTEGER m,n,add add=m+nEND FUNCTION addFUNCTION add(m,n) INTEGER m,n,add add=m+nEND FUNCTION addPROGRAM mainINTEGER add INTEGER*,add(5,3)END PROGRAM mainPROGRAM main PRINT*,add(5,3)CONTAINS FUNCTION add(m,n) INTEGER m,n,add add=m+n END FUNCTION addEND PROGRAM mai
46、n 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第29頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/內(nèi)部函數(shù)定義內(nèi)部函數(shù)子程序,簡(jiǎn)稱內(nèi)部函數(shù),放在CONTAINS結(jié)構(gòu)中。內(nèi)部函數(shù)只產(chǎn)生一個(gè)結(jié)果,由函數(shù)名返回。內(nèi)部函數(shù)定義一般格式: FUNCTION () END FUNCTION 例如: REAL FUNCTION add(m,n) INTEGER m,n add=m+n END FUNCTION add(示例1)(示例2)FUNCTION add(m
47、,n) INTEGER m,n,add add=m+nEND FUNCTION add9.4 內(nèi)部子程序 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第30頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/內(nèi)部函數(shù)說明關(guān)鍵字FUNCTION前面可指定內(nèi)部數(shù)據(jù)類型,如:INTEGER、REAL、COMPLEX、CHARACTER或LOGICAL等。如果沒指定,則按I-N規(guī)則或類型聲明語(yǔ)句聲明類型。稱為啞元表, 無形參,則圓括號(hào)不能省略。函數(shù)體位于FUNCTI
48、ON語(yǔ)句和END FUNCTION語(yǔ)句之間。說明部分同主程序,說明形參、變量等類型。執(zhí)行部分同主程序,進(jìn)行數(shù)據(jù)處理。例:計(jì)算X=2.5時(shí)多項(xiàng)式值 P5(x)5.0 x5+2.5x4+4.4x+3.5 P3(x)3.4x3+1.5x2+1.76x+3.5 調(diào)用計(jì)算 pnx(5,A,2.5) pnx(3,A,2.5)FUNCTION pnx(N,A,X)INTEGER NREAL A(1:N+1),X,pnxS=A(1)DO I=2,N+1 S=S*X+A(I) ENDDOpnx=S END FUNCTION 9.4 內(nèi)部子程序 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義
49、 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第31頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/內(nèi)部函數(shù)調(diào)用調(diào)用格式要求同標(biāo)準(zhǔn)函數(shù)、語(yǔ)句函數(shù)。作為操作數(shù)用。一般格式:F(a1,a2,an)F為函數(shù)名,ai為實(shí)在參數(shù)。 實(shí)在參數(shù)可是表達(dá)式、普通變量、下標(biāo)變量、數(shù)組名、內(nèi)部函數(shù)引用、外部函數(shù)引用以及外部函數(shù)名和子程序名等。如果定義內(nèi)部函數(shù)無形式參數(shù),其引用形式為:F( )。內(nèi)部函數(shù)執(zhí)行過程:若實(shí)在參數(shù)為表達(dá)式,則先對(duì)表達(dá)式求值。實(shí)在參數(shù)與相應(yīng)的形式參數(shù)結(jié)合,將實(shí)參值傳遞給對(duì)應(yīng)形參。經(jīng)過形實(shí)結(jié)合,形式參數(shù)獲得了所需要的值,然
50、后,立即執(zhí)行內(nèi)部函數(shù)體。在執(zhí)行函數(shù)體的過程中,若遇到RETURN語(yǔ)句或END FUNCTION語(yǔ)句,則控制返回到引用的地方,并代回所計(jì)算的函數(shù)值參加表達(dá)式的計(jì)算。(示例)9.4 內(nèi)部子程序 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第32頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/內(nèi)部子例行程序定義9.4 內(nèi)部子程序內(nèi)部子例行程序,簡(jiǎn)稱內(nèi)部子程序,也稱內(nèi)部過程,放在CONTAINS結(jié)構(gòu)中。內(nèi)部子例行程序可產(chǎn)生多個(gè)結(jié)果,由參數(shù)返回。內(nèi)部子例行程序定義
51、一般格式: SUBROUTINE () END SUBROUTINE 例如: SUBROUTINE swap(x,y) INTEGER temp,x,y (示例1) temp=x;x=y;y=temp (示例2) END SUBROUTINE swap (示例3) 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第33頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/內(nèi)部子例行程序說明9.4 內(nèi)部子程序子例行程序不指定數(shù)據(jù)類型,子程序名不返回值。稱為啞元表,
52、無形參,則圓括號(hào)可省略。子程序體位于SUBROUTINE和END SUBROUTINE語(yǔ)句之間。說明部分同主程序,說明函數(shù)名、形參、變量等類型。執(zhí)行部分同主程序,進(jìn)行數(shù)值運(yùn)算或數(shù)據(jù)處理。例:計(jì)算X=2.5時(shí)多項(xiàng)式值 P5(x)5.0 x5+2.5x4+4.4x+3.5 P3(x)3.4x3+1.5x2+1.76x+3.5 調(diào)用計(jì)算 CALL pnf(5,A,2.5,pnx) PRINT*,pnx CALL pnf(3,A,2.5,pnx) PRINT*,pnxSUBROUTINE pnf(N,A,X,pnx)INTEGER I,NREAL A(N+1),X,pnx,SS=A(1)DO I=2,
53、N+1 S=S*X+A(I) ENDDOpnx=SEND SUBROUTINE 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第34頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序/內(nèi)部子例行程序調(diào)用9.4 內(nèi)部子程序通過CALL語(yǔ)句調(diào)用。作為語(yǔ)句使用。一般格式:CALL P(a1,a2,an)或CALL P。 形參和實(shí)參的有關(guān)要求同內(nèi)部函數(shù)。如果無形式參數(shù),其調(diào)用形式為:CALL P。內(nèi)部子例行程序執(zhí)行過程:若實(shí)在參數(shù)為表達(dá)式,則先對(duì)表達(dá)式求值。實(shí)在參數(shù)與
54、相應(yīng)的形式參數(shù)結(jié)合,將實(shí)參值或地址傳遞給對(duì)應(yīng)形參。經(jīng)過形實(shí)結(jié)合,形式參數(shù)獲得了所需要的值或地址。執(zhí)行子程序體。返回調(diào)用處下一條語(yǔ)句執(zhí)行。(示例1) (示例2) 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第35頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序9.4 內(nèi)部子程序/內(nèi)部函數(shù)定義/示例1內(nèi)部函數(shù)子程序,簡(jiǎn)稱內(nèi)部函數(shù),放在CONTAINS結(jié)構(gòu)中。內(nèi)部函數(shù)只產(chǎn)生一個(gè)結(jié)果,由函數(shù)名返回。內(nèi)部函數(shù)定義一般格式: FUNCTION () END FUNCT
55、ION 例如: REAL FUNCTION add(m,n) INTEGER m,n add=m+n END FUNCTION add(示例1)(示例2)FUNCTION add(m,n) INTEGER m,n,add add=m+nEND FUNCTION add使用內(nèi)部函數(shù)計(jì)算分段函數(shù)。 PROGRAM main READ*,x;PRINT*,f(x)CONTAINS FUNCTION f(y) IF (y0) THEN f=x*2+SQRT(SQRT(1+x) ELSEIF (y= =0) THEN f=0 ELSE f=x*3+SQRT(1-x) ENDIF END FUNCTION
56、 fEND PROGRAM main 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用第九章 函數(shù)與子例行程序第36頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心9.4 內(nèi)部子程序9.4 內(nèi)部子程序/內(nèi)部函數(shù)定義/示例2內(nèi)部函數(shù)子程序,簡(jiǎn)稱內(nèi)部函數(shù),放在CONTAINS結(jié)構(gòu)中。內(nèi)部函數(shù)只產(chǎn)生一個(gè)結(jié)果,由函數(shù)名返回。內(nèi)部函數(shù)定義一般格式: FUNCTION () END FUNCTION 例如: REAL FUNCTION add(m,n) INTEGER m,n add=m+n END FUNCTI
57、ON add(示例1)(示例2)FUNCTION add(m,n) INTEGER m,n,add add=m+nEND FUNCTION add , 求解二元一次方程組。 計(jì)算:x=clb2c2b1 y=alc2a2c1 =alb2a2b2 編寫內(nèi)部函數(shù)del求解:x,y,參數(shù)I=1,求解x,I=2,求解y 設(shè)計(jì)算法,編寫程序。 已知:二元一次方程組。 輸入數(shù)據(jù):1,1,3 輸出結(jié)果:1.0 1.0 3.0 2,1,4 2.0 1.0 4.0 x10000000 y20000000 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)
58、用第九章 函數(shù)與子例行程序第37頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心第九章 函數(shù)與子例行程序 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明 內(nèi)部函數(shù)調(diào)用 內(nèi)部子例行 程序定義 內(nèi)部子例行 程序說明 內(nèi)部子例行 程序調(diào)用9.4 內(nèi)部子程序9.4 內(nèi)部子程序/內(nèi)部函數(shù)定義/示例2/算法內(nèi)部函數(shù)子程序,簡(jiǎn)稱內(nèi)部函數(shù),放在CONTAINS結(jié)構(gòu)中。內(nèi)部函數(shù)只產(chǎn)生一個(gè)結(jié)果,由函數(shù)名返回。內(nèi)部函數(shù)定義一般格式: FUNCTION () END FUNCTION 例如: REAL FUNCTION add(m,n) INTEGER m,n add=m+n END FUNCTION
59、 add(示例1)(示例2)FUNCTION add(m,n) INTEGER m,n,add add=m+nEND FUNCTION add , 求解二元一次方程組。 計(jì)算:x=clb2c2b1 y=alc2a2c1 =alb2a2b2 編寫內(nèi)部函數(shù)del求解:x,y,參數(shù)I=1,求解x,I=2,求解y 設(shè)計(jì)算法,編寫程序。 已知:二元一次方程組。 輸入數(shù)據(jù):1,1,3 輸出結(jié)果:1.0 1.0 3.0 2,1,4 2.0 1.0 4.0 x10000000 y20000000 定義內(nèi)部函數(shù)del(D,I) 聲明形式參數(shù):D(2,3),I 定義語(yǔ)句函數(shù)F(x1,x2,y1,y2)=x1*y2
60、-x2*y1 計(jì)算D1=F(D(1,1),D(2,1),D(1,2),D(2,2) I=1 T FD2=F(D(1,3),D(2,3),D(1,2),D(2,2)D2=F(D(1,1),D(2,1),D(1,3),D(2,3) delD2/D1 返回 聲明數(shù)組:A(2,3) 輸入二元一次方程組的系數(shù)和常數(shù)項(xiàng) x=del(A,1),調(diào)用內(nèi)部函數(shù)del求x值 y=del(A,2),調(diào)用內(nèi)部函數(shù)del求y值 輸出方程組系數(shù)及常數(shù)項(xiàng) 輸出x和y函數(shù)框圖主程序框圖第38頁(yè),共45頁(yè),2022年,5月20日,19點(diǎn)28分,星期一蘇州科技大學(xué)計(jì)算中心第九章 函數(shù)與子例行程序 概述 內(nèi)部函數(shù)定義 內(nèi)部函數(shù)說明
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 24628-2025醫(yī)療保健產(chǎn)品滅菌生物與化學(xué)指示物測(cè)試設(shè)備
- 農(nóng)村個(gè)人房屋售賣合同范本
- 買賣注冊(cè)公司合同范本
- 出租鋼琴合同范例
- 倒板合同范本
- 出口經(jīng)營(yíng)合同范本
- 個(gè)人租車協(xié)議合同范本
- 醫(yī)療器械借用合同范本
- 制做安裝合同范本
- 別墅門訂購(gòu)合同范本
- GB/T 7631.5-1989潤(rùn)滑劑和有關(guān)產(chǎn)品(L類)的分類第5部分:M組(金屬加工)
- GB/T 41326-2022六氟丁二烯
- GB/T 19470-2004土工合成材料塑料土工網(wǎng)
- GB/T 18913-2002船舶和航海技術(shù)航海氣象圖傳真接收機(jī)
- 高中教師先進(jìn)事跡材料范文六篇
- 烹飪專業(yè)英語(yǔ)課件
- 3d3s基本操作命令教程課件分析
- 人教版三年級(jí)語(yǔ)文下冊(cè)晨讀課件
- 傳染病防治法培訓(xùn)講義課件
- 河南大學(xué)版(2020)信息技術(shù)六年級(jí)下冊(cè)全冊(cè)教案
- 法律方法階梯實(shí)用版課件
評(píng)論
0/150
提交評(píng)論