《算法及结构化程序设计方法.pdf》由会员分享,可在线阅读,更多相关《算法及结构化程序设计方法.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 C C语言程序设计语言程序设计 第第3 3章章 算法和基本程序设计算法和基本程序设计 -算法及结构化程序设计方法算法及结构化程序设计方法 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 2 概述概述 程序设计的关键是设计算法,算法与程序设计和数据程序设计的关键是设计算法,算法与程序设计和数据 结构密切相关。结构密切相关。 算法是解决问题的一系列操作步骤的集合,算法是解决问题的一系列操作步骤的集合,是设计是设计 思路的描述,也是指令的有限序列。思路的描述,也是指令的有限序列。 比如,厨师做菜时,都经过一比如,厨师做菜时,都经过一 系列的步骤系列的步骤洗菜、
2、切菜、洗菜、切菜、 配菜、炒菜和装盘。用计算机配菜、炒菜和装盘。用计算机 解题的步骤就叫算法,编程人解题的步骤就叫算法,编程人 员必须告诉计算机先做什么,员必须告诉计算机先做什么, 再做什么,即按照算法的思想再做什么,即按照算法的思想 去工作,从而解决实际问题。去工作,从而解决实际问题。 (数据结构数据结构+算法算法=程序)程序) C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 3 1、有穷性:、有穷性:有限步骤之内正常结束,不能形成无穷循环。有限步骤之内正常结束,不能形成无穷循环。 算法的特性:算法的特性: 2、确定性:确定性:算法中的每一个步骤必须有确
3、定含义算法中的每一个步骤必须有确定含义,无二无二 义性得以实现义性得以实现。 3、可行性:可行性:原则上能精确进行原则上能精确进行,操作可通过已实现基本操作可通过已实现基本 运算执行有限次而完成运算执行有限次而完成。 4、有输入:有输入:有多个或有多个或0个输入个输入。 5、有输出:有输出:至少有一个或多个输出至少有一个或多个输出。 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 4 算法的评价标准算法的评价标准 设计算法时,通常需要考虑达到以下目标:设计算法时,通常需要考虑达到以下目标: 一般可分为四个层次:一般可分为四个层次: (1)(1)程序不含语法
4、错误;程序不含语法错误; (2)(2)程序对于几组输入数据能够得出满程序对于几组输入数据能够得出满 足规格说明要求的结果;足规格说明要求的结果; (3)(3)程序对于精心选择的典型、苛刻而程序对于精心选择的典型、苛刻而 带有刁难性的几组输入数据能够得出满带有刁难性的几组输入数据能够得出满 足规格说明要求的结果;(软件测试)足规格说明要求的结果;(软件测试) (4)(4)程序对于一切合法的输入数据都能程序对于一切合法的输入数据都能 产生满足规格说明要求的结果。(极为产生满足规格说明要求的结果。(极为 困难)困难) 2、可读性、可读性 3、健壮性(鲁棒性)、健壮性(鲁棒性) 4、高效率与低存储量需
5、求、高效率与低存储量需求 例如:求例如:求n n个数的最大值问题个数的最大值问题 给出算法如下:给出算法如下: max:=0; for(i=1 ;imax) max=x; 正确?正确? 1、正确性、正确性 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 5 算法的表示算法的表示 (1)流程图:)流程图:是描述算法最常用的一种方法,它是用图形是描述算法最常用的一种方法,它是用图形 符号来表示算法。符号来表示算法。 描述方法:描述方法:自然语言、数学方法、某种计算机语言描述自然语言、数学方法、某种计算机语言描述 规范的方法:规范的方法: 流程图、流程图、N-S
6、结构流程图结构流程图、伪代码和、伪代码和PAD图等。图等。 起至框起至框 输入输入 输出输出 判断框判断框 处理框处理框 或或 流程线流程线 连接点连接点 注释框注释框 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 6 算法的表示算法的表示 (2)N-S结构流程图:结构流程图:完全去掉了流程线,全部算法写在完全去掉了流程线,全部算法写在 一个矩形框内,而且在框内还可以包含其他的框。一个矩形框内,而且在框内还可以包含其他的框。N-S结构结构 流程图算法清晰,流程不会无规律乱转移。流程图算法清晰,流程不会无规律乱转移。 N-S结构流程图基本元素结构流程图基本
7、元素 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 7 流程图流程图 例例1:求三个整数的和:求三个整数的和 开始开始 输出输出sum的值的值 结束结束 输入输入x,y,z sum=x+y+z 输出输出sum的值的值 sum=x+y+z 输入输入x,y,z N N- -S S结构流程图结构流程图 main( ) float x,y,z,sum; scanf(%f%f%fn, sum=x+y+z; printf(sum=%fn,sum); C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 8 结构化程序设计的方法结构化程
8、序设计的方法 伴随着软件产业的蓬勃发展,软件系统变得越来越复杂,开发伴随着软件产业的蓬勃发展,软件系统变得越来越复杂,开发 成本越来越高,而且在开发过程出现一系列问题,将软件开发与成本越来越高,而且在开发过程出现一系列问题,将软件开发与 维护过程中遇到的一系列严重问题被人们称为维护过程中遇到的一系列严重问题被人们称为“软件危机”。“软件危机”。 为此,荷兰学者为此,荷兰学者E.W.Dijkstra提出了程序设计中常用的提出了程序设计中常用的GOTO 语句的三大危害,并由此产生了语句的三大危害,并由此产生了结构化程序设计方法结构化程序设计方法,随后诞生了,随后诞生了 基于这一设计方法的程序设计语
9、言基于这一设计方法的程序设计语言Pascal、C语言等。语言等。 结构化程序设计语言的简洁明了及丰富的数据结构和控制结构,结构化程序设计语言的简洁明了及丰富的数据结构和控制结构, 为程序员提供了极大的方便性与灵活性。为程序员提供了极大的方便性与灵活性。 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 9 结构化程序设计的方法结构化程序设计的方法 结构化程序设计思想采用了结构化程序设计思想采用了模块分解与功能抽象和自顶向下、模块分解与功能抽象和自顶向下、 分而治之的方法,分而治之的方法,解决人脑思维能力的局限性和所处理问题的复杂解决人脑思维能力的局限性和所处
10、理问题的复杂 性之间的矛盾,从而便于开发和维护,减少程序的出错概率和提高性之间的矛盾,从而便于开发和维护,减少程序的出错概率和提高 软件的开发效率。软件的开发效率。 采用结构化程序设计方法应遵循的原则:采用结构化程序设计方法应遵循的原则: 1、自顶向下、自顶向下 2、模块化、模块化 3、限制使用、限制使用GOTO语句语句 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 10 一、自顶向下设计方法一、自顶向下设计方法 叙述要解决的问题叙述要解决的问题 定义输入和输出定义输入和输出 设计算法设计算法 将算法转换将算法转换C语句语句 测试程序测试程序 问题分解问
11、题分解 逐步细化逐步细化 开始开始 结束结束 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 11 二、模块化二、模块化 将一个大任务分成若干个较小的将一个大任务分成若干个较小的 部分,每一部分承担一定的功能,部分,每一部分承担一定的功能, 称为“功能模块”。每个模块可以称为“功能模块”。每个模块可以 分别编程和调试,然后组成一个完分别编程和调试,然后组成一个完 整的程序。模块的划分遵循一些基整的程序。模块的划分遵循一些基 本原则,如模块内部联系要紧密,本原则,如模块内部联系要紧密, 关联程度要高;模块间的接口要尽关联程度要高;模块间的接口要尽 可能简单,
12、以减少模块间的数据传可能简单,以减少模块间的数据传 递。递。 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 12 三、三、限制使用限制使用GOTO语句语句 goto语句无条件跳转,会降低代码的可读性。语句无条件跳转,会降低代码的可读性。 结构化程序质量的衡量标准同样以正确性作为前提。在结构化程序质量的衡量标准同样以正确性作为前提。在 正确的前提下,程序符合“正确的前提下,程序符合“清晰第一,效率第二清晰第一,效率第二”的质量标”的质量标 准。准。 #include int main() int i = 10, s = 0; L1: s += i; i-;
13、 if ( i != 0 ) goto L1; printf (s = %dn, s); return 0; #include int main() int i = 10, s = 0; while ( i ) s += i; i-; printf (s = %dn, s); return 0; C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 13 一个好的程序在满足运行结果正确的基本条件之后,首先要一个好的程序在满足运行结果正确的基本条件之后,首先要 有有良好的结构良好的结构,使程序清晰易懂。在此前提之下,才考虑使其运,使程序清晰易懂。在此前提之下,才考虑使其运 行速度尽可能地快,运行时所占内存应尽量压缩至合理的范围。行速度尽可能地快,运行时所占内存应尽量压缩至合理的范围。 也就是说,现在的程序质量标准中也就是说,现在的程序质量标准中易读性好易读性好是第一位的,其次才是第一位的,其次才 是是效率效率。因为从根本上说,只有程序具有了良好的结构,才易于。因为从根本上说,只有程序具有了良好的结构,才易于 设计和维护,减少软件成本,从整体来说才是真正提高了效率。设计和维护,减少软件成本,从整体来说才是真正提高了效率。 C C语言程序设计语言程序设计 第第3 3章章 算法与基本程序设计算法与基本程序设计 14 谢谢大家!谢谢大家!