《Fortran程序设计(第七章函数与子程序(上)).ppt》由会员分享,可在线阅读,更多相关《Fortran程序设计(第七章函数与子程序(上)).ppt(12页珍藏版)》请在课桌文档上搜索。
1、第七章 函数与子程序(上),7.1概述,7.5 子程序的嵌套调用,7.2 函数子程序,7.6 模块,7.3 子例子程序,7.7 递归过程,7.4 虚实结合,7.8 其他部分,7.9 程序举例,7.1 概述,过程是可供调用的一个子程序单元,可供程序中任何需要它的地方调用。这既能避免重复性编程劳动,又能节省编程时间与程序的存储空间。但一个Fortran程序必须有一个主程序单元,而且只能有一个主程序单元。一个程序中可以根据需要包含任意数量的子程序单元,子程序单元可以被主程序单元调用,也可以被其它子程序单元调用,甚至可以递归调用。主程序单元一般由Program语句开头,以END语句结束。,Fortra
2、n程序中的过程有两种:函数子程序过程(简称函数子程序或函数)子例子程序过程(简称子例子程序或子例行子程序)。这两者的形式、功能与调用方法都有所不同,但总称为过程子程序,也简称为过程或子程序。,函数的分类:,对过程有如下说明:1.过程作为子程序不能独立运行,只供其它程序单元调用。2.过程的调用方法是书写过程名,后跟用一对圆括号括起来的实元表。3.过程单元中的虚元的个数可以有多个,它们都要写在一对圆括号内。4.当一个过程被调用时,调用它的主程序或子程序称作主调程序。5.主调程序和被调用程序间的数据传递主要是通过虚实结合实现。,内在函数分类(1)三角函数 SIN()、COS()、TAN()(以弧度为
3、单位)SIND()、COSD()、TAND()(以度为单位)(2)常见的数据操作 类型转换函数:REAL()、DBLE()、CMPLX()、INT()求绝对值:ABS()(3)地址函数 LOC();%LOC()(在Fortran90中新增)(4)位运算函数(在Fortran90中新增)OR、AND、XOR、LSHIFT、RSHIFT,系统函数调用 方法:写出相应的函数名字,并在后面的括号中给出所要计算的自变量值 如:SQRT(9.0)、ABS(X)注意:(1)每个函数对所需自变量的个数和自变量类型有明确的规定和要求。(2)系统函数的函数返回值也具有一定的类型。一般返回值与自变量类型一致。(3)
4、函数引用时,自变量必须写在括号里,自变量可以是常数、变量或表达式。,7.2 函数子程序,函数子程序的编写方法例7-1 编写求1+2+3+N的值的函数子程序。应当注意:引用函数子程序时写出的是函数名,但函数的返回值却是函数的结果值。每一个函数子程序中都要使用一个结果变量。,1.函数开始语句的一般形式FUNCTION 函数名(形参表)RESULT(结果名)2.函数结束语句 是函数的结束标志,将控制返回到主调程序。END FUNCTION 函数名3.函数过程体 是函数语句和函数结束语句之间的程序段,分为说明部分和执行部分。说明部分应对程序体内一切变量、数组等实体(包括变元)作出说明,同时还要说明函数
5、结果变量名,但不可说明函数名。执行部分中必须对函数结果名至少赋值一次。4.形参 可以是变量名、数组名、过程名、指针等。,函数子程序编写规则:,函数调用,函数子程序的调用形式与内在函数的引用形式相同,函数子程序的调用应出现在表达式中。调用形式:函数名(实元表)注意:实元与虚元个数、类型、位置一一对应,但实元与虚元名字可以不同。例7-2 编写函数子程序,求,前n项的和,x和n的值在调用时给定。,练习:计算函数Sinh(x)的值,当ex的通项值小于等于1E-6时停止。计算公式如下:,!主程序如下:Program main1 Real:myExp,y,x Write(*,*)Enter x:Read(*,*)x Y=(MyExp(x)-MyExp(-x)/2.0 Write(*,100)Sinh(,x,)=,Y END PROGRAM,!函数子程序Function MyExp(x)result(exp_res)Real:Exp_res,x,s,t integer:n N=0 T=1 S=1 do while(ABS(T)1E-5)N=N+1 T=T*X/N S=S+T end do Exp_res=S END FUNCTION,QUESTION?,12,