博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python面向过程程序设计
阅读量:4171 次
发布时间:2019-05-26

本文共 1430 字,大约阅读时间需要 4 分钟。

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

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

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

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

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

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

我们使用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()

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

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

(完)

你可能感兴趣的文章
Qt容器测试
查看>>
自定义插件
查看>>
编译数据库ODBC
查看>>
无法解析的外部符号的 3 种可能
查看>>
webalizer流量分析软件windows下的配置与使用
查看>>
Java的数组(Array)、Vector、ArrayList、HashMap的异同
查看>>
Apache的使用方法
查看>>
PHP环境配置:Apach+Tomcat+mysql+php
查看>>
深入理解Glibc堆的实现(上)
查看>>
C&C远控工具:Ares
查看>>
窃密团伙瞄准企业机密信息,备用病毒超60个
查看>>
勒索软件的“中流砥柱”:深入分析GandCrab新型Evasive感染链
查看>>
FIN7 2.0归来:“借尸还魂”的可疑组织们
查看>>
CVE-2019-5018:Sqlite3 远程代码执行漏洞
查看>>
HITB | 360议题分享:卫星可欺骗 地震警报可伪造
查看>>
公有云容器安全
查看>>
为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析
查看>>
《Lateral Movement — SCM and DLL Hijacking Primer》的利用扩展
查看>>
为逃避检测而取消持久性:KPOT v2.0信息窃取恶意软件分析
查看>>
ScarCruft APT组织开发针对蓝牙的恶意软件
查看>>