《C语言程序设计》第3章(顺序、分支、循环)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
N!=1×2 ×3 × . . . ×(N-1) ×N
有穷
Sum=1+2+3+. . .+ N +. . .
无穷
● 确定性:算法每执行一步,其顺序和内容都必须有确切的规定, 不能含糊不清或二义性。
● 可执行性:算法的所有操作都必须能做到,即可操作性。
● 0个或多个输入;一个或多个输出。
算法的举例
例:一个数 N(N>2) 是否为素数的算法。 (判断一个数是否为素数的条件: 只能被自己或1整除)
思考:1 - ½ + 1/3 - ¼ + … - 1/100 的算法
3.1.2 算法的类型与程序的结构
(1)算法的类型
数值算法,用于科学计算。 非数值算法,用于各种数据处理。
(2)程序结构
◇ 算法= 程序结构 + 源操作 ◇ 程序结构:顺序结构、分支结构、循环结构。
顺序结构,由一组顺序执行的程序块组成。 分支结构,根据分支条件取值,选择执行不同的程序块。 循环结构,根据循环条件取值,反复执行同一程序块。 ◇ 源操作:输入、输出、表达式、求值、变量赋值等。
程序结构
语句 1 语句 2
真
假
表达式
语句 1
语句 2
假 表达式 真
语句
顺序结构
选择结构
循环结构
C语言中选择、循环和辅助控制语句(C的所有控制语句):
流程控制语句 辅助控制语句
if~else (条件分支)
选择
switch~case (开关分支)
while 循环 for
do~while
break continue goto return
算法的表示方法
●自然语言表示法 用人们日常使用的语言进行算法的描述
● 伪代码表示法
用自然语言、计算机语言及符号进行算法描述
● 计算机语言表示法 C、C++ 、BASIC、VB、VC等语言的程序
● N-S流程图表示法 用矩形框进行算法的描述
● 流程图表示法
用一些图框描述算法
流程图符号 — 美国国家标准协会ANSI规定
计算机方法 S1:p=1 S2: i=2 S3: p= p×i S4: i=i+1 S5:直到i≥5,一直执行 S3、S4
1. 求10000!,只需要改 i≥10000
2. 求1×3×5,则改S2:i=3; S4:i=i+2
◆思路:变成计算机能重复执行的算法; ◆而要让步骤重复,就要使变量保持最新,如p、i;
R=N% I
是
R==0 ?
否 I = I +1
I <=N-1 否 N是素数
N不是素数
结束
算法优化举例:求1× 2×3 ×4 ×5= ?
原始方法 S1:p=1 S2: i=2 S3: x= p×i S4: y=i+1 S5: z=x×y S6:…
若求10000!,则必然包含 很多变量、程序也很长,而改 进的计算机方法很简单。
程序流程图 输入 N I =2
N:是被判断的数。作为被除数。 I: 是除数。它的数值范围是: 2~(N-1)。
R=N%I R==0 表示 N能被 I 整除,则 N不是素数,
结束处理。
R不等于 0,则N不能被I整除,程序往下执行。 是
I=I+1 I<=N-1 如果 I<= N-1满足,则执行R=N%I。 如果 I<= N-1不满足,则 N是素数,结束处理。
下面举例说明。
例:3-1 从键盘上输入一个小写字母,要求输出对应的大写字母。
《C语言程序设计》
第三章
程序的控制结构和 结构化程序设计
第三章 程序的控制结构和结构化程序设计
3.1 算法及结构化程序设计 3.2 顺序结构程序设计 3.3 分支结构程序设计 3.4 循环结构程序设计 3.5 小结
3.1 算法及结构化程序设计
3.1.1 算法及其特征 3.1.2 算法的类型与程序的结构 3.1.3 结构化程序设计 3.1.4 结构化程序设计应注意的问题
。
沃思
程序=数据结构+算法
3.1.1 算法及其特征
(1)算法 是程序处理问题(数据的计算和处理)的方法和步骤。 是解决特定问题而要一步一步执行的有穷操作的描述;是描述解决计 算机求解及处理问题的步骤和方法。
(2)特征 一个完整的程序应具有以下特征:
● 分步性:一个算法是由一步一步的操作完成的。
● 有穷性:一个算法必须能在执行有限步之后结束。
起止框
输入输出框
处理框
判断框 连接点 流程线
顺序程序结构
程序入口 程序块1 程序块2 程序块3 程序出口 传统顺序结构程序流程图
程序入口 程序块 1 程序块 2 程序块 3 程序出口
N-S结构化流程图
分支程序结构
真(非0) 分支条 件
假 (0)
程序块1
程序块2
真 分支条件 假
(非0)
(0)
程序块1 程序块2
3.1.3 结构化程序设计 概念:
●结构化程序设计是将要解决的问题按“自上而下、逐步拆分、精益求 精”的原则进行分解,使其分解成若干个较小的问题,然后再用结构化 编码技术(计算机语言工具),对其若干个较小的问题编制出程序块, 进而构造出整个问题的求解程序。 ●结构化程序设计是以有条理的方式构造程序的一种技术。 ●结构化程序实质上是由有限个顺序、分支和循环三种基本结构排列、 嵌套而成。
分支结构程序传统流程图
N-S 结构化流程图
循环程序结构
当型:
直到型:
程序块(循环体)
程序块(循环体)
循环条件 真(非0) 假 (0)
Fra Baidu bibliotek
假(0) 循环条件
真(非0)
循环结构程序传统流程图
当条件为真
程序块
程序块
直到条件为真
N-S 结构化流程图
当型从逻辑关系是:判断逻辑为真执行循环体(先判断循环条件)。
直到型从逻辑关系是:判断逻辑为假执行循环体(先执行一次循环体)。
Return
3.1 算法及结构化程序设计
一个大型软件的开发就如一项工程,它需要经历规划、需 求分析、设计、编码(编程)、测试及运行维护几个阶段。
计算机软件(即程序)要包含两方面内容:
☆ 对数据的描述(数据类型、和数据的组织形式),即数据结构
。
☆ 对操作的描述(一定顺序的操作步骤 ),即算法——程序的灵魂
结构化程序设计的原则:
●一个程序是由一个一个程序块(程序单位)排列而成。 ●任何一个程序单位都只能由顺序、分支和循环结构所组成。 ●每个程序单位都有一个入口和一个出口。
3.2 顺序结构程序设计
Return
3.2 顺序结构程序设计
编制一个简单程序大致可以分为两步: (1) 设计算法,即给出处理问题的方法和步骤。 (2) 编制程序,根据算法用C语言编写程序。