版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、05/06第二學(xué)期第二學(xué)期 第九章第九章 函數(shù)與子程序函數(shù)與子程序FORTRAN90FORTRAN90程序設(shè)計(jì)程序設(shè)計(jì)課多媒體課件課多媒體課件05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /概述概述l使用使用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)可設(shè)計(jì)和編寫(xiě)一些比較可設(shè)計(jì)和編寫(xiě)一些比較復(fù)雜的程序了。復(fù)雜的程序了。l使用函數(shù)和子程序能編寫(xiě)結(jié)構(gòu)清晰、層次分明、短小簡(jiǎn)潔的使用函數(shù)和子程序能編寫(xiě)結(jié)構(gòu)清晰、層次分明、短小簡(jiǎn)潔的好程序,是編寫(xiě)高質(zhì)量、高水平、高效率程序的有效手段。好程序,是編寫(xiě)高質(zhì)量、高水平、高效率程序的有效手段。l通常在設(shè)計(jì)和編寫(xiě)程序時(shí)通常在設(shè)計(jì)和編寫(xiě)程序時(shí),
2、,會(huì)遇到以下三種情況:會(huì)遇到以下三種情況: 同一程序內(nèi)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程。同一程序內(nèi)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程。 不同程序內(nèi)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程。不同程序內(nèi)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程。 程序復(fù)雜。程序復(fù)雜。概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明9.1 9.1 概述概述第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況1 19.1 9.1 概述概述 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,程序中不同部位會(huì)多次出現(xiàn)相同或程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程(程序代碼
3、)。相似的運(yùn)算或處理過(guò)程(程序代碼)。 例如:求五邊形例如:求五邊形ABCDEABCDE的面積問(wèn)題的面積問(wèn)題, ,如圖如圖9-19-1所示。所示。 已知:五邊形已知:五邊形5 5條邊長(zhǎng)為:條邊長(zhǎng)為:a a、b b、c c、d d、e e, ,兩條對(duì)角線為:兩條對(duì)角線為:f f、g g。五邊形面積計(jì)算問(wèn)題變?yōu)?。五邊形面積計(jì)算問(wèn)題變?yōu)? 3個(gè)三角形面積計(jì)算問(wèn)題個(gè)三角形面積計(jì)算問(wèn)題,3,3個(gè)個(gè)三角形面積三角形面積area1area1、area2area2、area3area3之和就是五邊形面積之和就是五邊形面積areaarea。 三角形面積三角形面積A A求解公式:三邊長(zhǎng)為求解公式:三邊長(zhǎng)為x,y,
4、zx,y,z。l一般方法求解一般方法求解( (程序程序) )。l函數(shù)方法求解函數(shù)方法求解( (程序程序) )。 )xp)(yp)(xp(pA2/ )zyx(p A AB BC CD DE Ea ab bc cd de ef fg garea1area1area2area2area3area3圖圖9-1 9-1 五邊形五邊形概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況2 29.1 9.1 概述概述 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,不同程序中不同部位會(huì)多次出現(xiàn)相不同程序中不
5、同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程(程序代碼)。同或相似的運(yùn)算或處理過(guò)程(程序代碼)。l問(wèn)題一問(wèn)題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū)住宅小區(qū), ,地價(jià)為每平方米地價(jià)為每平方米10001000元元, ,求這塊地的總價(jià)。求這塊地的總價(jià)。 求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l問(wèn)題二問(wèn)題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱:某單位有一個(gè)呈三棱臺(tái)形狀的水箱, ,平均每天消耗平均每天消耗2 2水箱水水箱水, ,水價(jià)為每立方米水價(jià)為每立方米8 8角錢角錢,
6、 ,計(jì)算每天需支付的水費(fèi)。計(jì)算每天需支付的水費(fèi)。 求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l用函數(shù)方法求解兩問(wèn)題用函數(shù)方法求解兩問(wèn)題( (程序程序) )。概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況3 39.1 9.1 概述概述 對(duì)于比較復(fù)雜的問(wèn)題對(duì)于比較復(fù)雜的問(wèn)題, ,設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法方法。模塊化和
7、結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法, ,使用這些使用這些方法可大大降低問(wèn)題的復(fù)雜性方法可大大降低問(wèn)題的復(fù)雜性, ,使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、復(fù)雜、高質(zhì)量程序。復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)例如:輸入一批測(cè)試數(shù)據(jù)(30(30個(gè)個(gè)),),對(duì)其排序?qū)ζ渑判? ,輸出排序結(jié)果數(shù)據(jù)。輸出排序結(jié)果數(shù)據(jù)。 l一般方法求解一般方法求解( (程序程序) )。l結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解( (分層結(jié)構(gòu)圖
8、分層結(jié)構(gòu)圖、程序程序) )。 對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解, ,得到問(wèn)題分層結(jié)構(gòu)圖得到問(wèn)題分層結(jié)構(gòu)圖, ,如圖如圖9-29-2所示。所示。根據(jù)分層結(jié)構(gòu)圖根據(jù)分層結(jié)構(gòu)圖, ,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。最頂層問(wèn)題用主程序?qū)崿F(xiàn)最頂層問(wèn)題用主程序?qū)崿F(xiàn), ,其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn)其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn), ,最后將最后將主程序和若干函數(shù)或子程序組裝成完整的可運(yùn)行程序。主程序和若干函數(shù)或子程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編寫(xiě)主程序時(shí)設(shè)計(jì)和編寫(xiě)主程序時(shí), ,可假定下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序可假定
9、下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序?qū)崿F(xiàn)實(shí)現(xiàn), ,暫不考慮暫不考慮其其具體實(shí)現(xiàn)內(nèi)容具體實(shí)現(xiàn)內(nèi)容, ,假定:假定:“輸入輸入”子問(wèn)題由子程序子問(wèn)題由子程序input(A)input(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是從鍵盤輸入數(shù)據(jù)至數(shù)組功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“A;“排序排序”子問(wèn)題由子程子問(wèn)題由子程序序sort(A)sort(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是對(duì)數(shù)組功能是對(duì)數(shù)組A A進(jìn)行排序進(jìn)行排序, ,排序結(jié)果在排序結(jié)果在A A中中;“;“輸出輸出”子子問(wèn)題由子程序問(wèn)題由子程序output(A)output(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是輸出數(shù)組功能是輸出數(shù)組A A的內(nèi)容。的內(nèi)容。 概述概述情況情況1 1情況情況2
10、 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /說(shuō)明說(shuō)明9.1 9.1 概述概述lFORTRAN 90FORTRAN 90子程序子程序,也稱過(guò)程也稱過(guò)程,劃分為兩類:函數(shù)和子程序劃分為兩類:函數(shù)和子程序。l函數(shù)是指產(chǎn)生一個(gè)運(yùn)算結(jié)果函數(shù)是指產(chǎn)生一個(gè)運(yùn)算結(jié)果且通過(guò)且通過(guò)操作數(shù)調(diào)用執(zhí)行的子程序操作數(shù)調(diào)用執(zhí)行的子程序。 如上面計(jì)算三角形面積的子程序如上面計(jì)算三角形面積的子程序areaarea就是一個(gè)函數(shù)。就是一個(gè)函數(shù)。l子程序是指子程序是指可可產(chǎn)生多個(gè)處理結(jié)果且通過(guò)產(chǎn)生多個(gè)處理結(jié)果且通過(guò)CALLCALL語(yǔ)句調(diào)用執(zhí)行的子程序語(yǔ)句調(diào)用
11、執(zhí)行的子程序。 如上面完成輸入操作的子程序如上面完成輸入操作的子程序input(A)input(A)就是一個(gè)子程序。就是一個(gè)子程序。l每類子程序又劃分為標(biāo)準(zhǔn)子程序和用戶自定義子程序每類子程序又劃分為標(biāo)準(zhǔn)子程序和用戶自定義子程序。l用戶自定義子程序又劃分為內(nèi)部子程序、外部子程序和模塊子程序。用戶自定義子程序又劃分為內(nèi)部子程序、外部子程序和模塊子程序。lFORTRAN 90FORTRAN 90的子程序分類的子程序分類如圖如圖9-39-3所示所示。 概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /
12、情況情況1/1/程序程序1 19.1 9.1 概述概述A AB BC CD DE Ea ab bc cd de ef fg garea1area1area2area2area3area3圖圖9-1 9-1 五邊形五邊形 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,程序中不同部位會(huì)多次出現(xiàn)相同或程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程(程序代碼)。相似的運(yùn)算或處理過(guò)程(程序代碼)。 例如:求五邊形例如:求五邊形ABCDEABCDE的面積問(wèn)題的面積問(wèn)題, ,如圖如圖9-19-1所示。所示。 已知:五邊形已知:五邊形5 5條邊長(zhǎng)為:條邊長(zhǎng)為:a a、b b、c c、d d、e e, ,兩條對(duì)
13、角線為:兩條對(duì)角線為:f f、g g。五邊形面積計(jì)算問(wèn)題變?yōu)?。五邊形面積計(jì)算問(wèn)題變?yōu)? 3個(gè)三角形面積計(jì)算問(wèn)題個(gè)三角形面積計(jì)算問(wèn)題,3,3個(gè)個(gè)三角形面積三角形面積area1area1、area2area2、area3area3之和就是五邊形面積之和就是五邊形面積areaarea。 三角形面積三角形面積A A求解公式:三邊長(zhǎng)為求解公式:三邊長(zhǎng)為x,y,zx,y,z。l一般方法求解一般方法求解( (程序程序) )。l函數(shù)方法求解函數(shù)方法求解( (程序程序) )。 )xp)(yp)(xp(pA2/ )zyx(p PROGRAM pentagonPROGRAM pentagonREAL a,b,c,d
14、,e,f,gREAL a,b,c,d,e,f,gREAL area1,area2,area3,area,p,qREAL area1,area2,area3,area,p,q! !輸入五邊形輸入五邊形5 5個(gè)邊長(zhǎng)和兩條對(duì)角線個(gè)邊長(zhǎng)和兩條對(duì)角線READ READ * *,a,b,c,d,e,f,g,a,b,c,d,e,f,g! !計(jì)算三角形計(jì)算三角形ABEABE的面積的面積area1area1p=(a+f+e)/2p=(a+f+e)/2q=pq=p* *(p-a)(p-a)* *(p-f)(p-f)* *(p-e)(p-e)area1=SQRT(q)area1=SQRT(q)! !計(jì)算三角形計(jì)算三
15、角形BDEBDE的面積的面積area2area2p=(g+d+f)/2p=(g+d+f)/2q=pq=p* *(p-g)(p-g)* *(p-d)(p-d)* *(p-f)(p-f)area2=SQRT(q)area2=SQRT(q)! !計(jì)算三角形計(jì)算三角形BCDBCD的面積的面積area3area3p=(b+c+g)/2p=(b+c+g)/2q=pq=p* *(p-b)(p-b)* *(p-c)(p-c)* *(p-g)(p-g)area3=SQRT(q)area3=SQRT(q) ! !計(jì)算五邊形面積計(jì)算五邊形面積areaareaarea=area1+area2+area3area=ar
16、ea1+area2+area3PRINT PRINT * *,五邊形面積五邊形面積:,area:,area END END概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況1/1/程序程序2 29.1 9.1 概述概述A AB BC CD DE Ea ab bc cd de ef fg garea1area1area2area2area3area3圖圖9-1 9-1 五邊形五邊形 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,程序中不同部位會(huì)多次出現(xiàn)相同或程序中不同部位會(huì)多次出現(xiàn)相同或相似
17、的運(yùn)算或處理過(guò)程(程序代碼)。相似的運(yùn)算或處理過(guò)程(程序代碼)。 例如:求五邊形例如:求五邊形ABCDEABCDE的面積問(wèn)題的面積問(wèn)題, ,如圖如圖9-19-1所示。所示。 已知:五邊形已知:五邊形5 5條邊長(zhǎng)為:條邊長(zhǎng)為:a a、b b、c c、d d、e e, ,兩條對(duì)角線為:兩條對(duì)角線為:f f、g g。五邊形面積計(jì)算問(wèn)題變?yōu)椤N暹呅蚊娣e計(jì)算問(wèn)題變?yōu)? 3個(gè)三角形面積計(jì)算問(wèn)題個(gè)三角形面積計(jì)算問(wèn)題,3,3個(gè)個(gè)三角形面積三角形面積area1area1、area2area2、area3area3之和就是五邊形面積之和就是五邊形面積areaarea。 三角形面積三角形面積A A求解公式:三邊長(zhǎng)為
18、求解公式:三邊長(zhǎng)為x,y,zx,y,z。l一般方法求解一般方法求解( (程序程序) )。l函數(shù)方法求解函數(shù)方法求解( (程序程序) )。 )xp)(yp)(xp(pA2/ )zyx(p PROGRAM pentagonPROGRAM pentagonREAL a,b,c,d,e,f,gREAL a,b,c,d,e,f,gREAL areaREAL area! !輸入五邊形輸入五邊形5 5條邊長(zhǎng)和兩條對(duì)角線條邊長(zhǎng)和兩條對(duì)角線READ READ * *,a,b,c,d,e,f,g,a,b,c,d,e,f,g! !計(jì)算五邊形面積計(jì)算五邊形面積areaareaarea=t_area(a,f,e)+t_
19、area(g,d,f)+t_area(b,c,g)area=t_area(a,f,e)+t_area(g,d,f)+t_area(b,c,g)PRINT PRINT * *,五邊形面積為:五邊形面積為:,area,areaCONTAINSCONTAINS! !定義計(jì)算任意三角形面積函數(shù)定義計(jì)算任意三角形面積函數(shù)t-areat-areaFUNCTION t_area(a,b,c)FUNCTION t_area(a,b,c) REAL t_area,a,b,c,p,q REAL t_area,a,b,c,p,q p=(a+b+c)/2 p=(a+b+c)/2 q=p q=p* *(p-a)(p-a
20、)* *(p-b)(p-b)* *(p-c)(p-c) t_area=SQRT(q) t_area=SQRT(q)END FUNCTION t_areaEND FUNCTION t_areaENDEND計(jì)算任意三角形計(jì)算任意三角形概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況2/2/程序程序1 19.1 9.1 概述概述 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,不同程序中不同部位會(huì)多次出現(xiàn)相不同程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程(程序代碼)。同或相似的運(yùn)算或處理過(guò)
21、程(程序代碼)。l問(wèn)題一問(wèn)題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū)住宅小區(qū), ,地價(jià)為每平方米地價(jià)為每平方米10001000元元, ,求這塊地的總價(jià)。求這塊地的總價(jià)。 求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l問(wèn)題二問(wèn)題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱:某單位有一個(gè)呈三棱臺(tái)形狀的水箱, ,平均每天消耗平均每天消耗2 2水箱水水箱水, ,水價(jià)為每立方米水價(jià)為每立方米8 8角錢角錢, ,計(jì)算每天需支付的水費(fèi)。計(jì)算每天需支付的水費(fèi)。 求解問(wèn)題的核心是計(jì)算三角形面
22、積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l用函數(shù)方法求解兩問(wèn)題用函數(shù)方法求解兩問(wèn)題( (程序程序) )。PROGRAM total_pricesPROGRAM total_pricesREAL a,b,c,area,p,q,t_pricesREAL a,b,c,area,p,q,t_prices! !輸入三角形邊長(zhǎng)輸入三角形邊長(zhǎng)a,b,ca,b,cREAD READ * *,a,b,c,a,b,c! !計(jì)算三角形面積計(jì)算三角形面積areaareap=(a+b+c)/2p=(a+b+c)/2q=pq=p* *(p-a)(p-a)* *(p-b)(p-
23、b)* *(p-c)(p-c)area=SQRT(q)area=SQRT(q)! !計(jì)算總價(jià)計(jì)算總價(jià)t_pricest_pricest_prices=areat_prices=area* *10001000PRINT PRINT * *,地塊總價(jià)為:地塊總價(jià)為:,t_prices,t_pricesENDEND 概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況2/2/程序程序2 29.1 9.1 概述概述 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,不同程序中不同部位會(huì)多次出現(xiàn)相不同程序
24、中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程(程序代碼)。同或相似的運(yùn)算或處理過(guò)程(程序代碼)。l問(wèn)題一問(wèn)題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū)住宅小區(qū), ,地價(jià)為每平方米地價(jià)為每平方米10001000元元, ,求這塊地的總價(jià)。求這塊地的總價(jià)。 求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l問(wèn)題二問(wèn)題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱:某單位有一個(gè)呈三棱臺(tái)形狀的水箱, ,平均每天消耗平均每天消耗2 2水箱水水箱水, ,水價(jià)為每立方米水價(jià)為每立方米8 8角錢角
25、錢, ,計(jì)算每天需支付的水費(fèi)。計(jì)算每天需支付的水費(fèi)。 求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l用函數(shù)方法求解兩問(wèn)題用函數(shù)方法求解兩問(wèn)題( (程序程序) )。PROGRAM water_pricesPROGRAM water_pricesREAL a,b,c,h,area,cubage,p,q,w_pricesREAL a,b,c,h,area,cubage,p,q,w_prices! !輸入三棱臺(tái)底面三角形邊長(zhǎng)輸入三棱臺(tái)底面三角形邊長(zhǎng)a,b,ca,b,c和三棱臺(tái)高和三棱臺(tái)高h(yuǎn) hREAD READ * *,a,b,c,
26、h,a,b,c,h! !計(jì)算三角形面積計(jì)算三角形面積areaareap=(a+b+c)/2p=(a+b+c)/2q=pq=p* *(p-a)(p-a)* *(p-b)(p-b)* *(p-c)(p-c)area=SQRT(q)area=SQRT(q)! !計(jì)算三棱臺(tái)容積計(jì)算三棱臺(tái)容積cubagecubagecubage=areacubage=area* *h h! !計(jì)算水價(jià)計(jì)算水價(jià)w_pricesw_pricesPRINT PRINT * *,每天需支付水價(jià)為:每天需支付水價(jià)為:,t_prices,t_pricesENDEND概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第
27、九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明9.1 9.1 概述概述/ /情況情況2/2/程序程序3 39.1 9.1 概述概述 在設(shè)計(jì)和編寫(xiě)程序時(shí)在設(shè)計(jì)和編寫(xiě)程序時(shí), ,不同程序中不同部位會(huì)多次出現(xiàn)相不同程序中不同部位會(huì)多次出現(xiàn)相同或相似的運(yùn)算或處理過(guò)程(程序代碼)。同或相似的運(yùn)算或處理過(guò)程(程序代碼)。l問(wèn)題一問(wèn)題一:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋:某房地產(chǎn)公司買下一塊呈三角形形狀的地盤準(zhǔn)備蓋住宅小區(qū)住宅小區(qū), ,地價(jià)為每平方米地價(jià)為每平方米10001000元元, ,求這塊地的總價(jià)。求這塊地的總價(jià)。 求解問(wèn)
28、題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l問(wèn)題二問(wèn)題二:某單位有一個(gè)呈三棱臺(tái)形狀的水箱:某單位有一個(gè)呈三棱臺(tái)形狀的水箱, ,平均每天消耗平均每天消耗2 2水箱水水箱水, ,水價(jià)為每立方米水價(jià)為每立方米8 8角錢角錢, ,計(jì)算每天需支付的水費(fèi)。計(jì)算每天需支付的水費(fèi)。 求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解求解問(wèn)題的核心是計(jì)算三角形面積。用一般方法求解( (程序程序) )。l用函數(shù)方法求解兩問(wèn)題用函數(shù)方法求解兩問(wèn)題( (程序程序) )。! !使用函數(shù)求解問(wèn)題一程序,使用函數(shù)求解問(wèn)題一程序,areaarea為外部函數(shù)為外部函
29、數(shù)PROGRAM total_pricesPROGRAM total_pricesEXTERNAL area EXTERNAL area ! !聲明聲明areaarea為外部函數(shù)為外部函數(shù)REAL a,b,c,t_pricesREAL a,b,c,t_pricesREAD READ * *,a,b,c ,a,b,c ! !輸入三角形邊長(zhǎng)輸入三角形邊長(zhǎng)a,b,ca,b,ct_prices=area(a,b,c)t_prices=area(a,b,c)* *1000 1000 ! !計(jì)算總價(jià)計(jì)算總價(jià)t_pricest_pricesPRINT PRINT * *,地塊總價(jià)為:地塊總價(jià)為:,t_pri
30、ces,t_pricesENDEND! !使用函數(shù)求解問(wèn)題二程序,使用函數(shù)求解問(wèn)題二程序,areaarea為外部函數(shù)為外部函數(shù)PROGRAM water_pricesPROGRAM water_pricesEXTERNAL area EXTERNAL area ! !聲明聲明areaarea為外部函數(shù)為外部函數(shù)REAL a,b,c,h,cubage,w_pricesREAL a,b,c,h,cubage,w_pricesREAD READ * *,a,b,c,h ,a,b,c,h ! !輸入棱臺(tái)底面三角形邊長(zhǎng)輸入棱臺(tái)底面三角形邊長(zhǎng)a,b,ca,b,c和臺(tái)高和臺(tái)高h(yuǎn) hcubage=area(a
31、,b,c)cubage=area(a,b,c)* *h h ! !計(jì)算三棱臺(tái)容積計(jì)算三棱臺(tái)容積cubagecubagew_prices=cubagew_prices=cubage* *0.80.8* *2 2 ! !計(jì)算水價(jià)計(jì)算水價(jià)w_pricesw_pricesPRINT PRINT * *,每天需支付水價(jià)為:每天需支付水價(jià)為:,w_prices ,w_prices ENDEND! !定義外部函數(shù)定義外部函數(shù)areaareaFUNCTION area(x,y,z)FUNCTION area(x,y,z) REAL area,x,y,z,p,q REAL area,x,y,z,p,q ! !計(jì)
32、算三角形面積計(jì)算三角形面積areaarea p=(x+y+z)/2 p=(x+y+z)/2 q=p q=p* *(p-x)(p-x)* *(p-y)(p-y)* *(p-z)(p-z) area=SQRT(q) area=SQRT(q)END FUNCTION areaEND FUNCTION area 第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況3/3/程序程序1 19.1 9.1 概述概述 對(duì)于比較復(fù)雜的問(wèn)題對(duì)于比較復(fù)雜的問(wèn)題, ,設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方
33、法是常用的程序設(shè)計(jì)方法方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法, ,使用這些使用這些方法可大大降低問(wèn)題的復(fù)雜性方法可大大降低問(wèn)題的復(fù)雜性, ,使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、復(fù)雜、高質(zhì)量程序。復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)例如:輸入一批測(cè)試數(shù)據(jù)(30(30個(gè)個(gè)),),對(duì)其排序?qū)ζ渑判? ,輸出排序結(jié)果數(shù)據(jù)。輸出排序結(jié)果數(shù)據(jù)。 l一般方法求解一般方法求解( (程序程序) )。l結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解結(jié)構(gòu)化程序設(shè)
34、計(jì)方法及函數(shù)方法求解( (分層結(jié)構(gòu)圖分層結(jié)構(gòu)圖、程序程序) )。 對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解, ,得到問(wèn)題分層結(jié)構(gòu)圖得到問(wèn)題分層結(jié)構(gòu)圖, ,如圖如圖9-29-2所示。所示。根據(jù)分層結(jié)構(gòu)圖根據(jù)分層結(jié)構(gòu)圖, ,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。最頂層問(wèn)題用主程序?qū)崿F(xiàn)最頂層問(wèn)題用主程序?qū)崿F(xiàn), ,其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn)其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn), ,最后將最后將主程序和若干函數(shù)或子程序組裝成完整的可運(yùn)行程序。主程序和若干函數(shù)或子程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編寫(xiě)主程序時(shí)設(shè)計(jì)和編寫(xiě)主程序時(shí), ,可假定下
35、一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序可假定下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序?qū)崿F(xiàn)實(shí)現(xiàn), ,暫不考慮暫不考慮其其具體實(shí)現(xiàn)內(nèi)容具體實(shí)現(xiàn)內(nèi)容, ,假定:假定:“輸入輸入”子問(wèn)題由子程序子問(wèn)題由子程序input(A)input(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是從鍵盤輸入數(shù)據(jù)至數(shù)組功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“A;“排序排序”子問(wèn)題由子程子問(wèn)題由子程序序sort(A)sort(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是對(duì)數(shù)組功能是對(duì)數(shù)組A A進(jìn)行排序進(jìn)行排序, ,排序結(jié)果在排序結(jié)果在A A中中;“;“輸出輸出”子子問(wèn)題由子程序問(wèn)題由子程序output(A)output(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是輸出數(shù)組功能是輸出數(shù)組A A的內(nèi)容。的內(nèi)容
36、。 PROGRAM sortPROGRAM sort PARAMETER PARAMETER(N=30N=30) REAL dat(N)REAL dat(N) DO I=1,N DO I=1,N ! !輸入輸入N N個(gè)數(shù)據(jù)個(gè)數(shù)據(jù) READ READ * *,dat(I),dat(I) END END DO I=1,N-1 DO I=1,N-1 ! !對(duì)對(duì)N N個(gè)原始數(shù)據(jù)進(jìn)行排序個(gè)原始數(shù)據(jù)進(jìn)行排序 DO J=I+1,NDO J=I+1,N IF (dat(J)dat(I) THEN IF (dat(J)dat(I) THEN t=dat(J);dat(J)=dat(I);dat(I)=t t=d
37、at(J);dat(J)=dat(I);dat(I)=t ENDIF ENDIF ENDDO ENDDO ENDDO ENDDO DO I=1,N DO I=1,N ! !輸出排序后的輸出排序后的N N個(gè)數(shù)據(jù)個(gè)數(shù)據(jù) PRINT PRINT * *,dat(I),dat(I) END END END END ENDEND概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.1 9.1 概述概述/ /情況情況3/3/結(jié)構(gòu)圖結(jié)構(gòu)圖9.1 9.1 概述概述 對(duì)于比較復(fù)雜的問(wèn)題對(duì)于比較復(fù)雜的問(wèn)題, ,設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序
38、設(shè)計(jì)設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法, ,使用這些使用這些方法可大大降低問(wèn)題的復(fù)雜性方法可大大降低問(wèn)題的復(fù)雜性, ,使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、復(fù)雜、高質(zhì)量程序。復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)例如:輸入一批測(cè)試數(shù)據(jù)(30(30個(gè)個(gè)),),對(duì)其排序?qū)ζ渑判? ,輸出排序結(jié)果數(shù)據(jù)。輸出排序結(jié)果數(shù)據(jù)。 l一般方法求解一般方法求
39、解( (程序程序) )。l結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解( (分層結(jié)構(gòu)圖分層結(jié)構(gòu)圖、程序程序) )。 對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解, ,得到問(wèn)題分層結(jié)構(gòu)圖得到問(wèn)題分層結(jié)構(gòu)圖, ,如圖如圖9-29-2所示。所示。根據(jù)分層結(jié)構(gòu)圖根據(jù)分層結(jié)構(gòu)圖, ,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。最頂層問(wèn)題用主程序?qū)崿F(xiàn)最頂層問(wèn)題用主程序?qū)崿F(xiàn), ,其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn)其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn), ,最后將最后將主程序和若干函數(shù)或子程序組裝成完整的可運(yùn)行程序。主程序和若干函數(shù)或子程序組裝成
40、完整的可運(yùn)行程序。 設(shè)計(jì)和編寫(xiě)主程序時(shí)設(shè)計(jì)和編寫(xiě)主程序時(shí), ,可假定下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序可假定下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序?qū)崿F(xiàn)實(shí)現(xiàn), ,暫不考慮暫不考慮其其具體實(shí)現(xiàn)內(nèi)容具體實(shí)現(xiàn)內(nèi)容, ,假定:假定:“輸入輸入”子問(wèn)題由子程序子問(wèn)題由子程序input(A)input(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是從鍵盤輸入數(shù)據(jù)至數(shù)組功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“A;“排序排序”子問(wèn)題由子程子問(wèn)題由子程序序sort(A)sort(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是對(duì)數(shù)組功能是對(duì)數(shù)組A A進(jìn)行排序進(jìn)行排序, ,排序結(jié)果在排序結(jié)果在A A中中;“;“輸出輸出”子子問(wèn)題由子程序問(wèn)題由子程序output(A)outpu
41、t(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是輸出數(shù)組功能是輸出數(shù)組A A的內(nèi)容。的內(nèi)容。 問(wèn)題:將測(cè)試數(shù)據(jù)排序并輸出問(wèn)題:將測(cè)試數(shù)據(jù)排序并輸出子問(wèn)題:排序子問(wèn)題:排序子問(wèn)題:輸入子問(wèn)題:輸入子問(wèn)題:輸出子問(wèn)題:輸出自自頂頂向向下下自自底底向向上上圖圖9-2 9-2 任務(wù)分解及分層結(jié)構(gòu)圖任務(wù)分解及分層結(jié)構(gòu)圖概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期第九章第九章 函數(shù)與子程序函數(shù)與子程序概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明9.1 9.1 概述概述/ /情況情況3/3/程序程序2 29.1 9.1 概述概述 對(duì)于比
42、較復(fù)雜的問(wèn)題對(duì)于比較復(fù)雜的問(wèn)題, ,設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)設(shè)計(jì)和編寫(xiě)程序需要采用科學(xué)的程序設(shè)計(jì)方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法方法。模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的程序設(shè)計(jì)方法, ,使用這些使用這些方法可大大降低問(wèn)題的復(fù)雜性方法可大大降低問(wèn)題的復(fù)雜性, ,使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用使復(fù)雜問(wèn)題的求解變得相對(duì)容易。使用函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、函數(shù)和子程序可使用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)和編寫(xiě)大型、復(fù)雜、高質(zhì)量程序。復(fù)雜、高質(zhì)量程序。例如:輸入一批測(cè)試數(shù)據(jù)例如:輸入一批測(cè)試數(shù)據(jù)(30(30個(gè)個(gè)),),對(duì)其排序?qū)ζ渑判?/p>
43、, ,輸出排序結(jié)果數(shù)據(jù)。輸出排序結(jié)果數(shù)據(jù)。 l一般方法求解一般方法求解( (程序程序) )。l結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解結(jié)構(gòu)化程序設(shè)計(jì)方法及函數(shù)方法求解( (分層結(jié)構(gòu)圖分層結(jié)構(gòu)圖、程序程序) )。 對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解對(duì)復(fù)雜問(wèn)題逐層進(jìn)行任務(wù)分解, ,得到問(wèn)題分層結(jié)構(gòu)圖得到問(wèn)題分層結(jié)構(gòu)圖, ,如圖如圖9-29-2所示。所示。根據(jù)分層結(jié)構(gòu)圖根據(jù)分層結(jié)構(gòu)圖, ,采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。采用自頂向下或自底向上方法逐層設(shè)計(jì)和編寫(xiě)程序。最頂層問(wèn)題用主程序?qū)崿F(xiàn)最頂層問(wèn)題用主程序?qū)崿F(xiàn), ,其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn)其余層子問(wèn)題用函數(shù)或子程序?qū)崿F(xiàn), ,最后將最后將主程序和若
44、干函數(shù)或子程序組裝成完整的可運(yùn)行程序。主程序和若干函數(shù)或子程序組裝成完整的可運(yùn)行程序。 設(shè)計(jì)和編寫(xiě)主程序時(shí)設(shè)計(jì)和編寫(xiě)主程序時(shí), ,可假定下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序可假定下一層子問(wèn)題已經(jīng)通過(guò)函數(shù)或子程序?qū)崿F(xiàn)實(shí)現(xiàn), ,暫不考慮暫不考慮其其具體實(shí)現(xiàn)內(nèi)容具體實(shí)現(xiàn)內(nèi)容, ,假定:假定:“輸入輸入”子問(wèn)題由子程序子問(wèn)題由子程序input(A)input(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是從鍵盤輸入數(shù)據(jù)至數(shù)組功能是從鍵盤輸入數(shù)據(jù)至數(shù)組A;“A;“排序排序”子問(wèn)題由子程子問(wèn)題由子程序序sort(A)sort(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是對(duì)數(shù)組功能是對(duì)數(shù)組A A進(jìn)行排序進(jìn)行排序, ,排序結(jié)果在排序結(jié)果在A A中中;“;
45、“輸出輸出”子子問(wèn)題由子程序問(wèn)題由子程序output(A)output(A)實(shí)現(xiàn)實(shí)現(xiàn), ,功能是輸出數(shù)組功能是輸出數(shù)組A A的內(nèi)容。的內(nèi)容。 ! !主程序主程序PROGRAM mainPROGRAM main PARAMETER PARAMETER(N=30N=30) REAL dat(N)REAL dat(N) CALL input(dat) ! CALL input(dat) !輸入輸入N N個(gè)數(shù)據(jù)個(gè)數(shù)據(jù) CALL sort(dat) ! CALL sort(dat) !對(duì)對(duì)N N個(gè)原始數(shù)據(jù)進(jìn)行排序個(gè)原始數(shù)據(jù)進(jìn)行排序 CALL output(dat) ! CALL output(dat)
46、!輸出排序后的輸出排序后的N N個(gè)數(shù)據(jù)個(gè)數(shù)據(jù)CONTAINSCONTAINSENDEND! !輸入子程序輸入子程序SUBROUTINE input(A)SUBROUTINE input(A) REAL A(N) REAL A(N) DO I=1,N DO I=1,N READ READ * *,A(I),A(I) ENDDO ENDDOEND SUBROUTINE inputEND SUBROUTINE input! !排序子程序排序子程序SUBROUTINE sort(A)SUBROUTINE sort(A) REAL A(N),t REAL A(N),t DO I=1,N-1 DO I=1
47、,N-1 DO J=I+1,N DO J=I+1,N IF (A(J)A(I) THEN IF (A(J)A(I) THEN t=A(J);A(J)=A(I);A(I)=t t=A(J);A(J)=A(I);A(I)=t ENDIF ENDIF ENDDO ENDDO ENDDO ENDDOEND SUBROUTINE sortEND SUBROUTINE sort ! !輸出子程序輸出子程序SUBROUTINE output(A)SUBROUTINE output(A) REAL A(N) REAL A(N) DO I=1,N DO I=1,N PRINT PRINT * *,A(I),A(
48、I) ENDDO ENDDOEND SUBROUTINE outputEND SUBROUTINE output05/06第二學(xué)期第二學(xué)期概述概述情況情況1 1情況情況2 2情況情況3 3說(shuō)明說(shuō)明9.1 9.1 概述概述/ /說(shuō)明說(shuō)明/ /分類圖示分類圖示9.1 9.1 概述概述lFORTRAN 90FORTRAN 90子程序子程序,也稱過(guò)程也稱過(guò)程,劃分為兩類:函數(shù)和子程序劃分為兩類:函數(shù)和子程序。l函數(shù)是指產(chǎn)生一個(gè)運(yùn)算結(jié)果函數(shù)是指產(chǎn)生一個(gè)運(yùn)算結(jié)果且通過(guò)且通過(guò)操作數(shù)調(diào)用執(zhí)行的子程序操作數(shù)調(diào)用執(zhí)行的子程序。 如上面計(jì)算三角形面積的子程序如上面計(jì)算三角形面積的子程序areaarea就是一個(gè)函數(shù)。
49、就是一個(gè)函數(shù)。l子程序是指子程序是指可可產(chǎn)生多個(gè)處理結(jié)果且通過(guò)產(chǎn)生多個(gè)處理結(jié)果且通過(guò)CALLCALL語(yǔ)句調(diào)用執(zhí)行的子程序語(yǔ)句調(diào)用執(zhí)行的子程序。 如上面完成輸入操作的子程序如上面完成輸入操作的子程序input(A)input(A)就是一個(gè)子程序。就是一個(gè)子程序。l每類子程序又劃分為標(biāo)準(zhǔn)子程序和用戶自定義子程序每類子程序又劃分為標(biāo)準(zhǔn)子程序和用戶自定義子程序。l用戶自定義子程序又劃分為內(nèi)部子程序、外部子程序和模塊子程序。用戶自定義子程序又劃分為內(nèi)部子程序、外部子程序和模塊子程序。lFORTRAN 90FORTRAN 90的子程序分類的子程序分類如圖如圖9-39-3所示所示。 FORTRAN 90 F
50、ORTRAN 90 子程序子程序子程序子程序標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序用戶自定義子程序用戶自定義子程序內(nèi)部子程序內(nèi)部子程序外部子程序外部子程序模塊子程序模塊子程序函數(shù)函數(shù)標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)用戶自定義函數(shù)用戶自定義函數(shù)內(nèi)部函數(shù)內(nèi)部函數(shù)外部函數(shù)外部函數(shù)模塊函數(shù)模塊函數(shù)語(yǔ)句函數(shù)語(yǔ)句函數(shù)標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序內(nèi)部子程序內(nèi)部子程序外部子程序外部子程序模塊子程序模塊子程序標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序內(nèi)部子程序內(nèi)部子程序外部子程序外部子程序模塊子程序模塊子程序圖圖9-3 FORTRAN 909-3 FORTRAN 90子程序分類子程序分類第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.2 9.2 標(biāo)準(zhǔn)子程
51、序標(biāo)準(zhǔn)子程序/ /概述概述l標(biāo)準(zhǔn)子程序用于求解是現(xiàn)實(shí)生活中比較常見(jiàn)的問(wèn)題。標(biāo)準(zhǔn)子程序用于求解是現(xiàn)實(shí)生活中比較常見(jiàn)的問(wèn)題。 如:求絕對(duì)值、三角函數(shù)值、指數(shù)值、獲取當(dāng)前系如:求絕對(duì)值、三角函數(shù)值、指數(shù)值、獲取當(dāng)前系統(tǒng)日期、獲取隨機(jī)數(shù)等。統(tǒng)日期、獲取隨機(jī)數(shù)等。l標(biāo)準(zhǔn)子程序的使用為程序設(shè)計(jì)帶來(lái)了極大的方便標(biāo)準(zhǔn)子程序的使用為程序設(shè)計(jì)帶來(lái)了極大的方便, ,讀者應(yīng)更多地了解、熟悉和掌握標(biāo)準(zhǔn)子程序的使用。讀者應(yīng)更多地了解、熟悉和掌握標(biāo)準(zhǔn)子程序的使用。l為了提高子程序的執(zhí)行效率為了提高子程序的執(zhí)行效率, ,子程序一般用執(zhí)行效子程序一般用執(zhí)行效率比較高的匯編語(yǔ)言編寫(xiě)率比較高的匯編語(yǔ)言編寫(xiě), ,并匯編成機(jī)器語(yǔ)言目標(biāo)
52、并匯編成機(jī)器語(yǔ)言目標(biāo)代碼代碼, ,它們被集中保存在一個(gè)子程序庫(kù)中它們被集中保存在一個(gè)子程序庫(kù)中, ,供用戶直供用戶直接使用。接使用。 概述概述標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)注意事項(xiàng)注意事項(xiàng)1 1標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序注意事項(xiàng)注意事項(xiàng)2 29.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序/ /標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù) 標(biāo)準(zhǔn)函數(shù)有時(shí)稱系統(tǒng)函數(shù)、內(nèi)部函數(shù)標(biāo)準(zhǔn)函數(shù)有時(shí)稱系統(tǒng)函數(shù)、內(nèi)部函數(shù),FORTRAN ,FORTRAN 9090的編譯系統(tǒng)提供的編譯系統(tǒng)提供130130多個(gè)標(biāo)準(zhǔn)函數(shù)。有以下幾大多個(gè)標(biāo)準(zhǔn)函數(shù)。有以下幾大類:類: l三角函數(shù)計(jì)
53、算三角函數(shù)計(jì)算l數(shù)值計(jì)算數(shù)值計(jì)算l數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換l數(shù)據(jù)類型查詢數(shù)據(jù)類型查詢l隨機(jī)數(shù)生成隨機(jī)數(shù)生成l日期時(shí)間處理日期時(shí)間處理l字符串處理字符串處理l地址計(jì)算地址計(jì)算l位運(yùn)算位運(yùn)算9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)函數(shù)可作為表達(dá)式中操作數(shù)標(biāo)準(zhǔn)函數(shù)可作為表達(dá)式中操作數(shù)進(jìn)行調(diào)用進(jìn)行調(diào)用, ,并參與表達(dá)式運(yùn)算。調(diào)并參與表達(dá)式運(yùn)算。調(diào)用標(biāo)準(zhǔn)函數(shù)時(shí)用標(biāo)準(zhǔn)函數(shù)時(shí), ,只需寫(xiě)出函數(shù)名只需寫(xiě)出函數(shù)名, ,后面括號(hào)中給出符合要求的所要后面括號(hào)中給出符合要求的所要計(jì)算的變?cè)?。例如:?jì)算的變?cè)?。例如:已知已?x=3.0,y=4.0,:x=3.0,y=4.0,計(jì)算表達(dá)式計(jì)算表達(dá)式2.52.5* *S
54、QRT(xSQRT(x* *x+yx+y* *y)+ABS(-8.5y)+ABS(-8.5* *3),3),結(jié)果為結(jié)果為38.038.0。 概述概述標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)注意事項(xiàng)注意事項(xiàng)1 1標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序注意事項(xiàng)注意事項(xiàng)2 2第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序/ /注意事項(xiàng)注意事項(xiàng)1 1使用標(biāo)準(zhǔn)函數(shù)需要注意以下幾點(diǎn):使用標(biāo)準(zhǔn)函數(shù)需要注意以下幾點(diǎn): l標(biāo)準(zhǔn)函數(shù)對(duì)變?cè)膫€(gè)數(shù)和類型有明確的規(guī)定和要求。標(biāo)準(zhǔn)函數(shù)對(duì)變?cè)膫€(gè)數(shù)和類型有明確的規(guī)定和要求。要求有一個(gè)變?cè)笥幸粋€(gè)變?cè)? ,如函數(shù)如函數(shù)SIN(x),SIN(x),要求兩個(gè)變?cè)?/p>
55、求兩個(gè)變?cè)? ,如函如函數(shù)數(shù) M O D ( m , n ) ,M O D ( m , n ) , 要 求 多 個(gè) 變 元要 求 多 個(gè) 變 元 , , 如 函 數(shù)如 函 數(shù)MAX(x1,x2,xn)MAX(x1,x2,xn)。要求變?cè)愋蜑檎?。要求變?cè)愋蜑檎? ,如函數(shù)如函數(shù)MOD(m,n),MOD(m,n),要求變?cè)愋蜑閷?shí)型要求變?cè)愋蜑閷?shí)型, ,如如SIND(x),SIND(x),要求變要求變?cè)愋蜑檎?、?shí)型、雙精度、復(fù)型等多種類型元類型為整型、實(shí)型、雙精度、復(fù)型等多種類型, ,如如ABS(x)ABS(x)。l標(biāo)準(zhǔn)函數(shù)的函數(shù)值只有一個(gè)標(biāo)準(zhǔn)函數(shù)的函數(shù)值只有一個(gè), ,且有明確的類型
56、規(guī)定。且有明確的類型規(guī)定。l對(duì)于對(duì)于“弧度弧度”和和“角度角度”單位單位, ,使用不同的三角函數(shù)。使用不同的三角函數(shù)。l函數(shù)變?cè)仨殞?xiě)在函數(shù)名后括號(hào)內(nèi)函數(shù)變?cè)仨殞?xiě)在函數(shù)名后括號(hào)內(nèi), ,變?cè)墒浅?shù)、變?cè)墒浅?shù)、變量或表達(dá)式變量或表達(dá)式, ,少數(shù)標(biāo)準(zhǔn)函數(shù)變?cè)笞兞可贁?shù)標(biāo)準(zhǔn)函數(shù)變?cè)笞兞? ,如如LOC(v)LOC(v)9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序概述概述標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)注意事項(xiàng)注意事項(xiàng)1 1標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序注意事項(xiàng)注意事項(xiàng)2 2第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序/ /標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序 標(biāo)準(zhǔn)子程序也稱系統(tǒng)子程
57、序標(biāo)準(zhǔn)子程序也稱系統(tǒng)子程序,FORTRAN 90,FORTRAN 90的編譯的編譯系統(tǒng)提供系統(tǒng)提供2020多個(gè)標(biāo)準(zhǔn)子程序。多個(gè)標(biāo)準(zhǔn)子程序。 有以下幾大類:有以下幾大類: l程序控制程序控制(EXIT(EXIT、SLEEPQQ)SLEEPQQ)l文件管理文件管理(PACKTIMEQQ(PACKTIMEQQ、UNPACKTIMEQQ)UNPACKTIMEQQ)l隨機(jī)數(shù)生成隨機(jī)數(shù)生成(RANDOM(RANDOM、RANDOM_NUMBER)RANDOM_NUMBER)l日期處理日期處理(DATE(DATE、GETDATGETDAT、TIMETIME、GETTIM)GETTIM)l數(shù)組處理數(shù)組處理(S
58、UM(SUM、SORTQQSORTQQ、COUNTCOUNT、SIZE)SIZE)9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序可作為語(yǔ)句進(jìn)行調(diào)用執(zhí)行標(biāo)準(zhǔn)子程序可作為語(yǔ)句進(jìn)行調(diào)用執(zhí)行, ,不通過(guò)子程序名返不通過(guò)子程序名返回結(jié)果回結(jié)果, ,只通過(guò)變?cè)蛲饨绶祷亟Y(jié)果。調(diào)用標(biāo)準(zhǔn)子程序時(shí)只通過(guò)變?cè)蛲饨绶祷亟Y(jié)果。調(diào)用標(biāo)準(zhǔn)子程序時(shí), ,需通過(guò)關(guān)鍵子需通過(guò)關(guān)鍵子CALLCALL完成完成, ,其后給出被調(diào)用標(biāo)準(zhǔn)子程序名其后給出被調(diào)用標(biāo)準(zhǔn)子程序名, ,并并在后面的括號(hào)中給出符合要求的變?cè)翟诤竺娴睦ㄌ?hào)中給出符合要求的變?cè)? (一般為變量、數(shù)一般為變量、數(shù)組、結(jié)構(gòu)體組、結(jié)構(gòu)體, ,也可為常數(shù)或表達(dá)式也可為常數(shù)
59、或表達(dá)式) )。例如:。例如:CALL GETDAT( year,month,day),CALL GETDAT( year,month,day),獲取當(dāng)前系統(tǒng)日期獲取當(dāng)前系統(tǒng)日期, ,年、年、月和日數(shù)據(jù)月和日數(shù)據(jù), ,通過(guò)變?cè)ㄟ^(guò)變?cè)獃earyear、monthmonth和和dayday返回。返回。 概述概述標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)注意事項(xiàng)注意事項(xiàng)1 1標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序注意事項(xiàng)注意事項(xiàng)2 2第九章第九章 函數(shù)與子程序函數(shù)與子程序05/06第二學(xué)期第二學(xué)期9.2 9.2 標(biāo)準(zhǔn)子程序標(biāo)準(zhǔn)子程序/ /注意事項(xiàng)注意事項(xiàng)2 2 使用標(biāo)準(zhǔn)子程序要注意以下幾點(diǎn):使用標(biāo)準(zhǔn)子程序要注意以下幾點(diǎn):l標(biāo)準(zhǔn)子程序?qū)ψ冊(cè)?/p>
60、個(gè)數(shù)和類型有明確的規(guī)定和要求。標(biāo)準(zhǔn)子程序?qū)ψ冊(cè)膫€(gè)數(shù)和類型有明確的規(guī)定和要求??捎幸粋€(gè)變?cè)?、二個(gè)、多個(gè)變?cè)捎幸粋€(gè)變?cè)?、二個(gè)、多個(gè)變?cè)? ,也可以沒(méi)有變?cè)?。也可以沒(méi)有變?cè)W冊(cè)愋涂梢允钦?、?shí)型、復(fù)型、字符型、邏輯型、變?cè)愋涂梢允钦汀?shí)型、復(fù)型、字符型、邏輯型、數(shù)組、派生類型、指針等任意類型。數(shù)組、派生類型、指針等任意類型。l標(biāo)準(zhǔn)子程序可以產(chǎn)生多個(gè)結(jié)果數(shù)據(jù)標(biāo)準(zhǔn)子程序可以產(chǎn)生多個(gè)結(jié)果數(shù)據(jù), ,通過(guò)變?cè)祷卣{(diào)通過(guò)變?cè)祷卣{(diào)用程序用程序, ,也可不產(chǎn)生返回?cái)?shù)據(jù)也可不產(chǎn)生返回?cái)?shù)據(jù), ,而是產(chǎn)生某種操作而是產(chǎn)生某種操作, ,如如輸出一批數(shù)據(jù)。輸出一批數(shù)據(jù)。l如果標(biāo)準(zhǔn)子程序調(diào)用時(shí)沒(méi)有變?cè)绻麡?biāo)準(zhǔn)子程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人股權(quán)贈(zèng)與協(xié)議(公益捐贈(zèng))4篇
- 2025年度個(gè)人與公司承包旅游服務(wù)合同范本2篇
- 2025版明星肖像使用權(quán)獨(dú)家轉(zhuǎn)讓合同2篇
- 2025版?zhèn)€人二手房交易房屋抵押貸款服務(wù)協(xié)議
- 2025年度個(gè)人獨(dú)資企業(yè)數(shù)據(jù)安全管理與隱私保護(hù)合同3篇
- 2025年度個(gè)人向非營(yíng)利組織貸款合同樣本2篇
- 2025年度大型橋梁鋼管腳手架施工勞務(wù)承包合同
- 2025-2030全球法庭口譯服務(wù)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球環(huán)網(wǎng)配電單元行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年度個(gè)人汽車租賃合同違約責(zé)任條款
- 中央2025年國(guó)務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫(kù)附帶答案詳解
- 2024年09月北京中信銀行北京分行社會(huì)招考(917)筆試歷年參考題庫(kù)附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級(jí)100以內(nèi)進(jìn)退位加減法800道題
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 2024年公司領(lǐng)導(dǎo)在新年動(dòng)員會(huì)上的講話樣本(3篇)
- 眼科護(hù)理進(jìn)修專題匯報(bào)
- 介入手術(shù)室感染控制管理
- 2024北京初三(上)期末英語(yǔ)匯編:材料作文
- 2024年大型風(fēng)力發(fā)電項(xiàng)目EPC總承包合同
- 禮儀服務(wù)合同三篇
評(píng)論
0/150
提交評(píng)論