程序设计与软件开发基础(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第27讲程序设计与软件开发基础(一)
教学目标及基本要求
掌握逐步求精的结构化程序设计方法,初步掌握良好的程序设计风格的内涵,掌握算法的基本概念,理解面向对象程序设计的基本概念。
教学重点
逐步求精的结构化程序设计方法,算法的基本概念。
教学难点
面向对象程序设计的基本概念,算法的复杂度。
教学内容
程序设计的风格
结构化程序设计
面向对象程序设计
算法的基本概念
算法的复杂度
教学时间
1学时
7.1 程序设计概述
7.1.1程序设计的风格
1.程序设计风格
程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。
程序设计的风格总体而言应该强调简单和清晰,程序必须是可以理解的。
主导的程序设计风格:“清晰第一,效率第二” 。
2.良好程序设计风格
(1)源程序文档化
①符号名的命名
见名知意
名字不宜太长
不要使用相似的名字
不要使用关键字做标识符
同一个名字不要有多种含义
②程序注释
序言性注释:
通常位于每个程序的开头部分,它给出程序的整体说明。主要描述内容包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。
功能性注释:
一般嵌在源程序体之中,主要描述其后的语句或程序做什么。
③视觉组织
在程序中利用空格、空行、缩进等技巧使程序层次清晰。
(2)数据说明的方法
①数据说明的次序规范化:数据说明次序固定,便程序理解、阅读和维护,可以使
数据的属性容易查找,也有利于测试、排错和维护。
②说明语句中变量安排有序化:当一个说明语句说明多个变量时,变量按照字母顺
序排序为好。
③使用注释来说明复杂数据的结构。
④显式地说明一切变量。
(3)语句的结构
①在一行内只写一条语句。
②程序编写应优先考虑清晰性,除非对效率有特殊要求,即清晰第一,效率第二。
③首先要保证程序正确,然后才要求提高速度。
④避免使用临时变量而使程序的可读性下降。
⑤避免采用复杂的条件语句和不必要的转移,尽量使用库函数。
⑥数据结构要有利于程序的简化,程序要模块化,且要尽量使模块功能单一化,利
用信息隐蔽,确保每一个模块的独立性。
⑦尽量只采用3种基本控制结构来编写程序。
(4)输入和输出
①对所有的输入数据都要检验数据的合法性以及检查输入项的各种重要组合的合理
性。
②输入格式要简单,以使输入的步骤和操作尽可能简单。
③输入数据时,应允许使用自由格式和缺省值。
④输入一批数据时,最好使用输入结束标志。
⑤以交互式方式输入、输出数据时,要在屏幕上有明确的提示符,数据输入结束时,
应在屏幕上给出状态信息。
⑥当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;
给所有的输出加注释,并设计良好的输出报表格式。
7.1.2 结构化程序设计
1.结构化程序设计的原则
自顶向下、逐步求精、模块化、限制使用GOTO语句。
(1)自顶向下
先总体,后细节;先全局目标,后局部目标。
(2)逐步求精
设计一些子目标作为过渡,逐步细化。
(3)模块化
把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。
(4)限制使用GOTO语句
使用GOTO语句有时会使程序执行效率较高,但也容易造成程序混乱,程序不易理解、不易排错、不易维护,因而要尽量限制使用GOTO语句。
2.结构化程序的基本结构与特点
结构化程序的基本结构只有3种:顺序、选择和循环
(1)顺序结构
如图7-1所示,顺序结构是顺序执行结构。所谓顺序执行,就是按照程序语句行的自然
图7-1 顺序结构
(2)选择结构
选择结构又称为分支结构,它包括简单选择和多分支选择结构,这种结构可以根据设定的条件,判断应该选择哪一条分支来执行相应的语句序列。图7-2列出了包含2个分支的简单选择结构。
(3)循环结构
循环结构又称为重复结构,它根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段。分为两类:
当型循环结构:先判断后执行循环体(图7-3)
直到型循环结构:先执行循环体后判断(图7-4)
3.结构化程序设计原则和方法的运用 (1)使用顺序、选择、循环三种结构表示程序的控制逻辑。
(2)选用的控制结构只准许有一个入口和一个出口。
(3)复杂结构应用嵌套的基本控制结构进行组合嵌套来实现,语言中所没有的控制结构,应该采用前后一致的方法来模拟。
(4)严格控制GOTO 语句的使用。
7.1.3 面向对象程序设计
1.面向对象程序设计方法的产生
系统的需求总是处于不断变化之中,因此,需要设计对变化有弹性的系统 。 利用传统的结构化程序设计方法设计的系统不易扩充。 条件 T F A B
图7-2 选择结构
判断条件 循环体
循环体
判断条件
图7-3 当型循环结构
图7-4 直到型循环结构
传统的结构化程序设计方法主要是面向过程的,也就是在分析设计时更多地从过程处理的角度进行,系统框架结构,系统模块的划分、设计都是基于系统所实现的功能,而功能是系统中最易变的部分,这样,如果系统需求发生一些变化(如系统某些功能的改进或扩充新功能),系统的结构就会受到破坏。
在实际系统中,最稳定的部分是系统对象,它直接描述问题域。面向对象的系统能够有效提高系统结构的稳定性。
较复杂的系统将为每个对象类定义一些更复杂的功能(如“飞机”对象类中增加自动跟踪功能)或者增加一些新的对象类(如“雷达”),但是系统的核心部分(问题域中的对象)即使在系统功能范围发生变化的情况下,仍保持不变。
传统的结构化分析和设计方法中存在迥然不同的表示方法。
在分析阶段采用DFD表示,而在设计阶段采用结构图的表示方法。
在面向对象方法中,从分析(OOA)、设计(OOD)到编程实现(OOP)采用的都是同样的表示方法。
2.面向对象程序设计方法学的优点
可重用性
继承是面向对象方法的一个重要机制,用面向对象方法设计的系统的基本对象类可以被其他新系统重用,通常这是通过一个包含类和子类层次结构的类库来实现的,面向对象方法通过从一个项目向另一个项目提供一些重用类而能显著提高生产率。
可维护性
表示方法的一致性
3.面向对象程序设计方法学的基本概念
(1)对象
概念:在现实世界中,对象指的是任何一个实体。它可能是一个人、一部车。
对象的组成:
对象名:用来标识对象
对象的属性:是实体所具有的性质(外形与状态)。
对象的方法:是实体所拥有的行为。
(2)消息
概念:对象之间进行通信的一种构成叫做消息。
消息传递:当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息。
接收到信息的对象经过解释,然后予以响应。这种通信机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何响应该请求。
(3)类
概念:类是对象的抽象。
(4)继承
概念:继承是父类和子类之间共享数据和方法的机制。可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承的分类
单重继承:子类只从一个父类得到继承
多重继承:子类从多个父类得到继承
(5)多态性
概念:同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。 多态性的作用:多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了信息