您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 会议纪要 > 第9章 函数与子例行程序
03/04第二学期苏州科技大学计算中心1.概述2.标准子程序3.语句函数4.内部子程序5.子程序形参与实参之间的数据传递关系6.重入口语句(ENTRY语句)7.递归子程序8.外部子程序9.习题九第九章函数与子例行程序9《FORTRAN90程序设计》课多媒体课件03/04第二学期苏州科技大学计算中心9.1概述/概述使用顺序结构、选择结构和循环结构可设计和编写一些比较复杂的程序了。使用函数和子例行程序能编写编写结构清晰、层次分明、短小简洁的好程序,是编写高质量、高水平、高效率程序的有效手段。通常在设计和编写程序时,会遇到以下三种情况:同一程序内多次出现相同或相似的运算或处理过程。不同程序内多次出现相同或相似的运算或处理过程。程序复杂。概述情况1情况2情况3说明9.1概述第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况19.1概述在设计和编写程序时,程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。例如:求五边形ABCDE的面积问题,如图9-1所示。已知:五边形5条边长为:a、b、c、d、e,两条对角线为:f、g。五边形面积计算问题变为3个三角形面积计算问题,3个三角形面积area1、area2、area3之和就是五边形面积area。三角形面积A求解公式:三边长为x,y,z。一般方法求解(程序)。函数方法求解(程序)。)xp)(yp)(xp(pA2/)zyx(pABCDEabcdefgarea1area2area3图9-1五边形概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况29.1概述在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。问题一:某房地产公司买下一块呈三角形形状的地盘准备盖住宅小区,地价为每平方米1000元,求这块地的总价。求解问题的核心是计算三角形面积。用一般方法求解(程序)。问题二:某单位有一个呈三棱台形状的水箱,平均每天消耗2水箱水,水价为每立方米8角钱,计算每天需支付的水费。求解问题的核心是计算三角形面积。用一般方法求解(程序)。用函数方法求解两问题(程序)。概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况39.1概述对于比较复杂的问题,设计和编写程序需要采用科学的程序设计方法。模块化和结构化程序设计方法是常用的程序设计方法,使用这些方法可大大降低问题的复杂性,使复杂问题的求解变得相对容易。使用函数和子例行程序可使用模块化和结构化程序设计方法设计和编写大型、复杂、高质量程序。例如:输入一批测试数据(30个),对其排序,输出排序结果数据。一般方法求解(程序)。结构化程序设计方法及函数方法求解(分层结构图、程序)。对复杂问题逐层进行任务分解,得到问题分层结构图,如图9-2所示。根据分层结构图,采用自顶向下或自底向上方法逐层设计和编写程序。最顶层问题用主程序实现,其余层子问题用函数或子例行程序实现,最后将主程序和若干函数或子例行程序组装成完整的可运行程序。设计和编写主程序时,可假定下一层子问题已经通过函数或子例行程序实现,暂不考虑其具体实现内容,假定:“输入”子问题由子例行程序input(A)实现,功能是从键盘输入数据至数组A;“排序”子问题由子例行程序sort(A)实现,功能是对数组A进行排序,排序结果在A中;“输出”子问题由子例行程序output(A)实现,功能是输出数组A的内容。概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/说明9.1概述FORTRAN90子程序,也称过程,划分为两类:函数和子例行程序。函数是指产生一个运算结果且通过操作数调用执行的子程序。如上面计算三角形面积的子程序area就是一个函数。子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。如上面完成输入操作的子程序input(A)就是一个子例行程序。每类子程序又划分为标准子程序和用户自定义子程序。用户自定义子程序又划分为内部子程序、外部子程序和模块子程序。FORTRAN90的子程序分类如图9-3所示。概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况1/程序19.1概述ABCDEabcdefgarea1area2area3图9-1五边形在设计和编写程序时,程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。例如:求五边形ABCDE的面积问题,如图9-1所示。已知:五边形5条边长为:a、b、c、d、e,两条对角线为:f、g。五边形面积计算问题变为3个三角形面积计算问题,3个三角形面积area1、area2、area3之和就是五边形面积area。三角形面积A求解公式:三边长为x,y,z。一般方法求解(程序)。函数方法求解(程序)。)xp)(yp)(xp(pA2/)zyx(pPROGRAMpentagonREALa,b,c,d,e,f,gREALarea1,area2,area3,area,p,q!输入五边形5个边长和两条对角线READ*,a,b,c,d,e,f,g!计算三角形ABE的面积area1p=(a+f+e)/2q=p*(p-a)*(p-f)*(p-e)area1=SQRT(q)!计算三角形BDE的面积area2p=(g+d+f)/2q=p*(p-g)*(p-d)*(p-f)area2=SQRT(q)!计算三角形BCD的面积area3p=(b+c+g)/2q=p*(p-b)*(p-c)*(p-g)area3=SQRT(q)!计算五边形面积areaarea=area1+area2+area3PRINT*,‘五边形面积:',areaEND概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况1/程序29.1概述ABCDEabcdefgarea1area2area3图9-1五边形在设计和编写程序时,程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。例如:求五边形ABCDE的面积问题,如图9-1所示。已知:五边形5条边长为:a、b、c、d、e,两条对角线为:f、g。五边形面积计算问题变为3个三角形面积计算问题,3个三角形面积area1、area2、area3之和就是五边形面积area。三角形面积A求解公式:三边长为x,y,z。一般方法求解(程序)。函数方法求解(程序)。)xp)(yp)(xp(pA2/)zyx(pPROGRAMpentagonREALa,b,c,d,e,f,gREALarea!输入五边形5条边长和两条对角线READ*,a,b,c,d,e,f,g!计算五边形面积areaarea=t_area(a,f,e)+t_area(g,d,f)+t_area(b,c,g)PRINT*,'五边形面积为:',areaCONTAINS!定义计算任意三角形面积函数t-areaFUNCTIONt_area(a,b,c)REALt_area,a,b,c,p,qp=(a+b+c)/2q=p*(p-a)*(p-b)*(p-c)t_area=SQRT(q)ENDFUNCTIONt_areaEND计算任意三角形概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况2/程序19.1概述在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。问题一:某房地产公司买下一块呈三角形形状的地盘准备盖住宅小区,地价为每平方米1000元,求这块地的总价。求解问题的核心是计算三角形面积。用一般方法求解(程序)。问题二:某单位有一个呈三棱台形状的水箱,平均每天消耗2水箱水,水价为每立方米8角钱,计算每天需支付的水费。求解问题的核心是计算三角形面积。用一般方法求解(程序)。用函数方法求解两问题(程序)。PROGRAMtotal_pricesREALa,b,c,area,p,q,t_prices!输入三角形边长a,b,cREAD*,a,b,c!计算三角形面积areap=(a+b+c)/2q=p*(p-a)*(p-b)*(p-c)area=SQRT(q)!计算总价t_pricest_prices=area*1000PRINT*,'地块总价为:',t_pricesEND概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况2/程序29.1概述在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。问题一:某房地产公司买下一块呈三角形形状的地盘准备盖住宅小区,地价为每平方米1000元,求这块地的总价。求解问题的核心是计算三角形面积。用一般方法求解(程序)。问题二:某单位有一个呈三棱台形状的水箱,平均每天消耗2水箱水,水价为每立方米8角钱,计算每天需支付的水费。求解问题的核心是计算三角形面积。用一般方法求解(程序)。用函数方法求解两问题(程序)。PROGRAMwater_pricesREALa,b,c,h,area,cubage,p,q,w_prices!输入三棱台底面三角形边长a,b,c和三棱台高hREAD*,a,b,c,h!计算三角形面积areap=(a+b+c)/2q=p*(p-a)*(p-b)*(p-c)area=SQRT(q)!计算三棱台容积cubagecubage=area*h!计算水价w_pricesPRINT*,'每天需支付水价为:',t_pricesEND概述情况1情况2情况3说明第九章函数与子例行程序03/04第二学期苏州科技大学计算中心概述情况1情况2情况3说明9.1概述/情况2/程序39.1概述在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。问题一:某房地产公司买下一块呈三角形形状的地盘准备盖住宅小区,地价为每平方米1000元,求这块地的总价。求解问题的核心是计算三角形面积。用一般方法求解(程序)。问题二:某单位有一个呈三棱台形状的水箱,平均每天消耗2水箱水,水价为每立方米8角钱,计算每天需支付的水费。求解问题的核心是计算三角形面积。用一般方法求解(程序)。用函数方法求解两问题(程序)。!使用函数求解问题一程序,area为外部函数PROGRAMtotal_pricesEXTERNALarea!声明area为外部函数REALa,b,c,t_pricesREAD*,a,b,c!输入三角形边长a,b,ct_prices=area(a,b,c)*1000!计算总价t_pricesPRINT*,'地块总价为:',t_pricesEND!使用函数求解问题二程序,area为外部函数PROGRAMwater_pricesEXTERNALarea!声明area为外部函数REALa,b,c,h,cubage,w_pricesREAD*,a,b,c,h!输入棱台底面三角形边长a,b,c和台高hcubage=area(a,b,c)*h!计算三棱台容积cubagew_prices=cubage*0.8*2!计算水价w_pricesPRINT*,'每天需支付水价为:',w_pricesEND!定义外部函数areaFUNCTIONarea(x,y,z)REALarea,x,y,z,p,q!计算三角形面积areap=(x+y+z)/2q=p*(p-x)*(p-y)*(p-z)area=SQRT(q)ENDFUNCTIONarea第九章函数与子例行程序03/04第二学期苏州科技大学计算中心9.1概述/情况3/程序19.1概述对于比较复杂的问题,设计和编写程序需要采用科学的程序设计方法。模块化和结构化程序设计方法是常用
本文标题:第9章 函数与子例行程序
链接地址:https://www.777doc.com/doc-3300108 .html