程序基本构件
程序设计需要系统化的方法 ■程序设计是用精确的语言告诉计算机该 做什么,要精确到最细节处, 一计算机只会刻板地执行程序 2
2
程序设计需要系统化的方法 一方面要写大型程序,一方面要精确到 细枝末节,这极具挑战性 一细节上的微小差错可带来巨大灾难, 例如1996年阿丽亚娜5火箭首次鉴定发射 失败的原因是将一个浮点数转换为整数的 代码有问题 3
3
软件开发过程 需求分析 制定程序规格 设计 实现 ■ 测试与排错 维护 4
4
软件开发过程 需求分析 一问题是什么?(尽可能多地去理解) 制定程序规格 程序要做什么?(而不是怎么做) ■对简单程序描述输入输出即可 设计 程序怎么做? ■主要任务是设计出满足规格的算法 ■一般用伪代码给出总体结构,不纠缠细节 5
5
软件开发过程 实现 一用某种程序设计语言翻译设计 测试与排错 测试程序是否如预期 -9 排除bug(debugging):定位和修正错误 维护 一运行中还会不断有问题 一大部分程序是永远都不会真正完成了 6
6
例温度转换 需求:预报摄氏度,想知道对应华氏度 规格:输入摄氏度,显示输出华氏度.两 者对应关系是F=(9/5)C+32. 设计算法:简单的IPO(详见下页) 实现:翻译成Pythoni程序(详见下页) 测试:常用边界数据.如输入0,100 7
7
算法与实现 伪代码写的算法: 输入摄氏度celsius 计算华氏度fahrenheit:=9/5 celsius+32 显示输出fahrenheit 8
8
算法与实现 Python:写的程序: convert.py #A program to convert Celsius temps to Fahrenheit by:Suzie Programmer def main(): celsius input("What is the Celsius temperature?" fahrenheit =9.0 /5.0 celsius 32 print "The temperature is",fahrenheit,"degrees Fahrenheit. main ( 9
9
程序构件:标识符 标识符(identifiers,names) 一值,变量,函数,模块等的名字 一字母或者下划线开头,后接字母数字下划线 大小写敏感 良好编程风格 一选择有意义的名字,并且风格统一 例:x,X,myName,凵_w,getX,getY, 非法的:i'am,getX,get-Y,3Q 10
10