第11章子程序 §1函数子程序 §2子例程子程序 §3实参和虚参之间的数据传送 §4程序举例 2021/2/24
1 2021/2/24 §1 函数子程序 §2 子例程子程序 §3 实参和虚参之间的数据传送 §4 程序举例 第11章 子程序
引言 子程序是相对于主程序而言的,到目前为止, 我们涉及到的程序都只有主程序。 一个 Fortran程序可以由一个主程序和若干个 子程序组成。程序中可以只有主程序而没有子程 序,但不能没有主程序而只有子程序。 程序在运行时,总是从主程序开始执行,由主 程序调用子程序,最后在主程序中结束整个程序 的运行
2 子程序是相对于主程序而言的,到目前为止, 我们涉及到的程序都只有主程序。 一个Fortran程序可以由一个主程序和若干个 子程序组成。程序中可以只有主程序而没有子程 序,但不能没有主程序而只有子程序。 程序在运行时,总是从主程序开始执行,由主 程序调用子程序,最后在主程序中结束整个程序 的运行。 ❖引言
Fortran的子程序有三种:函数子程序、子例程 子程序、数据块子程序。 通常我们将函数子程序和子例程子程序统称为 子程序,数据块子程序仅用于给公用区中的变量赋 初值。本章提到的“子程序”即指函数子程序或子 例程子程序。 子程序可以被主程序调用,也可以被其它子程 序调用。但标准 Fortran77的子程序不能直接或间 接地调用自己,即不允许递归调用
3 Fortran的子程序有三种:函数子程序、子例程 子程序、数据块子程序。 通常我们将函数子程序和子例程子程序统称为 子程序,数据块子程序仅用于给公用区中的变量赋 初值。本章提到的“子程序”即指函数子程序或子 例程子程序。 子程序可以被主程序调用,也可以被其它子程 序调用。但标准Fortran77的子程序不能直接或间 接地调用自己,即不允许递归调用
§1函数子程序(P234238) 【引例】求函数(x)=x2+x+1在x=1,2,3时的值。 函数用一条语句即可实现,既可采用语句函数的形式, 也可采用函数子程序的形式。 write ( * )f(1.0), f(2.0), f(3.0) function f(x) end 仁x*x+X+1 end +1(x>0 【例111】计算函数:y=10(x=0)的值。 l(x<0 函数用一条语句无法实现,只能采用函数子程序的形 式。 51子程序 2021/2/24
4 2021/2/24 §1 函数子程序(p234-238) 【例11.1】计算函数: 的值。 − = + = ( ) ( ) ( ) 1 0 0 0 1 0 x x x y 【引例】求函数f(x)=x 2+x+1在x =1, 2, 3时的值。 函数用一条语句即可实现,既可采用语句函数的形式, 也可采用函数子程序的形式。 write(* , *)f(1.0), f(2.0), f(3.0) end function f(x) f=x*x+x+1 end 函数用一条语句无法实现,只能采用函数子程序的形 式。 §1 子程序
5 函数子程序: ②主程序:④ function y(x) write (*, Asinput x if(xgt. 0.o)then le read(", "x y=1.0 wrte()y=’,y(x) else if(x.eg. 0.0)then end 0.0 else y=-1.0 end if end ④4 51子程序 2021/2/24
5 2021/2/24 function y(x) if(x.gt.0.0) then y=1.0 else if(x.eq.0.0) then y=0.0 else y=-1.0 end if end write(* , *)‘input x’ read(* , *)x write(* , *)‘y=’, y(x) end 函数子程序: 主程序: §1 子程序 ② ① ③ ④