Fortran PPT课件1 (17)外部子例行子程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3 外部子例行子程序
! 把0~360的角度转换成0~2PI的弧度 subroutine Angle_TO_Rad( angle, rad ) implicit none real angle, rad real, parameter :: pi=3.14159 rad = angle*pi/180.0 return end
6.3 外部子例行子程序
program ex0805 implicit none integer :: a = 1 integer :: b = 2 write(*,*) a,b call add(a) call add(b) write(*,*) a,b stop end subroutine add(num) implicit none integer :: num num = num+1 return end
6.3 外Leabharlann Baidu子例行子程序
外部子例行子程序 外部子例行子程序类型:普通、递归、并行。 形式一: subroutine 子例行程序名(d1,…,dn) 哑元表,可为变量名、数 …… 组名、哑过程名或*或无 命名规则与一般的变量相同, 子例行子程序体 不代表值,与类型无关 …… 子例行程序名是开始的关键字 [return] end [subroutine [子例行程序名]]
program ex0806 implicit none integer, parameter :: players = 5 real :: angle(players) = (/ 30.0, 45.0, 35.0, 50.0, 40.0 /) real :: speed(players) = (/ 25.0, 20.0, 21.0, 27.0, 22.0 /) real :: distance(players) integer :: I do I=1, players call Get_Distance( angle(i), speed(i), distance(i) ) write(*,"('Player ',I1,' =',F8.2)") I, distance(i) end do end
6.3 外部子例行子程序
哑元类型可以按隐含规则确定,当哑元是数组名 时,必须在子例行子程序体内用类型说明语句或维 数语句说明其类型、维数和各维的上、下界,当哑 元是指针时,也必须在子例行子程序体内用类型说 明语句说明。
6.3 外部子例行子程序
外部子例行子程序的调用 call 子例行程序名(a1,…,an) 例:以初速度和角度,计算标枪的投射距离
6.3 外部子例行子程序
! 由角度、切线速度来计算投射距离 subroutine Get_Distance( angle, speed, distance ) implicit none real angle, speed ! 传入的参数 real distance ! 准备传回去的结果 real rad, Vx, time ! 内部使用 real, parameter :: G=9.81 call Angle_TO_Rad( angle, rad ) ! 单位转换 Vx = speed*cos(rad) ! 水平方向速度 time = 2.0*speed*sin(rad) / G ! 在空中飞行时间 distance = Vx * time ! 距离 = 水平方向速度 * 飞行时间 return end