2006.9苏教版算法教案[上学期]

文档属性

名称 2006.9苏教版算法教案[上学期]
格式 rar
文件大小 147.3KB
资源类型 教案
版本资源 苏教版
科目 数学
更新时间 2006-10-22 19:46:00

内容文字预览

东台市唐洋中学高二数学组
§5.44 算法案例(3课时)
教学目标:1.能综合运用所学的算法知识解决实际问题,会用自然语言,流程图和伪代码表述问题的算法过程。
2.综合运用算法的知识,体验我们古代悠久灿烂的数学文化。
教学重点:中国剩余定理,辗转相除法,二分法中的算法思想。
教学难点:用流程图和相应的伪代码表述辗转相除法,二分法。
第一课时
一、问题情境
1.韩信点兵-孙子问题
我国古代对数学作出了巨大的贡献,其中“中国剩余定理”比较著名。
“中国剩余定理”是“孙子问题”的通用解法。
“孙子问题”记载在《孙子算经》中,原文是:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”
《孙子算经》中给出了求解关键的步骤,南宋数学家秦秋韶对该问题加以了推广,又发现了一种新的算法,叫“大衍求一术”。后来这种解法传到欧洲,欧洲学者发现此解法和高斯的解法上是一致的,但比高斯早了500余年。
孙子问题的算法名称很多,宋代周密称为“鬼谷算”、“隔墙算”。宋代杨辉﹝1275﹞称为“秦王暗点兵”、“剪管术”,明代程大位叫它“物不知总”、“韩信点兵”。
2.孙子问题的现代数学描述
“孙子问题”相当于求关于x,y,z的方程组
的正整数解。
上面的方程组称为不定方程组,这类方程组中未知数的个数通常多于方程的个数。
二、算法设计
一些特定类型的不定方程,可以通过数论中的知识求解,但有了计算机以后,我们可以利用计算机逐个搜索的方法去寻找满足条件的解。
1.自然语言
(1)如何依次检索正整数?(采用循环结构)
(2)该循环何时结束?(找到满足条件的整数为止)
(3)一个正整数m什么时候满足方程?
m同时满足被3除余2,被5除余3,被7除余2。
说明:m被3除余2用符号表示为Mod(m,3)=2;m被5除余3用符号表示为Mod(m,5)=3;m被7除余3用符号表示为Mod(m,7)=2;
2.流程图
学生活动:如何用流程图描述你的算法?
可能出现以下两种描述:
(1)采用直到型循环:
(2)采用当型循环
3.伪代码
直到型循环可以通过If和Goto语句实现,但这样的代码结构性比较差。我们仅用伪代码实现当型循环。
4.利用VBA实现代码
程序说明:
1.“≠”VB语言中用<>表示;
2.Mod (m,3)在VB中用m Mod 3表示;
3.VB程序中“Or”表示“或”
4.VB程序中使用了符号“_”表示下一行和该行是一个完整的语句。
三、数学运用
本节课我们利用循环结构实现了数字的搜索问题,而且学习了使用逻辑运算符“Or”实现了多种约束条件的判断。
例 有3个连续的自然数,其中最小的能被15整除,中间的能被17整除,最大的能被19整除,求满足要求的一组三个连续的自然数。
分析:本题的其实就是求解不定方程组
算法:
S1 取m=1;
S2 当m不能被15整除,或m+1不能被17整除,或m+2不能被19整除,则mm+1,转S2;否则输出m,m+1,m+2,算法结束;
流程图:
伪代码:
思考:以下伪代码是否可行?
四、回顾反思
1.韩信点兵-孙子问题的求解算法;
2.利用循环结构实现整数的搜索;
3.利用逻辑运算符Or实现多条件的判断。
五、作业
P34 复习题9
第二课时
一、问题情境
在小学,我们学过求两个正整数的最大公约数的方法,先用两个数公有的质因数连续去除,一直到所得的商是互质数为止,然后把所以的除数乘起来。
当两个数公有的质因数较大时(如204与85),使用上述方法求最大公约数连续去除就比较困难,下面给大家介绍一种古老而有效的方法——辗转相除法。
引例1 求204与85的最大公约数。
204=85×2+34
从这一步说明,204与85的最大公约数也应该是85与34的最大公约数。
85=34×2+17
从这一步说明,85与34的最大公约数也应该是34与17的最大公约数。
34=17×2
从这一步说明,34与17的最大公约数就是17。
所以204与85的最大公约数是17。
引例2 求8251与6105的最大公约数。
8251=6105+2146
从这一步说明,8251与6105的最大公约数也应该是6105与2146的最大公约数。
6105=2146×2+1813
从这一步说明,6105与2146的最大公约数也应该是2146与1813的最大公约数。
2146=1813+333
从这一步说明,2146与1813的最大公约数也应该是1813与333的最大公约数。
这样坚持下去:
1813=333×5+148
333=148×2+37
148=37×4
所以8251与6105的最大公约数是34。
这就是辗转相除法,我们可以证明,对于任意两个正整数,上述步骤总可以在有限步之后完成,从而总可以用辗转相除的方法求出最大公约数。
一般情况下:如何用辗转相除法找出两个正整数a,b的最小公约数?
二、算法设计
1.自然语言
(1)结合引例1和引例2,思考应该利用什么结构实现该算法。(循环结构)
(2)每一次循环中所进行的是什么样的运算?(求a÷b的余数)
(3)循环何时结束?下一次循环的输入整数应该是什么?
算法:
S1 输入两个正整数a,b(a>b);
S2 若Mod(a,b)=0,则输出最大公约数b,算法结束;否则r Mod(a,b),a b,br,转S2.
2.流程图
3.伪代码
思考:rmod(a,b)
ab
br
能改为
ab
b mod(a,b)吗?
4.利用VBA实现代码
三、数学运用
例1 两个正整数的最小公倍数,实际上就是这两数乘积除以它们的最大公约数,试画出求正整数a,b最小公倍数的流程图,并写出其伪代码。
流程图(略)
伪代码:
例2:下面一段伪代码的目的是求
A.求a,b的最小公倍数 B.求a,b的最大公约数
C.求a被b整除的商 D.求b除以a的余数
分析:解题关键就是:a-int(a/b)×b=mod(a,b)
答案是B
四、回顾反思
1.辗转相除法的算法;
2.如何实现当型循环。
五、作业
P31 习题1.3 2
第三课时
一、问题情境
用二分法求方程x2-2x-1=0的近似解(精确到0.1).
首先画出函数f(x)=x2-2x-1的图象,从图象上可以发现,方程x2-2x-1=0的一个根x1在区间(-1,0)内,另一个根x2在区间(2,3)内.
据函数图象,我们发现f(2)=-1<0,f(3)=2>0,即f(2)·f(3)<0,由二次函数的单调性表明图象在区间(2,3)内仅穿越x轴一次,即方程在区间(2,3)内有惟一解.
可以将区间一分为二,使包含根的区间长度缩小
下面计算2,3的平均值(以下称之为区间的中点)2.5所对应的函数值f(2.5),并进一步缩小根所在的区间.
f(2.5)=0.25>0,即f(2)·f(2.5)<0,故近似解在区间(2,2.5)内.
通过依次取区间中点的方法,将根所在的区间逐步缩小,并列出表格:
区 间 区间中点的值 中点对应的函数值
(2,3) 2.5 0.25
(2,2.5) 2.25 -0.4375
(2.25,2.5) 2.375 -0.10938
(2.375,2.5) 2.4375 0.066406
(2.375,2.4375)
直到区间的长度小于精度要求,即(2.375,2.4375)即可,此区间内满足精确度的值只有唯一的2.4.
如果精确度再要求高一点,就要经过更加复杂的计算,但方法是固定的,我们可以借助于计算机程序来完成这个任务。
二、算法设计
问题:如果方程f(x)=0在某区间[a,b]内有一个根,如何利用二分法搜索符合误差限制c的近似解?
1.算法
S1 取[a,b]的中点 x0=,将区间一分为二;
S2 若f(x0)=0,则x0就是方程的根;否则:
若f(a)·f(x0)<0,则x∈(x0,b),用x0代替b, 否则用x0代替a.
S3 若|a-b|说明:由于这儿要求误差不超过c,本算法中循环终止的条件和必修1中学到的二分法中循环终止的条件不同,而且对误差的限制更容易利用计算机实现。
2.流程图
思考:用二分法求方程x3-x-1=0在区间[1,1.5]内的一个近似解(误差不超过0.001)
3.伪代码
说明:二分法的算法比较复杂,其综合使用了
我们前面学习的三种结构,其中循环结构使用了
直到性循环,即进行的是“后测试”,使用while
语句难以实现,教材中是使用IF和Goto语句结合
实现的,下面所给的伪代码则使用了“Loop Until”
语句。另外区间端点及误差限制也可象教材中那样
利用键盘输入。
思考:1.你能将
If f(a)f(x0) <0 Then
bx0
Else
ax0
End If改写吗?
2.你能用当型循环实现该算法吗?
4.利用VBA实现代码
三、数学运用
例 编写一个求的近似值的算法,
要求精确度不超过0.0001,写出其伪代码。
思路分析:是方程x2-3=0在
[1,2]中的根,因此求的近似值就是
求方程x2-3=0在[1,2]内的一个近似解。
伪代码如下:
说明:本问题中由于是无理数,因此
可以省略f(x0)=0的判断。
四、回顾反思
1.二分法的求解算法;
2.如何实现直到型循环。
五、作业
P30 练习2 P31习题1.3 1
开始
结束
开始
m←2
Mod(m,3)≠2或
Mod(m,5)≠3或
Mod(m,7)≠2
m←m+1
输出m
结束
Y
N
m 2
While Mod (m,3)≠2 或
Mod (m,5)≠3 或
Mod (m,7)≠2
m m+1
End While
Print m
Print m
开始
m←1
Mod(m,15)≠0或
Mod(m+1,17)≠0或
Mod(m+2,19)≠0
m←m+1
输出m,m+1,m+2
结束
Y
N
m 1
While Mod (m,15)≠2 或
Mod (m+1,17)≠0 或
Mod (m+2,19)≠0
m m+1
End While
Print m,m+1,m+2
Print m
k1
a15k
While Mod(a+1,17)≠0 或
Mod(a+2,19)≠0
kk+1
a15k
End While
Print a,a+1,a+2
Print m
N
开始
输入a,b
Mod(a,b)=0
r←Mod(a,b)
输出b
结束
Y
a←b
b←r
Read a,b
While Mod(a,b)≠0
rmod(a,b)
ab
br
End While
Print b
Read a,b
cab
While Mod(a,b)≠0
r Mod(a,b)
ab
b Mod(a,b)
End While
Print c/b
10 Read a,b
20 If a/b=Int (a/b) Then 90
30 ca-Int(a/b)×b
40 ab
50 bc
60 Goto 40
70 Print b
ax0
bx0
|a-b|输出x0
Y
N
Y
N
N
Y
结束
x0(a+b)/2
f(a)a3-a-1
f(x0)x03-x0-1
f(x0)=0
f(a) f(x0)<0
开始
a1
b1.5
c0.001
10 a1
20 b1.5
30 c0.001
40 Do
50 x0(a+b)/2
60 f(a)a3-a-1
70 f(x0)x03-x0-1
80 If f(x0)=0 Then 150
90 If f(a)f(x0) <0 Then
100 bx0
110 Else
120 ax0
130 End If
140 Loop until |a-b|<c
150 Print x0
10 a1
20 b2
30 c0.0001
40 Do
50 x0(a+b)/2
60 f(a)a2-3
70 f(x0)x02-3
80 If f(a)f(x0) <0 Then
90 bx0
100 Else
110 ax0
120 End If
130 Loop until |a-b|<c
140 Print x0
PAGE
1东台市唐洋中学高二数学组
第三课时 条件语句
教学目标
1.掌握条件语句的一般形式,进一步体会算法的基本思想.
2.体会将具体问题的伪代码和流程图相互转化的过程.
教学重点
条件语句的一般形式
教学过程
  一、问题情境
学习函数时我们学过分段函数,实际生活中的许多函数关系都是分段函数.例如:
某种食品进行促销活动,若购买3袋或3以下,每袋10元;若购买3袋以上,每袋7.5元.用x(袋)表示购买的袋数,用y(元)表示购买费用,则y是x的函数,函数解析式为y=
这是一个分段函数,在计算购买费用时,要先判断自变量x的范围,再进行计算.如果要为这个问题设计一个算法,在算法中应当包含选择结构.
二、学生活动
根据前面所学的知识,由学生自己设计上述问题的算法并画出流程图.
S1 输入购买的袋数x;
S2 如果x≤3,那么y ← 10x,否则y ← 7.5x;
S3 输出y.
能不能写出该算法的伪代码呢?
三、建构数学
用条件语句来表示选择结构.
条件语句的一般形式是
If A Then
B
Else
C
  End If
其中A表示判断的条件,B表示满足条件时执行
的操作内容,C表示不满足条件时执行的操作内容,
End If表示条件语句结束.注意“End If”不能省略.
有了条件语句就可以写出上面算法过程的伪代码
Read x
If x≤3 Then
y=10x
Else
y=7.5x
End If
Print y
注意:(1)条件语句主要有两种形式:“行If语句”和“块If语句”,为了避免混淆,建议尽量使用“块If语句”;
(2)书写时“Then”和“Else”的分支缩进书写便于阅读和理解.
关于“行If语句”:其形式为
If A Then B
[Else C]
行If语句中判断条件A和满足条件时执行的操作B均只有一句话,可以没有“Else C”,结束时没有“End If”.
四、数学运用
  例2 儿童乘坐火车时,若身高不超过1.1m,则无需购票;若身高超过1.1m,但不超过1.4m,可买半票;若超过1.4m,应买全票.试设计一个购票的算法,写出伪代码,并画出流程图.
  解:上述购票的算法步骤为:
  S1 测量儿童身高h;
  S2 如果h≤1.1,那么免费乘车;否则,如果h≤1.4,那么购买半票乘车;否则,购买全票.
伪代码如下:
  Read h
  If h≤1.1 Then
  Print 免费乘车
  Else
  If h≤1.4 Then
  Print 半票乘车
  Else
  Print 全票乘车
  End If
  End If
  说明:选择结构可由条件语句实现,即满足条件A时,执行某种操作,满足条件B时,执行另外的操作.但在实际问题中,往往可供选择的结果不止两种,这时可利用条件语句的嵌套实现.例2算法的自然语言叙述容易写出,但写出相应的伪代码是本题的一个难点,要注意条件语句“If-Then-Else”的嵌套.在书写时为了便于理解和阅读可以采取缩进书写,嵌套的If语句中“If”、“Else”和“End If”对齐,更易于理解.注意结合流程图理解条件语句的嵌套.
  例3 已知函数
    y=
试写出计算y值的算法.
解:算法如下:
  S1 输入x;
  S2 如果x>0,那么y ← 1;否则,如果x=0,
那么y ← 0;否则y ← -1.
  伪代码如下:
  Read x
  If x>0 Then
  y ← 1
  Else
  If x=0 Then
  y ← 0
  Else
  y ← -1
  End If
  End If
  Print y
  该分段函数称为“符号函数”.
  例4(选讲) 输入三个数,输出最小数.
解:算法如下:
Read a,b,c
  x ← a
  If b<x Then x ← b
  If c<x Then x ← c
  Print x
  注:这里使用的是“行If语句”,没有“Else C”,也不需要“End If”.
  参考练习
  1.有一个算法如下:
    S1 输入x;
S2 如果x>0,那么z ← 1;否则z ← -1;
S3 z ← z+1;
S4 输出z.
  试写出上述算法的伪代码,并画出流程图.
解:该算法的伪代码如下:
Read x
  If x>0 Then
  z ← 1
  Else
  z ← -1
  End If
  z ← z+1
  Print z
  2.电信部门规定:拨打市内电话时,如果时间不超过3分钟,则收取通话费0.22元;如果通话时间超过3分钟,则超过部分按每分钟0.1元收取通话费,不足1分钟按1分钟计.设通话时间为t(分钟),通话费为y(元),试设计一个计算通话费的算法.
  解:通话费y关于时间t的函数为
           y=
解决这一问题的算法步骤如下:
S1 输入时间t;
S2 如果t≤3,那么y ← 0.22;否则,如果t∈Z,那么y ← 0.22+0.1(t-3);否则,y ← 0.22+0.1([t-3]+1).
伪代码如下:
  Read 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
说明:函数解析式中[t-3]表示t-3的整数部分,在伪代码中,“取整”这一操作由函数“int”实现.
  五、回顾小结
  1.在算法设计中,选择结构可由条件语句实现.
2.条件语句的一般形式为
If A Then
B
   Else
C
   End If
其中A表示判断的条件,B表示满足条件时执行的操作内容,C表示不满足条件时执行的操作内容,End if表示条件语句结束.注意“End If”不能省略.
  六、家庭作业
课本20页2,3
练习册
输入x
x>0
z ← 1
z ← -1
z ← z+1
输出z
结束
Y
N
开始
开始
输入h
h≤1.1
免费乘车
结束
Y
N
h≤1.4
Y
N
全票乘车
半票乘车
开始
输入x
x>0
y ← 1
结束
Y
N
x=0
Y
N
y ← -1
y ← 0
输出y
输入x
x>0
z ← 1
z ← -1
z ← z+1
输出z
结束
Y
N
开始
PAGE
- 1 -东台市唐洋中学高二数学组
必修3第5章算法初步
§5.3 基本算法语句
教学目标:
理解用伪代码表示的算法语句——赋值语句、输入输出语句,进一步体会算法的思想.
第一课时(赋值语句、输入输出语句)
通过前两节的学习,我们初步掌握了用自然语言描述算法过程,并且用流程图把算法表示出来,但这些还不能被计算机所理解和识别,因此,还必须寻找一种桥梁,把自然语言或者流程图和计算机所能识别的语言沟通起来,真正发挥计算机的作用,这个桥梁就是“伪代码”.本节我们主要伪代码来学习基本的算法语句.
1 伪代码
伪代码是介于自然语言和计算机语言(也就是我们常说的程序)之间的文字和符号,它的出现是在不同的计算机语言的背景下,为了方便大家交流的一种相对集中的语言,是表达算法的简单而实用的好方法,本节正是通过伪代码来学习基本的算法语句.
赋值语句
赋值语句的一般格式:变量表达式或变量,字母表示为x y,表示将y的值赋给x,它的实质是先将右边表达式或变量的值计算出来,然后把该值赋给左边的变量,使左边的变量等于表达式或变量的值.
注:
(1) 赋值号左边只能是变量,而不能是表达式或常数
(2) 赋值号左右两边不能对换,x y与y x的含义一般不同
(3) 赋值号左右两边的量应是同类型的
如:x 2
x x3
则运行结果为8.
输入输出语句
(1)输入语句:用“Read a,b”表示输入的数据依次送给a,b
输入语句也是赋值语句,只不过输入语句可以处理批量数据的赋值问题,如
“Read a,b,c,e,f”一下可以读入5个数据
(2)输出语句:用“Print x”表示输出运算结果x
输出语句是程序中不可缺少的语句,没有输出的程序是无意义的程序。
可以一次输出多个变量的值,如“Print x,y” 表示输出运算结果x,y
当想输出字符时,字符内容应加在引号内
例1 写出求x=23时多项式7x3+3x2-5x+11的值的算法
算法1
x 23
p 7x3+3x2-5x+11
算法2
x 23
p ((7x+3)x-5)x+11
注:
算法1又作6次乘法,而算法2只作3次乘法,故算法2优于算法1
例1中的算法2称为秦九韶算法,其特点是:通过一次式的反复计算,逐步得到高次多项式的值;对于一个n次多项式,只要作n次乘法和n次加法
例2 若三角形的三边长分别为a,b,c,借助公式S=
其中p=(a+b+c),求三角形的面积。试用输入输出语句表示计算面积的一个算法
解:Read a, b,c
p(a+b+c) h
xp-a
yp-b
zp-c
S sqr(p﹡x﹡y﹡z)
Print s
End
例3 “鸡兔同笼”是我国岁朝时期数学著作≤孙子算经≥中的一个题目
今有稚兔同笼,上有三十五头,下有九十四足,问稚兔个几何
设有x只鸡,y只兔
根据题意,得
下面设计一个解二元一次方程组得通用算法
设二元一次方程组为(a1b2-a2b1≠0)用消元法解得
伪代码
流程图:
当输入a1,b1,c1, a2,b2,c2分别为1,1,35,2,4,94时,输出的x,y分别为23,12,即鸡兔同笼的答案是23之鸡和12只兔.
开始
Read a1,b1,c1, a2,b2,c2,
x (c1b2-c2b1)/(a1b2-a2b1)
y (a1c2-a2c1)/(a1b2-a2b1)
Print x,y
输入a1,b1,c1, a2,b2,c2,
x (c1b2-c2b1)/(a1b2-a2b1)
y (a1c2-a2c1)/(a1b2-a2b1)
输出x,y
结束东台市唐洋中学高二数学组
第二课时 流程图 顺序结构
教学目标
1.了解常用流程图符号(输入输出框、处理框、判断框、起止框、流线等);
2.理解算法的两大要素:操作和控制结构;能用流程图表示顺序、选择、条件等三种基本结构;
3.能识别简单的流程图所表示的算法;
4.在学习流程图描述算法的过程中,发展有条理的思考与表达的能力,提高逻辑思维的能力.
教学难点与重点
1.重点:算法的三种结构-顺序结构
2.难点:用流程图表示算法
教学过程
一、问题情境
问题1 计算1+2,1+2+3,1+2+3+4,1+2+3+4+5,…,
1+2+3+…+99,1+2+3+…+99+100.
问题2 计算1+2+3+…+n.
问题3请设计一个算法,求满足条件的最小正整数n:1+2+…+n>2006.
二、学生活动
为解决问题3,设计算法:
S1 取n=1;
S2 计算;
S3 如果>2006,则n为所求;否则nn+1,重复S2.
三、数学理论
(1) 流程图的符号:
起止框 输入输出框 判断框 处理框 流线
起止框:表示算法的开始和结束,常用圆角矩形表示;
输入输出框:表示输入或输出操作,一般用平行四边形表示;
判断框:根据条件决定执行两条路径中的某一条,一般画成菱形;
处理框:表示处理和运算,一般画成矩形;
流程线:表示执行步骤的路径,一般用箭头线表示.
(2)流程图(将问题的算法用流程图符号表示出来)是由一些图框和带箭头的流线组成的图形,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流线表示操作执行的先后次序.
算法可以由顺序、选择、条件结构三种结构通过组合或嵌套表达,而流程图则比较有条理、直观地表示算法的三种结构.
例课本P7的流程图.
(3)顺序结构
问题4 写出作△ABC的外接圆的一个算法.
解 S1 作AB的中垂线a;
S2 作AC的中垂线b;
S3 以a,b的交点O为圆心,以OA为半径作圆;
S4 圆O为所求作的圆.
顺序结构:依次进行多个处理的结构.是最简单、最基本的结构.

四、数学应用
例1 已知两个单元里存放了变量x,y的值,
试交换两个变量的值.
解 为达到交换的目的,需要一个
单元存放中间变量p,其算法是:
S1 p←x;
S2 x←y;
S3 y←p.
流程图如右:
说明 画流程图时要注意的问题:
(1)先建立解决问题的算法,并将其用自然语言表示;
(2)弄清问题的初始值、条件、表达式、结构、流向等;
(3)顺序结构是依次进行多个处理:特定的符号表示特定的意义,图形框内的语言要简练,流向是自上而下的,必须有输入与输出口.
例2 给出求点A(1,-1)关于直线2x-y+4=0的对称点的一个算法,并画出流程图.
解 S1 过点A(1,-1)与直线2x-y+4=0垂直的直线方程是x+2y+1=0;
S2直线2x-y+4=0与直线x+2y+1=0的交点B的坐标是(-,);
S3 点A(1,-1)关于点B(-,)对称的点C的坐标是(-,);
S4 输出点C的坐标(-,).
流程图如右:
例3 若x1,x2是方程x2-x-1=0的两个根,求x12+x22的值.
给出解决上面问题一个算法,并画出流程图.
解S1 由韦达定理得到x1+x2=1,x1x2=-1;
S2 将x12+x22用x1+x2 ,x1x2
表示:x12+x22=(x1+x2)2-2x1x2;
S3 将x1+x2=1,x1x2=-1分别
代入上式得到x12+x22=3;
S4 输出x12+x22的值.
流程图为:
五、问题小结
(1)写出求过两点(-1,2),(3,7)的直线在x轴上的截距的一个算法,并用流程图表示出来.
(2)平行四边形ABCD的顶点A(1,1),B(-1,2),C(3,4),写出一个求点D的坐标的算法,并用流程图表示.
6.作业 P9 练习1,2 .
1.2 .2 选择结构
教学目标
1.了解常用流程图符号(输入输出框、处理框、判断框、起止框、流线等);
2.理解算法的两大要素:操作和控制结构;能用流程图表示顺序、选择、条件等三种基本结构;
3.能识别简单的流程图所表示的算法;
4.在学习流程图描述算法的过程中,发展有条理的思考与表达的能力,提高逻辑思维的能力.
教学难点与重点
1.重点:算法的三种结构-选择结构
2.难点:用流程图表示算法
教学过程
一、问题情境
问题1 已知两点(x1,y1),(x2,y2),求过两点的直线的斜率.
用流程图表示解决上面问题的一个算法如下:
上面的流程图对吗?
二、学生活动,建构数学
经讨论,发现当x1≠x2时,k=;当x1=x2时,斜率不存在,但流程图中没有对此判断.
正确的算法应是:
S1 输入x1,y1,x2,y2的值;
S2 当x1≠x2时,计算k=,输出k的值;否则输出“斜率不存在”.
那么如何在流程图中实现呢?就需要加入判断的部分.
三、数学理论
选择(分支)结构:先根据条件作出判断,再决定执行哪一种操作的结构.

在选择结构中,含一个判断框,当条件p成立时,执行A;否则执行B.
说明 在上面的选择结构中,只能执行A,B中的一个,不可能两个都执行;当两个框中可以有一个是空的,即不执行任何操作.
问题1中的流程图应是:
四、数学应用
例1 设计求解一元二次方程ax2+bx+c=0(a≠0)的一个算法,并用流程图表示.
分析 由于一元二次方程不一定有实数根,所以要对Δ=b2-4ac的符号进行判断,再决定是否用求根公式求解,在算法中应有选择结构.
解 S1 输入a,b,c的值;
S2 Δ← b2-4ac;
S3 若Δ<0,则输出“原方程无实数解”;
否则x1← ,x2← .
用流程图表示:
说明 若将a≠0去掉,试重新完成上面的问题.
例2 已知三个实数a,b,c,试给出一个确定三个数最大值的算法(用流程图表示).

说明 这里用到选择结构的嵌套.
五、问题小结
国内投寄信函,每份不超过20g的邮资80分;超过20g而不超过60g的邮资160分;依次类推,试写出一个一份xg(0<x≤60)的信函应付邮资y的一个算法,并用流程图表示.
1.2.3 循环结构
教学目标
1.理解循环结构,了解当型循环和直到型循环,会区分它们的异同;
2.会用流程图设计含循环结构的算法,提高思维的条理性;
3.会将两种形式的循环结构相互转化,在此过程中体验两者的本质区别.
教学重点
1.理解当型循环和直到型循环;
2.会用流程图设计循环结构.
教学难点
1.理解和区别当型循环和直到型循环;
2.两种循环间的互化.
教学过程
第一课时
一、问题情境
恰逢都灵冬奥会,运动员们在前方赛场上全力拼搏、为国争光,与此同时,北京也正在为2008年第29届夏季奥运会处于紧张的筹备之中.2001年7月13日的那个夜晚相信大家依然记忆犹新,经过几轮投票,最终获得主办权,你知道主办权的归属是如何通过投票产生的吗?
操作的程序:首先进行第一轮投票,如果有一个城市的得票数超过总票数的一半,那么该城市获得主办权;如果没有一个城市的得票数超过总票数的一半,那么淘汰得票数最少的城市,重复上述过程,直到选出一个申办城市为止.
我们已经对流程图有所了解,你能用流程图简洁的表示出这个操作过程吗?
二、学生活动、建构数学
首先要写出解决问题的算法结构:
S1 投票;
S2 统计票数,如果有一个城市的得票数超过总票数的一半,那么该城市就获得主办权,转S3,否则淘汰得票数最少的城市,转S1;
S3 宣布主办城市.
在算法中,出现了一种可能需要多次重复操作的结构,那么这种重复操作又应该如何执行呢?就是我们要研究的第三种结构形式.
三、数学理论
循环结构:又称为“重复结构”,即根据条件是否成立,
以决定是否重复执行某些操作.
如右图所示,先执行A框,在判断给定的条件p,若p为“假”则在执行A,如此反复,直到p为“真”为止.
这是一种比较常见的循环结构,称之为直到型(Until型)循环.
注意 直到型循环的条件是不满足条件p时才重复执行循环体.
问题中的流程图应表示为():
但图1-1这个流程图体现的并不是纯粹的直到型循环,在条件p为“假”时,又经过一个处理框才进入再次循环.当然可以改写成直到型循环,如图1-2所示.
现在,你能读懂书上P7/图1-2-1了吗?
四、数学应用
例1 写出求1×2×3×4×5值的一个算法,并用流程图表示.
分析 注意循环结构的模式要求.
解 算法一:S1 先求1×2,得到2;
S2 将S1得到的结果再乘以3,得到6;
S3 将S2得到的结果再乘以4,得到24;
S4 将S3得到的结果再乘以5,得到最后结果120.
分析 对于累乘的数的个数比较少时,可以使用.但随着累乘数的个数的增加,算法的程序会加长,造成不便.
累乘也是一个重复执行的过程,可使用循环结构.
引入循环结构中的一些常用变量:
①计数器:即计数变量,用来记录某个事件发生的次数,如n ← n+1.
②累乘器:即累乘变量,用来计算数据之积,如p ← p× i.
算法二:S1 T ← 1
S2 I ← 2;
S3 T ← T×I; {累乘,结果仍置于容器T中}
S4 I ← I+1; {计数,使I增加1}
S5 如果I不大于5,转S3,否则输出T,算法结束.
说明 请学生体会第二种算法中由于循环结构的出现带来的好处:形式简练,且具有通用性、灵活性.
变式练习 请学生考虑如果题目改成求1×3×5×7×9×11的值呢?
算法为:S1 T ← 1
S2 I ← 3;
S3 T ← T×I;
S4 I ← I+2;
S5 如果I不大于11,转S3,否则输出T,算法结束.
例1的流程图为:
例2 将下述算法用流程图表示,并说出这个算法的意义.
算法 S1 S ← 1;
S2 I ← 2;
S3 如果I≤100,转到S4,否则到S6;
S4 S ← S+I;
S5 I ← I+1,转到S3;
S6 输出S,算法结束.
解 流程图为右图所示:
算法表示的是1+2+3+…+100累和求值.
类似于累乘器,算法中出现的变量可视为累加器,用来计算数据之和,如S ← S+i.
说明 这也是一个明显的循环过程,但不是直到型循环结构,这是我们要介绍的另一种重要的循环结构——当型(While型)循环.
这种循环,当给定的条件p为“真”时,反复执行A框操作,直到p为“假”时停止.循环结构如右图所示.
注意:当型循环的条件是满足条件时重复执行循环体.因此当型循环中的循环体可能一次都不执行;而直到型循环中的循环体至少会被执行一次.
五、课时小结
这节课介绍了两种循环结构,即直到型循环和当型循环.注意两种循环执行循环体的条件不同.但无论是哪一种循环结构,都必须包含条件结构,以保证在适当的时候终止循环.
六、作业
P14 练习1;习题1.1/7.
课课练.
第二课时
一、知识回顾
1.循环结构;
2.直到型循环、当型循环的区别.
二、数学应用、学生探索
例1:设计一个计算10个数的平均数的算法,并用流程图表示.
分析 已知10个数求平均数的算法设计比较简单,该题的关键在于输入10个数据的过程,需要使用循环结构,用累加器求和.
解 算法为:S1 S ← 0;
S2 I ← 1;
S3 输入G;
S4 S ← S+G;
S5 I ← I+1;
S6 如果I不大于10,转到S3;
S7 A ← ;
S8 输出A,算法结束.
说明 在累和时,常会赋值0给累和变量作为初始值,累积时,则赋初始值1给累积变量.
流程图为:
例2 请根据要求,将右图中的流程图填写完整.
编制计算y=x2的流程图,其中x=-10,-9,-8,…,0,1,…,9,10.
分析 流程图中使用的是循环结构,观察题中的自变量x的取值有规律.
解 ① x≤10;
② x ← x+1.
说明 右图流程图中的循环结构使用的当型循环,你能将其它改写为直到型循环吗?
直到型循环与当型循环通常可以互相转化.
需注意在将将当型循环改写为直到型循环时,循环体不变,但位置要放到条件之前,循环条件变为原来的相反条件;而直到型循环改写为当型循环时,过程相反.
例3 将316分解成两个正整数之和,其中一个数能被11整除,另一个能被13整数.写出求满足条件的一组解的一个算法,画出相应的流程图,并将其转化为另一种循环的形式.
解 算法:S1 x ← 0;
S2 x ← x+1;
S3 y ← 316-x;
S4 如果x能被11整除,且y能被13整除,转到S5,否则转到S2;
S5 输出x,y,算法结束.
流程图(直到型):
流程图(当型):
三、课时小结
1.在解决一些有规律的计算问题是,往往要用到循环结构;
2.在实现累和或累计时,对于这些变量,在程序初始时,一般要先赋值,可根据实际问题合理选择.
3.要明确直到型循环和当型循环的区别,在作相互转化时,要注意哪些地方需要改变.
四、作业
P14 习题5.1/8(并将流程图改写为另一种形式)
作AB的中垂线a
作AC的中垂线b
以a,b的交点O为圆心,以OA为半径作圆
结束
开始
A
B
p←x
x←y
y←p
结束
开始
求过点A(1,-1)与直线2x-y+4=0垂直的直线l的方程
求直线2x-y+4=0与直线l的交点B的坐标
求点A(1,-1)关于点B对称的点C
结束
输出点的坐标
开始
求x1+x2,x1x2的值
将x12+x22用x1+x2 ,x1x2表示
将x1+x2,x1x2的值分别代入计算
结束
输出x12+x22
开始
k← eq \f(y2-y1,x2-x1)
结束
输入x1,y1,x2,y2
输出k
开始
p
A
B
Y
N
k← eq \f(y2-y1,x2-x1)
输入x1,y1,x2,y2
输出k
x1≠x2
结束
Y
N
输出“斜率不存在”的值
开始
输入a,b,c
输出“方程无实数解”
Δ<0
结束
Y
N
输出x1,x2
Δ←b2-4ac
x1← eq \f(-b+\r(Δ),2a),x2← eq \f(-b-\r(Δ),2a)
开始
输入a,b,c
a>b,a>c
结束
Y
N
输出x
x←a
b>c
Y
x←b
x←c
N
开始
A
p
Y
N
图1-1
投票
有一城市
的得票数超过总票数的一半
Y
N
开始
输出该城市
结束
淘汰得票数最少的城市
图1-2
投票
有一城市
的得票数超过总票数的一半
Y
N
开始
输出该城市
结束
淘汰得票数最少的城市
图1-1
T ← 1
I>5
Y
输出T
结束
N
I ← 2
T ← T×I
开始
I ← I+1
S ← 1
I≤100
N
输出S
结束
Y
I ← 2
I ← I+1
开始
S ← S+I
A
p
N
Y
S ← 0
I>10
Y
输出A
结束
N
I ← 1
S ← S+G
开始
I ← I+1
输入G
A ← S/10
x ← -10

N
输出x,y
结束
Y
开始
y← x2

x ← -10
x>10
Y
输出x,y
结束
N
开始
y← x2
x ← x+1
x ← 0
x能被11整除,且y能被13整除
Y
输出x,y
结束
N
开始
x ← x+1
y ← 316-x
x ← 1
x不能被11
整除,或 y不能被13整除
N
输出x,y
结束
Y
开始
x ← x+1
y ← 316-x东台市唐洋中学高二数学组
5.3.4循环语句
教学目标
1.掌握两种循环语句的一般形式,进一步体会算法的基本思想.
2.能够熟练地运用两种循环语句.
教学重点
两种循环语句的形式和特点
教学过程
  一、问题情境
猴子第一天摘下若干个桃子,当即吃了一半,觉得还不过瘾,又多吃了一个.第二天将剩下的桃子吃掉一半,又多吃了一个,以后每天都吃前一天剩下的一半加一个.到第十天想吃时只剩下一个桃子了.求第一天共摘了多少个桃子?
分析:第十天的桃子数S10=1;第九天的桃子数S9=2×(S10+1)=4;第八天的桃子数S8=2(S9+1)=10;第七天的桃子数…这样不难算出第一天的桃子数.在计算每天剩下的桃子个数时步骤是相同的,即用后一天的桃子数加1再乘以2,直到算出第一天的桃子数为止.
该过程可以交给计算机做,能否设计一个算法?试画出流程图.
  二、学生活动
在本课之前学生已经学习了流程图以及算法设计的三种结构,所以将这个问题的解决留给学生.
  三、建构数学
能不能写出该算法的伪代码呢?用条件语句来表示选择结构.介绍两种循环语句.
  1.For循环语句
一般形式:
For I From“初值”To“终值”Step“步长”

End For
其中“For”和“End For”之间的步骤“…”称为循环体.若步长为1,“Step‘步长’”可以省略不写.
2.While循环语句
  一般形式:While A
       …
     End While
其中A表示判断执行循环的条件.“While”和“End While”之间的步骤“…”称为循环体.“While”循环语句的特点是前测试,即先判断,后执行.若初始条件不成立,则循环体的内容一次也不执行.
  用这两种循环语句可以写出上述问题的伪代码:
  四、数学运用
书上两个例子:
试设计一个算法,计算1×3×5×7×…×99.
  s ← 1                 s ← 1
  For i From 3 To 99 Step 2           i ← 1
  s ← s×i               While i≤99
  End For                   s ← s×i
Print s                    i ← i+2
End                   End While
                    Print s
                    End
试设计一个算法,找出满足1×3×5×7×…×__>10000的最小整数.
  s ← 1
i ← 3
While s≤10000
s ← s×i
   i ← i+2
End While
i ← i-2
Print i
End
说明:(1)从这两个例子中体会两种循环语句的区别:一般地,当循环次数已经确定时,可用“For”循环语句(从第一个例子中可以看出:在循环次数确定时,使用“For”循环语句书写更为简便);当循环次数不能确定时,可用“While”循环语句;
(2)在第二个例子中,循环语句结束后注意要将i的值减去2才是题中所要求的最小整数.
  例4 抛掷一枚硬币时,既可能出现正面,也可能出现反面,预先作出确定的判断是不可能的,但是假如硬币质量均匀,那么当抛掷次数很多时,出现正面的频率应接近于50%.试设计一个循环语句模拟抛掷硬币的过程,并计算抛掷中出现正面的频率.
  解:本题算法的伪代码如下:
s ← 0
Read n
For i From 1 to n
If Rnd>0.5 Then s ← s+1
End For
Print 出现正面的频率为
说明:随机函数“Rnd”可以产生0与1之间的随机数.该算法中用大于0.5的随机数表示出现正面,不大于0.5的随机数表示出现反面.若将伪代码中的“Rnd>0.5”改为“Rnd<0.5”,其效果是一样的.还要注意本题的循环体是一个“行If语句”,故不需要写“End If”.
思考:能否用“While”循环语句写出伪代码?
参考练习
课本23页练习1
  1.设计一个求1++++…+值的算法.
  解:本题算法的伪代码如下:
s ← 1
i ← 2
While i≤100
s ← s+
i ← i+1
End While
Print s
由于本题循环次数已定,故也可用“For”循环语句实现:
s ← 1
i ← 2
For i From 1 to 100
s ← s+
End For
Print s
  2.设计一个求小于1000的完全平方数的和的算法.
  解法一:
  s ← 0
  i ← 1
  While i×i<1000
  s ← s+i×i
  i ← i+1
  End While
  Print s
  解法二:
  i ← 1
  While i×i<1000
  i ← i+1
  End While
  n ← i-1
  s ← 0
  For j From 1 to n
  s ← s+j×j
  End For
Print s
说明:循环次数不确定时,一般采用“While”循环语句,但有时也可先粗略估算循环的次数,再用“For”循环语句来实现算法.
  3.求12+22+32+…+n2<1000成立的n的最大整数值,用伪代码写出算法过程.
  解:本题算法的伪代码如下:
s ← 1
i ← 2
While s<1000
s ← s+i2
i ← i+1
End While
i ← i-2
Print i
  说明:(1)本题的循环条件是累加和小于1000;
  (2)在循环体外设置“i ← i-2”的原因是:在循环体内判断s<1000时执行了两次i ← i+1,导致不符合要求,从而i的值应该减去2.
  五、回顾小结
要实现循环结构就要用到循环语句.循环语句包括“For循环”和“While循环”.
1.For循环语句的一般形式:
    For I From“初值”to“终值”step“步长”

End For
其中“For”和“End For”之间的步骤“…”称为循环体.若步长为1,“step‘步长’”可以省略不写.
2.While循环语句的一般形式:
    While A
    …
    End While
其中A表示判断执行循环的条件.“While”和“End While”之间的步骤“…”称为循环体.“While”循环语句的特点是前测试,即先判断,后执行.若初始条件不成立,则循环体的内容一次也不执行.
3.一般地,当循环次数已经确定时,可用“For”循环语句;当循环次数不能确定时,可用“While”循环语句.
六、家庭作业
课本23页2,3,4
练习册
开始
结束
s ← 1
i ← 1
i ← i+1
s ← 2(s+1)
i≤9
Y
N
输出s
s ← 1
i ← 1
For I From 1 To 9 Step 1
s ← 2(s+1)
 i ← i+1
End For
Print s
s ← 1
i ← 1
While i≤9
s ← 2(s+1)
    i ← i+1
End While
Print s
PAGE
- 1 -东台市唐洋中学高二数学组
第一课时 算法的含义
一.教学目标:
1. 通过分析具体问题的过程与步骤,体会算法的思想,了解
算法的特性。
2. 能按步骤用自然语言写出简单问题的算法过程。
3. 培养逻辑思维能力和发展解决问题的程序化能力。
二.教学重点:
1.理解算法的概念、特性;
2.培养算法意识。
三.教学难点:
1.算法的含义的理解
2.算法的合理表述。
四.教学方法:探究式教学
通过分析具体问题的过程与步骤,启发学生探究算法的概念与特性。
五.教学手段:多媒体辅助教学
六.教学过程:
一.问题情境
情境娱乐节目中,猜物品的价格游戏:
现在一商品,价格在0~8000元之间,解决这一问题有哪些策略?哪一种较好?
解:第一步:报4000
第二步:若主持人说“高了”,就说2000,否则,就说6000
第三步:重复第二步的报数方法,直至得到正确结果
二.学生活动
学生进行分组讨论、合作交流,教师对学生的讨论进行指导,让学生充分交流,各抒己见,寻找解决问题的多种方法,并对方法优劣进行比较。在情境问题的讨论中,学生已初步感受了算法的思想,这时,很自然地给出算法的广义理解——完成某项工作的方法和步骤。
再请学生举一些日常生活中算法的例子(如烧开水),从而使学生再次感受算法的思想。
三.建构数学,数学运用
由生活中算法的例子过渡到学生所熟悉的数学问题的算法,进一步渗透算法的思想。
例1:给出求1+2+3+4+5的一个算法。
解:
算法1
第一步:计算1+2,得到3
第二步:将第一步中的运算结果3与3相加,得到6
第三步:将第二步中的运算结果6与4相加,得到10
第四步:将第三步中的运算结果10与5相加,得到15
算法2
第一步:取n=5
第二步:计算
第三步:输出运算结果
然后,老师利用Excel来演算,从而体现计算机的优越性。在此基础上,追问学生:怎样的算法才是计算机能实现的算法?这样,让学生在原有认知基础上很流畅地构建新知——算法的概念。
1. 算法的概念:对一类问题的机械的、统一的求解方法称为算法。
说明本章讨论的主要是计算机能实现的算法。
问题:例1中有没有其他算法?
例1 算法3
第一步:让S=0,I=1;
第二步:将S+I的值赋给S, I的值增加1;
第三步:如果I比5大,则输出S,否则转为第二步。
通过算法3的介绍,让学生进一步体会算法的内涵和计算机的编程思想。
例2 给出一个判断点P是否在直线y=x-1上的一个算法。
解:第一步:将点P的坐标带入直线y=x-1的解析式
第二步:若等式成立,则输出点P在直线y=x-1上
若等式不成立,则输出点P不在直线y=x-1上
例3 给出求解方程组 的一个算法。
教材中介绍的算法是高斯消元法,优点是便于在计算上实现。如果学生基础较好,可以用三元一次方程组作为例子,更好地体现高斯消元法及其优越性。
例4 设计一个算法,使得从10个确定且互不相等的数中挑选出最大的一个数。
解:算法1
第一步:假定这10个数中第一个是“最大值”;
第二步:将下一个数与“最大值”比较,如果它大于此“最大值”,那么就用这个数取代“最大值”,否则就取“最大值”;
第三步:再重复第二步。
第四步:在这十个数中一直取到没有可以取的数为止,此时的“最大值”就是十个数中的最大值。
算法2
第一步:把10个数分成5组,每组两个数,同组的两个数比较大小,取其中的较大值;
第二步:将所得的5个较大值按2,2,1分组,有两个数的组组内比较大小,一个数的组不变;
第三步:从剩下的3个数中任意取两个数比较大小,取其中较大值,并将此较大值与另一个数比较,此时的较大值就是十个数中的最大值。
注:
(1) 由于角度不同,具体算法步骤不同,算法一类似于“打擂台”,算法2类似于“淘汰赛”;
(2) 由于计算机每次只能比较两个数的大小,因此10个数的大小比较不可能一蹴而就,必须分步骤完成;
(3) 仿上可写出“求最小值”的算法。
至此,在学生对算法有了进一步的体会和认识的基础上,分析、归纳算法的特性。
2.算法的特性:
(1)有限性:一个算法应包括有限的操作步骤,能在执行有穷的操作步骤之后结束。例如让计算机执行一个程序须耗时500年,这个算法虽然是有限的,但超过了合理的限度,因而它不在是一个有效的算法。这里的度,一般由计算机性能与人们的需要而定。
(2)确定性:算法的计算规则及相应的计算步骤必须是唯一确定的既不能含糊其词,也不能有歧义性。例如:进行四则运算时,“先乘除后加减,有括号的先算括号的”,这里的规定是明确的。
课堂练习
教材第6页的练习(1)(2)。
四.回顾小结
1.算法的概念:对一类问题的机械的、统一的求解方法称为算法。
2.算法的特性:(1)有限性
(2)确定性
五.课外作业:
教材第6页的练习(3)(4)。
- 5 -