目 录
上一页
下一页
退 出
第七章
程序设计基础
思考题
目 录
上一页
下一页
退 出
本章教学重点与要求
1,熟练掌握结构化程序设计的原则和基本结
构。
2、熟练掌握简单程序的分析和流程图的绘制。
3,正确理解面向对象方法的基本概念。
目 录
上一页
下一页
退 出
举 例
本章要点
源程序文档化
数据说明的方法
语句的结构
输入和输出
结构化程序设计的原则
结构化程序的基本结构与特点
结构化程序设计原则和方法的应用
关于面向对象方法
面向对象方法的基本概念
目 录
上一页
下一页
退 出
要 点
举 例
一、源程序文档化
源程序文档化应考虑如下几点。
( 1) 符 号名的命名
( 2) 程序注释
( 3) 视觉组织
目 录
上一页
下一页
退 出
符号名的命名应具有一定的实际含义,
做到见名知意,以便于对程序功能的理解。
例,r代表半径
sum代表求和
area代表面积
目 录
上一页
下一页
退 出
正确的注释能够帮助读者理解程序。注释一般
分为 序言性注释 和 功能性注释 。
序言性注释,通常位于每个程序的开头部分,
它给出程序的整体说明,主要描述内容可以包括:
程序标题、程序功能说明、主要算法、接口说明、
程序位置、开发简历、程序设计者、复审者、复审
日期、修改日期等。
功能性注释,一般潜入在源程序体之中,主要
描述其后的语句或程序做什么。
目 录
上一页
下一页
退 出
为使程序的结构一目了然,可以在程序
中利用空格、空行、缩进等技巧使程序层次
清晰。
例 c语言中的一段程序,
if (a>b)
printf(“%d”,a);
else
printf(“%d”,b);
目 录
上一页
下一页
退 出
要 点
举 例
二、数据说明的方法
在编写程序时, 需要注意数据说明的风
格, 以便使程序中的数据说明更易于理解
和维护 。 一般应注意如下几点 。
( 1) 数据说明的次序规范化 。
( 2) 说明语句中变量安排有序化 。
( 3) 使用注释来说明复杂数据的结构 。
目 录
上一页
下一页
退 出
要 点
举 例
三,语句的结构
程序应该简单易懂,语句构造应该简单直接,
不应该为提高效率而把语句复杂化。一般应注意如
下,
( 1) 在一行内只写一条语句;
( 2) 程序编写应优先考虑清晰性;
( 3) 除非对效率有特殊要求, 程序编写要做到, 清晰第一,
效率第二, ;
( 4) 首先要保证程序正确, 然后才要求提高速度;
( 5) 避免使用临时变量而使程序的可读性下降;
( 6)避免不必要的转移;
目 录
上一页
下一页
退 出
要 点
举 例
( 7) 尽可能使用库函数;
( 8) 避免采用复杂的条件语句;
( 9) 尽量减少使用, 否定, 条件的条件语句;
( 10) 数据结构要有利于程序的简化;
( 11) 要模块化, 使模块功能尽可能单一化;
( 12) 利用信息隐蔽, 确保每一个模块的独立性;
( 13) 从数据出发去构造程序;
( 14) 不要修补不好的程序, 要重新编写 。
目 录
上一页
下一页
退 出
四,输入和输出
输入和输出信息是用户直接关心的,输入和输
出方式和格式应尽可能方便用户的使用,因为系
统能否被用户接受,往往取决于输入和输出的风
格。在设计和编程时都应该考虑如下原则,
( 1) 对所有的输入数据都要检验数据的合法性;
( 2) 检查输入项的各种重要组合的和理性;
( 3) 输入格式要简单, 以使得输入的步骤和操作
尽可能简单;
( 4)输入数据时,应允许使用自由格式;
目 录
上一页
下一页
退 出
( 5) 应允许默认值;
( 6) 输入一批数据时, 最好使用输入结束标
志;
( 7) 在以交互式输入 /输出方式进行输入时,
要在屏幕上使用提示符明确提示输入的请求,
同时在数据输入过程中和输入结束时, 应在
屏幕给出状态信息;
( 8) 当程序设计语言对输入格式有严格要求
时, 应保持输入格式和输入语句的一致性;
给所有的输出加注释, 并设计输出报表格式 。
目 录
上一页
下一页
退 出
五、结构化程序设计的原则
结构化程序设计方法的主要原则可以概括为,
( 1) 自顶向下
( 2) 逐步求精
( 3) 模块化
( 4) 限制使用 goto语句
目 录
上一页
下一页
退 出
自顶向下,
程序设计时,应先考虑总体,后考
虑细节;先考虑全局目标,后考虑局部
目标。不要一开始就过多追求众多的细
节,先从最上层总目标开始设计,逐步
使问题具体化。
目 录
上一页
下一页
退 出
逐步求精,
对复杂问题,应设计一些子目标作
过渡,逐步细化。
模块化,
一个复杂问题,肯定是由若干个简
单问题构成。模块化是把程序要解决的
总目标分解为分目标,再进一步分解为
具体的小目标,通常把每一个小目标称
为一个模块。
目 录
上一页
下一页
退 出
限制使用 GOTO语句,
①滥用 GOTO语句确实有害,应尽量
避免;
②完全避免使用 GOTO语句并非是个
明智的选择,有些地方使用 GOTO语句,会
使程序流程更清楚、效率更高;
目 录
上一页
下一页
退 出
六、结构化程序的基本结构与特点
结构化程序设计包括,
( 1) 顺序结构
( 2) 选择结构
( 3) 循环结构
结构化程序设计优点,
( 1) 程序易于理解、使用和维护。
( 2) 提高了编程工作的效率,降低了软件开
发成本。
目 录
上一页
下一页
退 出
流程图是用一些图框来表示程序或算法的运行
走向的一种图示。用图形表示算法或程序的走向,
直观形象、容易理解。美国国家标准化协会 (ANSI)
规定了一些常用的流程图符号,已被程序工作者所
普遍采用。
目 录
上一页
下一页
退 出
常用流程图符号,
起止框 输入输出框
判断框 连接圈
指向线 处理框
目 录
上一页
下一页
退 出
顺序结构是一种最基本、最常用的结构。顺序
结构是顺序执行结构,所谓顺序执行,就是按照程
序语句的自然顺序,一条语句一条语句地执行程序。
A
B
目 录
上一页
下一页
退 出
例 1,输入圆的半径求圆的周长和面积。
【 算法 】, ①初始化各量:使用输入语句输入圆半径
存入 r中,l用于存放圆的周长,s用于圆
的面积。
②计算圆的周长 l=2*π *r,s=π *r*r。
③输出信息:输出 l和 s的值。
【 分析 】,
本题要计算的是圆的面积和周长,其
中已知圆的半径。这样,只要我们利用圆
的周长和半径的公式就可以计算。
开始
输入 r的值
计算周长 l的值
计算面积 s的值
输入 l,s的值
结束
目 录
上一页
下一页
退 出
选择结构又称为分支结构,它包括简单选择和多分支选
择结构,这种结构可以根据设定的条件,判断应该选择哪一
条分支来执行相应的语句序列。
条件?
A B
目 录
上一页
下一页
退 出
例 2:输入三角形的三条边,计算三角形的面积。
【 分析 】,
本题要计算的是三角形的面积,其中已知
三角形的三条边。这样,只要我们计算周长的
一半,然后利用海伦公式计算即可。此问题的
关键在于判断输入的三条边能否够成三角形。
【 算法 】,
①初始化各量:使用输入语句输入三边分别存
入 a,b,c三边中,s用于存放周长的一半,area
用于存放计算出的面积值。
②判断三边能否够成三角形:如果同时满足 a+b>c,
b+c>a和 a+c>b三个条件,则转到③;否则转到④。
③计算三角形的面积并输出,s=(a+b+c)/2,area=。
④输出提示信息:三边不符合条件,不能计算三角
形的面积。
输出不符合条件
输入 a,b,c的值
计算三角形面积,输出
开始
能否构成三角形
结束
目 录
上一页
下一页
退 出
循环结构是根据给定的条件,判断是否需要重复执行某
一相同的或类似的程序段,利用循环结构可简化大量的程序
行。在程序设计语言中,循环结构对应两类循环语句,对先
判断后执行循环体的称为当型循环结构;对先执行循环体后
判断的称为直到型循环结构,如下图所示。


条件?
语句组


条件?
语句组
当型循环结构 直到型循环结构
目 录
上一页
下一页
退 出
例 3:计算表达式 1-1/2+1/3-1/4+… +1/99-1/100的值。
【 分析 】,
本题要计算的是 100个分数的和,其中分子都是 1,
分母分别从 1递增排到 100,又奇数项的值为正,偶数
项的值为负。这样,只要我们计算出每一项的值,然
后进行累加即可。此问题的关键在于解决符号。
【 算法 】,
①初始化各量,n=1,用于循环计数,同时参与每一项的
计算; s=0,用于累加计算出的各项,得到最终所求。
②计算中间项,n为奇数,t=1/n;否则,t=-1/n。
③累加各项,s=s+t。
④重复②和③,直到 n>100,s即为所求和的值。
目 录
上一页
下一页
退 出
开始
结束
n=1,s=0
n%2!=0
t=1/n t=-1/n
s=s+t,n=n+1
输出 s




n≤ 100
目 录
上一页
下一页
退 出
七、结构化程序设计原则和方法的应用
在结构化程序设计的具体实施中,要注意把握如下要素,
( 1) 使用程序设计语言中的顺序, 选择, 循环等有限的控
制结构表示程序的控制逻辑;
( 2) 选用的控制结构只准许有一个入口和一个出口;
( 3) 程序语句组成容易识别的块, 每块只有一个入口和一
个出口;
( 4) 复杂结构应该用嵌套的基本控制结构进行组合嵌套来
实现;
目 录
上一页
下一页
退 出
( 5) 语言中所没有的控制结构, 应该采用前后一致的方法来
模拟;
( 6) 严格控制 GOTO语句的使用, 其意思是指,
① 用一个非结构化的程序设计语言去实现一个结构化的构
造;
② 若不使用 GOTO语句会使功能模糊;
③在某种可以改善而不是损害程序可读性的情况下。
目 录
上一页
下一页
退 出
八、关于面向对象方法
面向对象的起源,
面向对象的软件开发方法在 20世纪 60年代后期首
次提出,以 60年代末挪威奥斯陆大学和挪威计算中心
共同研制的 Simula语言为标志,面向对象方法的基本
要点首次在 Simula语言中得到了表达和实现。后来一
些著名的面向对象语言 (如 Smalltalk,C++,Java、
Eiffel)的设计者都曾从 Simula得到启发。随着 20世
纪 80年代美国加州的 Xerox研究中心推出 Smalltalk语
言和环境,使面向对象程序设计方法得到比较完善的
实现。 Smalltalk-80等一系列描述能力较强、执行效
率较高的面向对象编程语言的出现,标志着面向对象
的方法与技术开始走向实用。
目 录
上一页
下一页
退 出
面向对象方法的本质,
主张从客观世界固有的事物出发来构造系统,提倡
用人类在现实生活中常用的思维方法来认识、理解和描
述客观事物,强调最终建立的系统能够映射问题域,也
就是说,系统中的对象以及对象之间的关系能够如实地
反映问题域中固有事物及其关系。
目 录
上一页
下一页
退 出
面向对象方法的以下主要优点,
( 1)与人类习惯的思维方法一致
( 2)稳定性好
( 3)可重用性好
( 4)易于开发大型软件产品
( 5)可维护性好
目 录
上一页
下一页
退 出
九、面向对象方法的基本概念
关于面向对象方法,涵盖对象及对象属性与方法、
类、继承、多态性几个基本要素。下面分别介绍面向
对象方法中这几个重要的基本概念,这些概念是理解
和使用面向对象方法的基础和关键。
目 录
上一页
下一页
退 出
( 1) 对象 (Obect)
对象是面向对象方法中最基本的概念。它可以用
来表示客观世界中的任何实体,也就是说,应用领域
中有意义的、与所要解决的问题有关系的任何事物都
可以作为对象,它既可以是具体的物理实体的抽象,
也可以是人为的概念,或者是任何有明确边界和意义
的东西。
面向对象的程序设计方法中涉及的对象是系统中
用来描述客观事物的一个实体, 是构成系统的一个基
本单位, 它由一组表示其静态特征的属性和它可执行
的一组操作组成 。
目 录
上一页
下一页
退 出
方法:对象可以做的操作表示它的动态行为 。
属性:即对象所包含的信息, 它在设计对象时确定, 一般
只能通过执行对象的操作来改变 。
对象的封装性:操作描述了对象执行的功能,若通过消息
传递,还可以为其他对象使用。操作的过程对外是封闭的,
即用户只能看到这一操作实施后的结果。这相当于事先已
经设计好的各种过程,只需要调用就可以了,用户不必去
关心这一过程是如何编写的。
目 录
上一页
下一页
退 出
对象一些基本特点,
① 标识惟一性
② 分类性
③多态性
④封装性
⑤模块独立性好
目 录
上一页
下一页
退 出
( 2) 类 (Class)和实例 (Instance)
类:是具有共同属性、共同方法的对象集合,类
是对象的抽象,它描述了属于该对象类型的所有对象
的性质,而一个对象则是其对应类的一个实例。
( 3)消息 (Message)
消息:是一个实例与另一个实例之间传递的信息,
它请求对象执行某一处理或回答某一要求的信息,它
统一了数据流和控制流。
发送对象 接 口 接受对象
消息
操作名、参数
消息传递示意图
目 录
上一页
下一页
退 出
( 4)继承 (Inheritance)
继承:是面向对象的方法的一个主要特征 。 继承是使
用己有的类定义作为基础建立新类的定义技术 。 已有的类
可当作基类来引用, 则新类相应地可当作派生类来引用 。
广义地说,继承是指能够直接获得已有的性质和特征,
而不必重复定义它们。
目 录
上一页
下一页
退 出
( 5)多态性 (Polymorphism)
对象根据所接受的消息而做出动作,同样的消息被
不同的对象接受时可导致完全不同的行动,该现象称为
多态性。
在面向对象的软件技术中,多态性是指子类对象可
以像父类对象那样使用,同样的消息既可以发送给父类
对象也可以发送给子类对象。