资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
算法与程序框图 一人带着一只狼 一只羊和一箱蔬菜要过河 但只有一条小船 乘船时 每次只能带狼 羊和蔬菜中的一种 当有人在场时 狼 羊 蔬菜都相安无事 一旦人不在 狼会吃羊 羊会吃菜 请设计一个方案 安全地将狼 羊和蔬菜带过河 趣味益智游戏 如何发电子邮件 1 1 1算法的概念 一般地 对于一类问题的机械式地 统一地 按部就班地求解过程称为算法 algorithm 它是解决某一问题的程序或步骤 按照这样的理解 我们可以设计出很多具体数学问题的算法 下面看几个例子 所谓 算法 就是解题方法的精确描述 从更广义的角度来看 并不是只有 计算 的问题才有算法 日常生活中处处都有 如乐谱是乐队演奏的算法 菜谱是做菜肴的算法 珠算口诀是使用算盘的算法 第二步 解 得 第三步 2得5y 3 第四步 解 得 做一做 你能写出解一般的二元一次方程组的步骤吗 第一步 第二步 解 3 得 思考 第四步 解 4 得 第三步 第五步 得到方程组的解为 事实上 我们可以将一般的二元一次方程组的解法转化成计算机语言 做成一个求解二元一次方程组的程序 这儿已经做好了 试一试吧 练习1 给出求1 2 3 4 5 6的一个算法 解法1 按照逐一相加的程序进行 第一步 计算1 2 得3 第二步 将第一步中的运算结果3与3相加得6 第三步 将第二步中的运算结果6与4相加得10 第四步 将第三步中的运算结果10与5相加得15 第五步 将第四步中的运算结果15与6相加得21 解法2 可以运用下面公式直接计算 第一步 取n 6 第二步 计算 第三步 输出计算结果 点评 解法1繁琐 步骤较多 解法2简单 步骤较少 找出好的算法是我们的追求目标 现在你对算法有了新的认识了吗 在数学中 算法通常是指按照一定规则解决某一类问题的明确和有限的步骤 现在 算法通常可以编成计算机程序 让计算机执行并解决问题 2 算法的要求 1 写出的算法 必须能解决一类问题 例如解任意一个二元一次方程组 并且能重复使用 2 算法过程要能一步一步执行 每一步执行的操作 必须确切 不能含混不清 而且在有限步之内完成后能得出结果 1 算法的定义 讲授新课 3 算法的基本特征 明确性 算法对每一个步骤都有确切的 非二义性的规定 即每一步对于利用算法解决问题的人或计算机来说都是可读的 可执行的 而不需要计算者临时动脑筋 有效性 算法的每一个步骤都能够通过基本运算有效地进行 并得到确定的结果 对于相同的输入 无论谁执行算法 都能够得到相同的最终结果 讲授新课 有限性 算法应由有限步组成 至少对某些输入 算法应在有限多步内结束 并给出计算结果 信息输出 一个算法至少要有一个有效的信息输出 这就是问题求解的结果 不唯一性 求解某一个题的解法不一定是唯一的 对于一个问题可以有不同的算法 4 算法的描述 描述算法可以有不同的方式 常用的有自然语言 程序框图 程序设计语言 伪代码等 数据输入 算法一定要根据输入的初始数据或给定的初值才能正确执行它的每一步骤 自然语言就是人们日常使用的语言 可以是汉语 英语或数学语言等 用自然语言描述算法的优点是通俗易懂 当算法中的操作步骤都是顺序执行时比较容易理解 缺点是如果算法中包含判断和转向 并且操作步骤较多时 就不那么直观清晰了 1 自然语言 2 程序框图 3 程序设计语言 1 1 2程序框图中讲解 1 2基本算法语句中讲解 例1 1 设计一个算法判断7是否为质数 第一步 用2除7 得到余数1 因为余数不为0 所以2不能整除7 第二步 用3除7 得到余数1 因为余数不为0 所以3不能整除7 第三步 用4除7 得到余数3 因为余数不为0 所以4不能整除7 第四步 用5除7 得到余数2 因为余数不为0 所以5不能整除7 第五步 用6除7 得到余数1 因为余数不为0 所以6不能整除7 因此 7是质数 例1 2 设计一个算法判断35是否为质数 第一步 用2除35 得到余数1 因为余数不为0 所以2不能整除35 第二步 用3除35 得到余数2 因为余数不为0 所以3不能整除35 第三步 用4除35 得到余数3 因为余数不为0 所以4不能整除35 第四步 用5除35 得到余数0 因为余数为0 所以5能整除35 因此 35不是质数 变式 判断53是否质数 的算法如下 第1步 用2除53得余数为1 余数不为0 所以2不能整除53 第2步 用3除53得余数为2 余数不为0 所以3不能整除53 第52步 用52除53得余数为1 余数不为0 故52不能整除53 所以53是质数 上述算法正确吗 请说明理由 算法要 面面俱到 不能省略任何一个细小的步骤 只有这样 才能在人设计出算法后 把具体的执行过程交给计算机完成 设计一个具体问题的算法时 与过去熟悉地解数学题的过程有直接的联系 但这个过程必须被分解成若干个明确的步骤 而且这些步骤必须是有效的 判断 整数n n 2 是否是质数 的算法 自然语言描述 第一步 给定大于2的整数n 第二步 令i 2 第三步 用i除n 得到余数r 第四步 判断 r 0 是否成立 若是 则n不是质数 结束算法 否则将i的值增加1 仍用i表示 第五步 判断 i n 1 是否成立 若是 则n是质数 结束算法 否则返回第三步 二分法 对于区间 a b 上连续不断 且f a f b 0的函数y f x 通过不断地把函数f x 的零点所在的区间一分为二 使区间的两个端点逐步逼近零点 进而得到零点或其近似值的方法叫做二分法 第四步 若f a f m 0 则含零点的区间为 a m 第二步 给定区间 a b 满足f a f b 0 第三步 取中间点 第五步 判断f m 是否等于 或者 a b 的长度是否小于d 若是 则m是方程的近似解 否则 返回第三步 将新得到的含零点的仍然记为 a b 否则 含零点的区间为 m b 算法步骤 第一步 令 给定精确度d 当d 0 005时 按照以上算法 可得下面表和图 于是 开区间 1 4140625 1 41796875 中的实数都是当精确度为0 005时的原方程的近似解 练习2 任意给定一个正实数 设计一个算法求以这个数为半径的圆的面积 算法步骤 第一步 给定一个正实数r 第二步 计算以r为半径的圆的面积S r2 第三步 得到圆的面积S 练习3 任意给定一个大于1的正整数n 设计一个算法求出n的所有因数 算法步骤 第一步 依次以2 n 1 为除数除n 检查余数是否为0 若是 则是n的因数 若不是 则不是n的因数 第二步 在n的因数中加入1和n 第三步 输出n的所有因数 练习4 写出求一元二次方程ax2 bx c 0的根的算法 第一步 计算 b2 4ac 第二步 如果 0 则原方程无实数解 否则 0 时 第三步 输出x1 x2或无实数解 小结 算法的特征是什么 明确性 有效性 有限性 算法的概念 算法通常指可以用来解决的某一类问题的步骤或程序 这些步骤或程序必须是明确的和有效的 而且能够在有限步之内完成的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号