内容正文:
设计简单数值数据算法
2.设计算法实现用随机投点法计算
目录
01
为何学
02
学什么
03
怎么学
教材分析
学情分析
教学目标
教学重难点
教学方法
教学过程
教学反思
01
为何学
教学方法
教学重难点
教学过程
教材分析
说地位:
1
学情分析
教学目标
教学反思
2
3
说联系:
说教材处理:
本节课题选自沪教版普通高中信息技术必修一第三单元项目七《设计简单数值数据算法》第二节。课标要求:“利用程序设计语言实现简单算法,解决实际问题”
本节是对之前所学程序的综合运用,是强化知识的部分。设计并实现选择结构和循环结构的程序算法。
本节课以教材实例为主,通过Python语言编程,实现用随机投点法计算圆周率,根据学生实际情况和教材知识点,设计了一些简单的程序题
教学方法
教学重难点
教学过程
教材分析
学情分析
教学目标
学生状况
授课对象为高一年级学生,具备一定的逻辑思维能力,经过之前几节课的学习对Python程序有一定的了解,但对刚接触程序设计的高一学生说,循环结构的算法设计是困难的。
为了提高教学的针对性和有效性,课前会组织学生填写“学生情况调查表”了解学生对于Python循环语句掌握的基本情况。
教学反思
对策
02
学什么
教学方法
教学重难点
教学过程
教材分析
学情分析
教学目标
通过对计算圆周率问题原理的分析与算法设计,培养学生运用信息技术解决问题的感知能力
计算
思维
利用 Python 语言编程实现计算圆周率算法,培养学生运用循环结构设计算法的思维能力,提升学生对程序逻辑的分析和设计能力
数字化学习与创新
借助 Python 数字化学习工具,鼓励学生自主探索和实践,提高学生在数字化环境下的自主学习能力和创新思维。
信息意识
教学方法
教学过程
教材分析
学情分析
教学目标
教学重难点
教学重点
1.采用随机投点法设计圆周率算法
2.对for循环语句的理解
教学难点
掌握for循环语句实现算法并解决问题
突出重点
突出难点
采用讲授法讲解循环结构相关知识,并结合循环结构流程图帮助学生进一步理解
解决问题
解决问题
1.带领学生探究随机投点法规则,并使用自然语言描述算法,最后使用流程图帮助学生理清思路
2.采用讲授法和问题驱动法学习循环结构的用法
解决问题
解决问题
03
怎么学
教学过程
教材分析
学情分析
教学目标
教学重难点
教学方法
以问题求解为导向的启发式教学法
高中学生正处于对新鲜事物充满好奇心的阶段。任务驱动法将信息技术知识融入到具体的任务中,当学生看到自己完成任务时,会获得成就感,从而激发他们对信息技术学科的浓厚兴趣
讲授法
任务驱动法
教学反思
教材分析
学情分析
教学目标
教学重难点
教学方法
教学过程
导入新课
2分钟
新课讲解
15分钟
小组探究
8分钟
巩固知识
10分钟
小结及作业
5分钟
教学反思
1
3
5
2
4
设计意图:
通过投掷小游戏导入新课,让学生从实际游戏体验中感受概率计算的情境,激发学生兴趣,为后续学习用Python语言编写计算概率的程序做铺垫。
课堂导入
投掷小游戏:有10个小球,尝试投入筐里,计算出投中的概率。
游戏导入
设计意图:
通过播放撒豆子的动画,引导学生设计算法实现用随机投点法计算圆周率,让学生明确本节课的核心任务,即通过随机模拟的方法估算圆周率,激发学生的好奇心和探究欲。
新课讲解
随机投点法是通过在正方形内随机投点,用随机模拟的方法来估算圆周率。请尝试用Python语言,来计算圆周率。
0
1
1
设计算法实现用随机投点法计算
设计意图:
进一步强调随机投点法计算圆周率的原理,帮助学生理解正方形和扇形之间的关系,列出公式,由学生表示出pi的表达式,为后续设计算法和编写代码奠定基础。
探求新知
新课讲解
n表示落在扇形中豆子的数量
m表示所有豆子的数量
1
1
0
只要数出落在扇形区域内豆子
的数量就可以计算出的值了
设计意图:
引导学生分析问题,确定总投点数m和落在扇形区域的投点数n,用已知量将pi表示出来,明确随机投点法计算圆周率的关键步骤,为后续突破难点做准备
探求新知
新课讲解
1.分析问题
首先,确定总的投点数m,m=int(input())。
然后,在边长为1的正方形中投点,并判断
这个点是否落在扇形区域内,如果是,则变量n
的值增加1。
最后,在所有点投完后,计算圆周率的
近似值
设计意图:
通过思考正方形和扇形区域内点的坐标特点,帮助学生理解随机投点法的几何原理,为后续设计算法和编写代码提供理论支持。
探求新知
新课讲解
2.突破难点
思考1:正方形中每个投点的坐标有什么特点?
落在扇形区域内的点的坐标又有什么特点?
设计意图:
通过具体坐标图示,数形结合的方式帮助学生直观理解正方形和扇形区域内点的坐标范围和特点,学生会发现坐标值都是0-1范围内的随机数,根据观察图形发现落在扇形区域的坐标满足的关系式,加深学生对随机投点法原理的理解。
探求新知
新课讲解
1
1
0
每个投点的x坐标和y坐标
都是[0,1)中的随机数。
根据正方形和内接扇形的
几何关系,落在扇形区域中的
点的
x
y
?
设计意图:
在分析问题的基础上涉及到新知识随机数模块,讲解函数的含义及用法,列举实例,学生上机实践体验函数功能。
random模块
新课讲解
导入random模块 from random import 函数
import random
random.函数
random() 随机生成一个[0,1)范围内的实数(包含0,不包含1)
randint() 随机生成一个[a,b]范围内的整数 (包含a,b)
问题1.请随机生成一个[0,1)范围内的实数
问题2.请随机生成一个[1,100]范围内的整数
设计意图:
引导学生思考随机投点过程中需要重复的操作,学生能够回答出是投点和判断需要重复做,为引入循环结构做铺垫,帮助学生理解循环在算法中的应用。
探求新知
新课讲解
2.突破难点
思考2:在投点过程中有哪些事情是需要重复做的?
投出每一个点 x,y∈[ 0,1 ) ,random( )
判断每个点是否落在扇形区域
对于重复做的这两件事情,我们可以通过循环来实现。
设计意图:
引导学生思考如何控制循环次数,让学生明确循环次数与投点总数之间的关系,为后续编写代码时合理设置循环条件提供指导。
探求新知
新课讲解
2.突破难点
思考3:如何控制循环次数?
把所有的点投完,循环就可以结束了。
所以所有的点数m就是循环需要执行的次数。
设计意图:
引导学生设计随机投点法计算圆周率的算法,培养学生的流程图设计能力,为后续编写代码提供详细的操作步骤。
探求新知
新课讲解
3.设计算法
是
i<m
获取坐标x,y的随机值
是
否
i=i+1
计算圆周率近似值pi
n=n+1
设计意图:
讲解for循环语句的基础知识,并强调range函数的用法,使学生理解for语句的含义和range函数的用法。
探求新知
新课讲解
4.编写代码 调试运行
for语句
格式:
for 变量 in 序列:
语句块
range(起始值,结束值,步长值)
列表 [ 值1,值2,... ]
range(1,5,2) 结果:1 3
range(3)结果:0 1 2
强调
设计意图:
通过提供部分代码框架,引导学生填写关键代码,完成随机投点法计算圆周率的程序编写,培养学生的编程能力和对算法的理解。
探求新知
新课讲解
4.编写代码 调试运行
from random import random
m=int(input(“请输入总的投点数:”))
n=0
for i in range(m):
x=random()
y=random()
if ________________:
____________
pi= _____________
print(“pi的值是”,pi)
x*x+y*y<1
n=n+1
4*n/m
在Python 中的运行结果
设计意图:
展示Python代码在实际运行中的结果,让学生直观看到随机投点法计算圆周率的效果,验证算法的正确性,增强学生的学习成就感。
探求新知
新课讲解
两种计算圆周率算法的对比
设计意图:
引导学生对比欧拉公式法和随机投点法两种计算圆周率的算法,让学生从精确度、运行时间和算法理解等多方面进行比较,培养学生的分析和对比能力。
欧拉公式法
随机投点法
探求新知
新课讲解
两种计算圆周率算法的对比
设计意图:
通过记录两种算法的运行结果,让学生进一步理解两种算法的特点和适用场景,为后续选择合适的算法解决问题提供依据。
探求新知
新课讲解
欧拉公式计算圆周率结果记录表
limit Pi的值 位数 运行时间(秒)
0.0000001 3.14129068 3 0.002923
0.00000000001 3.14158963 4 0.1148426
随机投点法计算圆周率结果记录表
投点数 Pi的值 位数 运行时间(秒)
500000 3.140976 2 0.20458
5000000 3.142104 2 2.08951
设计意图:
总结两种算法的对比结果,帮助学生梳理两种算法的优缺点,加深学生对算法的理解,为学生在实际问题中选择合适的算法提供参考。
探求新知
新课讲解
两种算法的对比
欧拉公式法 随机投点法
计算结果精确度 较高 较低 较高 较低
程序运行时间 较长 较短 较长 较短
对算法的理解 易理解 不易理解 易理解 不易理解
√
√
√
√
√
√
设计意图:
通过与数学老师连线,讲解求阶乘的问题。并帮助学生分析问题,提供思路,设计算法
任务一:求10!
新课讲解
与数学老师连线讲阶乘
10!=1×2×3×4×……×10
如何用while循环和for循环两种方式分别实现?
设计意图:
以小组为单位,思考如何用流程图或者自然语言描述该算法。并进行展示,其他小组评价
新课讲解
分析问题
1×2×3×4×……×10是一个累乘的问题,可以将1,2,3,……,10累乘到一个变量中。
设计算法
用流程图描述算法
开始
s=1,i=1
i<11
s=s×i,i=i+1
输出s
是
否
结束
任务一:求10!
设计意图:
展示学生的两种算法,在此基础上分别用while和for循环程序实现
新课讲解
算法一
1. s=1
2. s=s×1;
3. s=s×2;
……
10.s=s×10
算法二
1. s=1
2. i=1
3. 当i小于等于10;
s=s×i;
i=i+1
任务一:求10!
设计意图:
布置任务二,学生在掌握for循环的基础上,提高难度,通过百钱买百鸡学习双重for循环结构。
任务二:百钱买百鸡
新课讲解
问题:
我国古代数学家在《算经》一书中提出的数学“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
分析问题:
公鸡g
母鸡m
小鸡x
钱共100
鸡共100
设计算法:
一一列举,逐一检验
公鸡 1 1 ……
母鸡 1 2 ……
小鸡 98 97 ……
编写程序:
?
设计意图:
学生思考如何编写程序实现百钱买百鸡。引导学生双重循环实现,外循环一次,内循环一遍。
任务二:百钱买百鸡
新课讲解
问题:
我国古代数学家在《算经》一书中提出的数学“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
编写程序:
设计意图:
由学生回顾总结本节课的重点内容,再由教师进行补充。
课堂总结
for循环
for 变量 in 序列:
语句块
range(起始值,结束值,步长值)
双重for循环:外循环一次,内循环一遍
random模块
课后作业
设计意图:
布置课后作业,通过巩固练习加深学生对随机投点法计算圆周率知识的理解,同时培养学生自主学习和查阅资料的能力,拓展学生的学习视野。
完成教材课后编程习题
预习下一课时列表的概念
实践性
思考性
板书设计
§7.2设计算法实现用随机投点法计算
random( ) [0,1)中的随机数
格式:
for 变量 in 序列:
语句块
range(1,5,2) 结果:1 3
range(3)结果:0 1 2
双重循环:
外循环一次,内循环一遍
主板书
辅板书
04
教学反思
1
2
优点
01
1.整节课采用了基于问题的学习,引导学生思考学习新知识
2.采用与数学跨学科的方式,激发学生学习热情
1
2
缺点
02
在课堂练习方面,在针对性和层次性方面做得还不够
在编程练习方面,时间不足
感谢各位评委老师的聆听
$$