1、 1.1.1 算法的概念算法的概念 学习目标学习目标: 通过分析具体问题过程与步骤通过分析具体问题过程与步骤,体会算法体会算法 的思想的思想,了解算法的含义了解算法的含义,能用自然语言描述解能用自然语言描述解 决具体问题的算法决具体问题的算法. 学习重点学习重点(难点难点): 通过实例体会算法思想通过实例体会算法思想,初步理解算法的初步理解算法的 含义含义. 问题问题1请你写出解二元一次方程组的详细求解请你写出解二元一次方程组的详细求解 过程过程. 21 21 xy xy 第一步第一步:-2得得: 5y=3 第二步第二步: 解得解得: 3 5 y 第三步第三步: 将将 代入代入,解得解得 .
2、3 5 y 1 5 x 对于一般的二元一次方程组对于一般的二元一次方程组 其中其中 也可以按照上述步骤求解也可以按照上述步骤求解. 111 222 a xb yc a xb yc 1 22 1 0aba b 这些步骤就构成了解二元一次方程组的这些步骤就构成了解二元一次方程组的 算法算法,我们可以根据这一算法编制计算机程序我们可以根据这一算法编制计算机程序, 让计算机来解二元一次方程组让计算机来解二元一次方程组. 算法的概念与特征算法的概念与特征 算法算法(algorithm)这个词出现于这个词出现于12世纪世纪, 指的是用阿拉伯数字进行算术运算的过程指的是用阿拉伯数字进行算术运算的过程. 在数
3、学上在数学上,现代意义上的“算法”通常是指可现代意义上的“算法”通常是指可 以用计算机来解决的某一类问题的以用计算机来解决的某一类问题的程序或步程序或步 骤骤,这些程序或步骤必须是明确和有效的这些程序或步骤必须是明确和有效的,而而 且能够在有限步之内完成且能够在有限步之内完成. 说明说明: (1)事实上算法并没有精确化的定义事实上算法并没有精确化的定义. (2)算法虽然没有一个明确的定义算法虽然没有一个明确的定义,但其特点但其特点 是鲜明的是鲜明的,不仅要注意不仅要注意算法的程序性、有限算法的程序性、有限 性、构造性、精确性的特点,还应该充分性、构造性、精确性的特点,还应该充分 理解算法问题的
4、指向性,即算法往往指向理解算法问题的指向性,即算法往往指向 解决某一类问题,泛泛地谈算法是没有意解决某一类问题,泛泛地谈算法是没有意 义的。义的。 算法学的发展 随着科学技术的日新月异,算法学也得 到了前所未有的发展,现在已经发展到了各 个领域.有遗传算法遗传算法,排序算法排序算法,加密算法加密算法,蚁蚁 群算法群算法等,与生物学,计算机科学等有着很广 泛的联系,尤其是在现在的航空航天中,更是 有着更广泛的应用. 很多复杂的运算都是借助计算机和算 法来完成的,在高端科学技术中有着很重要 的地位. 例例1:任意给定一个大于任意给定一个大于1的整数的整数n,试设计一个程试设计一个程 序或步骤对序或
5、步骤对n是否为质数做出判定是否为质数做出判定. 分析分析:请回顾这个问题的解题过程请回顾这个问题的解题过程. 算法分析算法分析: 第一步第一步:判断判断n是否等于是否等于2. 若若n=2,则则n是质数是质数; 若若n2,则执行第二步则执行第二步. 第二步第二步:依次检验依次检验2(n-1)这些整数是不是这些整数是不是n的的 因素因素,即是不是整除即是不是整除n的数的数.若有这样的数若有这样的数,则则n不是不是 质数质数;若没有这样的数若没有这样的数,则则n是质数是质数. 说明说明:用语言描述一个算法用语言描述一个算法,最便捷的方式就是按最便捷的方式就是按 解决问题的步骤进行描述解决问题的步骤进
6、行描述.每一步做一件事情每一步做一件事情. 若是若是,则则m 为所求为所求; 例例2:用二分法设计一个求方程用二分法设计一个求方程x2-2=0的近似根的近似根 的算法的算法. 算法分析算法分析: 设所求近似根与精确解的差的绝对设所求近似根与精确解的差的绝对 值不超过值不超过=0.005. 第一步第一步:令令f(x)=x2-2. 因为因为f(1)0, 所以设所以设a=1,b=2. 第二步第二步:令令 , 2 ab m 判断判断f(m)是否为是否为0. 若否若否,则继续判断则继续判断f(a) (m)大于大于0还是小于还是小于0. 第三步第三步:若若f(a) (m)0,则令则令a=m;否则否则,令令
7、b=m. 第四步第四步:判断判断|a-b|7时时) 解解:y与与x之间的函数关系为之间的函数关系为: 1.2 , 1.94.9 x y x (当当0x7时时) (当当x7时时) 求该函数值的算法分析求该函数值的算法分析: 第一步第一步:输入每月用水量输入每月用水量x; 第二步第二步:判断判断x是否不超过是否不超过7.若是若是,则则y=1.2x; 若否若否,则则y=1.9x-4.9. 第三步第三步:输出应交纳的水费输出应交纳的水费y. 作业作业: 课本课本P5页页T2 (只需用自然语言写出算法步骤只需用自然语言写出算法步骤) 1.1.2 程序框图与算法的基本逻辑结构程序框图与算法的基本逻辑结构
8、学习目标学习目标:(1)在具体问题的解决过程中在具体问题的解决过程中,掌握基本掌握基本 的程序框图的画法的程序框图的画法,理解程序框图的三种基本逻辑理解程序框图的三种基本逻辑 结构结构-顺序结构、条件结构、循环结构。顺序结构、条件结构、循环结构。 (2)通过模仿、操作、探索,经历通过设计程序框通过模仿、操作、探索,经历通过设计程序框 图表达解决问题的算法的过程。图表达解决问题的算法的过程。 学习重点学习重点:通过模仿、操作、探索,经历通过设计通过模仿、操作、探索,经历通过设计 程序框图表达求解问题的过程,在具体问题解决程序框图表达求解问题的过程,在具体问题解决 过程中,理解程序框图的三种基本逻
9、辑结构过程中,理解程序框图的三种基本逻辑结构. 学习难点学习难点:用程序框图清晰表达含有循环结构的算法用程序框图清晰表达含有循环结构的算法. 例例1:任意给定一个大于任意给定一个大于1的整数的整数n,试设计一个程试设计一个程 序或步骤对序或步骤对n是否为质数做出判定是否为质数做出判定. 算法分析算法分析: 第一步第一步:判断判断n是否等于是否等于2. 若 若n=2,则则n是质数是质数; 若若n2,则执行第二步则执行第二步. 第二步第二步:依次检验依次检验2(n-1)这些整数是不是这些整数是不是n的的 因素因素,即是不是整除即是不是整除n的数的数.若有这样的数若有这样的数,则则n不是不是 质数质
10、数;若没有这样的数若没有这样的数,则则n是质数是质数. 从上节课我们知道从上节课我们知道:算法可以用自然语言算法可以用自然语言 来描述来描述.如例如例1 为了使算法的程序或步骤表达得更为直观为了使算法的程序或步骤表达得更为直观,我我 们更经常地用图形方式来表示它们更经常地用图形方式来表示它. 开始开始 输入输入n i=2 求求n除以除以i的余数的余数r i的值增加的值增加1仍用仍用i表示表示 in或或r=0? n不是质数不是质数 结束结束 是是 否否 是是 n是质数是质数 否否 r=0? 设设n是一个大是一个大 于于2的整数的整数. 一般用一般用i=i+1 表示表示. i=i+1 说明说明:i
11、表示从表示从2(n-1) 的所有正整数的所有正整数,用以用以 判断例判断例1步骤步骤2是否终是否终 止止,i是一个计数变量是一个计数变量, 有了这个变量有了这个变量,算法算法 才能依次执行才能依次执行.逐步逐步 考察从考察从2(n-1)的所的所 有正整数中是否有有正整数中是否有n 的因数存在的因数存在. 思考思考?通过上述算法的两种不同表达方式的比通过上述算法的两种不同表达方式的比 较较,你觉得用程序框图来表达算法有哪些特点你觉得用程序框图来表达算法有哪些特点? 用程序框图表示的算法更加简练用程序框图表示的算法更加简练,直观直观,流向清楚流向清楚. 程序框图程序框图又称又称流程图流程图,是一种
12、用规定的图形、是一种用规定的图形、 指向线及文字说明来准确、直观地表示算法的指向线及文字说明来准确、直观地表示算法的 图形图形. 通常通常,程序框图由程序框和流程线组成程序框图由程序框和流程线组成. 一个或几个程序框的组合表示算法中的一个步骤一个或几个程序框的组合表示算法中的一个步骤; 流程线是方向箭头流程线是方向箭头,按照算法进行的顺序将程序按照算法进行的顺序将程序 框连接起来框连接起来. 基本的程序框和它们各自表示的功能如下基本的程序框和它们各自表示的功能如下: 图形符号图形符号 名称名称 功能功能 终端框终端框 (起止框起止框) 表示一个算法的起始表示一个算法的起始 和结束和结束 输入、
13、输输入、输 出框出框 表示一个算法输入和表示一个算法输入和 输出的信息输出的信息 处理框处理框 (执行框执行框) 判断某一条件是否成立判断某一条件是否成立,成立成立 时在出口处标明“是”或时在出口处标明“是”或 “Y”;不”成立时标明“否”;不”成立时标明“否” 或“或“N”. 判断框判断框 赋值、计算赋值、计算 流程线流程线 连接程序框连接程序框 连接点连接点 连接程序框图的两部分连接程序框图的两部分 开始开始 输入输入n i=2 求求n除以除以i的余数的余数r i=i+1 in或或r=0? n不是质数不是质数 结束结束 是是 否否 是是 n是质数是质数 否否 r=0? 顺序结构顺序结构 用
14、程序框图来表示算法,有用程序框图来表示算法,有 三种不同的基本逻辑结构:三种不同的基本逻辑结构: 条件结构条件结构 循环结构循环结构 程序框图的三种基本的逻辑结构程序框图的三种基本的逻辑结构 顺序结构顺序结构 条件结构条件结构 循环结构循环结构 (1)顺序结构顺序结构-是由若干个依次执行的处理是由若干个依次执行的处理 步骤组成的步骤组成的.这是任何一个算法都离不开的这是任何一个算法都离不开的 基本结构基本结构. 例例1:已知一个三角形的三边边长分别为已知一个三角形的三边边长分别为2,3,4, 利用海伦利用海伦-秦九韶公式设计一个算法秦九韶公式设计一个算法,求出它的求出它的 面积面积,画出算法的
15、程序框图画出算法的程序框图. 算法分析算法分析: 第一步第一步:计算计算p的值的值. 第二步第二步:由海伦由海伦-秦九韶公式求出三角形的面积秦九韶公式求出三角形的面积S. 第三步第三步:输出输出S的值的值. (1)顺序结构顺序结构-是由若干个依次执行的处理是由若干个依次执行的处理 步骤组成的步骤组成的.这是任何一个算法都离不开的这是任何一个算法都离不开的 基本结构基本结构. 例例1:已知一个三角形的三边边长分别为已知一个三角形的三边边长分别为2,3,4, 利用海伦利用海伦-秦九韶公式设计一个算法秦九韶公式设计一个算法,求出它的求出它的 面积面积,画出算法的程序框图画出算法的程序框图. 算法分析
16、算法分析: 第一步第一步:计算计算p的值的值. 第二步第二步:由海伦由海伦-秦九韶公式求出三角形的面积秦九韶公式求出三角形的面积S. 第三步第三步:输出输出S的值的值. 程序框图程序框图: 开始开始 234 2 p (2)(3)(4)Sp ppp 输出输出S 结束结束 画出画出:已知三角形的三已知三角形的三 边长边长a,b,c,求它的面积求它的面积 的程序框图的程序框图. 开始开始 2 abc p ()()()Sp pa pb pc 输出输出S 结束结束 输入输入a,b,c 返回返回 已知三角形三边长分别为已知三角形三边长分别为a,b,c,则三角则三角 形的面积为形的面积为 其中其中 这个公式
17、被称为海伦这个公式被称为海伦秦九韶公式秦九韶公式. ()()()Sp pa pb pc 2 abc p 返回返回 (2)条件结构条件结构-在一个算法中在一个算法中,经常会遇到一经常会遇到一 些条件的判断些条件的判断,算法的流向根据条件是否成算法的流向根据条件是否成 立有不同的流向立有不同的流向.条件结构就是处理这种过条件结构就是处理这种过 程的结构程的结构. 例例2:任意给定任意给定3个正实数个正实数,设计一个算法设计一个算法,判断分判断分 别以这别以这3个数为三边边长的三角形是否存在个数为三边边长的三角形是否存在.画画 出这个算法的程序框图出这个算法的程序框图. 算法分析算法分析: 第一步第
18、一步:输入输入3个正实数个正实数a,b,c; 第二步第二步:判断判断a+bc,a+cb,b+ca是否同时成立是否同时成立, 若是若是,则能组成三角形则能组成三角形;若否若否,则组不成三角形则组不成三角形. 程序框图程序框图: 开始开始 输入输入a,b,c a+bc,a+cb,b+ca是否是否 同时成立同时成立? 是是 存在这样的存在这样的 三角形三角形 不存在这样的不存在这样的 三角形三角形 否否 结束结束 例例3:为了加强居民的节水意识为了加强居民的节水意识,某市制订了以某市制订了以 下生活用水收费标准下生活用水收费标准:每户每月用水未超过每户每月用水未超过 7m3时时,每立方米收费每立方米
19、收费1.0元元,并加收并加收0.2元的城元的城 市污水处理费市污水处理费;超过超过7m3的部分的部分,每立方米收费每立方米收费 1.5元元,并加收并加收0.4元的城市污水处理费元的城市污水处理费,请你写请你写 出某户居民每月应交纳的水费出某户居民每月应交纳的水费y(元元)与用水量与用水量 x(m3)之间的函数关系之间的函数关系,然后设计一个求该函然后设计一个求该函 数值的算法数值的算法,并画出程序框图并画出程序框图. 解解:y与与x之间的函数关系为之间的函数关系为: 1.2 , 1.94.9 x y x (当当0x7时时) (当当x7时时) 解解:y与与x之间的函数关系为之间的函数关系为: 1
20、.2 , 1.94.9 x y x (当当0x7时时) (当当x7时时) 算法分析算法分析: 第一步第一步:输入每月用水量输入每月用水量 x; 第二步第二步:判断判断x是否不超是否不超 过过7.若是若是,则则y=1.2x;若若 否否,则则y=1.9x-4.9. 第三步第三步:输出应交纳的水输出应交纳的水 费费y. 开始开始 输入输入x 0100? 是是 输出输出S 结束结束 否否 直到直到 型循型循 环结环结 构构 开始开始 i=1 S=0 i100? 是是 S=S+i i=i+1 否否 输出输出S 结束结束 当型循环当型循环 结构结构 开始开始 输入输入n i=2 求求n除以除以i的余数的余
21、数r i=i+1 in或或r=0? n不是质数不是质数 结束结束 是是 否否 是是 n是质数是质数 否否 r=0? 顺序结构顺序结构 用程序框图来表示算法,有用程序框图来表示算法,有 三种不同的基本逻辑结构:三种不同的基本逻辑结构: 条件结构条件结构 循环结构循环结构 直到型循直到型循 环结构环结构 若是若是,则则m 为所求为所求; 探究探究:画出用二分法求方程画出用二分法求方程x2-2=0的近似根的近似根(精确精确 度为度为0.005)的程序框图的程序框图. 算法分析算法分析: 第一步第一步:令令f(x)=x2-2. 因为因为f(1)0, 所以设所以设a=1,b=2. 第二步第二步:令令 ,
22、 2 ab m 判断判断f(m)是否为是否为0. 若否若否,则继续判断则继续判断f(a) (m)大于大于0还是小于还是小于0. 第三步第三步:若若f(a) (m)0,则令则令a=m;否则否则,令令b=m. 第四步第四步:判断判断|a-b|0? 程序框图程序框图 开始开始 f(x)=x2-2 输入误差输入误差 和初值和初值a,b 2 ab m f(m)=0? a=m 否否 b=m |a-b|0? 程序框图程序框图 开始开始 f(x)=x2-2 输入误差输入误差 和初值和初值a,b 2 ab m a=m 否否 b=m |a-b|或或f(m)=0? 输出输出m 结束结束 课堂小结课堂小结 本节主要讲
23、述了程序框图的基本知识本节主要讲述了程序框图的基本知识: :包括包括 常用的图形符号、算法的基本逻辑结构常用的图形符号、算法的基本逻辑结构. . 算法的基本逻辑结构有三种,即顺序结构、算法的基本逻辑结构有三种,即顺序结构、 条件结构和循环结构条件结构和循环结构. . 其中顺序结构是最简单的结构,也是最其中顺序结构是最简单的结构,也是最 基本的结构,循环结构必然包含条件结构,基本的结构,循环结构必然包含条件结构, 所以这三种基本逻辑结构是相互支撑的,所以这三种基本逻辑结构是相互支撑的, 它们共同构成了算法的基本结构,无论怎它们共同构成了算法的基本结构,无论怎 样复杂的逻辑结构,都可以通过这三种结样复杂的逻辑结构,都可以通过这三种结 构来表达构来表达 作业作业: 课本课本P20页页A组组T2;