概率及其计算教学设计,用迭代算法探究数据变化的规律教学设计
概率及其计算教学设计,用迭代算法探究数据变化的规律教学设计教学过程: 1课时解决方法: 1. 斐波那契数列游戏引入。2. 棋盘上的麦粒事例加深理解。3. 三角形面积计算导入新概念。教学课时:
教学重点:
迭代算法,迭代算法的推理过程与编程算法之间理解观念的过渡
教学难点:
迭代算法原理的推理过程与编程算法之间理解观念的过渡
解决方法:
1. 斐波那契数列游戏引入。2. 棋盘上的麦粒事例加深理解。3. 三角形面积计算导入新概念。
教学课时:
1课时
教学过程:
一、情景导入:5分钟
同学们好,我们现在开始上课。
我们先来做一个填空游戏。请大家看黑板:
有一对兔子,它们第2个月成为成年兔,第3个月以后每个月都生产一对兔子,每对小兔均第2个月变为成年兔,第3个月生产一对兔子。假定所有兔子都成活,到第12个月时共有多少对兔子?这就是有名的“兔子数列”,又称为“斐波那契数列”。我们看看这个数列有什么规律?
1,1,2,3,5,_____,13,______,……你能填入正确的数字吗?请你们讨论,然后填数。
图1
这里,print(i)语句重复执行了10次,但它不是迭代。因为它没有利用上一次计算的结果推出新值。
下面看看电子表格计算累计的迭代:
从累计销售第2行88开始,每一个累计销售值都是上一个累计销售值加上当次销售值得到的。
也就是说每一个累计数字都要用到前面的累计结果。因此可以说这个过程是迭代。这种算法是迭代算法。
这里用到的一个公式:C2 B3,以后的单元格都要相对引用。这就如同我们在Python程序中的循环一样。
图2
那么迭代算法如何编程呢?
三、迭代算法的编程:
1.迭代算法的关键是找到同一个公式(一般是递推,即从开始推进到最后结果。)就像刚才我们做的游戏:s=a b
如果我们找到了这样的公式,然后再给a和b赋以初值,再用循环反复执行这个公式,程序就基本编写出来了。如上面的“兔子数列”,我们求前12项。程序如下:同学们把这个程序输入计算机,保存程序为“fi姓名”,然后执行程序,看看结果。
图3
2.再如棋盘上的麦粒,我们找到的公式是t=t*2,我们再给t赋以初始值1,我们用循环语句就可很方便地算出64个棋盘格所需要的所有麦粒。程序见下图。请同学们将程序输入计算机,保存文件名为“麦粒姓名”,然后执行这个程序,看看最后的结果是不是:18446744073709551616
图4
如果一个麦粒的质量是0.01克。我们想进一步计算出上面那个大数字有多少克?多少千克?多少吨?如何修改程序。
a=t*0.01
b=a/_________ 这时b用了前面的a的值,是迭代
c=b/_________ 这时c用了前面的b的值 也是迭代。
我们如何输出执行结果:
if a<1000:
print(‘麦粒质量约:‘,a ’克’)
elif b<1000:
print(‘麦粒质量约:‘,b ’千克’)
else:
print(‘麦粒质量约:‘,c ’吨’)
图5
如果我们将24个改为64个格,即将结束值改为65。(range()函数不执行终止数)看看有多少吨?
图6
3.跳绳是一项简单易行的体育运动。为了增强体质,甲乙两位同学各自制订了循序渐进的锻炼方案。
甲同学决定第一天跳绳100下,第二天开始每天增加5下。
乙同学决定第一天跳绳100下,以后每隔一天增加10下。
两位同学按照上术方案锻炼30天,,各自的总运动量是多少?比比谁的总运动量大。
我们分析一下:甲同学第1天跳绳100下,即a=100,第1天的累计是x=a,第二天及以后当天跳绳数即为a=a 5,第二天及以后的累计是x=x a
乙同学第1天跳绳100下,即b=100,第1天的累计是y=b,第二天(偶数天)当天的跳绳数与第1天(奇数天)相同。第二天及以后的累计是y=y b。第三天当天跳绳数即为b=b 10,判断是否为奇数天的语句用 if i%2==1 取余数为1时就是奇数天。是奇数天b就加10,不是奇数天b就不加10,保持前一天的数字。
程序清单如下:请同学们将它输入计算机,保存文件名为“跳绳姓名”,然后执行程序,看看结果如何。
图7
四、小结: 2分钟
1.我们今天探究了迭代算法,迭代算法就是用同一个公式反复计算,直到达到预定的精度或要求为止。
2.在探究迭代算法的时候,我们还用到了:
for 循环及range()函数。
i%2==0: i%2是取余数, ==1是等于1,如果是一个=,是赋值。
a/1000是除以后取自然数,如果用一个”//” 则是除以,取整数。你们课下可以试试。
t*=2 与t=t*2功能相同。是迭代算法,是这节课的重点。
五、上传作业:
请将你们编写的“fi姓名”、“麦粒姓名”和“跳绳姓名”三个程序上传到老师的服务器。请注意需要添加3个文件。 3分钟
六、课后作业:
请阅读 科学探究 《迭代器》
将示例程序编写为一个程序文件,测试iter()和next()等迭代方法。
我这儿有编写的程序供你们参考。
图8
图9
探究过程大约需要38分钟,留7分钟机动。