第5章 结构化程序设计.ppt
第第5章章 结构化程序设计结构化程序设计本章内容本章内容 程序设计的概念程序设计的概念 计算机程序设计的一般过程计算机程序设计的一般过程 结构化程序设计方法结构化程序设计方法 结构化程序设计的规则结构化程序设计的规则 结构化编程结构化编程 程序测试程序测试 1 1、计算机程序设计的特点、计算机程序设计的特点计算机程序设计主要具有计算机程序设计主要具有:构造性构造性:根据求解的问题根据求解的问题,构造出一个程序实体构造出一个程序实体,然后上机运行然后上机运行 严谨性严谨性:只能接受准确无误的信息只能接受准确无误的信息,稍有疏漏就可能付出高昂的稍有疏漏就可能付出高昂的 代价代价 程序设计不能使用具有二义性的自然语言程序设计不能使用具有二义性的自然语言.抽象性抽象性:任何时刻任何时刻,只关注相关的重要特征只关注相关的重要特征,而暂不考虑其细节而暂不考虑其细节.叠加性叠加性:可正确利用白己或他人的己有程序可正确利用白己或他人的己有程序,以避免编程时的差以避免编程时的差 错错 2 2 计算机程序设计的准则计算机程序设计的准则 正确性正确性:判定程序质量的永恒准则判定程序质量的永恒准则 可靠性可靠性:指程序的可重复性要好指程序的可重复性要好 无论执行环境如何变化无论执行环境如何变化,对相同的输入数据对相同的输入数据,一个程序的执行结果总是不变的一个程序的执行结果总是不变的 易读性易读性:指程序结构要简单指程序结构要简单 语句要直观语句要直观 程序内部有足够的注程序内部有足够的注 解等解等。有效性有效性:指程序应当少占存储空间指程序应当少占存储空间 快速运行快速运行 可维护性可维护性:指程序应当容易查找错误指程序应当容易查找错误 容易改正错误容易改正错误 适应性适应性:指程序不应因计算机硬件或外部环境的变更而更改指程序不应因计算机硬件或外部环境的变更而更改 或废弃或废弃 可重用性可重用性:指经过实践证明正确的己有源程序代码指经过实践证明正确的己有源程序代码,可以方便可以方便 地被自己或他人利用地被自己或他人利用 3 3、计算机程序设计的一般过程、计算机程序设计的一般过程 修改问题定义修改问题定义修改数据结构、算法修改数据结构、算法修改程序修改程序定义问题定义问题设计设计编写程序编写程序测试程序测试程序使用维护使用维护4 4、结构化程序设计的概念、结构化程序设计的概念 结构化程序设计:结构化程序设计:q是以良好的程序结构为目标是以良好的程序结构为目标q遵照遵照“自顶向下自顶向下 逐步求精逐步求精”和模块化的方法和模块化的方法q每个模块仅有一个入口和一个出口每个模块仅有一个入口和一个出口q程序中仅使用三种基本控制结构程序中仅使用三种基本控制结构q尽量少用尽量少用gotogoto语句的程序设计方法语句的程序设计方法 程序结构程序结构 程序结构:包括程序结构:包括数据结构数据结构 和和控制结构控制结构 两个方面两个方面数据结构:数据结构:不同的问题使用不同的数据结构不同的问题使用不同的数据结构 v基本数据类型:字符型基本数据类型:字符型 整型整型 长整型长整型 单精度实型单精度实型 双精度实型双精度实型 布尔型和枚举型的变量布尔型和枚举型的变量 指针和数组。指针和数组。v自定义的构造复杂的数据结构自定义的构造复杂的数据结构:结构结构 联合和类等。联合和类等。v使用以上可以构造更加复杂的链表使用以上可以构造更加复杂的链表 队列队列 栈表栈表 树树 图等数据结构图等数据结构,满足不同应用的需要。满足不同应用的需要。程序控制结构:程序控制结构:任何程序均可用顺序任何程序均可用顺序 选择和循环选择和循环 三种基本控制结构三种基本控制结构 三种基本控制结构都仅有一个入口点和一个出口点。三种基本控制结构都仅有一个入口点和一个出口点。顺序结构顺序结构处理处理2处理处理1处理处理N选择结构选择结构FT处理处理1条件条件处理处理2循环结构循环结构F处理处理T次数次数=0计算次数计算次数5 5、程序结构的描述、程序结构的描述 描述程序结构有多种方法,例如:描述程序结构有多种方法,例如:图形图形(N-S图图 PAD图图 流程图流程图)方法方法伪码方法伪码方法语言方法语言方法等。等。q自顶向下逐步求精:自顶向下逐步求精:它是把问题求解的过程看作是它是把问题求解的过程看作是由抽象由抽象逐步到逐步到具体具体化化的过程的过程 即在编写一个程序时即在编写一个程序时,首先考虑程序的整体结构而首先考虑程序的整体结构而忽略细节问题忽略细节问题,然后逐步地一层一层地细化程序然后逐步地一层一层地细化程序,直到直到每个细节都能用简单的程序语句描述为止每个细节都能用简单的程序语句描述为止 6 6、结构化程序设计方法:、结构化程序设计方法:q模块化模块化 对一个规模较大的问题对一个规模较大的问题,可将其可将其划分为若干个划分为若干个模块模块。即即通过自顶向下的分析设计通过自顶向下的分析设计,首先把一个大的程序系首先把一个大的程序系统划分为若干个功能相对独立的子系统统划分为若干个功能相对独立的子系统,每个子系统再每个子系统再划分为更小的子系统划分为更小的子系统,如此继续下去如此继续下去,直到每个小的子直到每个小的子系统足够简单为止系统足够简单为止 这里的这里的“子系统子系统”,”,一般称为模块。一般称为模块。7 7、结构化程序设计的规则、结构化程序设计的规则 以流程图为例说明规则:以流程图为例说明规则:1 1)从最简单的流程图开始)从最简单的流程图开始;2 2)用两个矩形符号替换一个矩形符号)用两个矩形符号替换一个矩形符号(堆栈规则堆栈规则););3 3)可以用任何选择或循环结构替换矩形符号)可以用任何选择或循环结构替换矩形符号(嵌套规则嵌套规则););4 4)可以按照任何顺序使用规则)可以按照任何顺序使用规则2 2和规则和规则3 3 规则规则2规则规则2规则规则28 8、结构化编程、结构化编程 q结构化编程的任务结构化编程的任务 选择程序语言程序语言 编写具有良好风格的程序 编写程序的任务是根据程序结构简单地把表示程序结构的符号转换为选定的程序语言的语句的过程q程序的书写风格程序的书写风格 1)程序内部文档程序内部文档:恰当的标识符恰当的标识符 适当的注解、清晰的程序格式,选取含义鲜明适当的注解、清晰的程序格式,选取含义鲜明 的名字的名字,程序中的注解正确,层次清晰程序中的注解正确,层次清晰,布局合理布局合理 2)2)数据说明数据说明:数据结构的组织和复杂程度以容易理解和易维护为原则数据结构的组织和复杂程度以容易理解和易维护为原则,数据说明和次序应该标准化数据说明和次序应该标准化,个别复杂的数据结构应加注解个别复杂的数据结构应加注解 3)3)语句构造语句构造:每个语句应该简单而直接。每个语句应该简单而直接。4)4)输入或输出输入或输出:输入数据应进行合法性检查输入数据应进行合法性检查,保持输入格式简单一致保持输入格式简单一致;输出数输出数据要加输出数据的标志或给出良好的输出报表据要加输出数据的标志或给出良好的输出报表 5)5)效率:效率:主要指处理机时间的使用率和存储容量的利用率主要指处理机时间的使用率和存储容量的利用率 应从以下几个方面提高效率应从以下几个方面提高效率:为减少程序运行时间为减少程序运行时间,可考虑简化算术表达式和逻辑表达式可考虑简化算术表达式和逻辑表达式,对公共子表达式只算一次对公共子表达式只算一次,某些递归用递推来实现某些递归用递推来实现,避免使用避免使用 多维数组多维数组,尽量避免使用指针和复杂的表尽量避免使用指针和复杂的表;提高存储效率提高存储效率;提高输入或输出效率提高输入或输出效率 9 9、程序测试、程序测试 程序调试程序调试:是为改正程序中的错误而进行的一系列工作:是为改正程序中的错误而进行的一系列工作 测试用例测试用例:在程序测试过程中:在程序测试过程中,需要事先准备测试用的数据需要事先准备测试用的数据,我们把这些数据称为测试用例我们把这些数据称为测试用例 测试步骤:测试步骤:大型程序进行测试常常经过以下三个步骤:大型程序进行测试常常经过以下三个步骤:单元测试单元测试 集成测试集成测试 验收测试验收测试 两种常用的程序测试方法两种常用的程序测试方法:如果程序具备的功能已知如果程序具备的功能已知,可以测试它的每一个功能可以测试它的每一个功能 是否都达到了预期的要求是否都达到了预期的要求,这称为这称为黑盒测试法黑盒测试法;如果程序的内部活动方式已知如果程序的内部活动方式已知,可以测试它的内部活可以测试它的内部活 动是否符合设计要求动是否符合设计要求,这称为这称为白盒测试法白盒测试法 程序程序测试常用的方法:测试常用的方法:1.1.什么是程序?程序的特点是什么?什么是程序?程序的特点是什么?2.2.什么是结构化程序设计?程序有哪三种基本控制结构?什么是结构化程序设计?程序有哪三种基本控制结构?3.3.程序的编码风格是什么?程序的编码风格是什么?4.4.程序测试的目的是什么?常用的测试方法有哪些?程序测试的目的是什么?常用的测试方法有哪些?习题:习题: