项目七 用计算机计算圆周率——比较不同算法的实现及效率 课件(共24张PPT)+教案+导学案+练习题+素材

文档属性

名称 项目七 用计算机计算圆周率——比较不同算法的实现及效率 课件(共24张PPT)+教案+导学案+练习题+素材
格式 zip
文件大小 75.0MB
资源类型 教案
版本资源 沪科版(2019)
科目 信息技术(信息科技)
更新时间 2020-11-12 11:09:26

文档简介

《用计算机计算圆周率》学案
一、学习目标
学会while及for循环之间的转换;
掌握圆周率的两种不同计算方法,并能用Python编程实现;
比较两种算法的运行效率及精确度,知道如何分辨算法的性能。
二、重点难点
教学重难点:掌握圆周率的两种不同计算方法,并能用Python编程实现。
三、学习方法及模式
自主探究、协作学习、合作交流等;
学习内容
预备知识:
选择结构流程图:
循环结构流程图:
活动一:使用沃利斯公式计算圆周率:
小组合作填写流程图:
说明:先设置变量item统计一共计算到第几项,x表示每一项的分子,y代表每一项的分母,s代表二分之一π。
仔细分析,我们可以发现,当项数为奇数项时,分子x按2递增,而项数为偶数项时,分母y按2递增。
请同学们完成如下流程图:
参考流程图,完善如下程序,并复制到Python中运行调试:
活动二:对比两种计算圆周率算法的效率。
用数学公式计算:
用随机投点计算:
将上面两种不通算法实现的程序复制到Python中运行,填写下表:
改写数学公式法程序,输入精确度要求,并输出运行时间。多次运行程序,改变
limit
的值,得到不同的圆周率近似值,记录每次的运行结果。
limit
pi
的值
准确的小数位数
运行时间(秒)
0.0001
3.1320765318091053
1
0.008484839644298251
0.00001
改写随机投点法程序,输出运行时间。多次运行程序,改变总投点数,得到不同的圆周率近似值,记录每次的运行结果。
item
pi
的值
准确的小数位数
运行时间(秒)
1000
3.196
1
0.0936006
10000
对比两种算法计算圆周率的运行情况,填写下表。
算法比较项目
数学公式法
随机投点法
计算结果的精确度
□较高
□较低
□较高
□较低
程序运行时间
□较长
□较短
□较长
□较短
对算法的理解
□容易理解
□不易理解
□容易理解
□不易理解
课堂总结:
圆周率
π
是一个无限不循环小数,无论是用数学公式计算,还是用随机投点法计算,本质上都是对
π
的精确值的无限逼近。选择合适的计算方法,并设计出高效的算法,正是用计算机解决类似问题的一般思路。
课后探究活动:
编程实现Leibniz定理计算圆周率:(共24张PPT)
导入:
—比较不同算法的实现及效率
用计算机计算圆周率
项目学习目标
在本项目中,我们将对用计算机计算圆周率一探究竟,利用Python
语言编程实现两种计算圆周率的算法,进而掌握利用程序控制结构编程的方法,并感受不同算法的运行效率。
知识复习:
问题:
1.
顺序结构编程的特点是?
2.
选择结构的流程图有哪几种?
3.
循环结构的流程图?
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
知识复习:
2.
选择结构的流程图有哪几种?
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
条件
语句块


条件
语句块
语句块


知识复习:
3.
循环结构的流程图有哪几种?
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
1.设计算法实现:用数学公式计算
1735
年,数学家欧拉得到了如下计算公式:
如何编程求出圆周率?
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
算法分析
赋初值:item=1
结束条件:
怎么写?
计算:s+=1/(item
2)
改变循环控制的值:item+=1
思考结束条件:
1.我们是计算到1000
000项结束?
2.还是让累加项的值小于
0.000
001来结束?
item<=1000000
1/(item
2)>=0.000001
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
Python语言实现
赋初值:item=1
结束条件:1/(item
2)>=
0.000001
计算:s+=1/(item
2)
改变循环控制的值:item+=1
思考及改写程序:
1.输出项值<0.000001时item的值。
2.如何实现计算到1000
000项结束?
3.请用for语句改写程序,实现同样的功能。
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
项目活动一:小组合作探究
使用沃利斯公式计算圆周率:
如何编程求出圆周率?
项目活动一
新课学习二
项目活动二
复习引入
总结提升
新课学习一
流程图填空

?
条件:item%2==1
?
条件:
?
初始化:item=1
x=0
y=1
s=1
?
?
改变分子的值:x+=2
?
改变分母的值:
?

?
?
计算圆周率:s
=x/y

?
项数增加:item+=1
?
输出圆周率:print(2
s)

?
item<=1000000
y+=2
项目活动一
新课学习二
项目活动二
复习引入
总结提升
新课学习一
参考程序
赋初值:item=1
结束条件:item<=1000000
计算
改变循环控制的值:item+=1
项目活动一
新课学习二
项目活动二
复习引入
总结提升
新课学习一
2.设计算法实现:用随机投点法计算
随机投点法是通过在正方形内随机投点,用随机模拟的方法来估算圆周率。
如何编程求出圆周率?
π/4=s落在扇形内的点的个数/s落在矩形内的点的个数
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
算法分析
思考与讨论:
1.
分别输入1000、5000、10000,得到圆周率的近似值分别可以精确到第几位?
2.
多次输入同样的总投点数1000,会得到不同的结果,这是为什么?如何减少这种不确定性?
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
项目活动二:小组合作探究
1.用数学公式计算
对比两种计算圆周率算法的效率。
2.用随机投点法计算
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
算法分析
用数学公式计算
用随机投点法计算
运行两种方法计算圆周率运行效率,完成学案上的活动二中的表格。
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
算法分析
用数学公式计算
limit
pi
的值
准确的小数位数
运行时间(秒)
0.0001
3.1320765318091053
1
0.008484839644298251
0.00001
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
算法分析
用随机投点法计算
item
pi
的值
准确的小数位数
运行时间(秒)
1000
3.196
1
0.0936006
10000
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
两种算法比较
算法比较项目
数学公式法
随机投点法
计算结果的精确度
□较高
□较低
□较高
□较低
程序运行时间
□较长
□较短
□较长
□较短
对算法的理解
□容易理解
□不易理解
□容易理解
□不易理解
新课学习二
项目活动二
复习引入
总结提升
新课学习一
项目活动一
课堂总结
圆周率
π
是一个无限不循环小数,无论是用数学公式计算,还是用随机投点法计算,本质上都是对
π
的精确值的无限逼近。选择合适的计算方法,并设计出高效的算法,正是用计算机解决类似问题的一般思路。
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
思维导图
新课学习一
项目活动一
新课学习二
项目活动二
复习引入
总结提升
课后拓展活动
使用Leibniz定理计算圆周率:
参考程序
赋初值:item=1
结束条件:item<=1000000
计算:s+=f/item
f=-f
改变循环控制的值:item+=2
课后拓展活动
THANKS用计算机计算圆周率
——比较不同算法的实现及效率
一、案例背景信息
1、模块:高中信息技术。
2、年级:高一年级。
3、所用教材版本:新课程教材。
4、学时数:1课时,40分钟,其中上机时间:20分钟,非上机操作时间:20分钟。
二、教学设计
(一)内容分析
1、本节的作用和地位:
本节内容是信息技术必修第三单元《算法和程序设计》中的项目七:用计算机计算圆周率。本节的内容主要是让学生在复习顺序、选择结构的程序设计基础上,学会利用循环实现圆周率的计算,并让学生体会不同算法的程序的计算速度及算法的效率。
2、本节主要内容:
圆周率的两种不同算法实现及效率比较。
(二)学生分析
知识基础:
学生在前面单元的学习中已经掌握了Python的顺序结构、选择结构及循环结构的语法。
能力基础:
学生能用Python三种结构编写简单的程序。
心理基础:
学生对计算机编程有着良好的兴趣。
(三)教学目标
(1)学会while及for循环之间的转换;
(2)掌握圆周率的两种不同计算方法,并能用Python编程实现;
(3)比较两种算法的运行效率及精确度,知道如何分辨算法的性能。
(四)教学重点、难点:
教学重点:
掌握圆周率的两种不同计算方法,并能用Python编程实现;
教学难点:
掌握圆周率的两种不同计算方法,并能用Python编程实现;
(五)教学策略设计
教学方法设计
教法:问题导学法、活动驱动法
学法:自主探究法、协作探究法
教学流程和教学活动的设计思路
情境设置
从圆周率的计算历程视频入手,激发学生尝试计算圆周率的兴趣,带领学生一起进入教学活动环节,让学生亲自体验圆周率的不同计算方法。
项目活动一:使用沃利斯公式计算圆周率
小组协作,通过参考案例,修改程序完成使用沃利斯公式计算圆周率。
项目活动二:对比两种计算圆周率算法的效率。
运行两种算法程序,填写三个表格,完成算法效率的分析。
课后探究活动:其他算法实现圆周率
在课堂的基础上,继续探究实现圆周率的算法,真正掌握利用计算机解决学习生活中的问题,加强对本节课知识的应用拓展。
教学资源:
对学生基本技术要求:计算机的基本操作、能使用记事本、Word等。
硬件:局域网(可连接到因特网)。
软件:Windows操作系统 Word或记事本、网络多媒体教室。
资源:课件、程序、视频等。
三、教学过程
教学环节及时间安排
教师活动
学生活动
对学生学习过程的观察和考查
及设计意图
情境
导入
3’
教师播放视频:
数学家是如何计算π的?
观看视频,形成概念
通过对π的发展史,了解π的多种计算方法。
知识
复习
3’
复习引入问题:
顺序结构编程的特点是?
2.
选择结构的流程图有哪几种?
3.
循环结构的流程图?
回答问题
温故知新
复习Python的三种基础语法,为新授课做准备。
算法1
引入
2’
教师展示新课一的学习内容:
设计算法,用数学公式计算π
观看试题
开始思考
试题引入
帮助学生形成初步的算法概念。
算法分析与程序实现4’
引导学生分析流程图,并写出程序
回答问题
一起完成程序
组织课堂活动,引导学生自主学习,学会总结。
课堂
活动1
8’
项目活动一
小组合作探究
使用沃利斯公式计算圆周率:
教师进行巡视观察学生的学习活动,并对有疑问的学生的问题进行单独解答。
小组合作探究
完成学案活动1的流程图与程序填空
并运行调试
自主体验
完成算法的程序实现。
学会自己编写程序。
算法2
引入
2’
教师展示新课二的学习内容:
用随机投点法计算
随机投点法是通过在正方形内随机投点,用随机模拟的
方法来估算圆周率。
观看试题
开始思考
试题引入
帮助学生形成完整的算法概念。
算法分析与程序实现6’
引导学生分析流程图,并程序填空
思考与讨论:
1.
分别输入1000、5000、10000,得到圆周率的近似值分别可以精确到第几位?
2.
多次输入同样的总投点数1000,会得到不同
的结果,这是为什么?如何减少这种不确定性?
回答问题
一起完成程序
组织课堂活动,引导学生自主学习,学会总结。
课堂
活'动2
8’
项目活动二
对比两种计算圆周率算法的效率。
用数学公式计算:
用随机投点法计算:
两种算法比较:
教师进行巡视观察学生的学习活动,并对有疑问的学生的问题进行单独解答。
协作学习,合作探究完成三个表格
比较算法效率,了解算法运行的时间成本及算法的精确度。
课堂回答及小结
3’
课堂小结:
1.圆周率
π
是一个无限不循环小数,无论是用数学公式计算,还是用随机投点法计算,本质上都是对
π
的精确值的无限逼近。选择合适的计算方法,并设计出高效的算法,正是用计算机解决类似问题的一般思路。
2.思维导图
学生回答并总结
从数据分析中得出算法效率。
并回顾整个课堂的学习内容,形成知识体系。
课后
拓展
1’
使用Leibniz定理计算圆周率:
认真思考,课后实现。
前后呼应,与视频中提到的算法相呼应。让学生学会利用编程解决学习生活中的问题。
教学反思
本节课的难点在于如何利用循环结构实现圆周率的计算,为了减轻难度,在活动一之前设置了一个例题,让学生在完成活动一时可以参考例题程序进行修改,以让大部分学生能达到良好的成功体验效果。
同时通过运行两个不同算法实现的圆周率的程序,让学生深刻体验到算法效率带来的差异性,这种差异所带来的效率不同可以引导学生应用到学习生活中去,追求高效的解决问题的意识素养。
本节课的内容内容较多,要让学生达成良好的体验效果,教师需随时关注学生的学习过程,及时给予帮助,引导学生在体验中提升总结,才能达到最佳的效果。
1项目七练习题:用计算机计算圆周率
【判断题】:正确则标记“√”,错误则标记“×”。
python的程序基本结构有三种:顺序、选择、循环。(

以下代码执行后,输出结果是55。(

循环结构不允许出现死循环。(

【程序编写】
编程实现输出1,2,3,……100。
参考程序1:
参考程序2:
2.利用for循环求1~100之间所有数的和。
参考程序:
3.求
50!
参考程序:
4.利用for循环求1~1000之间所有奇数的和。
参考程序:
5.使用Leibniz定理计算圆周率:
参考程序:
6.求出10~1000之间的回文数。
参考程序1:
参考程序2:
7.求出100~1000之间所有的水仙花数。
参考程序:
算法
1.爷s=1
2.爷i=1
3.循环当i小于等于50;
3.1
s=Sxi
3.2i=1+1
1s=1
2
for
i
in
range(1,
51):
3
s=1
4
print(s)
1s=8
2
for
i
in
range(1,
1001):
3
11%2==1:
4
s+=1
5
print(s)
1s=0
2千=1
3
item=1
4
while
item<=1000000
567
s+=f/item
f=-千
item+=2
8
print
(4
s)
1
for
i
in
range(10,
1001):
s=str(i)
2345
s=s::
if
i==int
(s):
print(i)
1
for
i
in
range(10,
1001)
s
2345678
t=e
while
se
t=t米18+s%18
s=s//16
1千t==i:
print(i)
1
for
i
in
range(10,
1001):
23456789
t=8
while
se
X=s‰18
t+=xxx
s=s//18
1千t==i:
print(i
1s=9
2
for
i
in
range(1,10):
34
s
print(s)
开始

i≤50

s=S×1,1=1+
输出s
结束
1s=8
2
for
i
in
range(1,
101):
3
s+=1
4
print(s)
算法
1.爷S=1
23
S=Sx1
s=s×2
51.s=s×59