第二章算法 2.1算法的概念 ■2.2简单算法举例 2.3算法的特性 2.4算法的表示 2.5结构化程序设计方法
第二章 算法 ◼ 2.1 算法的概念 ◼ 2.2 简单算法举例 ◼ 2.3 算法的特性 ◼ 2.4 算法的表示 ◼ 2.5 结构化程序设计方法
2.1算法的概念 对操作的描述 程序=数据结构+算法 对数据的描述 算法分类:数值运算算法-用于求数值解 非数值运算算法---多用于管理领域
2.1 算法的概念 程序=数据结构+算法 对数据的描述 对操作的描述 算法分类:数值运算算法 ---- 用于求数值解 非数值运算算法 ---- 多用于管理领域
2.2简单算法举例 例:求两个数的和语言程序 算法1: #include 输出结果: stepl:给定两个数的值 void main( step2:做加法运算 i int x, y, z 2+3=5 step3:将结果保存 step4:输出结果 Xty; 算法2: printf(《z%dⅦn”,z); stepl:2→x,3→ printf(“od+%d=%dn y, z) step2: x+y(2+3) step3:5→Z step4:输出z
2.2 简单算法举例 算法1: step1:给定两个数的值 step2:做加法运算 step3:将结果保存 step4:输出结果 算法2: step1:2 → x ,3 → y step2:x+y (2+3) step3:5 → z step4:输出 z C语言程序 #include void main( ) { int x, y, z; x=2; y=3; z=x+y; printf(“z=%d\n”, z); printf(“%d+%d=%d\n”, x, y, z); } 输出结果: z=5 2+3=5 例:求两个数的和
2.3算法的特性 有穷性:一个算法包含有限的操作步骤 2.确定性:算法中的每一个步骤是确定的,含义是唯一的 3.有零个或多个输入 4.有一个或多个输出 5.有效性:算法中每一个步骤应能有效运行
2.3 算法的特性 1. 有穷性:一个算法包含有限的操作步骤 2. 确定性:算法中的每一个步骤是确定的,含义是唯一的 3. 有零个或多个输入 4. 有一个或多个输出 5. 有效性:算法中每一个步骤应能有效运行
2.4算法的表示 1.用自然语言表示 开始 优点是使用日常用语,通俗易懂 2→x 缺点是文字冗长,容易出现歧义 3>y 2.用流程图表示:用图框表示各种操作 X+y z 优点是直观形象,易于理解 输出z 结束
2.4 算法的表示 1. 用自然语言表示 优点是使用日常用语, 通俗易懂 缺点是文字冗长, 容易出现歧义 开始 2→x 3→y x+y→z 输出z 结束 2. 用流程图表示: 用图框表示各种操作 优点是直观形象, 易于理解
3.三种基本结构 ①顺序结构②选择结构 ③循环结构 while循环do- while循环 A 成立 不成立 A B A B 成立 不成立 成立 不成立 4.N-S流程图 AB 当P成立 成立 不成立 当P成立 B
3. 三种基本结构 ①顺序结构 ②选择结构 ③循环结构 A B P A B 成立 不成立 不成立 A P 成立 A P 成立 不成立 4. N-S流程图 A B A B 成立 不成立 P A 当P成立 当P成立 A while循环 do-while循环
例:输入10个数,找出其中最大的数,并输出。 step1:输入一个数,存放在一个变量max中; step2:设置用来累计比较次数的计数器i(也是一个变 量)1→i; step3:输入一个数,存放在另一个变量x中; step4:比较max和x中的数,若xmax,则将x的值送入max, 否则,max的值不变; step5:i增加1,即i1→i; step6:若i<9,则返回step3,继续执行, 否则输出max中的数,此时max中的数即为最大 数
例:输入10个数,找出其中最大的数,并输出。 step6: 若imax,则将x的值送入max
输入一个数→max #include 1: void main( →1 i int x, max, i; 输入x scanf(%od, &max); x>max? 是 do x→max { scanf(“%d”,&x); i+1→i if (x>max) 当i<9 max-x, 输出max i=i+1 while(i<9); printf(“max=%d”,max);
输入一个数 max 1 i 输入 x xmax? 是 否 x max i+1 i 当 i void main( ) { int x , max , i ; scanf(“%d”, &max); i=1; do { scanf(“%d”, &x); if (x>max) max=x; i=i+1; } while ( i<9) ; printf(“max=%d” , max) ; }
2.5结构化程序设计方法 需要解决的问题P 1、自顶向下 2、逐步细化 3、模块化设计 子问题pl 子问题p2 子问题p3 4、结构化编码 p12 31 032 033 设计 设计 设计设计设计设计 编码 编码 编码编码|编码编码
2.5 结构化程序设计方法 1、自顶向下 2、逐步细化 3、模块化设计 4、结构化编码 需要解决的问题P 子问题p1 子问题p2 子问题p3 p11 p12 p31 p32 p33 设计 设计 设计 设计 设计 设计 编码 编码 编码 编码 编码 编码
课后习题 习题二 24:(1)、(3)、(4)、(5)、(7)
课后习题 ◼ 习题二 ◼ 2.4:(1)、(3)、(4)、(5)、(7)