第二章程序的灵魂—算法 程序=数据结构+算法+程序设计方法+语言工具和环境 1、对数据的描述。(配料,指出应使用那些原料) 2、对操作的描述。(操作步骤,如何用料做成菜肴 3、程序设计方法。 4、语言工具和环境
第二章 程序的灵魂——算法 1、对数据的描述。(配料,指出应使用那些原料) 2、对操作的描述。(操作步骤,如何用料做成菜肴) 3、程序设计方法。 4、语言工具和环境。 程序=数据结构+算法+程序设计方法+语言工具和环境
算法的概念 为解决一个问题而采取的方法和步骤 就称为算法。 从北京到天津开会 首歌曲的谱子 太极拳图解 计犷机算法分灭大类:数值运算算法和 非数值运算算法
一、算法的概念 为解决一个问题而采取的方法和步骤, 就称为算法。 •从北京到天津开会 •一首歌曲的谱子 •太极拳图解 计算机算法分两大类:数值运算算法和 非数值运算算法
简单算法举例 例2.1:求1*2*3*4*5 方法 步骤1:先求1*2,得到结果2。 步骤2:将步骤1得到的乘积2再乘以3,得到结果6。 步骤3:将步骤2得到的乘积6再乘以4,得到结果24 步骤4:将步骤3得到的乘积24再乘以5, 得到最后结果120
简单算法举例 例2.1:求1*2*3*4*5 方法一: •步骤1:先求1*2,得到结果2。 •步骤2:将步骤1得到的乘积2再乘以3,得到结果6。 •步骤3:将步骤2得到的乘积6再乘以4,得到结果24。 •步骤4:将步骤3得到的乘积24再乘以5, 得到最后结果120
方法二: 步骤1:设p=1(p为乘数)。 步骤2:设i2(i为被乘数) 步骤3:使p*,乘积仍放在变量p中,可表示为pp3*i 步骤4:使i的值加1,可表示为i=i1。 步骤5:如果大于5,返回重新执行步骤3、4、5; 否则算法结束。最后求得的p的值就是5!的值
方法二: •步骤1:设p=1(p为乘数)。 •步骤2:设i=2(i为被乘数)。 •步骤3:使p*i,乘积仍放在变量p中,可表示为p=p*i。 •步骤4:使i的值加1,可表示为i=i+1 。 •步骤5:如果i不大于5,返回重新执行步骤3、4、5; 否则算法结束。最后求得的p的值就是5!的值
例1有两个变量A和B,将它们的值交换。 例2输入3个整数a,b,C,按由大到小的顺序输出。 例3从10个数中找出最大的数。 例4用辗转相除法求两个正整数m和n的最大公约数 例5给定一个正整数M,判断它是否为素数
例1 有两个变量A和B,将它们的值交换。 例2 输入3个整数a,b,c,按由大到小的顺序输出。 例3 从10个数中找出最大的数。 例4 用辗转相除法求两个正整数m和n的最大公约数。 例5 给定一个正整数M,判断它是否为素数
二、算法的特点 1、有穷性:一个算法应包含有限的操作步 骤,而不能是无限的。 2、确定性:算法中每一个步骤都应当是确 定的,不能含糊、模棱两可。 3、有零个或多个输入 4、有一个或多个输出。 5、有效性
二、算法的特点 1、有穷性:一个算法应包含有限的操作步 骤,而不能是无限的。 2、确定性:算法中每一个步骤都应当是确 定的,不能含糊、模棱两可。 3、有零个或多个输入。 4、有一个或多个输出。 5、有效性
算法设计的要求 1正确性。算法应当满足具体问题的需求。“正确” 的含义在通常的用法中有很大差别,大体 可分为四个层次: a.程序不含语法错误 b.程序对几组输入数据能够得出满足规格说明 要求的结果。 c.程序对于精心选择的典型、苛刻而带有刁 难性的几组输入数据能够得岀满足规格说 明要求的结果 d.程序对于一切合法的输入数据都能产生满足 规格说明要求的结果
三、算法设计的要求 1 正确性。算法应当满足具体问题的需求。“正确” 一词 的含义在通常的用法中有很大差别,大体 可分为四个层次: a. 程序不含语法错误。 b. 程序对几组输入数据能够得出满足规格说明 要求的结果。 c. 程序对于精心选择的典型、苛刻而带有刁 难性的几组输入数据能够得出满足规格说 明要求的结果。 d. 程序对于一切合法的输入数据都能产生满足 规格说明要求的结果
、算法设计的要求 2可读性。算法主要是为了人的阅读和交流,可读性 好有助于人对算法的理解 3健壮性。当输入数据非法时,算法也能适当做出 反应或进行处理,而不会产生莫名其妙 的输出结果。 4效率与低存储量需求。效率指算法执行的时间; 存储量需求算法执行过程中所需要的 最大存储空间
2 可读性。算法主要是为了人的阅读和交流,可读性 好有助于 人对算法的理解。 3 健壮性。当输入数据非法时,算法也能适当做出 反应或进行处理,而不会产生莫名其妙 的输出结果。 4 效率与低存储量需求。效率指算法执行的时间; 存储量需求算法执行过程中所需要的 最大存储空间。 三、算法设计的要求
四、算法的描述。 常用的描述工具有:自然语言,流程图,N-S结构 化流程图,PAD图,伪代码等。 1.程序流程图 流程图是一种传统的算法表示法,它利用几何图形 框来代表各种不同性质的操作,用流程线来指示算法的 执行方向。由于它简单直观,所以应用广泛,特别是在 早期语言阶段,只有通过流程图才能简明地表述算法, 流程图成为程序员们交流的重要手段,直到结构化的程 序设计语言出现,对流程图的依赖才有所降低
四、算法的描述。 常用的描述工具有:自然语言,流程图,N-S结构 化流程图,PAD图,伪代码等。 1. 程序流程图 流程图是一种传统的算法表示法,它利用几何图形 框来代表各种不同性质的操作,用流程线来指示算法的 执行方向。由于它简单直观,所以应用广泛,特别是在 早期语言阶段,只有通过流程图才能简明地表述算法, 流程图成为程序员们交流的重要手段,直到结构化的程 序设计语言出现,对流程图的依赖才有所降低
常用符号: 处理框 判断框 输入输出框 起始框 流程线
处理框 判断框 起始框 流程线 输入/输出框 常用符号: