nbhkdz.com冰点文库

必修三第一章《算法初步》


第一章

算法初步

本章教材分析 算法是数学及其应用的重要组成部分,是计算科学的重要基础.算法的应用是学习数学 的一个重要方面.学生学习算法的应用 ,目的就是利用已有的数学知识分析问题和解决问题 . 通过算法的学习,对完善数学的思想, 激发应用数学的意识,培养分析问题、 解决问题的能力, 增强进行实践的能力等,都有很大的帮助. 本章主要内

容:算法与程序框图、基本算法语句、算法案例和小结.教材从学生最熟悉 的算法入手,通过研究程序框图与算法案例,使算法得到充分的应用,同时也展现了古老算 法和现代计算机技术的密切关系.算法案例不仅展示了数学方法的严谨性、科学性,也为计 算机的应用提供了广阔的空间.让学生进一步受到数学思想方法的熏陶,激发学生的学习热 情. 在算法初步这一章中让学生近距离接近社会生活, 从生活中学习数学, 使数学在社会生 活中得到应用和提高,让学生体会到数学是有用的,从而培养学生的学习兴趣 .“数学建模” 也是高考考查重点. 本章还是数学思想方法的载体, 学生在学习中会经常用到“算法思想” “转化思想”, 从而 提高自己数学能力.因此应从三个方面把握本章: (1)知识间的联系; (2)数学思想方法; (3)认知规律. 本章教学时间约需 12 课时,具体分配如下(仅供参考) : 1.1.1 算法的概念 1.1.2 程序框图与算法的基本逻辑结构 1.2.1 输入语句、输出语句和赋值语句 1.2.2 条件语句 1.2.3 循环语句 1.3 算法案例 本章复习 1.1 算法与程序框图 1.1.1 算法的概念 整体设计 教学分析 算法在中学数学课程中是一个新的概念, 但没有一个精确化的定义, 教科书只对它作了 如下描述:“在数学中,算法通常是指按照一定规则解决某一类问题的明确有限的步骤 .”为 了让学生更好理解这一概念,教科书先从分析一个具体的二元一次方程组的求解过程出发, 归纳出了二元一次方程组的求解步骤, 这些步骤就构成了解二元一次方程组的算法.教学中, 应从学生非常熟悉的例子引出算法,再通过例题加以巩固. 三维目标 1.正确理解算法的概念,掌握算法的基本特点. 2.通过例题教学,使学生体会设计算法的基本思路. 3.通过有趣的实例使学生了解算法这一概念的同时,激发学生学习数学的兴趣. 重点难点 教学重点:算法的含义及应用. 教学难点:写出解决一类问题的算法.
1

约 1 课时 约 4 课时 约 1 课时 约 1 课时 约 1 课时 约 3 课时 约 1 课时

课时安排 1 课时 教学过程 导入新课 思路 1(情境导入) 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有 人在的时候,如果狼的数量不少于羚羊的数量狼就会吃羚羊.该人如何将动物转移过河?请 同学们写出解决问题的步骤,解决这一问题将要用到我们今天学习的内容——算法. 思路 2(情境导入) 大家都看过赵本山与宋丹丹演的小品吧, 宋丹丹说了一个笑话, 把大象装进冰箱总共分 几步? 答案:分三步,第一步:把冰箱门打开;第二步:把大象装进去;第三步:把冰箱门关上. 上述步骤构成了把大象装进冰箱的算法,今天我们开始学习算法的概念. 思路 3(直接导入) 算法不仅是数学及其应用的重要组成部分, 也是计算机科学的重要基础.在现代社会里, 计算机已成为人们日常生活和工作中不可缺少的工具.听音乐、看电影、玩游戏、打字、画 卡通画、 处理数据, 计算机是怎样工作的呢?要想弄清楚这个问题, 算法的学习是一个开始. 推进新课 新知探究 提出问题 (1)解二元一次方程组有几种方法? (2)结合教材实例 ?

? x ? 2 y ? ?1,(1) 总结用加减消元法解二元一次方程组的步骤. ?2 x ? y ? 1, (2) ? x ? 2 y ? ?1,(1) 总结用代入消元法解二元一次方程组的步骤. ?2 x ? y ? 1, (2)

(3)结合教材实例 ?

(4)请写出解一般二元一次方程组的步骤. (5)根据上述实例谈谈你对算法的理解. (6)请同学们总结算法的特征. (7)请思考我们学习算法的意义. 讨论结果: (1)代入消元法和加减消元法. (2)回顾二元一次方程组

? x ? 2 y ? ?1,(1) 的求解过程,我们可以归纳出以下步骤: ? ?2 x ? y ? 1, (2)
第一步,①+②× 2,得 5x=1.③ 第二步,解③,得 x=

1 . 5 3 . 5

第三步,②-①× 2,得 5y=3.④ 第四步,解④,得 y=

2

1 ? x? , ? ? 5 第五步,得到方程组的解为 ? ?y ? 3. ? 5 ?
(3)用代入消元法解二元一次方程组

? x ? 2 y ? ?1,(1) 我们可以归纳出以下步骤: ? ?2 x ? y ? 1, (2)
第一步,由①得 x=2y-1.③ 第二步,把③代入②,得 2(2y-1)+y=1.④ 第三步,解④得 y=

3 .⑤ 5 3 5 1 . 5

第四步,把⑤代入③,得 x=2× -1=

1 ? x? , ? ? 5 第五步,得到方程组的解为 ? ?y ? 3. ? 5 ?
(4)对于一般的二元一次方程组 ?

?a1 x ? b1 y ? c1 , (1) ?a 2 x ? b2 y ? c 2 , (2)

其中 a1b2-a2b1≠0,可以写出类似的求解步骤: 第一步,①× b2-②× b1,得 (a1b2-a2b1)x=b2c1-b1c2.③ 第二步,解③,得 x=

b2 c1 ? b1c2 . a1b2 ? a 2 b1 a1c2 ? a 2 c1 . a1b2 ? a 2 b1

第三步,②× a1-①× a2,得(a1b2-a2b1)y=a1c2-a2c1.④ 第四步,解④,得 y=

b2 c1 ? b1c 2 ? ?x ? a b ? a b , ? 1 2 2 1 第五步,得到方程组的解为 ? ? y ? a1c 2 ? a 2 c1 . ? a1b2 ? a 2 b1 ?
(5)算法的定义:广义的算法是指完成某项工作的方法和步骤,那么我们可以说洗衣机的使 用说明书是操作洗衣机的算法,菜谱是做菜的算法等等. 在数学中,算法通常是指按照一定规则解决某一类问题的明确有限的步骤. 现在,算法通常可以编成计算机程序,让计算机执行并解决问题. (6)算法的特征:①确定性:算法的每一步都应当做到准确无误、不重不漏.“不重”是指不是 可有可无的,甚至无用的步骤,“不漏” 是指缺少哪一步都无法完成任务.②逻辑性:算法从
3

开始的“第一步”直到“最后一步”之间做到环环相扣, 分工明确, “前一步”是“后一步”的前提, “后一步”是“前一步”的继续.③有穷性: 算法要有明确的开始和结束, 当到达终止步骤时所要 解决的问题必须有明确的结果, 也就是说必须在有限步内完成任务, 不能无限制地持续进行. (7)在解决某些问题时,需要设计出一系列可操作或可计算的步骤来解决问题,这些步骤称 为解决这些问题的算法.也就是说,算法实际上就是解决问题的一种程序性方法.算法一般是 机械的,有时需进行大量重复的计算,它的优点是一种通法,只要按部就班地去做,总能得 到结果.因此算法是计算科学的重要基础. 应用示例 思路 1 例 1 (1)设计一个算法,判断 7 是否为质数. (2)设计一个算法,判断 35 是否为质数. 算法分析: (1)根据质数的定义,可以这样判断:依次用 2—6 除 7,如果它们中有一个能 整除 7,则 7 不是质数,否则 7 是质数. 算法如下: (1)第一步,用 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 是质数. (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 不是质数. 点评:上述算法有很大的局限性,用上述算法判断 35 是否为质数还可以,如果判断 1997 是否为质数就麻烦了,因此,我们需要寻找普适性的算法步骤. 变式训练 请写出判断 n(n>2)是否为质数的算法. 分析:对于任意的整数 n(n>2),若用 i 表示 2—(n-1)中的任意整数,则“判断 n 是否为质数” 的算法包含下面的重复操作:用 i 除 n,得到余数 r.判断余数 r 是否为 0,若是,则不是质数; 否则,将 i 的值增加 1,再执行同样的操作. 这个操作一直要进行到 i 的值等于(n-1)为止. 算法如下:第一步,给定大于 2 的整数 n. 第二步,令 i=2. 第三步,用 i 除 n,得到余数 r. 第四步,判断“r=0”是否成立.若是,则 n 不是质数,结束算法;否则,将 i 的值增加 1, 仍用 i 表示. 第五步,判断“i>(n-1)”是否成立.若是,则 n 是质数,结束算法;否则,返回第三步. 例 2 写出用“二分法”求方程 x2-2=0 (x>0)的近似解的算法. 分析:令 f(x)=x2-2,则方程 x2-2=0 (x>0)的解就是函数 f(x)的零点. “二分法”的基本思想是:把函数 f(x)的零点所在的区间[a,b](满足 f(a)· f(b)<0)“一分 为二”,得到[a,m]和[m,b].根据“f(a)·f(m)<0”是否成立,取出零点所在的区间[a,m]或 [m,b] ,仍记为[a,b].对所得的区间[a,b]重复上述步骤,直到包含零点的区间[a,b]“足 够小”,则[a,b]内的数可以作为方程的近似解. 解:第一步,令 f(x)=x2-2,给定精确度 d.
4

第二步,确定区间[a,b] ,满足 f(a)· f(b)<0. 第三步,取区间中点 m=

a?b . 2

第四步,若 f(a)· f(m)<0,则含零点的区间为[a,m] ;否则,含零点的区间为[m,b].将新得 到的含零点的区间仍记为[a,b]. 第五步,判断[a,b]的长度是否小于 d 或 f(m)是否等于 0.若是,则 m 是方程的近似解; 否则,返回第三步. 当 d=0.005 时,按照以上算法,可以得到下表. a 1 1 1.25 1.375 1.375 1.406 25 1.406 25 1.414 062 5 1.414 062 5 b 2 1.5 1.5 1.5 1.437 5 1.437 5 1.421 875 1.421 875 1.417 968 75 |a-b| 1 0.5 0.25 0.125 0.062 5 0.031 25 0.015 625 0.007 812 5 0.003 906 25

于是,开区间(1.414 062 5,1.417 968 75)中的实数都是当精确度为 0.005 时的原方程的 近似解.实际上,上述步骤也是求 2 的近似值的一个算法. 点评:算法一般是机械的,有时需要进行大量的重复计算,只要按部就班地去做,总能算出 结果,通常把算法过程称为“数学机械化”.数学机械化的最大优点是它可以借助计算机来完 成,实际上处理任何问题都需要算法.如:中国象棋有中国象棋的棋谱、走法、胜负的评判 准则;而国际象棋有国际象棋的棋谱、走法、胜负的评判准则;再比如申请出国有一系列的 先后手续,购买物品也有相关的手续?? 思路 2 例 1 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没 有人在的时候,如果狼的数量不少于羚羊的数量就会吃羚羊.该人如何将动物转移过河?请 设计算法. 分析: 任何动物同船不用考虑动物的争斗但需考虑承载的数量, 还应考虑到两岸的动物都得 保证狼的数量要小于羚羊的数量, 故在算法的构造过程中尽可能保证船里面有狼, 这样才能 使得两岸的羚羊数量占到优势. 解:具体算法如下: 算法步骤: 第一步:人带两只狼过河,并自己返回. 第二步:人带一只狼过河,自己返回. 第三步:人带两只羚羊过河,并带两只狼返回. 第四步:人带一只羊过河,自己返回. 第五步:人带两只狼过河. 点评: 算法是解决某一类问题的精确描述, 有些问题使用形式化、 程序化的刻画是最恰当的. 这就要求我们在写算法时应精练、简练、清晰地表达,要善于分析任何可能出现的情况,体 现思维的严密性和完整性.本题型解决问题的算法中某些步骤重复进行多次才能解决,在现 实生活中,很多较复杂的情境经常遇到这样的问题,设计算法的时候,如果能够合适地利用
5

某些步骤的重复,不但可以使得问题变得简单,而且可以提高工作效率. 例 2 喝一杯茶需要这样几个步骤:洗刷水壶、烧水、洗刷茶具、沏茶.问:如何安排这几 个步骤?并给出两种算法,再加以比较. 分析: 本例主要为加深对算法概念的理解, 可结合生活常识对问题进行分析, 然后解决问题. 解:算法一: 第一步,洗刷水壶. 第二步,烧水. 第三步,洗刷茶具. 第四步,沏茶. 算法二: 第一步,洗刷水壶. 第二步,烧水,烧水的过程当中洗刷茶具. 第三步,沏茶. 点评: 解决一个问题可有多个算法, 可以选择其中最优的、 最简单的、 步骤尽量少的算法. 上 面的两种算法都符合题意, 但是算法二运用了统筹方法的原理, 因此这个算法要比算法一更 科学. 例 3 写出通过尺轨作图确定线段 AB 一个 5 等分点的算法. 分析:我们借助于平行线定理,把位置的比例关系变成已知的比例关系,只要按照规则一步 一步去做就能完成任务. 解:算法分析: 第一步,从已知线段的左端点 A 出发,任意作一条与 AB 不平行的射线 AP. 第二步,在射线上任取一个不同于端点 A 的点 C,得到线段 AC. 第三步,在射线上沿 AC 的方向截取线段 CE=AC. 第四步,在射线上沿 AC 的方向截取线段 EF=AC. 第五步,在射线上沿 AC 的方向截取线段 FG=AC. 第六步,在射线上沿 AC 的方向截取线段 GD=AC,那么线段 AD=5AC. 第七步,连结 DB. 第八步,过 C 作 BD 的平行线,交线段 AB 于 M,这样点 M 就是线段 AB 的一个 5 等分点. 点评: 用算法解决几何问题能很好地训练学生的思维能力, 并能帮助我们得到解决几何问题 的一般方法,可谓一举多得,应多加训练. 知能训练 设计算法判断一元二次方程 ax2+bx+c=0 是否有实数根. 解:算法步骤如下: 第一步,输入一元二次方程的系数:a,b,c. 第二步,计算 Δ=b2-4ac 的值. 第三步,判断 Δ≥0 是否成立.若 Δ≥0 成立,输出“方程有实根”;否则输出“方程无实根”,结 束算法. 点评:用算法解决问题的特点是:具有很好的程序性,是一种通法.并且具有确定性、逻辑 性、有穷性.让我们结合例题仔细体会算法的特点. 拓展提升 中国网通规定:拨打市内电话时,如果不超过 3 分钟,则收取话费 0.22 元;如果通话 时间超过 3 分钟, 则超出部分按每分钟 0.1 元收取通话费, 不足一分钟按一分钟计算.设通话 时间为 t(分钟) ,通话费用 y(元) ,如何设计一个程序,计算通话的费用. 解:算法分析:

6

数学模型实际上为:y 关于 t 的分段函数. 关系式如下:

?0.22, (0 ? t ? 3), ? y= ?0.22 ? 0.1(t ? 3), (t ? 3, t ? Z ), ?0.22 ? 0.1([T ? 3] ? 1), (T ? 3, t ? Z ). ?
其中[t-3]表示取不大于 t-3 的整数部分. 算法步骤如下: 第一步,输入通话时间 t. 第二步,如果 t≤3,那么 y=0.22;否则判断 t∈Z 是否成立,若成立执行 y=0.2+0.1× (t-3);否则执行 y=0.2+0.1× ( [t-3]+1). 第三步,输出通话费用 c. 课堂小结 (1)正确理解算法这一概念. (2)结合例题掌握算法的特点,能够写出常见问题的算法. 作业 课本本节练习 1、2. 设计感想 本节的引入精彩独特,让学生在感兴趣的故事里进入本节的学习.算法是本章的重点也 是本章的基础,是一个较难理解的概念.为了让学生正确理解这一概念,本节设置了大量学 生熟悉的事例,让学生仔细体会反复训练.本节的事例有古老的经典算法,有几何算法等, 因此这是一节很好的课例.

7

1.1.2 程序框图与算法的基本逻辑结构 整体设计 教学分析 用自然语言表示的算法步骤有明确的顺序性,但是对于在一定条件下才会被执行的步 骤,以及在一定条件下会被重复执行的步骤,自然语言的表示就显得困难,而且不直观、不 准确.因此,本节有必要探究使算法表达得更加直观、准确的方法.程序框图用图形的方式表 达算法,使算法的结构更清楚、步骤更直观也更精确.为了更好地学好程序框图,我们需要 掌握程序框的功能和作用,需要熟练掌握三种基本逻辑结构. 三维目标 1.熟悉各种程序框及流程线的功能和作用. 2.通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程.在具体问题的解决 过程中,理解程序框图的三种基本逻辑结构:顺序结构、条件结构、循环结构. 3.通过比较体会程序框图的直观性、准确性. 重点难点 数学重点:程序框图的画法. 数学难点:程序框图的画法. 课时安排 4 课时 教学过程 第 1 课时 程序框图及顺序结构 导入新课 思路 1(情境导入) 我们都喜欢外出旅游,优美的风景美不胜收,如果迷了路就不好玩了,问路有时还听不 明白,真是急死人,有的同学说买张旅游图不就好了吗,所以外出旅游先要准备好旅游图. 旅游图看起来直观、准确,本节将探究使算法表达得更加直观、准确的方法.今天我们开始 学习程序框图. 思路 2(直接导入) 用自然语言表示的算法步骤有明确的顺序性,但是对于在一定条件下才会被执行的步 骤,以及在一定条件下会被重复执行的步骤,自然语言的表示就显得困难,而且不直观、不 准确.因此,本节有必要探究使算法表达得更加直观、准确的方法.今天开始学习程序框图. 推进新课 新知探究 提出问题 (1)什么是程序框图? (2)说出终端框(起止框)的图形符号与功能. (3)说出输入、输出框的图形符号与功能. (4)说出处理框(执行框)的图形符号与功能. (5)说出判断框的图形符号与功能. (6)说出流程线的图形符号与功能. (7)说出连接点的图形符号与功能. (8)总结几个基本的程序框、流程线和它们表示的功能. (9)什么是顺序结构? 讨论结果: (1)程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.
8

在程序框图中, 一个或几个程序框的组合表示算法中的一个步骤; 带有方向箭头的流程线将 程序框连接起来,表示算法步骤的执行顺序. (2)椭圆形框: 表示程序的开始和结束,称为终端框(起止框) .表示开始时只有一个 出口;表示结束时只有一个入口. (3)平行四边形框: 表示一个算法输入和输出的信息,又称为输入、输出框,它有一个 入口和一个出口. (4)矩形框: 表示计算、赋值等处理操作,又称为处理框(执行框) ,它有一个入口和 一个出口. (5)菱形框: 是用来判断给出的条件是否成立,根据判断结果来决定程序的流向,称 为判断框,它有一个入口和两个出口. (6)流程线: 表示程序的流向. (7)圆圈: 连接点.表示相关两框的连接处,圆圈内的数字相同的含义表示相连接在一 起. (8)总结如下表. 图形符号 名称 终端框(起止框) 输入、输出框 处理框(执行框) 判断框 功能 表示一个算法的起始和结束 表示一个算法输入和输出的信息 赋值、计算 判断某一条件是否成立, 成立时在出口处标明 “是”或“Y”;不成立时标明“否”或“N” 连接程序框

流程线

连接点

连接程序框图的两部分

(9)很明显,顺序结构是由若干个依次执行的步骤组成的,这是任何一个算法都离不开的基 本结构. 三种逻辑结构可以用如下程序框图表示:

顺序结构 条件结构 循环结构 应用示例 例 1 请用程序框图表示前面讲过的“判断整数 n(n>2)是否为质数”的算法. 解:程序框图如下:

9

点评:程序框图是用图形的方式表达算法,使算法的结构更清楚,步骤更直观也更精确.这 里只是让同学们初步了解程序框图的特点,感受它的优点,暂不要求掌握它的画法. 变式训练 观察下面的程序框图,指出该算法解决的问题.

解: 这是一个累加求和问题, 共 99 项相加, 该算法是求

1 1 1 1 ? ? ??? 1? 2 2 ? 3 3 ? 4 99 ? 100

的值. 例 2 已知一个三角形三条边的边长分别为 a,b,c,利用海伦—秦九韶公式设计一个计算 三角形面积的算法,并画出程序框图表示.(已知三角形三边边长分别为 a,b,c,则三角形的 面积为 S= ,其中 p= p( p ? a)( p ? b)( p ? c) )

a?b?c .这个公式被称为海伦—秦九韶公 2

式) 算法分析:这是一个简单的问题,只需先算出 p 的值,再将它代入分式,最后输出结果.因 此只用顺序结构应能表达出算法. 算法步骤如下: 第一步,输入三角形三条边的边长 a,b,c. 第二步,计算 p= 第三步,计算 S= 第四步,输出 S.
10

a?b?c . 2

p( p ? a)( p ? b)( p ? c) .

程序框图如下:

点评:很明显,顺序结构是由若干个依次执行的步骤组成的,它是最简单的逻辑结构,它是 任何一个算法都离不开的基本结构. 变式训练 下图所示的是一个算法的流程图,已知 a1=3,输出的 b=7,求 a2 的值.

解:根据题意

a1 ? a 2 =7, 2

∵a1=3,∴a2=11.即 a2 的值为 11. 例 3 写出通过尺轨作图确定线段 AB 的一个 5 等分点的程序框图. 解:利用我们学过的顺序结构得程序框图如下:

点评:这个算法步骤具有一般性,对于任意自然数 n,都可以按照这个算法的思想,设计出
11

确定线段的 n 等分点的步骤,解决问题,通过本题学习可以巩固顺序结构的应用. 知能训练 有关专家建议,在未来几年内,中国的通货膨胀率保持在 3 %左右,这将对我国经济 的稳定有利无害.所谓通货膨胀率为 3%,指的是每年消费品的价格增长率为 3% .在这种情 况下,某种品牌的钢琴 2004 年的价格是 10 000 元,请用流程图描述这种钢琴今后四年的价 格变化情况,并输出四年后的价格. 解:用 P 表示钢琴的价格,不难看出如下算法步骤: 2005 年 P=10 000× (1+3%)=10 300; 2006 年 P=10 300× (1+3%)=10 609; 2007 年 P=10 609× (1+3%)=10 927.27; 2008 年 P=10 927.27× (1+3%)=11 255.09; 因此,价格的变化情况表为: 年份 钢琴的价格 程序框图如下: 2004 10 000 2005 10 300 2006 10 609 2007 10 927.27 2008 11 255.09

点评:顺序结构只需严格按照传统的解决数学问题的解题思路,将问题解决掉.最后将解题 步骤 “细化”就可以.“细化”指的是写出算法步骤、画出程序框图. 拓展提升 如下给出的是计算 件是______________.

1 1 1 1 ? ? ??? 的值的一个流程图,其中判断框内应填入的条 2 4 6 20

12

答案:i>10. 课堂小结 (1)掌握程序框的画法和功能. (2)了解什么是程序框图,知道学习程序框图的意义. (3)掌握顺序结构的应用,并能解决与顺序结构有关的程序框图的画法. 作业 习题 1.1A 1. 设计感想 首先,本节的引入新颖独特,旅游图的故事阐明了学习程序框图的意义.通过丰富有趣 的事例让学生了解了什么是程序框图,进而激发学生学习程序框图的兴趣.本节设计题目难 度适中,逐步把学生带入知识的殿堂,是一节好的课例. 第 2 课时 条件结构 导入新课 思路 1(情境导入) 我们以前听过这样一个故事,野兽与鸟发生了一场战争,蝙蝠来了,野兽们喊道:你有 牙齿是我们一伙的,鸟们喊道:你有翅膀是我们一伙的,蝙蝠一时没了主意.过了一会儿蝙 蝠有了一个好办法,如果野兽赢了,就加入野兽这一伙,否则加入另一伙,事实上蝙蝠用了 分类讨论思想, 在算法和程序框图中也经常用到这一思想方法, 今天我们开始学习新的逻辑 结构——条件结构. 思路 2(直接导入) 前面我们学习了顺序结构,顺序结构像是一条没有分支的河流,奔流到海不复回,事实 上多数河流是有分支的,今天我们开始学习有分支的逻辑结构——条件结构. 推进新课 新知探究 提出问题 (1)举例说明什么是分类讨论思想? (2)什么是条件结构? (3)试用程序框图表示条件结构. (4)指出条件结构的两种形式的区别. 讨论结果: (1)例如解不等式 ax>8(a≠0),不等式两边需要同除 a,需要明确知道 a 的符号,但条件没有 给出,因此需要进行分类讨论,这就是分类讨论思想.
13

(2)在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的 流向.条件结构就是处理这种过程的结构. (3)用程序框图表示条件结构如下. 条件结构:先根据条件作出判断,再决定执行哪一种操作的结构就称为条件结构(或分支结 构) ,如图 1 所示.执行过程如下:条件成立,则执行 A 框;不成立,则执行 B 框.

图1 图2 注:无论条件是否成立,只能执行 A、B 之一,不可能两个框都执行.A、B 两个框中,可 以有一个是空的,即不执行任何操作,如图 2. (4)一种是在两个“分支”中均包含算法的步骤,符合条件就执行“步骤 A”,否则执行“步骤 B”;另一种是在一个“分支”中均包含算法的步骤 A,而在另一个“分支”上不包含算法的任何 步骤,符合条件就执行“步骤 A”,否则执行这个条件结构后的步骤. 应用示例 例 1 任意给定 3 个正实数,设计一个算法,判断以这 3 个正实数为三边边长的三角形 是否存在,并画出这个算法的程序框图. 算法分析:判断以 3 个任意给定的正实数为三条边边长的三角形是否存在,只需验证这 3 个数中任意两个数的和是否大于第 3 个数.这个验证需要用到条件结构. 算法步骤如下: 第一步,输入 3 个正实数 a,b,c. 第二步,判断 a+b>c,b+c>a,c+a>b 是否同时成立.若是,则存在这样的三角形;否则,不 存在这样的三角形. 程序框图如右图:

点评:根据构成三角形的条件,判断是否满足任意两边之和大于第三边,如果满足则存在这 样的三角形,如果不满足则不存在这样的三角形.这种分类讨论思想是高中的重点,在画程 序框图时,常常遇到需要讨论的问题,这时要用到条件结构. 例 2 设计一个求解一元二次方程 ax2+bx+c=0 的算法,并画出程序框图表示.
14

算法分析:我们知道,若判别式 Δ=b2-4ac>0,则原方程有两个不相等的实数根 x1=

?b? ? ?b? ? ,x2= ; 2a 2a
b ; 2a

若 Δ=0,则原方程有两个相等的实数根 x1=x2= ?

若 Δ<0,则原方程没有实数根.也就是说,在求解方程之前,可以先判断判别式的符号,根 据判断的结果执行不同的步骤,这个过程可以用条件结构实现. 又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算 x1 和 x2 之前,先计算 p= ?

b ? ,q= . 2a 2a

解决这一问题的算法步骤如下: 第一步,输入 3 个系数 a,b,c. 第二步,计算 Δ=b2-4ac. 第三步, 判断 Δ≥0 是否成立.若是, 则计算 p= ?

b ? , q= ; 否则, 输出“方程没有实数根”, 2a 2a

结束算法. 第四步,判断 Δ=0 是否成立.若是,则输出 x1=x2=p;否则,计算 x1=p+q,x2=p-q,并输出 x1,x2. 程序框图如下:

例 3 设计算法判断一元二次方程 ax2+bx+c=0 是否有实数根,并画出相应的程序框图. 解:算法步骤如下: 第一步,输入 3 个系数:a,b,c. 第二步,计算 Δ=b2-4ac. 第三步,判断 Δ≥0 是否成立.若是,则输出“方程有实根”;否则,输出“方程无实根”.结束算 法.
15

相应的程序框图如右:

点评: 根据一元二次方程的意义, 需要计算判别式 Δ=b2-4ac 的值.再分成两种情况处理: (1) 当 Δ≥0 时,一元二次方程有实数根; (2)当 Δ<0 时,一元二次方程无实数根.该问题实际上是一个分类讨论问题,根据一元二 次方程系数的不同情况,最后结果就不同.因而当给出一个一元二次方程时,必须先确定判 别式的值,然后再用判别式的值的取值情况确定方程是否有解.该例仅用顺序结构是办不到 的,要对判别式的值进行判断,需要用到条件结构. 例 4 (1)设计算法,求 ax+b=0 的解,并画出流程图. 解:对于方程 ax+b=0 来讲,应该分情况讨论方程的解. 我们要对一次项系数 a 和常数项 b 的取值情况进行分类,分类如下: (1)当 a≠0 时,方程有唯一的实数解是 ?

b ; a

(2)当 a=0,b=0 时,全体实数都是方程的解; (3)当 a=0,b≠0 时,方程无解. 联想数学中的分类讨论的处理方式,可得如下算法步骤: 第一步,判断 a≠0 是否成立.若成立,输出结果“解为 ?

b ”. a

第二步,判断 a=0,b=0 是否同时成立.若成立,输出结果“解集为 R”. 第三步,判断 a=0,b≠0 是否同时成立.若成立,输出结果“方程无解”,结束算法. 程序框图如下:

点评:这是条件结构叠加问题,条件结构叠加,程序执行时需依次对“条件 1”“条件 2”“条件 3”……都进行判断,只有遇到能满足的条件才执行该条件对应的操作. 知能训练

16

设计算法,找出输入的三个不相等实数 a、b、c 中的最大值,并画出流程图. 解:算法步骤: 第一步,输入 a,b,c 的值. 第二步,判断 a>b 是否成立,若成立,则执行第三步;否则执行第四步. 第三步,判断 a>c 是否成立,若成立,则输出 a,并结束;否则输出 c,并结束. 第四步,判断 b>c 是否成立,若成立,则输出 b,并结束;否则输出 c,并结束. 程序框图如下:

点评:条件结构嵌套与条件结构叠加的区别: (1)条件结构叠加,程序执行时需依次对“条件 1”“条件 2”“条件 3”……都进行判断,只有 遇到能满足的条件才执行该条件对应的操作. (2) 条件结构的嵌套中, “条件 2”是“条件 1”的一个分支, “条件 3”是“条件 2”的一个分支…… 依此类推,这些条件中很多在算法执行过程中根据所处的分支位置不同可能不被执行. (3) 条件结构嵌套所涉及的“条件 2”“条件 3”……是在前面的所有条件依次一个一个的满足 “分支条件成立”的情况下才能执行的此操作,是多个条件同时成立的叠加和复合. 例 5 “特快专递”是目前人们经常使用的异地邮寄信函或托运物品的一种快捷方式 .某快递 公司规定甲、乙两地之间物品的托运费用根据下列方法计算: f= ?

?0.53?, (? ? 50), ?50 ? 0.53 ? (? ? 50) ? 0.85, (? ? 50).

其中 f(单位:元)为托运费,ω 为托运物品的重量(单位:千克). 试画出计算费用 f 的程序框图.

分析:这是一个实际问题,根据数学模型可知,求费用 f 的计算公式随物品重量 ω 的变化而
17

有所不同,因此计算时先看物品的重量,在不同的条件下,执行不同的指令,这是条件结构 的运用,是二分支条件结构.其中,物品的重量通过输入的方式给出. 解:算法程序框图如右图: 拓展提升 有一城市,市区为半径为 15 km 的圆形区域,近郊区为距中心 15—25 km 的范围内的 环形地带,距中心 25 km 以外的为远郊区,如右图所示.市区地价每公顷 100 万元,近郊区 地价每公顷 60 万元,远郊区地价为每公顷 20 万元,输入某一点的坐标为(x,y),求该点的地 价.

2 2 分析:由该点坐标(x,y),求其与市中心的距离 r= x ? y ,确定是市区、近郊区,还是

?100,0 ? r ? 15, ? 远郊区,进而确定地价 p.由题意知,p= ?60,15 ? r ? 25, ?20, r ? 25. ?
解:程序框图如下:

课堂小结 (1)理解两种条件结构的特点和区别. (2)能用学过的两种条件结构解决常见的算法问题. 作业 习题 1.1A 组 3. 设计感想 本节采用引人入胜的方法引入正课,选用的例题难度适中,有的经典实用,有的新颖独 特,每个例题都是很好的素材.条件结构是逻辑结构的核心,是培养学生逻辑推理的好素材,
18

本节设计符合新课标精神,难度设计略高于教材. 第 3 课时 循环结构 导入新课 思路 1(情境导入) 我们都想生活在一个优美的环境中, 希望看到的是碧水蓝天, 大家知道工厂的污水是怎 样处理的吗?污水进入处理装置后进行第一次处理, 如果达不到排放标准, 则需要再进入处 理装置进行处理,直到达到排放标准.污水处理装置是一个循环系统,对于处理需要反复操 作的事情有很大的优势.我们数学中有很多问题需要反复操作,今天我们学习能够反复操作 的逻辑结构——循环结构. 思路 2(直接导入) 前面我们学习了顺序结构,顺序结构像一条没有分支的河流,奔流到海不复回;上一节 我们学习了条件结构, 条件结构像有分支的河流最后归入大海; 事实上很多水系是循环往复 的,今天我们开始学习循环往复的逻辑结构——循环结构. 推进新课 新知探究 提出问题 (1)请大家举出一些常见的需要反复计算的例子. (2)什么是循环结构、循环体? (3)试用程序框图表示循环结构. (4)指出两种循环结构的相同点和不同点. 讨论结果: (1)例如用二分法求方程的近似解、数列求和等. (2)在一些算法中,经常会出现从某处开始,按照一定的条件反复执行某些步骤的情况, 这就是循环结构.反复执行的步骤称为循环体. (3)在一些算法中要求重复执行同一操作的结构称为循环结构.即从算法某处开始,按照一 定条件重复执行某一处理的过程.重复执行的处理步骤称为循环体. 循环结构有两种形式:当型循环结构和直到型循环结构. 1°当型循环结构,如图(1)所示,它的功能是当给定的条件 P 成立时,执行 A 框,A 框执行完毕后,返回来再判断条件 P 是否成立,如果仍然成立,返回来再执行 A 框,如此 反复执行 A 框,直到某一次返回来判断条件 P 不成立时为止,此时不再执行 A 框,离开循 环结构.继续执行下面的框图. 2°直到型循环结构,如图(2)所示,它的功能是先执行重复执行的 A 框,然后判断 给定的条件 P 是否成立,如果 P 仍然不成立,则返回来继续执行 A 框,再判断条件 P 是否 成立.继续重复操作, 直到某一次给定的判断条件 P 时成立为止, 此时不再返回来执行 A 框, 离开循环结构.继续执行下面的框图. 见示意图:

当型循环结构 直到型循环结构 (4)两种循环结构的不同点:直到型循环结构是程序先进入循环体,然后对条件进行判断, 如果条件不满足,就继续执行循环体,直到条件满足时终止循环.
19

当型循环结构是在每次执行循环体前, 先对条件进行判断, 当条件满足时, 执行循环体, 否则终止循环. 两种循环结构的相同点: 两种不同形式的循环结构可以看出, 循环结构中一定包含条件 结构,用于确定何时终止执行循环体. 应用示例 思路 1 例 1 设计一个计算 1+2+??+100 的值的算法,并画出程序框图. 算法分析:通常,我们按照下列过程计算 1+2+??+100 的值. 第 1 步,0+1=1. 第 2 步,1+2=3. 第 3 步,3+3=6. 第 4 步,6+4=10. ?? 第 100 步,4 950+100=5 050. 显然,这个过程中包含重复操作的步骤,可以用循环结构表示.分析上述计算过程,可 以发现每一步都可以表示为第(i-1)步的结果+i=第 i 步的结果. 为了方便、有效地表示上述过程,我们用一个累加变量 S 来表示第一步的计算结果, 即把 S+i 的结果仍记为 S,从而把第 i 步表示为 S=S+i, 其中 S 的初始值为 0,i 依次取 1,2,…,100,由于 i 同时记录了循环的次数,所以也 称为计数变量. 解决这一问题的算法是: 第一步,令 i=1,S=0. 第二步,若 i≤100 成立,则执行第三步;否则,输出 S,结束算法. 第三步,S=S+i. 第四步,i=i+1,返回第二步. 程序框图如右:

上述程序框图用的是当型循环结构,如果用直到型循环结构表示,则程序框图如下:

20

点评:这是一个典型的用循环结构解决求和的问题,有典型的代表意义,可把它作为一个范 例,仔细体会三种逻辑结构在程序框图中的作用,学会画程序框图. 变式训练 已知有一列数

1 2 3 n , , ,?, ,设计框图实现求该列数前 20 项的和. 2 3 4 n ?1
i ,可 i ?1

分析:该列数中每一项的分母是分子数加 1,单独观察分子,恰好是 1,2,3,4,…,n, 因此可用循环结构实现,设计数器 i,用 i=i+1 实现分子,设累加器 S,用 S= S ? 实现累加,注意 i 只能加到 20. 解:程序框图如下: 方法一: 方法二:

点评:在数学计算中,i=i+1 不成立,S=S+i 只有在 i=0 时才能成立.在计算机程序中,它 们被赋予了其他的功能, 不再是数学中的“相等”关系, 而是赋值关系. 变量 i 用来作计数器, i=i+1 的含义是:将变量 i 的值加 1,然后把计算结果再存贮到变量 i 中,即计数器 i 在原值 的基础上又增加了 1. 变量 S 作为累加器,来计算所求数据之和.如累加器的初值为 0,当第一个数据送到变
21

量 i 中时,累加的动作为 S=S+i,即把 S 的值与变量 i 的值相加,结果再送到累加器 S 中, 如此循环,则可实现数的累加求和. 例 2 某厂 2005 年的年生产总值为 200 万元,技术革新后预计以后每年的年生产总值都比 上一年增长 5%,设计一个程序框图,输出预计年生产总值超过 300 万元的最早年份. 算法分析:先写出解决本例的算法步骤: 第一步,输入 2005 年的年生产总值. 第二步,计算下一年的年生产总值. 第三步,判断所得的结果是否大于 300,若是,则输出该年的年份,算法结束;否则,返回 第二步. 由于 “ 第二步 ” 是重复操作的步骤,所以本例可以用循环结构来实现 . 我们按照 “ 确定循环 体”“初始化变量”“设定循环控制条件”的顺序来构造循环结构. (1)确定循环体:设 a 为某年的年生产总值,t 为年生产总值的年增长量,n 为年份,则循 环体为 t=0.05a,a=a+t,n=n+1. (2)初始化变量:若将 2005 年的年生产总值看成计算的起始点,则 n 的初始值为 2005,a 的初始值为 200. (3) 设定循环控制条件: 当“年生产总值超过 300 万元”时终止循环, 所以可通过判断“a>300” 是否成立来控制循环. 程序框图如下:

思路 2 例 1 设计框图实现 1+3+5+7+…+131 的算法. 分析:由于需加的数较多,所以要引入循环结构来实现累加.观察所加的数是一组有规律的 数(每相临两数相差 2) ,那么可考虑在循环过程中,设一个变量 i,用 i=i+2 来实现这些有 规律的数,设一个累加器 sum,用来实现数的累加,在执行时,每循环一次,就产生一个需 加的数,然后加到累加器 sum 中. 解:算法如下: 第一步,赋初值 i=1,sum=0. 第二步,sum=sum+i,i=i+2. 第三步,如果 i≤131,则反复执第二步;否则,执行下一步. 第四步,输出 sum. 第五步,结束. 程序框图如右图.

22

点评: (1)设计流程图要分步进行,把一个大的流程图分割成几个小的部分,按照三个基本 结构即顺序、条件、循环结构来局部安排,然后把流程图进行整合. (2)框图画完后,要进行验证,按设计的流程分析是否能实现所求的数的累加,分析条件 是否加到 131 就结束循环, 所以我们要注意初始值的设置、 循环条件的确定以及循环体内语 句的先后顺序,三者要有机地结合起来.最关键的是循环条件,它决定循环次数,可以想一 想,为什么条件不是“i<131”或“i=131”,如果是“i<131”,那么会少执行一次循环,131 就加 不上了. 例 2 高中某班一共有 40 名学生,设计算法流程图,统计班级数学成绩良好(分数>80)和优 秀(分数>90)的人数. 分析:用循环结构实现 40 个成绩的输入,每循环一次就输入一个成绩 s,然后对 s 的值进行 判断.设两个计数器 m,n,如果 s>90,则 m=m+1,如果 80<s≤90,则 n=n+1.设计数器 i,用 来控制 40 个成绩的输入,注意循环条件的确定. 解:程序框图如下图:

23

知能训练 由相应的程序框图如右图, 补充完整一个计算 1+2+3+…+100 的值的算法 (用循环结构) .

第一步,设 i 的值为_____________. 第二步,设 sum 的值为_____________. 第三步,如果 i≤100 执行第_____________步,否则,转去执行第_____________步. 第四步,计算 sum+i 并将结果代替_____________. 第五步,计算_____________并将结果代替 i. 第六步,转去执行第三步. 第七步,输出 sum 的值并结束算法. 分析:流程图各图框的内容(语言和符号)要与算法步骤相对应,在流程图中算法执行的顺 序应按箭头方向进行. 解:第一步,设 i 的值为 1. 第二步,设 sum 的值为 0. 第三步,如果 i≤100,执行第四步,否则,转去执行第七步. 第四步,计算 sum+i 并将结果代替 sum. 第五步,计算 i+1 并将结果代替 i. 第六步,转去执行第三步. 第七步,输出 sum 的值并结束算法. 拓展提升 设计一个算法,求 1+2+4+…+249 的值,并画出程序框图. 解:算法步骤: 第一步,sum=0. 第二步,i=0. 第三步,sum=sum+2i. 第四步,i=i+1. 第五步,判断 i 是否大于 49,若成立,则输出 sum,结束.否则,返回第三步重新执行. 程序框图如右图:

24

点评: (1)如果算法问题里涉及的运算进行了许多次重复的操作,且先后参与运算的数之间 有相同的规律,就可引入变量循环参与运算(我们称之为循环变量) ,应用于循环结构.在循 环结构中,要注意根据条件设计合理的计数变量、累加和累乘变量及其个数等,特别要求条 件的表述要恰当、精确. (2)累加变量的初始值一般取 0,而累乘变量的初始值一般取 1. 课堂小结 (1)熟练掌握两种循环结构的特点及功能. (2)能用两种循环结构画出求和等实际问题的程序框图,进一步理解学习算法的意义. 作业 习题 1.1A 组 2. 设计感想 本节的引入抓住了本节的特点, 利用计算机进行循环往复运算, 解决累加、 累乘等问题. 循环结构是逻辑结构中的难点,它一定包含一个条件结构,它能解决很多有趣的问题.本节 选用了大量精彩的例题,对我们系统掌握程序框图有很大的帮助. 第 4 课时 程序框图的画法 导入新课 思路 1(情境导入) 一条河流有时像顺序结构,奔流到海不复回;有时像条件结构分分合合向前进;有时像 循环结构,虽有反复但最后流入大海.一个程序框图就像一条河流包含三种逻辑结构,今天 我们系统学习程序框图的画法. 思路 2(直接导入) 前面我们学习了顺序结构、条件结构、循环结构,今天我们系统学习程序框图的画法. 推进新课 新知探究 提出问题 (1)请大家回忆顺序结构,并用程序框图表示. (2)请大家回忆条件结构,并用程序框图表示. (3)请大家回忆循环结构,并用程序框图表示. (4)总结画程序框图的基本步骤. 讨论结果: (1)顺序结构是由若干个依次执行的步骤组成的 ,这是任何一个算法都离不开的基本结构 .框 图略.
25

(2)在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流 向.条件结构就是处理这种过程的结构.框图略. (3)在一些算法中要求重复执行同一操作的结构称为循环结构.即从算法某处开始,按照一定 条件重复执行某一处理过程.重复执行的处理步骤称为循环体. 循环结构有两种形式:当型循环结构和直到型循环结构.框图略. (4)从前面的学习可以看出,设计一个算法的程序框图通常要经过以下步骤: 第一步,用自然语言表达算法步骤. 第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框表示,得到该步骤 的程序框图. 第三步,将所有步骤的程序框图用流程线连接起来,并加上终端框,得到表示整个算法 的程序框图. 应用示例 例 1 结合前面学过的算法步骤,利用三种基本逻辑结构画出程序框图,表示用“二分法”求 方程 x2-2=0(x>0)的近似解的算法. 算法分析: (1) 算法步骤中的“第一步”“第二步”和“第三步”可以用顺序结构来表示 (如下图) :

(2)算法步骤中的“第四步”可以用条件结构来表示(如下图).在这个条件结构中,“否”分 支用“a=m”表示含零点的区间为[m,b],并把这个区间仍记成[a,b] ;“是”分支用“b=m ” 表示含零点的区间为[a,m] ,同样把这个区间仍记成[a,b].

(3)算法步骤中的“第五步”包含一个条件结构,这个条件结构与“第三步”“第四步”构成一 个循环结构,循环体由“第三步”和“第四步”组成,终止循环的条件是“|a-b|<d 或 f(m)=0”.在 “第五步”中,还包含由循环结构与“输出 m”组成的顺序结构(如下图).

26

(4)将各步骤的程序框图连接起来,并画出“开始”与“结束”两个终端框,就得到了表示整 个算法的程序框图(如下图).

点评:在用自然语言表述一个算法后,可以画出程序框图,用顺序结构、条件结构和循环结 构来表示这个算法,这样表示的算法清楚、简练,便于阅读和交流. 例 2 相传古代的印度国王要奖赏国际象棋的发明者,问他需要什么.发明者说:陛下,在国 际象棋的第一个格子里面放 1 粒麦子, 在第二个格子里面放 2 粒麦子, 第三个格子放 4 粒麦 子,以后每个格子中的麦粒数都是它前一个格子中麦粒数的二倍,依此类推(国际象棋棋盘 共有 64 个格子),请将这些麦子赏给我,我将感激不尽.国王想这还不容易,就让人扛了一袋 小麦,但不到一会儿就没了,最后一算结果,全印度一年生产的粮食也不够.国王很奇怪, 小小的“棋盘”,不足 100 个格子,如此计算怎么能放这么多麦子?试用程序框图表示此算法 过程. 解:将实际问题转化为数学模型,该问题就是要求 1+2+4+……+263 的和. 程序框图如下:

27

点评:对于开放式探究问题,我们可以建立数学模型(上面的题目可以与等比数列的定义、 性质和公式联系起来) 和过程模型来分析算法, 通过设计算法以及语言的描述选择一些成熟 的办法进行处理. 例 3 乘坐火车时,可以托运货物.从甲地到乙地,规定每张火车客票托运费计算方法是: 行李质量不超过 50 kg 时按 0. 25 元/kg; 超过 50 kg 而不超过 100 kg 时, 其超过部分按 0. 35 元/kg;超过 100 kg 时,其超过部分按 0.45 元/kg.编写程序,输入行李质量,计算出托运 的费用. 分析:本题主要考查条件语句及其应用.先解决数学问题,列出托运的费用关于行李质量的 函数关系式.设行李质量为 x kg,应付运费为 y 元,则运费公式为:

?0.25x,0 ? x ? 50, ? y= ?0.25 ? 50 ? 0.35( x ? 50),50 ? x ? 100, ?0.25 ? 50 ? 0.35 ? 50 ? 0.45( x ? 100), x ? 100, ? ?0.25x,0 ? x ? 50, ? 整理得 y= ?0.35x ? 5,50 ? x ? 100, ?0.45x ? 15, x ? 100. ?
要计算托运的费用必须对行李质量分类讨论,因此要用条件语句来实现. 解:算法分析: 第一步,输入行李质量 x. 第二步,当 x≤50 时,计算 y=0.25x,否则,执行下一步. 第三步,当 x≤100,计算 y=0.35x-5,否则,计算 y=0.45x-15. 第四步,输出 y. 程序框图如下:

28

知能训练 设计一个用有理数数幂逼近无理指数幂 5 解:算法步骤: 第一步,给定精确度 d,令 i=1. 第二步,取出 2 的到小数点后第 i 位的不足近似值,记为 a;取出 2 的到小数点后第 i 位的过剩近似值,记为 b. 第三步,计算 m=5b-5a. 第四步,若 m<d,则得到 5 第五步,得到 5 程序框图如下:
2 2 2

的算法,画出算法的程序框图.

的近似值为 5a;否则,将 i 的值增加 1,返回第二步.

的近似值为 5a.

拓展提升

29

求4?

1 4? 1

,画出程序框图.

1 4 ??? 4 ??? ? ??? ? ?
( 共10 个 4 )

分析:如果采用逐步计算的方法,利用顺序结构来实现,则非常麻烦,由于前后的运算需重 复多次相同的运算,所以应采用循环结构,可用循环结构来实现其中的规律.观察原式中的 变化的部分及不变项,找出总体的规律是 4+ 解:程序框图如下:

1 ,要实现这个规律,需设初值 x=4. x

课堂小节 (1)进一步熟悉三种逻辑结构的应用,理解算法与程序框图的关系. (2)根据算法步骤画出程序框图. 作业 习题 1.1B 组 1、2. 设计感想 本节是前面内容的概括和总结,在回忆前面内容的基础上,选择经典的例题,进行了详 尽的剖析,这样降低了学生学习的难度.另外,本节的练习难度适中,并且多为学生感兴趣 的问题,这样为学生学好本节内容作好充分准备,希望大家喜欢这一节课.

30

1.2 基本算法语句 1.2.1 输入语句、输出语句和赋值语句 整体设计 教学分析 通过上一节的学习, 学生了解了算法的含义, 学习了用算法步骤和程序框图表示算法的 方法,本节介绍用程序设计语言表示算法的方法. 算法步骤和程序框图表示的算法,计算机 是不能理解的,程序是算法的精确形式,是计算机可以理解的算法.本节的教学重点是通过 实例使学生理解三种基本算法语句的结构和用法,并在此基础上编写由算法语句组成的程 序,从而更细致地刻画算法,进一步体会算法的基本思想. 三维目标 1.理解学习基本算法语句的意义. 2.学会输入语句、输出语句和赋值语句的基本用法. 3.理解算法步骤、程序框图和算法语句的关系,学会算法语句的写法. 重点难点 教学重点:输入语句、输出语句和赋值语句的基本用法. 教学难点:算法语句的写法. 课时安排 1 课时 教学过程 导入新课 思路 1(情境导入) 中国足球队在亚洲杯上的失利说明,中国足球仍然需要请外国教练.高水平的外国教练 有先进的足球理念,有系统科学的训练计划,有先进的足球技术,但由于语言不通不能直接 传授给队员. 算法步骤、程序框图虽然容易掌握,但计算机不能理解,因此我们需要学习算 法语句. 思路 2(直接导入) 前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,我们开 始学习算法语句. 推进新课 新知探究 提出问题 (1)指出输入语句的格式、功能、要求. (2)指出输出语句的格式、功能、要求. (3)指出赋值语句的格式、功能、要求. (4)利用框图总结三种语句的功能、格式、特点. (5)指出三种语句与框图的对应关系. 讨论结果: (1)输入语句的格式:INPUT“提示内容”; 变量 例如:INPUT “x=”;x 功能:实现算法的输入变量信息(数值或字符)的功能. 要求: 1°输入语句要求输入的值是具体的常量. 2°提示内容提示用户输入的是什么信息,必须加双引号,提示内容 “原原本本”的在计算机 屏幕上显示,提示内容与变量之间要用分号隔开.
31

3°一个输入语句可以给多个变量赋值,中间用“,”分隔. 形式如:INPUT“a=,b=,c=,”;a,b,c (2)输出语句的一般格式:PRINT“提示内容”;表达式 例如:PRINT“S=”;S 功能:实现算法输出信息(表达式)的功能. 要求: 1°表达式是指算法和程序要求输出的信息. 2°提示内容提示用户要输出的是什么信息,提示内容必须加双引号,提示内容要用分号和 表达式分开. 3°如同输入语句一样,输出语句可以一次完成输出多个表达式的功能,不同的表达式之间 可用“,”分隔. 形式如:PRINT “a,b,c:”;a,b,c (3)赋值语句的一般格式:变量=表达式. 赋值语句中的“=”称作赋值号. 功能:将表达式所代表的值赋给变量. 要求: 1°赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个常量、变量或含 变量的运算式.如:2=x 是错误的. 2°赋值号的左右两边不能对换 .赋值语句是将赋值号右边的表达式的值赋给赋值号左边的 变量.如“A=B”“B=A”的含义运行结果是不同的,如 x=5 是对的,5=x 是错的,A+B=C 是错 的,C=A+B 是对的. 3°不能利用赋值语句进行代数式的演算(如化简、因式分解、解方程等) ,如 y=x2-1=(x -1)(x+1),这是实现不了的.在赋值号右边表达式中每一个变量的值必须事先赋给确定的值. 在一个赋值语句中只能给一个变量赋值,不能出现两个或以上的“=”.但对于同一个变量可以 多次赋值. (4)三种语句的功能、格式、特点如下: 在 QBASIC 语言中,输入语句 是 INPUT 语句,输出语句是 PRINT 语句,赋值语句是 LET 语句(“LET”可以省略).下表列出了这三种语句的一般格式、主要功能和相关说明, 供教师教学时参考,不要求学生掌握. INPUT 语句 格式 功能 INPUT“提示内容”;变量 可对程序中的变量赋值 ①又称“键盘输入语句”,在程序 运行过程中,停机等候用户由键 盘输入数据,而不需要在写程序 时指定 ②“提示内容” 和它后面的“ ;” 可 以省略 ③ 一个语 句可以 给多个变 量赋 值,中间用“,”分隔 ④无计算功能 ⑤用户由键盘输入的数据必须是 PRINT 语句 PRINT“提示内容”; 表达式 可输出表达式的 值,计算 ①又称“打印语 句”,将表达式的值 在屏幕上显示出来 ②表达式可以是变 量、计算公式或系 统信息 ③一个语句可以输 出多个表达式.不同 的表达式之间可用 “,”分隔
32

赋值语句 LET 变量=表达式 可对程序中的变量赋值,计 算 ①在程序运行过程中给变 量赋值 ②“LET”可以省略, “=”的右 侧必须是表达式,左侧必须 是变量 ③一个语句只能给一个变 量赋值 ④有计算功能 ⑤将一个变量的值赋给另 一个变量,前一个变量的值

说明

常量,输入多个数据时用“,”分 隔,且个数要与变量的个数相同

④有计算功能,能 直接输出计算公式 的值

保持不变;可先后给一个变 量赋多个不同的值,但变量 的取值总是最后被赋予的 值

(5)指出三种语句与框图的对应关系如下图.

应用示例 思路 1 例 1 用描点法作函数 y=x +3x -24x+30 的图象时,需要求出自变量和函数的一组对应值 . 编写程序,分别计算当 x=-5,-4,-3,-2,-1,0,1,2,3,4,5 时的函数值. 算法分析:根据题意,对于每一个输入的自变量的值,都要输出相应的函数值.写成算法步 骤如下: 第一步,输入一个自变量的 x 的值. 第二步,计算 y=x3+3x2-24x+30. 第三步,输出 y. 程序框图如下图:
3 2

显然,这是一个由顺序结构构成的算法,按照程序框图中流程线的方向,依次将程序框 中的内容写成相应的算法语句,就得相应的程序. 解:程序: INPUT “x”;x y=x^3+3*x^2-24*x+30 PRINT y END 点评:前面我们学习了算法步骤、程序框图,我们对照程序框图与算法语句可以得到它们之 间的对应关系.例如:在这个程序中,第 1 行中的 INPUT 语句就是输入语句.这个语句的一般 格式是 INPUT “提示内容”;变量 其中,“提示内容”一般是提示用户输入什么样的信息,每次运行例 1 中的程序时,依次输入 -5,-4,-3,-2,-1,0,1,2,3,4,5,计算机每次都把新输入的值赋给变量“x”,并按“x”
33

新获得的值计算变量“y”的值. 例 2 给一个变量重复赋值. 解:程序: A=10 A=A+15 PRINT A END 点评:给一个变量重复赋值,变量只保存最后一次赋值,比如此程序的输出值是 25. 例 3 编写程序,计算一个学生数学、语文、英语三门课的平均成绩. 算法分析: 先写出解决本例的算法步骤: 第一步,输入该学生数学、语文、英语三门课的成绩 a,b,c. 第二步,计算 y= 第三步,输出 y. 程序框图如下:

a?b?c . 3

由于 PRINT 语 句还可以用于输出数值计算的结果,所以这个算法可以写成下列程序. 程序: INPUT “Maths=”;a INPUT “Chinese=”;b INPUT “English=”;c PRINT “The average=”;(a+b+c)/3 END 点评:例 3 中的第 4 行的 PRINT 语 句是输出语句,它的一般形式是 PRINT“提示内容”;表达式 PRINT 语句可以在计算机的屏幕上输出常量、变量的值和系统信息,同输入语句一样,这 里的表达式前也可以有“提示内容”. 例 4 变换两个变量 A 和 B 的值,并输出交换前后的值. 解:程序: INPUT A,B PRINT A,B x=A A=B B=x PRINT A,B END
34

思路 2 例 1 写出求三个数 a,b,c 的方差的程序. 分析: 方差是在初中统计内容中学习过的知识, 计算所有数的方差首先计算所有数的平均数

x ,通过公式 s2=
算法步骤:

( x1 ? x ) 2 ? ( x 2 ? x ) 2 ? ? ? ( x n ? x ) 2 来计算. n
a?b?c . 3

第一步,计算平均数 x ?

(a ? x ) 2 ? (b ? x ) 2 ? (c ? x ) 2 第二步,计算方差 s = . 3
2

第三步,得到的结果即为所求. 程序如下: INPUT a,b,c y=(a+b+c)/3 S=((a-y)2+ (b-y)2+ (c-y)2)/3 PRINT S END 点评:套用公式求值问题是传统数学求值问题的一种,它是一种典型的顺序结构,也就是说 只通过输入、输出和赋值语句就可以完成任务.解决这类问题的关键是先分析这种问题的解 法,即构造计算的过程,再写出算法步骤和流程图,再翻译成算法语句即可. 例 2 编写一个程序,要求输入两个正数 a 和 b 的值,输出 ab 和 ba 的值. 分析:可以利用 INPUT 语 句输入两个正数,然后将 ab 和 ba 的值分别赋给两个变量输出 即可.也可以将 ab 和 ba 的底数和幂数进行交换,故还可以利用赋值语句,采用将两个变量的 值互换的办法实现. 解:程序 1: INPUT “a,b:”;a,b A=a^b B=b^a PRINT “a^b=”;A,“b^a=”;B END 程序 2: INPUT “a,b:”;a,b A=a^b PRINT “a^b=”;A x=a a=b b=x A=a^b PRINT “b^a=”;A END 点评:交换 a,b 的值可通过下面三个语句来实现: t=a
35

a=b b=t 通过引进一个中间变量 t 实现变量 a 和 b 的值的交换,因此只需用赋值语句即可实现算法. 在一些较为复杂的问题算法中经常需要对两个变量的值进行交换,因此应熟练掌握这种方 法. 知能训练 1.判断下列给出的输入语句、输出语句和赋值语句是否正确?为什么? (1)输入语句 INPUT a;b;c (2)输出语句 A=4 (3)赋值语句 3=B (4)赋值语句 A=B=-2 解: (1)错,变量之间应用“,”号隔开. (2)错,PRINT 语句不能用赋值号“=”. (3)错,赋值语句中“=”号左右不能互换. (4)错,一个赋值语句只能给一个变量赋值. 点评:输入语句、输出语句和赋值语句基本上对应于算法中的顺序结构.输入语句、输出语 句和赋值语句都不包括“控制转移”,由它们组成的程序段必然是顺序结构. 2.请写出下面运算输出的结果. (1)a=5 b=3 c=(a+b)/2 d=c*c PRINT“d=”;d (2)a=1 b=2 c=a+b b=a+c-b PRINT “a=,b=,c=”;a,b,c (3)a=10 b=20 c=30 a=b b=c c=a PRINT “a=,b=,c=” ;a,b,c 解: (1)16;语句 c=(a+b)/2 是将 a,b 和的一半赋值给变量 c,语句 d=c*c 是将 c 的平方赋 值给 d,最后输出 d 的值. (2)1,2,3;语句 c=a+b 是将 a,b 的和赋值给 c,语句 b=a+c-b 是将 a+c-b 的值赋值 给了 b. (3)20,30,20;经过语句 a=b 后 a,b,c 的值是 20,20,30.经过语句 b=c 后 a,b,c 的 值是 20,30,30.经过语句 c=a 后 a,b,c 的值是 20,30,20. 点评:语句的识别问题是一个逆向性思维,一般我们认为我们的学习是从算法步骤(自然语 言)至程序框图,再到算法语言(程序).如果将程序摆在我们的面前时,我们要先识别每 个语句,再整体把握并概括出程序的功能.
36

拓展提升 已知某生某三科的成绩为 80、75、95 分,求三科的总分及平均分. 分析:将三科成绩赋给三个变量 A,B,C,然后对三个变量进行操作、运算,求其总分、 平均分.变量的起名规则:由字母、数字、下划线组成,但第一个字符必须是字母(大、小 写皆可) ,起名时尽量做到见名知义,如本例中我们可用变量 ZF 表示总分,PJF 表 示平 均分. 解:程序框图如下图:

程序: A=80 B=75 C=95 ZF=A+B+C PJF=ZF/3 PRINT ZF,PJF END 课堂小结 (1)输入语句、输出语句和赋值语句的基本用法. (2)用输入语句、输出语句和赋值语句编写算法语句. 作业 习题 1.2A 组 2. 设计感想 本节的引入阐明了程序框图与算法语句的关系, 本节利用框图与语句的对应关系降低了 本节的学习难度.由于本节是算法语句的开始,所以本节选用了大量难度较低的算法语句供 学生练习, 让学生充分体会程序框图与算法语句的关系, 为今后的学习打好基础并树立信心.

37

1.2.2 条件语句 整体设计 教学分析 通过上一节的学习,学生学会了输入语句、输出语句和赋值语句的基本用法,本节介绍 条件语句的用法. 程序中的条件语句与程序框图中的条件结构存在一一对应关系,这种对应 关系对于学生理解条件语句的结构,进一步理解算法中的条件结构都是很有帮助的.我们可 以给出条件语句的一般格式,让学生自己画出相应的程序框图,也可以给出程序框图,让学 生写出算法语句. 三维目标 1.理解学习基本算法语句的意义. 2.学会条件语句的基本用法. 3.理解算法步骤、程序框图和算法语句的关系,学会算法语句的写法. 重点难点 教学重点:条件语句的基本用法. 教学难点:算法语句的写法. 课时安排 1 课时 教学过程 导入新课 思路 1(情境导入) 一位老农平整了一块良田,种瓜好呢,还是种豆好呢,他面临着一个选择.如果他选择 种瓜,他会得瓜,如果他选择种豆,他会得豆.人的一生面临许多选择,我们要做出正确的 选择.前面我们学习了条件结构,今天我们学习条件语句. 思路 2(直接导入) 前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,上一节 我们学习了输入语句、输出语句、赋值语句,今天我们开始学习条件语句. 推进新课 新知探究 提出问题 (1)回忆程序框图中的两种条件结构. (2)指出条件语句的格式及功能. (3)指出两种条件语句的相同点与不同点. (4)揭示程序中的条件语句与程序框图中的条件结构存在一一对应关系. 讨论结果: (1)一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流 向.条件结构就是处理这种过程的结构. 用程序框图表示条件结构如下图:

(2)条件语句
38

1°“IF—THEN—ELSE”语句 格式: IF 条件 THEN 语句体 1 ELSE 语句体 2 END IF 功能:在“IF—THEN—ELSE”语句中,“条件”表示判断的条件,“语句体 1”表示满足条件时 执行的操作内容;“语句体 2”表示不满足条件时执行的操作内容;END IF 表示条件语句的 结束.计算机在执行“IF—THEN—ELSE”语句时,首先对 IF 后的条件进行判断,如果符合条 件,则执行 THEN 后面的“语句 1”;若不符合条件,则执行 ELSE 后面的“语句 2”. 2°“IF—THEN”语句 格式: IF 条件 THEN 语句体 END IF 功能:“条件”表示判断的条件;“语句”表示满足条件时执行的操作内容,条件不满足时,直 接结束判断过程;END IF 表示条件语句的结束.计算机在执行“IF—THEN”语句时,首先对 IF 后的条件进行判断,如果符合条件就执行 THEN 后边的语句,若不符合条件则直接结束 该条件语句,转而执行其他后面的语句. (3)相同点:首先对 IF 后的条件进行判断,如果符合条件就执行 THEN 后边的语句. 不同点:对于“IF—THEN—ELSE”语句,若不符合条件,则执行 ELSE 后面的“语句体 2”. 对于“IF—THEN”语句,若不符合条件则直接结束该条件语句,转而执行其他后面的语句. (4)程序中的条件语句与程序框图中的条件结构存在一一对应关系如下图:

应用示例 思路 1 例 1 编写一个程序,求实数 x 的绝对值. 算法分析:首先,我们来设计求实数 x 的绝对值的算法,因为实数 x 的绝对值为 |x|= ?

? x( x ? 0), ?? x( x ? 0),

所以算法步骤可以写成:

39

第一步,输入一个实数 x. 第二步,判断 x 的符号.若 x≥0,则输出 x;否则,输出-x. 显然,“第二步”可以用条件结构来实现. 程序框图如下图:

程序: INPUT x IF x>=0 THEN PRINT x ELSE PRINT -x END IF END 点评:通过本题我们看到算法步骤可以转化为程序框图,程序框图可以转化为算法语句.本 题揭示了它们之间的内在联系, 只要理解了程序框图与算法语句的对应关系, 把程序框图转 化为算法语句就很容易了. 变式训练 阅读下面的程序,你能得出什么结论? INPUT x IF x<0 THEN x=-x END IF PRINT x END 解:由程序得出,该程序是输出 x 的绝对值. 例 2 把前面求解一元二次方程 ax2+bx+c=0 的程序框图转化为程序. 解:由程序框图可以发现,其中包含着两个条件结构,而且内层的条件结构是外层的条件结 构的一个分支,所以,可以用“IF—THEN—ELSE—END IF”来完成转化. 程序: INPUT “a,b,c=”;a,b,c d=b^2-4*a*c IF d>=0 THEN p=-b/(2*a) q=SQR(d)/(2*a) IF d=0 THEN PRINT “x1=x2=”;p ELSE
40

PRINT “x1,x2=”;p+q,p-q END IF ELSE PRINT“No real root” END IF END 例 3 编写程序,使任意输入的 3 个整数按从大到小的顺序输出. 算法分析:用 a,b,c 表示输入的 3 个整数.为了节约变量,把它们重新排列后,仍用 a,b, c 表示,并使 a≥b≥c.具体操作步骤如下: 第一步,输入 3 个整数 a,b,c. 第二步,将 a 与 b 比较,并把小者赋给 b,大者赋给 a. 第三步,将 a 与 c 比较,并把小者赋给 c,大者赋给 a(此时 a 已是三者中最大的). 第四步,将 b 与 c 比较,并把小者赋给 c,大者赋给 b(此时 a,b,c 已按从大到小的顺序 排列好). 第五步,按顺序输出 a,b,c. 如下图所示,上述操作步骤可以用程序框图更直观地表达出来.

根据程序框图,写出相应的计算机程序. INPUT “a,b,c=”;a,b,c IF b>a THEN t=a a=b b=t END IF IF c>a THEN t=a a=c
41

c=t END IF IF c>b THEN t=b b=c c=t END IF PRINT a,b,c END 思路 2 例 1 编写程序,输出两个不相等的实数 a、b 的最大值. 分析:要输出两个不相等的实数 a、b 的最大值,从而想到对 a,b 的大小关系进行判断,a, b 的大小关系有两种情况: ( 1) a>b; (2) b>a.这也就用到了我们经常提及的分类讨论的方式, 找出两个数的最大值. 解:算法一: 第一步,输入 a, b 的数值. 第二步,判断 a,b 的大小关系,若 a>b,则输出 a 的值,否则,输出 b 的值. (程序框图如下图)

程序如下: (“IF—THEN—ELSE”语句) INPUT “a,b”;a,b IF a>b THEN PRINT a ELSE PRINT b END IF END 算法二: 第一步,输入 a,b 的数值. 第二步,判断 a,b 的大小关系,若 b>a,则将 b 的值赋予 a;否则,直接执行第三步. 第三步,输出 a 的值,结束. (程序框图如下图)

42

程序如下: (“IF—THEN”语句) INPUT “a,b”;a,b IF b>a THEN a=b END IF PRINT a END 点评:设计一个“好”的算法需要在大量的算法设计中积累经验.我们也可以先根据自己的思 路设计算法,再与 “成形”的、高效的、优秀的算法比较,改进思路,改进算法,以避免重 复计算等问题,提高算法设计的水平. (2)我们在平常的训练中尽可能地少引用变量,过多的变量不仅会使得算法和程序变得复 杂,而且不利于计算机的执行.为此,我们在练习中要尽可能少引入变量并且要积极思考才 能少引入变量.

?1, x ? 0, ? 例 2 高等数学中经常用到符号函数,符号函数的定义为 y= ?0, x ? 0, 试编写程序输入 x ?? 1, x ? 0, ?
的值,输出 y 的值. 解:程序一: (嵌套结构) 程序框图: (下图)

程序如下: INPUT x IF x>0 THEN y=1 ELSE IF x=0 THEN y=0
43

ELSE y=-1 END IF END IF PRINT y END 程序二: (叠加结构) 程序框图(右图) :

程序如下: INPUT x IF x>0 THEN y=1 END IF IF x=0 THEN y=0 END IF IF x<0 THEN y=-1 END IF PRINT y END 点评: (1)条件结构的差异,造成程序执行的不同.当代入 x 的数值时,“程序一”先判断外 层的条件,依次执行不同的分支,随后再判断内层的条件;而“程序二”中执行了对“条件 1” 的判断,同时也对“条件 2”进行判断,是按程序中条件语句的先后依次判断所有的条件,满 足哪个条件就执行哪个语句. (2)条件语句的嵌套可多于两层,可以表达算法步骤中的多重限制条件. 知能训练 中国网通规定:拨打市内电话时,如果不超过 3 分钟,则收取话费 0.22 元;如果通话时间 超过 3 分钟, 则超出部分按每分钟 0.1 元收取通话费, 不足一分钟按以一分钟计算.设通话时 间为 t(分钟) ,通话费用 y(元) ,如何设计一个程序,计算通话的费用.
44

解:算法程序如下: INPUT “请输入通话时间:”;t IF t<=3 THEN y=0.22 ELSE IF INT(t)=t THEN y=0.22+0.1*(t-3) ELSE y=0.22+0.1*(INT(t-3)+1) END IF END IF PRINT “通话费用为:”;y END 拓展提升

?2 x,0 ? x ? 4, ? 函数 y= ?8,4 ? x ? 8, 写出求函数的函数值的程序. ?2(12 ? x ),8 ? x ? 12, ?
解:INPUT x=”;x IF x>=0 and x<=4 THEN y=2*x ELSE IF x<=8 THEN y=8 ELSE y=2*(12-x) END IF END IF PRINT y END 课堂小结 (1)条件语句的用法. (2)利用条件语句编写算法语句. 作业 习题 1.2 B 组 1. 设计感想 条件语句是算法语句的基础和核心,本节设计以条件结构和条件语句的对应关系为基 础,引导学生将程序框图转化为算法语句.本节的难点是正确区分叠加结构和镶嵌结构,并 会应用它们编写算法语句.本节选用大量精彩题目让学生反复训练,使学生熟练掌握程序框 图与算法语句的关系,达到解决本节难点的目的.

45

1.2.3 循环语句 整体设计 教学分析 通过前面的学习,学生学会了输入语句、输出语句、赋值语句和条件语句的基本用法, 本节将介绍循环语句的用法 . 程序中的循环语句与程序框图中的循环结构存在一一对应关 系, 这种对应关系对于学生理解循环语句的结构, 进一步理解算法中的循环结构都是很有帮 助的.我们可以给出循环语句的一般格式,让学生自己画出相应的程序框图,也可以给出程 序框图,让学生写出算法语句,提高学生的应用能力. 三维目标 1.理解学习基本算法语句的意义. 2.学会循环语句的基本用法. 3.理解算法步骤、程序框图和算法语句的关系,学会算法语句的写法. 重点难点 教学重点:循环语句的基本用法. 教学难点:循环语句的写法. 课时安排 1 课时 教学过程 导入新课 思路 1(情境导入) 一位同学不小心违反了学校纪律,班主任令其写检查,他写完后交给班主任,班主任看 后说: “认识不深刻,拿回去重写,直到认识深刻为止”.这位同学一想,这不是一个循环结 构吗?可惜我还没学循环语句,不然可以写一个算法语句输入计算机了.同学们,今天我们 开始学习循环语句. 思路 2(直接导入) 前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,上一节 我们学习了输入语句、输出语句、赋值语句和条件语句,今天我们开始学习循环语句. 推进新课 新知探究 提出问题 (1)试用程序框图表示循环结构. (2)指出循环语句的格式及功能. (3)指出两种循环语句的相同点与不同点. (4)揭示程序中的循环语句与程序框图中的条件结构存在一一对应关系. 讨论结果: (1)循环结构 循环结构有两种形式:当型循环结构和直到型循环结构. 1°当型循环结构,如图(1)所示 2°直到型循环结构,如图(2)所示,

46

(1)当型循环结构 (2)直到型循环结构 (2)循环语句 1°当型循环语句 当型(WHILE 型)语句的一般格式为: WHILE 条件 循环体 WEND 功能:计算机执行此程序时,遇到 WHILE 语句,先判断条件是否成立,如果成立,则 执行 WHILE 和 WEND 之间的循环体;然后返回到 WHILE 语句再判断上述条件是否成立, 如果成立,再执行循环体,这个过程反复执行,直到一次返回到 WHILE 语句判断上述条件 不成立为止,这时不再执行循环体,而是跳到 WEND 语句后,执行 WEND 后面的语句.因 此当型循环又称 “前测试型” 循环, 也就是我们经常讲的 “先测试后执行” “先判断后循环” . 2°直到型循环语句 直到型(UNTIL 型)语句的一般格式为: DO 循环体 LOOP UNTIL 条件 功能:计算机执行 UNTIL 语句时,先执行 DO 和 LOOP UNTIL 之间的循环体,然后判断 “LOOP UNTIL”后面的条件是否成立,如果条件不成立,返回 DO 语句处重新执行循环 体.这个过程反复执行,直到一次判断“LOOP UNTIL”后面的条件成立为止,这时不再返 回执行循环体,而是跳出循环体执行“LOOP UNTIL 条件”下面的语句. 因此直到型循环又称“后测试型”循环,也就是我们经常讲的“先执行后测试” “先循 环后判断”. (3)相同点:都是反复执行循环体语句. 不同点:当型循环语句是先判断后循环,直到型循环语句是先循环后判断. (4)下面为循环语句与程序框图中的条件结构的一一对应关系. 1°直到型循环结构:

2°当型循环结构:

47

应用示例 思路 1 例 1 修改前面编写过的求函数 y=x3+3x2-24x+30 的值的程序,连续输入 11 个自变量的取 值,输出相应的函数值. 算法分析:与前面不同的是,本例要求连续输入 11 个自变量的取值.并输出相应的函数值, 先写出解决本例的算法步骤: 第一步,输入自变量 x 的值. 第二步,计算 y=x3+3x2-24x+30. 第三步,输出 y. 第四步,记录输入次数. 第五步,判断输入的次数是否大于 11.若是,则结束算法;否则,返回第一步. 显然,可以用计数变量 n(1≤n≤11)记录次数,通过循环结构来实现算法. 程序框图如下图:

程序: n=1 DO INPUT x y=x^3+3*x^2-24*x+30 PRINT y n=n+1 LOOP UNTIL n>11 END 例 2 教材中的用“二分法”求方程 x2-2=0(x>0)的近似解的程序框图(见教材图 1.120) 包含了顺序结构、条件结构和循环结构.下面,我们把这个程序框图转化为相应的程序. 解:程序为: INPUT “a,b,d=” ;a,b,d DO m=(a+b)/2 g=a^2-2 f=m^2-2 IF g*f<0 THEN
48

b=m ELSE a=m END IF LOOP UNTIL ABS(a-b)<d OR f=0 PRINT m END 点评:ABS()是一个函数,用来求某个数的绝对值,即 ABS(x)=|x|. 例 3 设计一个计算 1×3×5×7×?×99 的算法,编写算法程序. 解:算法如下: 第一步,s=1. 第二步,i=3. 第三步,s=s×i. 第四步,i=i+2. 第五步,如果 i≤99,那么转到第三步. 第六步,输出 s. 程序如下: ( “WHILE 型”循环语句) s=1 i=3 WHILE i<=99 s=s*i i=i+2 WEND PRINT s END 点评:前面我们已经学过“求和”问题,这是一个“求积”问题,这两个问题都是典型的算 法问题,注意它们的联系与区别. 例 4 编写一个程序,求 1!+2!+?+10!的值(其中 n!=1×2×3×?×n). 分析:这个问题可以用“WHILE+ WHILE”循环嵌套语句格式来实现. 程序结构要做到如下步骤: ①处理“n! ”的值; (注:处理 n!的值的变量是一个内循环变量) ②累加“n! ”的值.(注:累加 n!的值的变量是一个外循环变量) 显然,通过 10 次循环可分别求出 1!、2!、?、10!的值,并同时累加起来, 可求得 S 的值. 而求 T=n! ,又可以用一个循环(内循环)来实现. 解:程序为: s=0 i=1 WHILE i<=10 j=1 t=1 WHILE j<=i t=t*j j=j+1 WEND
49

s=s+t i=i+1 WEND PRINT s END 思考:上面程序中哪个变量是内循环变量,哪个变量是外循环变量? 解答:内循环变量:j,t.外循环变量:s,i. 上面的程序是一个的“WHILE+WHILE”型循环嵌套语句格式.这是一个比较好想的方 法,但实际上对于求 n! ,我们也可以根据求出的(n-1)!乘上 n 即可得到,而无需重新从 1 再累乘到 n. 程序可改为: s=0 i=1 j=1 WHILE i<=10 j=j*i s=s+j i=i+1 WEND PRINT s END 显然第二个程序的效率要比第一个高得多.第一程序要进行 1+2+?+10=55 次循环, 而第 二程序进行 10 次循环.如题目中求的是 1!+2!+?+1 000! ,则两个程序的效率区别会更 明显. 点评:解决具体的构造循环语句的算法问题,要尽可能地少引入循环变量,否则较多的变量 会使得设计程序比较麻烦, 并且较多的变量会使得计算机占用大量的系统资源, 致使系统缓 慢.另外,也尽可能使得循环嵌套的层数少,否则也浪费计算机的系统资源. 变式训练 某种蛋白质是由四种氨基酸组合而成.这四种氨基酸的相对分子质量分别是 57, 71, 97, 101.实验测定蛋白质的相对分子质量为 800.问这种蛋白质的组成有几种可能? 分析:该问题即求如下不定方程的整数解:设四种氨基酸在蛋白质的组成中分别各有 x,y, z,w 个.则由题意可得 57x+71y+97z+101w=800, (x,y,z,w 是非负整数) 这里 0≤x≤14,0≤y≤11,0≤z≤8,0≤w≤7,利用穷取法,考虑一切可能出现的情 况.运用多层循环嵌套处理即可. 解:编写程序如下: w=0 WHILE w<=7 z=0 WHILE z<=8 y=0 WHILE y<=11 x=0 WHILE x<=14 IF 57*x+71*y+97*z+101*w=800 THEN
50

PRINT x,y,z,w END IF x=x+1 WEND y=y+1 WEND z=z+1 WEND w=w+1 WEND END 知能训练 设计算法求

1 1 1 1 ? ? ??? 的值.要求画出程序框图,写出用基本语句 1? 2 2 ? 3 3 ? 4 99 ? 100

编写的程序. 解:这是一个累加求和问题,共 99 项相加,可设计一个计数变量,一个累加变量,用循环 结构实现这一算法.程序框图如下图所示:

程序如下: s=0 i=1 Do s=s+1/(i*(i+1)) i=i+1 LOOP UNTIL i>99 PRINT s END 拓展提升 青年歌手电视大赛共有 10 名选手参加, 并请了 12 名评委, 在计算每位选手的平均分数 时, 为了避免个别评委所给的极端分数的影响, 必须去掉一个最高分和一个最低分后再求平 均分.试设计一个算法解决该问题,要求画出程序框图,写出程序(假定分数采用 10 分制, 即每位选手的分数最高分为 10 分,最低分为 0 分).
51

解:由于共有 12 位评委,所以每位选手会有 12 个分数,我们可以用循环语句来完成这 12 个分数的输入, 同时设计累加变量求出这 12 个分数的和, 本问题的关键在于从这 12 个输入 分数中找出最大数与最小数,以便从总分中减去这两个数.由于每位选手的分数都介于 0 分 和 10 分之间,我们可以先假设其中的最大数为 0,最小数为 10,然后每次输入一个评委的 分数,就进行一次比较,若输入的数大于 0,就将之代替最大数,若输入的数小于 10,就用 它代替最小数,依次下去,就能找出这 12 个数中的最大数与最小数,循环结束后,从总和 中减去最大数与最小数,再除以 10,就得到该选手最后的平均分. 程序框图如右图:

程序如下:s=0 i=1 max=0 min=10 DO INPUT x s=s+x IF max<=x THEN max=x END IF IF min>=x THEN min=x END IF i=i+1 LOOP UNTIL i>12 s1=s-max-min a=s1/10 PRINT a
52

END 课堂小结 (1)学会两种循环语句的应用. (2)熟练应用两种循环语句编写计算机程序,巩固算法应用. 作业 习题 1.2A 组 3. 设计感想 本节的导入符合学生心理要求,能够激发学生的学习兴趣.算法像一个故事,循环语句 就是故事的高潮,它以前面的内容为基础,是前面内容的总结和发展.本节选用了大量的精 彩例题为故事高潮的到来作好了铺垫, 精彩的点评把本节推向了高潮, 所以本节教案值得期 待.

1.3 算法案例 整体设计 教学分析 在学生学习了算法的初步知识, 理解了表示算法的算法步骤、 程序框图和程序三种不同 方式以后,再结合典型算法案例,让学生经历设计算法解决问题的全过程,体验算法在解决 问题中的重要作用,体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表 达能力. 三维目标 1.理解算法案例的算法步骤和程序框图. 2.引导学生得出自己设计的算法程序. 3. 体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力. 重点难点 教学重点:引导学生得出自己设计的算法步骤、程序框图和算法程序. 教学难点:体会算法的基本思想,提高逻辑思维能力,发展有条理地思考与数学表达能力. 课时安排 3 课时 教学过程 第 1 课时 案例 1 辗转相除法与更相减损术 导入新课

53

思路 1(情境导入) 大家喜欢打乒乓球吧,由于东、西方文化及身体条件的不同,西方人喜欢横握拍打球, 东方人喜欢直握拍打球,对于同一个问题,东、西方人处理问题方式是有所不同的.在小学, 我们学过求两个正整数的最大公约数的方法: 先用两个数公有的质因数连续去除, 一直除到 所得的商是互质数为止, 然后把所有的除数连乘起来. 当两个数公有的质因数较大时 (如 8 251 与 6 105) ,使用上述方法求最大公约数就比较困难.下面我们介绍两种不同的算法—— 辗转相除法与更相减损术,由此可以体会东、西方文化的差异. 思路 2(直接导入) 前面我们学习了算法步骤、程序框图和算法语句.今天我们将通过辗转相除法与更相减 损术来进一步体会算法的思想. 推进新课 新知探究 提出问题 (1)怎样用短除法求最大公约数? (2)怎样用穷举法(也叫枚举法)求最大公约数? (3)怎样用辗转相除法求最大公约数? (4)怎样用更相减损术求最大公约数? 讨论结果: (1)短除法 求两个正整数的最大公约数的步骤: 先用两个数公有的质因数连续去除, 一直除到所得 的商是两个互质数为止,然后把所有的除数连乘起来. (2)穷举法(也叫枚举法) 穷举法求两个正整数的最大公约数的解题步骤:从两个数中较小数开始由大到小列举, 直到找到公约数立即中断列举,得到的公约数便是最大公约数. (3)辗转相除法 辗转相除法求两个数的最大公约数,其算法步骤可以描述如下: 第一步,给定两个正整数 m,n. 第二步,求余数 r:计算 m 除以 n,将所得余数存放到变量 r 中. 第三步,更新被除数和余数:m=n,n=r. 第四步,判断余数 r 是否为 0.若余数为 0,则输出结果;否则转向第二步继续循环执行. 如此循环, 直到得到结果为止. 这种算法是由欧几里得在公元前 300 年左右首先提出的, 因而又叫欧几里得算法. (4)更相减损术 我国早期也有解决求最大公约数问题的算法,就是更相减损术. 《九章算术》是中国古 代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之, 不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.”翻译为现代语 言如下: 第一步,任意给定两个正整数,判断它们是否都是偶数,若是,用 2 约简;若不是,执 行第二步. 第二步, 以较大的数减去较小的数, 接着把所得的差与较小的数比较, 并以大数减小数, 继续这个操作,直到所得的数相等为止,则这个数(等数)或这个数与约简的数的乘积就是 所求的最大公约数. 应用示例 例 1 用辗转相除法求 8 251 与 6 105 的最大公约数,写出算法分析,画出程序框图,写出算
54

法程序. 解:用两数中较大的数除以较小的数,求得商和余数:8 251=6 105× 1+2 146. 由此可得,6 105 与 2 146 的公约数也是 8 251 与 6 105 的公约数,反过来,8 251 与 6 105 的公约数也是 6 105 与 2 146 的公约数,所以它们的最大公约数相等. 对 6 105 与 2 146 重复上述步骤:6 105=2 146× 2+1 813. 同理,2 146 与 1 813 的最大公约数也是 6 105 与 2 146 的最大公约数.继续重复上述步骤: 2 146=1 813× 1+333, 1 813=333× 5+148, 333=148× 2+37, 148=37× 4. 最后的除数 37 是 148 和 37 的最大公约数,也就是 8 251 与 6 105 的最大公约数. 这就是辗转相除法.由除法的性质可以知道,对于任意两个正整数,上述除法步骤总可 以在有限步之后完成,从而总可以用辗转相除法求出两个正整数的最大公约数. 算法分析:从上面的例子可以看出,辗转相除法中包含重复操作的步骤,因此可以用循环结 构来构造算法. 算法步骤如下: 第一步,给定两个正整数 m,n. 第二步,计算 m 除以 n 所得的余数为 r. 第三步,m=n,n=r. 第四步,若 r=0,则 m,n 的最大公约数等于 m;否则,返回第二步. 程序框图如下图:

程序: INPUT m,n DO r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m END 点评:从教学实践看,有些学生不能理解算法中的转化过程,例如:求 8 251 与 6 105 的最
55

大公约数,为什么可以转化为求 6 105 与 2 146 的公约数.因为 8 251=6 105× 1+2 146, 可以化为 8 251-6 105× 1=2 164,所以公约数能够整除等式两边的数,即 6 105 与 2 146 的公 约数也是 8 251 与 6 105 的公约数. 变式训练 你能用当型循环结构构造算法,求两个正整数的最大公约数吗?试画出程序框图和程 序. 解:当型循环结构的程序框图如下图:

程序: INPUT m,n r=1 WHILE r>0 r=m MOD n m=n n=r WEND PRINT m END 例 2 用更相减损术求 98 与 63 的最大公约数. 解:由于 63 不是偶数,把 98 和 63 以大数减小数,并辗转相减,如下图所示. 98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 所以,98 和 63 的最大公约数等于 7. 点评:更相减损术与辗转相除法的比较:尽管两种算法分别来源于东、西方古代数学名著, 但是二者的算理却是相似的, 有异曲同工之妙. 主要区别在于辗转相除法进行的是除法运算, 即辗转相除;而更相减损术进行的是减法运算,即辗转相减,但是实质都是一个不断的递归 过程.
56

变式训练 用辗转相除法或者更相减损术求三个数 324,243,135 的最大公约数. 解:324=243× 1+81, 243=81× 3+0, 则 324 与 243 的最大公约数为 81. 又 135=81× 1+54,81=54× 1+27, 54=27× 2+0, 则 81 与 135 的最大公约数为 27. 所以,三个数 324、243、135 的最大公约数为 27. 另法:324-243=81,243-81=162,162-81=81,则 324 与 243 的最大公约数为 81. 135-81=54,81-54=27,54-27=27,则 81 与 135 的最大公约数为 27. 所以,三个数 324、243.135 的最大公约数为 27. 例 3 (1)用辗转相除法求 123 和 48 的最大公约数. (2)用更相减损术求 80 和 36 的最大公约数. 解: (1)辗转相除法求最大公约数的过程如下: 123=2× 48+27, 48=1× 27+21, 27=1× 21+6, 21=3× 6+3, 6=2× 3+0, 最后 6 能被 3 整除,得 123 和 48 的最大公约数为 3. (2)我们将 80 作为大数,36 作为小数,因为 80 和 36 都是偶数,要除公因数 2. 80÷ 2=40,36÷ 2=18. 40 和 18 都是偶数,要除公因数 2. 40÷ 2=20,18÷ 2=9. 下面来求 20 与 9 的最大公约数, 20-9=11, 11-9=2, 9-2=7, 7-2=5, 5-2=3, 3-2=1, 2-1=1, 可得 80 和 36 的最大公约数为 22× 1=4. 点评:对比两种方法控制好算法的结束,辗转相除法是到达余数为 0,更相减损术是到达减 数和差相等. 变式训练 分别用辗转相除法和更相减损术求 1 734,816 的最大公约数. 解:辗转相除法: 1 734=816× 2+102,816=102× 8(余 0) , ∴1 734 与 816 的最大公约数是 102. 更相减损术:因为两数皆为偶数,首先除以 2 得到 867,408,再求 867 与 408 的最大公约 数. 867-408=459,
57

459-408=51, 408-51=357, 357-51=306, 306-51=255, 255-51=204, 204-51=153, 153-51=102, 102-51=51. ∴1 734 与 816 的最大公约数是 51× 2=102. 利用更相减损术可另解: 1 734-816=918, 918-816=102, 816-102=714, 714-102=612, 612-102=510, 510-102=408, 408-102=306, 306-102=204, 204-102=102. ∴1 734 与 816 的最大公约数是 102. 知能训练 求 319,377,116 的最大公约数. 解:377=319× 1+58, 319=58× 5+29, 58=29× 2. ∴377 与 319 的最大公约数为 29,再求 29 与 116 的最大公约数. 116=29× 4. ∴29 与 116 的最大公约数为 29. ∴377,319,116 的最大公约数为 29. 拓展提升 试写出利用更相减损术求两个正整数的最大公约数的程序. 解:更相减损术程序: INPUT “m,n=”;m,n WHILE m<>n IF m>n THEN m=m-n ELSE m=n-m END IF WEND PRINT m END 课堂小结 (1)用辗转相除法求最大公约数.
58

(2)用更相减损术求最大公约数. 思想方法:递归思想. 作业 分别用辗转相除法和更相减损术求 261,319 的最大公约数. 分析:本题主要考查辗转相除法和更相减损术及其应用.使用辗转相除法可依据 m=nq+r, 反复执行,直到 r=0 为止;用更相减损术就是根据 m-n=r,反复执行,直到 n=r 为止. 解:辗转相除法: 319=261× 1+58, 261=58× 4+29, 58=29× 2. ∴319 与 261 的最大公约数是 29. 更相减损术: 319-261=58, 261-58=203, 203-58=145, 145-58=87, 87-58=29, 58-29=29, ∴319 与 261 的最大公约数是 29. 设计感想 数学不仅是一门科学,也是一种文化,本节的引入从东、西方文化的不同开始,逐步向 学生渗透数学文化.从知识方面主要学习用两种方法求两个正整数的最大公约数,从思想方 法方面,主要学习递归思想.本节设置精彩例题,不仅让学生学到知识,而且让学生进一步 体会算法的思想,培养学生的爱国主义情操. 第 2 课时 案例 2 秦九韶算法 导入新课 思路 1(情境导入) 大家都喜欢吃苹果吧, 我们吃苹果都是从外到里一口一口的吃, 而虫子却是先钻到苹果 里面从里到外一口一口的吃,由此看来处理同一个问题的方法多种多样 . 怎样求多项式 f(x)=x5+x4+x3+x2+x+1 当 x=5 时的值呢?方法也是多种多样的,今天我们开始学习秦九韶算 法. 思路 2(直接导入) 前面我们学习了辗转相除法与更相减损术, 今天我们开始学习秦九韶算法. 推进新课 新知探究 提出问题 (1)求多项式 f(x)=x5+x4+x3+x2+x+1 当 x=5 时的值有哪些方法?比较它们的特点. (2)什么是秦九韶算法? (3)怎样评价一个算法的好坏? 讨论结果: (1)怎样求多项式 f(x)=x5+x4+x3+x2+x+1 当 x=5 时的值呢? 一个自然的做法就是把 5 代入多项式 f(x),计算各项的值,然后把它们加起来,这时, 我们一共做了 1+2+3+4=10 次乘法运算,5 次加法运算. 另一种做法是先计算 x2 的值,然后依次计算 x2· x, (x2· x)· x, ( (x2· x)· x)· x 的值,这
59

样每次都可以利用上一次计算的结果,这时,我们一共做了 4 次乘法运算,5 次加法运算. 第二种做法与第一种做法相比,乘法的运算次数减少了,因而能够提高运算效率,对于 计算机来说, 做一次乘法运算所用的时间比做一次加法运算要长得多, 所以采用第二种做法, 计算机能更快地得到结果. (2)上面问题有没有更有效的算法呢?我国南宋时期的数学家秦九韶(约 1202~1261)在 他的著作《数书九章》中提出了下面的算法: 把一个 n 次多项式 f(x)=anxn+an-1xn-1+…+a1x+a0 改写成如下形式: f(x)=anxn+an-1xn-1+…+a1x+a0 =(anxn-1+an-1xn-2+…+a1)x+ a0 =( (anxn-2+an-1xn-3+…+a2)x+a1)x+a0 =… =(…( (anx+an-1)x+an-2)x+…+a1)x+a0. 求多项式的值时,首先计算最内层括号内一次多项式的值,即 v1=anx+an-1, 然后由内向外逐层计算一次多项式的值,即 v2=v1x+an-2, v3=v2x+an-3, … vn=vn-1x+a0, 这样,求 n 次多项式 f(x)的值就转化为求 n 个一次多项式的值. 上述方法称为秦九韶算法.直到今天,这种算法仍是多项式求值比较先进的算法. (3)计算机的一个很重要的特点就是运算速度快,但即便如此,算法好坏的一个重要标志 仍然是运算的次数.如果一个算法从理论上需要超出计算机允许范围内的运算次数,那么这 样的算法就只能是一个理论的算法. 应用示例 例 1 已知一个 5 次多项式为 f(x)=5x5+2x4+3.5x3-2.6x2+1.7x-0.8, 用秦九韶算法求这个多项式当 x=5 时的值. 解:根据秦九韶算法,把多项式改写成如下形式: f(x)=((((5x+2)x+3.5)x-2.6)x+1.7)x-0.8, 按照从内到外的顺序,依次计算一次多项式当 x=5 时的值: v0=5; v1=5× 5+2=27; v2=27× 5+3.5=138.5; v3=138.5× 5-2.6=689.9; v4=689.9× 5+1.7=3 451.2; v5=3 415.2× 5-0.8=17 255.2; 所以,当 x=5 时,多项式的值等于 17 255.2. 算法分析: 观察上述秦九韶算法中的 n 个一次式, 可见 vk 的计算要用到 vk-1 的值, 若令 v0=an, 我们可以得到下面的公式:

?v0 ? an , ? ?vk ? vk ?1 x ? an?k (k ? 1,2,?, n).
这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现. 算法步骤如下:

60

第一步,输入多项式次数 n、最高次的系数 an 和 x 的值. 第二步,将 v 的值初始化为 an,将 i 的值初始化为 n-1. 第三步,输入 i 次项的系数 ai. 第四步,v=vx+ai,i=i-1. 第五步,判断 i 是否大于或等于 0.若是,则返回第三步;否则,输出多项式的值 v. 程序框图如下图:

程序: INPUT “n=”;n INPUT “an=”;a INPUT “x=”;x v=a i=n-1 WHILE i>=0 PRINT “i=”;i INPUT “ai=”;a v=v*x+a i=i-1 WEND PRINT v END 点评:本题是古老算法与现代计算机语言的完美结合,详尽介绍了思想方法、算法步骤、程 序框图和算法语句,是一个典型的算法案例. 变式训练 请以 5 次多项式函数为例说明秦九韶算法,并画出程序框图. 解:设 f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0 首先,让我们以 5 次多项式一步步地进行改写: f(x)=(a5x4+a4x3+a3x2+a2x+a1)x+a0 =( (a5x3+a4x2+ a3x+a2)x+a1)x+a0 =( ( (a5x2+a4x+ a3)x+a2)x+a1)x+a0 =( ( ( (a5x+a4)x+ a3)x+a2)x+a1)x+a0. 上面的分层计算,只用了小括号,计算时,首先计算最内层的括号,然后由里向外逐层计算,
61

直到最外层的括号,然后加上常数项即可. 程序框图如下图:

k 例 2 已知 n 次多项式 Pn(x)=a0xn+a1xn-1+…+an-1x+an,如果在一种算法中,计算 x0 (k=2,3,

4,…,n)的值需要 k-1 次乘法,计算 P3(x0)的值共需要 9 次运算(6 次乘法,3 次加法) , 那 么计 算 P10(x0) 的 值共需 要 __________ 次运 算 . 下 面给 出一 种减 少运 算次 数的 算法 : P0(x)=a0,Pk+1(x)=xPk(x)+ak+1(k=0,1,2,?,n-1) .利用该算法,计算 P3(x0)的值共需要 6 次运算,计算 P10(x0)的值共需要___________次运算. 答案:65 20 点评:秦九韶算法适用一般的多项式 f(x)=anxn+an-1xn-1+…+a1x+a0 的求值问题.直接法乘法运 算的次数最多可到达

( n ? 1) n ,加法最多 n 次.秦九韶算法通过转化把乘法运算的次数减少 2

到最多 n 次,加法最多 n 次. 例 3 已知多项式函数 f(x)=2x5-5x4-4x3+3x2-6x+7,求当 x=5 时的函数的值. 解析:把多项式变形为:f(x)=2x5-5x4-4x3+3x2-6x+7 =((((2x-5)x-4)x+3)x-6)x+7. 计算的过程可以列表表示为:

最后的系数 2 677 即为所求的值. 算法过程: v0=2; v1=2× 5-5=5; v2=5× 5-4=21; v3=21× 5+3=108; v4=108× 5-6=534; v5=534× 5+7=2 677. 点评:如果多项式函数中有缺项的话,要以系数为 0 的项补齐后再计算. 知能训练 当 x=2 时,用秦九韶算法求多项式 f(x)=3x5+8x4-3x3+5x2+12x-6 的值. 解法一:根据秦九韶算法,把多项式改写成如下形式: f(x)=((((3x+8)x-3)x+5)x+12)x-6. 按照从内到外的顺序,依次计算一次多项式当 x=2 时的值. v0=3;
62

v1=v0× 2+8=3× 2+8=14; v2=v1× 2-3=14× 2-3=25; v3=v2× 2+5=25× 2+5=55; v4=v3× 2+12=55× 2+12=122; v5=v4× 2-6=122× 2-6=238. ∴当 x=2 时,多项式的值为 238. 解法二:f(x)=((((3x+8)x-3)x+5)x+12)x-6, 则 f(2)=((((3× 2+8)× 2-3)× 2+5)× 2+12)× 2-6=238. 拓展提升 用秦九韶算法求多项式 f(x)=7x7+6x6+5x5+4x4+3x3+2x2+x 当 x=3 时的值. 解:f(x)=((((((7x+6)+5)x+4)x+3)x+2)x+1)x v0=7; v1=7× 3+6=27; v2=27× 3+5=86; v3=86× 3+4=262; v4=262× 3+3=789; v5=789× 3+2=2 369; v6=2 369× 3+1=7 108; v7=7 108× 3+0=21 324. ∴f(3)=21 324. 课堂小结 1.秦九韶算法的方法和步骤. 2.秦九韶算法的计算机程序框图. 作业 已知函数 f(x)=x3-2x2-5x+8,求 f(9)的值. 解:f(x)=x3-2x2-5x+8=(x2-2x-5)x+8=((x-2)x-5)x+8 ∴f(9)=((9-2)× 9-5)× 9+8=530. 设计感想 古老的算法散发浓郁的现代气息,这是一节充满智慧的课.本节主要介绍了秦九韶算法. 通过对秦九韶算法的学习,对算法本身有哪些进一步的认识? 教师引导学生思考、讨论、概括,小结时要关注如下几点: (1)算法具有通用的特点, 可以解决一类问题; (2)解决同一类问题,可以有不同的算法,但计算的效率是不同的,应 该选择高效的算法; (3)算法的种类虽多,但三种逻辑结构可以有效地表达各种算法等等. 第 3 课时 案例 3 进位制 导入新课 情境导入 在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱 好天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、一 年十二个月、一小时六十分的历法.今天我们来学习一下进位制. 推进新课 新知探究 提出问题 (1)你都了解哪些进位制? (2)举出常见的进位制.
63

(3)思考非十进制数转换为十进制数的转化方法. (4)思考十进制数转换成非十进制数及非十进制之间的转换方法. 活动:先让学生思考或讨论后再回答,经教师提示、点拨,对回答正确的学生及时表扬,对 回答不准确的学生提示引导考虑问题的思路. 讨论结果: (1)进位制是人们为了计数和运算方便而约定的计数系统,约定满二进一,就是二进制; 满十进一,就是十进制;满十二进一,就是十二进制;满六十进一,就是六十进制等等.也 就是说:“满几进一”就是几进制,几进制的基数(都是大于 1 的整数)就是几. (2)在日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关, 爱好天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、 一年十二个月、一小时六十分的历法. (3)十进制使用 0~9 十个数字.计数时,几个数字排成一行,从右起,第一位是个位,个位 上的数字是几,就表示几个一;第二位是十位,十位上的数字是几,就表示几个十;接着依 次是百位、千位、万位…… 例如:十进制数 3 721 中的 3 表示 3 个千,7 表示 7 个百,2 表示 2 个十,1 表示 1 个一.于 是,我们得到下面的式子: 3 721=3× 103+7× 102+2× 101+1× 100. 与十进制类似,其他的进位制也可以按照位置原则计数.由于每一种进位制的基数不同,所 用的数字个数也不同.如二进制用 0 和 1 两个数字,七进制用 0~6 七个数字. 一般地, 若 k 是一个大于 1 的整数, 那么以 k 为基数的 k 进制数可以表示为一串数字连写在 一起的形式 anan-1…a1a0(k) (0<an<k,0≤an-1,…,a1,a0<k). 其他进位制的数也可以表示成不同位上数字与基数的幂的乘积之和的形式,如 110 011(2)=1× 25+1× 24+0× 23+0× 22+1× 21+1× 20, 7 342(8)=7× 83+3× 82+4× 81+2× 80. 非十进制数转换为十进制数比较简单,只要计算下面的式子值即可: anan-1…a1a0(k)=an× kn+an-1× kn-1+…+a1× k+a0. 第一步:从左到右依次取出 k 进制数 anan-1…a1a0(k)各位上的数字,乘以相应的 k 的幂,k 的 幂从 n 开始取值,每次递减 1,递减到 0,即 an× kn,an-1× kn-1,…,a1× k,a0× k0; 第二步:把所得到的乘积加起来,所得的结果就是相应的十进制数. (4)关于进位制的转换,教科书上以十进制和二进制之间的转换为例讲解,并推广到十进 制和其他进制之间的转换.这样做的原因是,计算机是以二进制的形式进行存储和计算数据 的, 而一般我们传输给计算机的数据是十进制数据, 因此计算机必须先将十进制数转换为二 进制数,再处理,显然运算后首次得到的结果为二进制数,同时计算机又把运算结果由二进 制数转换成十进制数输出. 1°十进制数转换成非十进制数 把十进制数转换为二进制数,教科书上提供了“除 2 取余法”,我们可以类比得到十进制数转 换成 k 进制数的算法“除 k 取余法”. 2°非十进制之间的转换 一个自然的想法是利用十进制作为桥梁.教科书上提供了一个二进制数据与 16 进制数据之间 的互化的方法,也就是先由二进制数转化为十进制数,再由十进制数转化成为 16 进制数. 应用示例 思路 1 例 1 把二进制数 110 011(2)化为十进制数.
64

解:110 011(2)=1× 25+1× 24+0× 23+0× 22+1× 21+1× 20=1× 32+1× 16+1× 2+1=51. 点评: 先把二进制数写成不同位上数字与 2 的幂的乘积之和的形式, 再按照十进制的运算规 则计算出结果. 变式训练 设计一个算法,把 k 进制数 a(共有 n 位)化为十进制数 b. 算法分析:从例 1 的计算过程可以看出,计算 k 进制数 a 的右数第 i 位数字 ai 与 ki-1 的乘积 ai· ki-1,再将其累加,这是一个重复操作的步骤.所以,可以用循环结构来构造算法. 算法步骤如下: 第一步,输入 a,k 和 n 的值. 第二步,将 b 的值初始化为 0,i 的值初始化为 1. 第三步,b=b+ai· ki-1,i=i+1. 第四步,判断 i>n 是否成立.若是,则执行第五步;否则,返回第三步. 第五步,输出 b 的值. 程序框图如下图:

程序: INPUT “a,k,n=”;a,k,n b=0 i=1 t=a MOD 10 DO b=b+t*k^(i-1) a=a\\10 t=a MOD 10 i=i+1 LOOP UNTIL i>n PRINT b END 例 2 把 89 化为二进制数. 解:根据二进制数“满二进一”的原则,可以用 2 连续去除 89 或所得商,然后取余数.具体计 算方法如下:

65

因为 89=2× 44+1,44=2× 22+0, 22=2× 11+0, 11=2× 5+1, 5=2× 2+1, 2=2× 1+0, 1=2× 0+1, 所以 89=2× (2× (2× (2× (2× 2+1)+1)+0)+0)+1 2 =2× (2× (2× (2× (2 +1)+1)+0)+0)+1 =…=1×26+0× 25+1× 24+1× 23+0× 22+0× 21+1× 20 =1 011 001(2). 这种算法叫做除 2 取余法,还可以用下面的除法算式表示:

把上式中各步所得的余数从下到上排列,得到 89=1 011 001(2). 上述方法也可以推广为把十进制数化为 k 进制数的算法,称为除 k 取余法. 变式训练 设计一个程序,实现“除 k 取余法”. 算法分析:从例 2 的计算过程可以看出如下的规律: 若十制数 a 除以 k 所得商是 q0,余数是 r0,即 a=k· q0+r0,则 r0 是 a 的 k 进制数的右数第 1 位数. 若 q0 除以 k 所得的商是 q1,余数是 r1,即 q0=k· q1+r1,则 r1 是 a 的 k 进制数的左数第 2 位数. …… 若 qn-1 除以 k 所得的商是 0,余数是 rn,即 qn-1=rn,则 rn 是 a 的 k 进制数的左数第 1 位 数. 这样,我们可以得到算法步骤如下: 第一步,给定十进制正整数 a 和转化后的数的基数 k. 第二步,求出 a 除以 k 所得的商 q,余数 r. 第三步,把得到的余数依次从右到左排列. 第四步,若 q≠0,则 a=q,返回第二步;否则,输出全部余数 r 排列得到的 k 进制数. 程序框图如下图:

66

程序: INPUT “a,k=”;a,k b=0 i=0 DO q=a\\k r=a MOD k b=b+r*10^i i=i+1 a=q LOOP UNTIL q=0 PRINT b END 思路 2 例 1 将 8 进制数 314 706(8)化为十进制数,并编写出一个实现算法的程序. 解:314 706(8)=3× 85+1× 84+4× 83+7× 82+0× 81+6× 80=104 902. 所以,化为十进制数是 104 902. 点评:利用把 k 进制数转化为十进制数的一般方法就可以把 8 进制数 314 706(8)化为十进制 数. 例 2 把十进制数 89 化为三进制数,并写出程序语句. 解:具体的计算方法如下: 89=3× 29+2, 29=3× 9+2, 9=3× 3+0, 3=3× 1+0, 1=3× 0+1, 所以:89(10)=10 022(3). 点评:根据三进制数满三进一的原则,可以用 3 连续去除 89 及其所得的商,然后按倒序的 顺序取出余数组成数据即可. 知能训练 将十进制数 34 转化为二进制数.
67

分析:把一个十进制数转换成二进制数,用 2 反复去除这个十进制数,直到商为 0,所得余 数(从下往上读)就是所求. 解:

即 34(10)=100 010(2) 拓展提升 把 1 234(5)分别转化为十进制数和八进制数. 解:1 234(5)=1× 53+2× 52+3× 5+4=194.

则 1 234(5)=302(8) 所以,1 234(5)=194=302(8) 点评: 本题主要考查进位制以及不同进位制数的互化. 五进制数直接利用公式就可以转化为 十进制数;五进制数和八进制数之间需要借助于十进制数来转化. 课堂小结 (1)理解算法与进位制的关系. (2)熟练掌握各种进位制之间转化. 作业 习题 1.3A 组 3、4. 设计感想 计算机是以二进制的形式进行存储和计算数据的, 而一般我们传输给计算机的数据是十 进制数据,因此计算机必须先将十进制数转换为二进制数,再处理,显然运算后首次得到的 结果为二进制数,同时,计算机又把运算结果由二进制数转换成十进制数输出.因此学好进 位制是非常必要的,另外,进位制也是高考的重点,本节设置了多种题型供学生训练,所以 这节课非常实用.

68


数学必修3第一章算法初步单元检测题及答案

数学必修3第一章算法初步单元检测题及答案_数学_高中教育_教育专区。数学必修3第123章单元检测题及答案 第一章一、选择题. 算法初步 ). 1.看下面的四段话,...

必修3第一章算法初步全章知识点例题练习章节测试

必修3第一章算法初步全章知识点例题练习章节测试_高一数学_数学_高中教育_教育专区。知识点例题练习和全面 第一章:算法初步教学目标 1、理解算法的概念、特征,熟悉...

人教版 高一数学 必修三 课本教材word版 第一章 算法初步

人教版 高一数学 必修三 课本教材word版 第一章 算法初步_数学_高中教育_教育专区。第一章 1.1.1 算法概念: 实际上,算法对我们来说并不陌生. 回顾二元一次...

高中数学(人教版必修3)《第一章+算法初步》教学设计(共...

高中数学(人教版必修3)《第一章+算法初步》教学设计(共12课时)_高三数学_数学_高中教育_教育专区。第一章算法初步一、课标要求: 1、本章的课标要求包括算法的...

人教版高中数学A版必修三第一章算法初步导学案

人教版高中数学A版必修三第一章算法初步导学案_数学_高中教育_教育专区。高中数学同步导学案,适合新课使用。数学必修 3 第一章 算法初步 第一章 算法初步 § 1...

高中数学人教A版必修三第一章算法初步知识点总结及典型...

新课标人教 A 版必修 3 第一章 知识点总结及典型题归类解析 算法初步 知识点总结及典型题归类解析 一、算法设计 (一)基本知识点 算法的描述一般有三种方法:...

必修三第一章算法初步

必修三第一章算法初步_高一数学_数学_高中教育_教育专区。第一章 三角函数单元测试一.选择题:本大题共 12 小题,每小题 5 分,共 60 分。) B.大于 90°的...

必修三第一章算法初步

必修三第一章算法初步_数学_高中教育_教育专区。数学必修三第一章 必修三第一章算法初步一.选择题(共 21 小题) 1. (2015?重庆)执行如图所示的程序框图,若...

必修三第一章算法初步练习题及解析

必修三第一章算法初步练习题及解析_高二数学_数学_高中教育_教育专区。高中数学必修三第一章算法初步练习题及解析 一.选择题(共 21 小题) 1. (2015?重庆)...

必修3,第一章,算法初步

不能确定 第 9 页(共 24 页) 必修 3,第一章,算法初步参考答案与试题解析 一.选择题(共 32 小题) 1. (2016?潮南区模拟)阅读程序框图,如果输出的函数值...