C程序的流程设计
? 本课内容:算法
? 教学目的:掌握算法相关概念,掌握三
种基本结构,了解算法描述工具,致少
掌握两种算法描述工具。
? 重点:算法相关概念、三种基本结构和
算法描述工具。
? 难点:使用三种基本结构,用算法描述
工具进行算法描述。
一、算法的性质与组成要素
1、算法性质
算法:是进行操作的方法和操作步骤。
( 1)解题算法是一有穷动作序列;
( 2)此动作序列只有一个初始动作;
( 3)序列中每一个动作仅有一个后继动作;
( 4)序列终止表示问题得到解答或问题没有解答。
2、算法的组成要素
( 1)操作:计算机能进行的操作集。
操作的描述与程序设计语言的级别有关。
高级语言中所描述的操作主要包括:算术运算、关系运算和
逻辑运算。
( 2)控制结构:控制组成算法的各操作的执行顺序方法。
三种基本结构,
顺序结构、选择结构、循环结构或重复结构
二、算法的描述
1、流程图与算法的结构
P57_图 3.1
三种基本控制流程结构,
P58_图 3.2
2、用 N—S图描述算法
NS图的三种基本结构描述
P59_图 3.8
4、伪代码与逐步细化的程序设计方法
伪代码:用介于自然语言与计算机语言之间的文字符号算法描述的
工具。
描述方法:自顶向下,逐步细化。
做什么 ?如何做
例 P61_例 3.1
流程图
数据流 处理 特定处理 (一个或
一组操作)
准备 判断 循环上限
循环下限 连接符 端点符
流线
例:输入 10个数,将其中能被 3整除的数求和输出。
调用
I=1:S=0
I<=10
参数 N
N%3=0
S=S+N
a
y
a
I=I+1
调用结束 n
返回 S值
N_S图描述上题
I=1, S=0 I=1, S=0
I<=10
输入参数 N
N%3=0
T F
S=S+N
I=I+1
返回 S值
PAD描述上题
I=1:S=0
I<=10 输入参数 N
N%3=0 S=S+N
I=I+1
返回 S值
伪码描述:三个数中取大数。
S1:输入三个数 a,b,c;
1、做什么
S2:从 a,b,c中长出大数赋给 max;
S3:输出 max。
2、对做什么进行细化
S1:调用 scanf()函数;
S2:设计一个函数 max3(a,b,c);
S3:调用 printf()函数。
3、主函数
main()
{float a,b,c,max;
float max3(float x,float y,float z);
printf(“input numbers a,b,c:”);
scanf(“%f%f%f”,&a,&b,&c);
max=max3(a,b,c);
printf(“the max is,%f\n”,max);
}
4、设计 max3()算法
S2.1:从 x 与 y 中取大数送 m中;
S2.2:从 m与 z中取大数送 m中;
S2.3:返回 m 给主调函数。
5,max3函数
Float max3(float a,float b,float c)
{
float m;
If (x>y)
m=x;
Else
m=y;
If (m>z)
m=m;
Else
m=z
Return(m);
}
三、用 C语言描述算法
1、表达式语句
表达式语句:由表达式后跟一个分号组成。
表达式语句基本类型,
(1)赋值语句
如,a=1;
(2)函数调用语句
如,printf(“hello.world\n”);
(3)空语句
如,; 不产生任何操作,用在控制结构中。
2、形成流程控制结构的语句
(1)形成流程控制结构
if while for
(2)简单的流程转向
break continue goto
选择型结构,
分支,if ( 条件 )
s1 ( if 分结构)
else
s2 (else分结构)
多分支,switch 表达式
case 常量 1
s1
case 常量 2
s2
,
循环控制结构,
do while,for, while三种结构 。
3、限定转向语句
(1) Break (2)continue ( 3)函数调用返回
4,goto 语句
形式,goto 标号 无条件转向
5,C基本语句一览表
P68——基本语句
6、复合语句
复合语句:一组语句括在一对花括号之中。
注:凡能用简单语句的地方,都可用复合语句。
7、停止函数 exit
exit:作用是立即停止当前程序,并退回到操作系统状态。
函数包含于,stdlib.h”头文件中。
类型,int 参数为 0,正常停止,非零,指出错误类型。
小结,
1、算法性质和要素
2、算法描述
3,C语言描述算法
作业,