当前位置:首页 >> 数学 >>

人教版高中数学A版必修三优秀教案(第一章


1.2 基本算法语句 1.2.1 输入语句、输出语句和赋值语句 整体设计 教学分析 通过上一节的学习, 学生了解了算法的含义, 学习了用算法步骤和程序框图表示算法的 方法,本节介绍用程序设计语言表示算法的方法. 算法步骤和程序框图表示的算法,计算机 是不能理解的,程序是算法的精确形式,是计算机可以理解的算法.本节的教学重点是通过 实例使学生理解三种基本算法语句的结构和用法,并在此

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

2°提示内容提示用户输入的是什么信息,必须加双引号,提示内容 “原原本本”的在计算机 屏幕上显示,提示内容与变量之间要用分号隔开. 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“提示内容”; 表达式 可输出表达式的 值,计算 ①又称“打印语 句”,将表达式的值 在屏幕上显示出来 ②表达式可以是变 量、计算公式或系 统信息 ③一个语句可以输 出多个表达式.不同
2

赋值语句 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 “提示内容”;变量
3

其中,“提示内容”一般是提示用户输入什么样的信息,每次运行例 1 中的程序时,依次输入 -5,-4,-3,-2,-1,0,1,2,3,4,5,计算机每次都把新输入的值赋给变量“x”,并按“x” 新获得的值计算变量“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
4

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

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

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

第一步,计算平均数 x ?

第二步,计算方差 s2=

(a ? x ) 2 ? (b ? x ) 2 ? (c ? x ) 2 . 3

第三步,得到的结果即为所求. 程序如下: 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
5

点评:交换 a,b 的值可通过下面三个语句来实现: t=a 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. 点评:语句的识别问题是一个逆向性思维,一般我们认为我们的学习是从算法步骤(自然语

6

言)至程序框图,再到算法语言(程序).如果将程序摆在我们的面前时,我们要先识别每 个语句,再整体把握并概括出程序的功能. 拓展提升 已知某生某三科的成绩为 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. 设计感想 本节的引入阐明了程序框图与算法语句的关系, 本节利用框图与语句的对应关系降低了 本节的学习难度.由于本节是算法语句的开始,所以本节选用了大量难度较低的算法语句供 学生练习, 让学生充分体会程序框图与算法语句的关系, 为今后的学习打好基础并树立信心.

7

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

8

(2)条件语句 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)程序中的条件语句与程序框图中的条件结构存在一一对应关系如下图:

应用示例

9

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

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

所以算法步骤可以写成: 第一步,输入一个实数 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
10

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 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
11

t=a a=b b=t END IF IF c>a THEN t=a a=c 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 的值,结束.
12

(程序框图如下图)

程序如下: (“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
13

y=0 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 元收取通话费, 不足一分钟按以一分钟计算.设通话时
14

间为 t(分钟) ,通话费用 y(元) ,如何设计一个程序,计算通话的费用. 解:算法程序如下: 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. 设计感想 条件语句是算法语句的基础和核心,本节设计以条件结构和条件语句的对应关系为基 础,引导学生将程序框图转化为算法语句.本节的难点是正确区分叠加结构和镶嵌结构,并 会应用它们编写算法语句.本节选用大量精彩题目让学生反复训练,使学生熟练掌握程序框 图与算法语句的关系,达到解决本节难点的目的.

15

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

16

(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°当型循环结构:

17

应用示例 思路 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
18

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
19

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
20

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 分).
21

解:由于共有 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
22

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

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

23

思路 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 的最大公约数,写出算法分析,画出程序框图,写出算
24

法程序. 解:用两数中较大的数除以较小的数,求得商和余数: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 的最
25

大公约数,为什么可以转化为求 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. 点评:更相减损术与辗转相除法的比较:尽管两种算法分别来源于东、西方古代数学名著, 但是二者的算理却是相似的, 有异曲同工之妙. 主要区别在于辗转相除法进行的是除法运算, 即辗转相除;而更相减损术进行的是减法运算,即辗转相减,但是实质都是一个不断的递归 过程.
26

变式训练 用辗转相除法或者更相减损术求三个数 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,
27

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)用辗转相除法求最大公约数.
28

(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 的值,这
29

样每次都可以利用上一次计算的结果,这时,我们一共做了 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).
这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现. 算法步骤如下:

30

第一步,输入多项式次数 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. 上面的分层计算,只用了小括号,计算时,首先计算最内层的括号,然后由里向外逐层计算,
31

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

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;
32

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)举出常见的进位制.
33

(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)化为十进制数.
34

解: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 或所得商,然后取余数.具体计 算方法如下:

35

因为 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 进制数. 程序框图如下图:

36

程序: 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 转化为二进制数.
37

分析:把一个十进制数转换成二进制数,用 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. 设计感想 计算机是以二进制的形式进行存储和计算数据的, 而一般我们传输给计算机的数据是十 进制数据,因此计算机必须先将十进制数转换为二进制数,再处理,显然运算后首次得到的 结果为二进制数,同时,计算机又把运算结果由二进制数转换成十进制数输出.因此学好进 位制是非常必要的,另外,进位制也是高考的重点,本节设置了多种题型供学生训练,所以 这节课非常实用.

38


相关文章:
人教版高中数学A版必修三优秀教案(第一章 算法初步)
人教版高中数学A版必修三优秀教案(第一章 算法初步)_高一数学_数学_高中教育_教育专区。本教案详细介绍了教学目标、重点、难点、教学方法及导入新课引用方法,是值得...
高中数学必修3教案完整版新课标人教A版
高中数学必修3教案完整版新课标人教A版_数学_高中教育_教育专区。2015 年人教版...数学与应用数学 2015 年 1 月 22 日 第一章算法初步 一、课标要求: 1、本...
人教版高中数学A版必修三优秀教案(第一章__算法初步)
人教版高中数学A版必修三优秀教案(第一章__算法初步)_数学_高中教育_教育专区。1.2 基本算法语句 1.2.1 输入语句、输出语句和赋值语句 整体设计 教学分析 ...
高中数学(人教版必修3)《第一章+算法初步》教学设计(共12课时)
高中数学(人教版必修3)《第一章+算法初步》教学设计(共12课时)_高三数学_数学_高中教育_教育专区。第一章算法初步一、课标要求: 1、本章的课标要求包括算法的...
人教版高中数学必修3全套教案
高中数学教案(人教 A 版必修全套) 【必修 3 教案|全套】目录 第一章 算法...(分数>80)和优秀(分数>90)的 人数. 分析:用循环结构实现 40 个成绩的输入,...
人教版高中数学必修3全册教案
人教版高中数学必修3全册教案_数学_高中教育_教育...键单击鼠标打开名师教学视频全册播放 第一章 算法...a , b , r 或 D , E , F 的方程组; 第...
高中数学必修3第一章教案
人教A版人教A版隐藏>> 高中数学必修 3 第一章教案 1.1.1 算法的概念一、三维目标: 1、 知识与技能: (1)了解算法的含义,体会算法的思想。 (2)能够用自然...
人教版高中数学A版必修三优秀教案(第三章概率)
人教版高中数学A版必修三优秀教案(第三章概率)_数学_高中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 人教版高中数学A版必修三优秀教案(第三章概率)_...
人教版高中数学必修3全套教案(整理后)
人教版高中数学必修3全套教案(整理后)_高一数学_...第一章 算法初步 复备记录 授课时间:第 1.1 ...数学必修三 人教 A 版 第 1 页(共 85 页) 复...
人教版高中数学必修3教案
人教版高中数学必修 3 教案 第一章 算法初步 1.1.1 算法的概念 一、教学...0 ? 第一步:②×A1-①×A2,得(A1B2-A2B1)y+A1C2-A2C1=0;③ -2- ...
更多相关标签:
化学必修一第一章教案 | 必修四数学第一章教案 | 生物必修三第一章教案 | 数学必修2第一章教案 | 人教版历史必修一教案 | 人教版地理必修一教案 | 人教版化学必修一教案 | 人教版语文必修二教案 |