C语言程序设计精编教程第3章 顺序结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 程序设计基础知识(2/9)
计算机算法分为两大类:数值运算算法和非数值运算算法。 (1)数值运算算法:求数值解。通过运算得出一个具体值,如求方程 的根等。数值运算一般有现成的模型,算法较成熟。 (2)非数值运算算法:用于事务管理,如图书检索、人事管理等。 2.算法举例 【例3-1】求5!=1×2×3×4×5的算法 步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的2再乘以3,得到结果6 步骤3:将步骤2得到的6再乘以4,得24 步骤4:将步骤3得到的24再乘以5,得120 可以设两个变量:一个变量代表被乘数,一个变量代表乘数。直接将每 一步骤的乘积放在被乘数变量中。设t为被乘数,i为乘数。用循环来实现, 算 法可改写成: S1:使t=1,使i=2 S2:使t×i,乘积仍放在变量t中,可表示为:t×i→t S3:使i的值加1,即i+1→i S4:如果i不大于5,返回重新执行步骤S2~S4;否则,算法结束。最 后得到的t值就是5!的值。
3.1 程序设计基础知识(4/9)
4.算法的表示 为了表示一个算法,可以用不同的方法,常用的有自然语言、传 统流程图、结构化流程图、伪代码、PAD图等。 (1)自然语言 自然语言就是人们日常使用的语言,可以是汉语或英语或其他语 言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义 性”。自然语言表示的含义往往不太严格,要根据上下文才能判 断其正确含义,描述包含分支和循环的算法时也不是很方便。因 此,除了那些很简单的问题外,一般不用自然语言描述算法。 (2)传统流程图 流程图是表示算法的较好工具,传统流程图是用一些图框表示各 种操作。用图形表示算法,直观形象,易于理解。美国国家标准 化协会(ANSI)规定了一些常用的流程图符号,如图3-1所示。
3.1 程序设计基础知识(6/9)
(4)N-S流程图 传统流程图的弊端:用流程线指明各框的执行顺序,对流程线的 使用没有严格限制。使用者可以不受限制地使流程随意地转向, 让流程图变得毫无规律,阅读者要花很大精力去追踪流程,使人 难以理解算法的逻辑。1973年美国学者I.Nassi和 B.Shneiderman提出了一种新的流程图形式。在这种流程图中, 完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该 框内还可以包含其他的从属于它的框,或者说,由一些基本的框 组成一个大的框。这种流程图又称为N-S结构化流程图,如图34所示。 用三种N-S流程图中的基本框,可以组成复杂的N-S流程图。图 中的A框或B框,可以是一个简单的操作,也可以是三种基本结 构之一。
3.1 程序设计基础知识(1/9)
1.算法 一个程序应包括两个方面的内容: (1)对数据的描述。在程序中指定数据的类型和数据 的组织形式,即数据结构。 (2)对操作的描述。即操作步骤,也就是算法。 数据是操作的对象,操作的目的是对数据进行加工处理, 以得到期望的结果。作为程序员在程序设计时主要考虑:程 序中的数据和操作步骤。因此著名科学家沃思(Niklaus Wirth)提出一个公式: 程序 = 数据结构 + 算法 实际上,一个程序除了以上两个主要因素外,还应当采 用结构化程序设计方法进行程序设计,并用某一种计算机语 言来表示。因此,可以这样表示: 程序=算法+数据结构+程序设计方法+语言工具和环 境
3.1 程序设计基础知识(7/9)
用N-S图表示算法的优点:比文字描述直观形象,易于理解;比 传统流程图紧凑易画。尤其是它废除了流程线,整个算法的结构 是由各个基本结构按顺序组成的,N-S流程图中的上下顺序就是 执行时的顺序。用N-S图表示的算法都是结构化的算法,因为它 不可能出现流程无规律地跳转,而只能自上而下地顺序执行。 一个结构化的算法是由一些基本结构顺序组成的。在基本结构之 间不存在向前或向后的跳转,流程的转移只存在于一个基本结构 范围之内;一个非结构化的算法可以用一个等价的结构化算法来 代替,其功能不变。如果一个算法不能分解为若干个基本结构, 则它必然不是一个结构化的算法。 (5)伪代码 伪代码是用介于自然语言和计算机语言之间的文字及符号来描述 算法,它不用图形符号,书写方便,格式紧凑,便于向计算机语 言的算法过渡。
3.1 程序设计基础知识(3/9)
3.算法特点 一个算法应该具有如下特点。 (1)有穷性:一个算法应包含有限的操作步骤,而不能是无限 的。有穷性是指在合理的范围之内,至于合理的限度一般根据实 际情况而定。 (2)确定性:算法中的每一步应当是确定的,不能含糊不清, 不应该出现歧义性。 (3)有零个或多个输入:所谓输入是指在执行算法时需要从外 界获取必要的信息,可以有多个输入,也可以没有。 (4)有一个或多个输出:一个算法得到的结果就是输出,没有 输出的算法是没有意义的。算法的输出不一定就是计算机的打印 输出。 (5)有效性:算法中的每一步骤都应当有效地执行,并得到正 确的结果。
3.1 程序设计基础知识(5/9)
ห้องสมุดไป่ตู้
(3)3种基本结构的流程图(如图3-2所示) Bohra和Jacopini于1966年提出了顺序结构、选择结构和循环 结构3种基本结构,用这三种基本结构作为表示一个良好算法的 基本单元。 3种基本结构的共同特点: ① 只有一个入口; ② 只有一个出口; ③ 结构内的每一部分都有机会被执行到; ④ 结构内不存在死循环(即无终止的循环)。 由3种基本结构顺序组成的算法,可以解决任何复杂的问题。由 基本结构所构成的算法属于结构化的算法,它不存在无规律的转 向,只是在本基本结构内才允许存在分支和向前或向后的跳转。
第3章 顺序结构程序设计
教学内容
3.1 程序设计技术知识
3.2 C语句分类
3.3 数据的输入与输出
3.4 顺序结构程序设计举例
教学目标
1.理解算法的概念和特点; 2.理解流程图的作用和算法表示方法; 3.理解结构化程序的三种基本结构及其特点; 4.初步了解结构化程序设计的思想及方法; 5.初步掌握基本的顺序结构程序的设计; 6.掌握printf()、scanf()等函数的使用; 7.了解其他输入/输出函数的使用。