C程序的流程设计研讨.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序的流程设计研讨

3.1 算法 计算机可以完成许多复杂工作,但这些工作都是按照人事先编好的程序规定进行的。 所以人们常把程序称为计算机的灵魂。 人们对程序本身和程序设计方法进行了深入的探讨。 1976年瑞士计算机科学家Niklaus Wirth(尼古拉斯·沃斯)提出了一个著名的公式: 算法 + 数据结构 = 程序 Wirth认为,“程序就是在数据的某些特定表示方式和结构的基础上对抽象算法的具体表述”。 Wirth试图用这个公式来对程序进行一个概括性的定义。 从今天的观点来看,它只能是对过程化程序的一个抽象定义,对面向对象的程序而言则不尽然。 不过对学习C语言这样的面向过程的程序设计语言而言,是完全适用的。 就是说,面向过程的程序有两大要素:算法和数据结构。 数据结构是程序所处理的对象——数据的表示和组织形式。数据类型就是其重要内容。 3.1.1 算法的组成要素与基本性质 算法含有两大要素: (1)操作 算法是由一系列操作组成的。 每个操作不仅取决于问题的需求,还取决于操作集,与工具系统有关。 如算盘、做菜、驾驶汽车的操作集等。 计算机的操作集是计算机所能进行的操作。而且这些操作的描述与程序设计语言的级别有关。 操作主要包括:算术运算(+、-、*、/)、逻辑运算(“与”、“或”、“非”等)、关系运算(==、>=、<=、>、<、!=等)、函数运算、位运算、I/O操作等。 计算机算法是由这些操作所组成的。 3.1.1 算法的组成要素与基本性质 算法含有两大要素: (1)操作 这三种基本结构是: (1) 顺序结构 (2) 选择结构 由二分支选择,可以派生出多分支选择结构。 (3) 循环结构(或称重复结构) 2. 算法的基本性质 算法就是进行操作的方法和操作步骤。 例如,菜谱是做菜算法,乐谱是演奏算法,计算机程序是解题算法。 通常认为算法有如下一些性质: (1)有效性 指算法所规定的操作都应当是能够有效执行的。 (2)确定性 两重意义:一是操作明确,无歧义。二是操作作序列有始有终。 (3)有穷性 指算法的操作序列必须在允许的时间内结束。 3.1.2 算法描述工具 程序设计中常用的几种描述算法方法 1. 流程图 我国国家标准GB 1526—89与国际标准化组织提出的ISO流程图符号一致的。 用流程图表示的三种基本流程控制结构: 例3.1 用流程图描述从三个数中取最大数的算法。 如下: 算法一思路是:假定三个数a,b,c,则首先比较a,b,从中选大者;然后再用这个大数与数c比较,从中取大者,就是三个数中的最大数。 算法二思路是:先设max=0,然后依次输入3个正数,用i作计数器,每输入一个数,与max比较一次,把大的放入max中。当输完第i个数时,max中存放的就是前i个数中的最大数。i用于统计输入数的个数,每输入一个数自增一次。 算法结构不同:前者用两个选择结构,后者采用了一个循环结构和一个选择结构。 算法的灵活性不同:后者可以用来求多个数中的最大数。 用流程图表示算法灵活、自由、形象、直观,可以表示任何算法。 但可能形成如同一团乱麻,难以阅读和维护的BS程序。 (BS: a Bowl of Spaghetti,意为“一碗面条”似的)。 2. N-S图描述 1973年美国学者I. Nassi和B. Shneiderman提出了一种无流线的流程图,称为N-S图。 N-S图的每一种基本结构都是一个矩形框,整个算法可以像堆积木一样堆成。 由于N-S图中没有了流线,所以绝对不会出现由于乱用流线造成的BS算法结构。 它的三种基本结构如下: 其中,(a)为三个操作组成的顺序结构;(b)为二分支的选择结构;(c)为当型重复结构,即当命题P 为“真”时,就重复执行S。 例3.1 从三个数中取最大数的流程图算法对应的N-S图。 3. 伪代码 伪代码(pseudo code)是用介于自然语言与计算机语言之间的文字符号算法描述的工具。 它无固定的、严格的语法规则,通常是借助某种高级语言的控制结构,中间的操作可以用自然语言(如中文或英文),也可以用程序设计语言,或使用自然语言与程序设计语言的混合体。 一般专业人员习惯用伪代码进行算法描述。 下面给出相应的三数中取大算法的伪代码描述。 输入a,b,c; if(a=b) max=a; else max=b; if(max=c) 输出max; else 输出c; 3.1.3 自顶向下,逐步细化的算法设计过程 算法设计是一个的智力过程。设计复杂问题的算法更是一个高强度的智力劳动。 实践证明:保证算法设计正确的一个方法是要让问题的复杂性能够在人的智

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档