C程序的流程设计 ·本课内容:算法 ·教学目的:掌握算法相关概念,掌握三 种基本结构,了解算法描述工具,致少 掌握两种算法描述工具。 重点:算法相关概念、三种基本结构和 算法描述工具 难点:使用三种基本结构,用算法描述 工具进行算法描述
C程序的流程设计 • 本课内容:算法 • 教学目的:掌握算法相关概念,掌握三 种基本结构,了解算法描述工具,致少 掌握两种算法描述工具。 • 重点:算法相关概念、三种基本结构和 算法描述工具。 • 难点:使用三种基本结构,用算法描述 工具进行算法描述
、算法的性质与组成要素 1、算法性质 算法:是进行操作的方法和操作步骤 1)解题算法是一有穷动作序列; (2)此动作序列只有一个初始动作; (3)序列中每一个动作仅有一个后继动作; (4)序列终止表示问题得到解答或问题没有解答 2、算法的组成要素 (1)操作:计算机能进行的操作集。 操作的描述与程序设计语言的级别有关。 髙级语言中所描述的操作主要包括:算术运算、关系运算和 逻辑运算。 (2)控制结构:控制组成算法的各操作的执行顺序方法。 种基本结构: 顺序结构、选择结构、循环结构或重复结构
一、算法的性质与组成要素 1、算法性质 算法:是进行操作的方法和操作步骤。 (1)解题算法是一有穷动作序列; (2)此动作序列只有一个初始动作; (3)序列中每一个动作仅有一个后继动作; (4)序列终止表示问题得到解答或问题没有解答。 2、算法的组成要素 (1)操作:计算机能进行的操作集。 操作的描述与程序设计语言的级别有关。 高级语言中所描述的操作主要包括:算术运算、关系运算和 逻辑运算。 (2)控制结构:控制组成算法的各操作的执行顺序方法。 三种基本结构: 顺序结构、选择结构、循环结构或重复结构
算法的描述 1、流程图与算法的结构 P57图3.1 三种基本控制流程结构: P58图3.,2 2、用NS图描述算法 NS图的三种基本结构描述 P59图3.8 4、伪代码与逐步细化的程序设计方法 伪代码:用介于自然语言与计算机语言之间的文字符号算法描述的 工具 描述方法:自顶向下,逐步细化。 做什么→如何做 例P61例3
二、算法的描述 1、流程图与算法的结构 P57_图3.1 三种基本控制流程结构: P58_图3.2 2、用N—S图描述算法 NS图的三种基本结构描述 P59_图3.8 4、伪代码与逐步细化的程序设计方法 伪代码:用介于自然语言与计算机语言之间的文字符号算法描述的 工具。 描述方法:自顶向下,逐步细化。 做什么→如何做 例P61_例3.1
流程图 数据流 处理 特定处理 (一个或 一组操作) 准备 判断 循环上限 循环下限 连接符 端点符 流线
流程图 数据流 处理 特定处理 (一个或 一组操作) 准备 判断 循环上限 循环下限 连接符 端点符 流线
例:输入10个数,将其中能被3整除的数求和输出。 调用 a I=1:S=0 I=I+1 I<=10 返回S值 参数N n 调用结束 N%3=0 S=S+N
例:输入10个数,将其中能被3整除的数求和输出。 调用 I=1:S=0 I<=10 参数N N%3=0 S=S+N a y a I=I+1 n 调用结束 返回S值
NS图描述上题 I=1:S=0 I<=10 输入参数N N%3=0 T F S=S+N I=I+1 返回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值
PAD描述上题 I=1:S=0 I<=10 输入参数N N%3=0 S=S+N I=I+1 返回S值
伪码描述:三个数中取大数。4、设计max30算法 S1:输入三个数a,b,c; S21从x与y中取大数送m中; 1、做什么 S22:从m与z中取大数送m中; S2:从c中长出大数赋给max;s23:返回m给主调函数 S3:输出max 5、max3函数 2、对做什么进行细化 Float max3(float a, float b, float c) S1:调用 scanf0函数; S2:设计一个函数max3(ab,); float m; S3:调用 printf0函数。 If(x>y 3、主函数 mEx man O Else float a, b, c, max; m float max3(float x, float y, float 2); If(m>z) printf("input numbers a, b,c:); m=m scanf(“%%f”,&a,b,C);Else max=max3(a, b, c) mEzz printf((“ the max is:%fan”,max); Return(m)
伪码描述:三个数中取大数。 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)赋值语句 如:a=1; (2)函数调用语句 如: printf(" hello. worldn”) (3)空语句 如 不产生任何操作,用在控制结构中。 2、形成流程控制结构的语句 (1)形成流程控制结构 if while for (2)简单的流程转向 break continue goto
三、用C语言描述算法 1、表达式语句 表达式语句:由表达式后跟一个分号组成。 表达式语句基本类型: (1)赋值语句 如:a=1; (2)函数调用语句 如:printf(“hello.world\n”); (3)空语句 如: ; 不产生任何操作,用在控制结构中。 2、形成流程控制结构的语句 (1)形成流程控制结构 if while for (2)简单的流程转向 break continue goto
选择型结构: 分支:if(条件) SI (if分结构) else 2 (else分结构) 多分支: switch表达式 case常量1 SI case常量2 s2 循环控制结构: do while、for、 while三种结构
选择型结构: 分支:if ( 条件 ) s1 ( if 分结构) else s2 (else分结构) 多分支:switch 表达式 case 常量1 s1 case 常量2 s2 : 循环控制结构: do while、for 、while三种结构