python面向过程程序设计

本文我们学习面向过程的程序设计,其思想是以程序执行过程为设计流程,是程序设计中最自然的一种设计方法,也叫结构化编程

下面,我们以世界锦标赛-铅球为例子,来学习其面向过程的程序设计方法。

python面向过程程序设计_第1张图片

铅球比赛是技术和力量的完美结合,铅球比赛的成绩由这两个因素所决定 。我们把这个问题抽象为铅球飞行轨迹的计算问题,铅球飞行轨迹IPO模式为:

python面向过程程序设计_第2张图片

为了简化问题,我们忽略空气阻力,重力加速度取9.8米/(秒*秒)。在程序中模拟铅球的飞行,其实就是时刻更新铅球在飞行中的位置。

在一段时间内,铅球在水平面和垂直面上移动的距离,由它在这个方向上的速度所决定。为了使问题更加简单,分开讨论x轴和y轴的速度,由于忽略了空气阻力,在飞行过程中x轴方向上的速度保持不变,然而,由于重力加速度的影响,y轴方向上的速度时刻在发生变化。y轴方向上的速度开始时是正的,当铅球下落时,速度就会变为负值。根据以上分析,可以设计相关参数:

python面向过程程序设计_第3张图片

面向过程的程序设计基本步骤:

python面向过程程序设计_第4张图片

我们使用python3来模拟铅球的飞行轨迹,代码如下:

from math import pi,sin,cos,radians
def main():
    angle,vel,h0,time=getInputs()
    xpos,ypos=0,h0
    print('the position:({0:.3f},{1:0.3f})'.format(xpos,ypos))
    xvel,yvel=getXYComponents(vel,angle)
    while ypos>=0:
          xpos,ypos,yvel=updatePositionAndVelocity(time,xpos,ypos,xvel,yvel)
          print('the position:({0:.3f},{1:0.3f})'.format(xpos,ypos))

    print('\nDistance traveled:{0:0.1f} meters.'.format(xpos))

def getInputs():
    angle=eval(input('Enter the launch angle(in degrees):'))
    vel=eval(input('Enter the initial velocity(in meters/sec):'))
    h0=eval(input('Enter the initial height(in meters):'))
    time=eval(input('Enter the time interval:'))
    return angle,vel,h0,time

def getXYComponents(vel,angle):
    theta=radians(angle)
    xvel=vel*cos(theta)
    yvel=vel*sin(theta)
    return xvel,yvel

def updatePositionAndVelocity(time,xpos,ypos,xvel,yvel):
    xpos=xpos+time*xvel
    yvel1=yvel-time*9.8
    ypos=ypos+time*(yvel+yvel1)/2.0
    yvel=yvel1
    return xpos,ypos,yvel

if __name__=='__main__':
    main()

运行程序,输入输出如下:





最后,我们总结面向过程程序设计的特点:

python面向过程程序设计_第5张图片


(完)


你可能感兴趣的:(python,面向过程程序设计)