文档介绍:《C语言程序设计》
程序的控制结构和结构化程序设计
第三章
第三章程序的控制结构和结构化程序设计
算法及结构化程序设计
顺序结构程序设计
分支结构程序设计
循环结构程序设计
小结
Return
算法及结构化程序设计
算法及其特征
算法的类型与程序的结构
结构化程序设计
结构化程序设计应注意的问题
算法及结构化程序设计
一个大型软件的开发就如一项工程,它需要经历规划、需求分析、设计、编码(编程)、测试及运行维护几个阶段。
计算机软件(即程序)要包含两方面内容:
☆对数据的描述(数据类型、和数据的组织形式),即数据结构。
☆对操作的描述(一定顺序的操作步骤),即算法——程序的灵魂。
程序=数据结构+算法
沃思
算法及其特征
(1)算法
(2)特征
●确定性:算法每执行一步,其顺序和内容都必须有确切的规定,不能含糊不清或二义性。
●可执行性:算法的所有操作都必须能做到,即可操作性。
● 0个或多个输入;一个或多个输出。
是解决特定问题而要一步一步执行的有穷操作的描述;是描述解决计算机求解及处理问题的步骤和方法。
●有穷性:一个算法必须能在执行有限步之后结束。
N!=1×2 ×3 × . . . ×(N-1) ×N 有穷
Sum=1+2+3+. . .+ N +. . . 无穷
一个完整的程序应具有以下特征:
●分步性:一个算法是由一步一步的操作完成的。
是程序处理问题(数据的计算和处理)的方法和步骤。
是
N:是被判断的数。作为被除数。
I: 是除数。它的数值范围是: 2~(N-1)。
算法的举例
否
输入 N
I = 2
R=N% I
R==0 ?
I = I +1
I <=N-1
是
否
程序流程图
N是素数
N不是素数
结束
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是素数,结束处理。
例:一个数 N(N>2) 是否为素数的算法。
(判断一个数是否为素数的条件:
只能被自己或1整除)
算法优化举例:求1× 2×3 ×4 ×5= ?
计算机方法
S1:p=1
S2: i=2
S3: p= p×i
S4: i=i+1
S5:直到i≥5,一直执行 S3、S4
求10000!,只需要改i≥10000
求1×3×5,则改S2:i=3; S4:i=i+2
原始方法
S1:p=1
S2: i=2
S3: x= p×i
S4: y=i+1
S5: z=x×y
S6:…
若求10000!,则必然包含很多变量、程序也很长,而改进的计算机方法很简单。
◆思路:变成计算机能重复执行的算法;
◆而要让步骤重复,就要使变量保持最新,如p、i;
思考:1 - ½ + 1/3 - ¼ + …- 1/100 的算法
算法的类型与程序的结构
(1)算法的类型
(2)程序结构
数值算法,用于科学计算。
非数值算法,用于各种数据处理。
◇算法= 程序结构+ 源操作
◇程序结构:顺序结构、分支结构、循环结构。
顺序结构,由一组顺序执行的程序块组成。
分支结构,根据分支条件取值,选择执行不同的程序块。
循环结构,根据循环条件取值,反复执行同一程序块。
◇源操作:输入、输出、表达式、求值、变量赋值等。
流程图符号—美国国家标准协会ANSI规定
起止框
输入输出框
处理框
判断框
连接点
流程线
算法的表示方法
●自然语言表示法
●流程图表示法
●伪代码表示法
用人们日常使用的语言进行算法的描述
用矩形框进行算法的描述
用一些图框描述算法
●计算机语言表示法
● N-S流程图表示法
用自然语言、计算机语言及符号进行算法描述
C、C++ 、BASIC、VB、VC等语言的程序
顺序程序结构
程序入口
程序出口
程序块1
程序块2
程序块3
N-S结构化流程图
传统顺序结构程序流程图