(共49张PPT)
设计简单数值数据算法
用计算机计算圆周率
主讲人:XXX
xxx学校
用计算机计算圆周率 --- 设计简单数值数据算法
教材分析
“设计算法实现用数学公式计算”这一小节,使用欧拉公式设计算法探究计算圆周率,利用Python语言编程实现计算圆周率的算法。
首先,引出数值数据及其运算。其次,根据程序设计的基本流程从需求出发,分析问题确定解决问题的方法及其选择恰当的算法描述方法(自然语言、流程图和伪代码)进行描述,从而引出设计算法的方法循环结构算法,重点探究循环结构的算法设计思路。然后,根据算法编写程序。最后,运行、调试程序。
考虑到循环结构中的循环控制变量、初值、终值相对较难理解,教材中又设计了活动7.1---使用沃斯公式计算圆周率,教师可作为学生课后活动探究课,以进一步巩固学生对流程控制结构的认识,加深学生对循环结构的理解和灵活应用。
用计算机计算圆周率 --- 设计简单数值数据算法
教学目标
1、知识技能
数值数据的常用运算,循环结构算法构建的探究及其实现。
2、过程与方法
通过设计算法进一步巩固学生对如何实现流程控制算法的认识,加深学生对循环结构的理解和灵活应用。
3、情感态度与价值观
(1)提高分析问题和解决问题的能力,体会算法在程序设计中的重要性。
(2)通过本项目的学习,学生将体验到用计算机计算圆周率,拓宽思维,激发学习兴趣。
用计算机计算圆周率 --- 设计简单数值数据算法
教学重点
数值数据的常用运算,循环结构算法构建的探究及其实现。
教学难点
循环结构算法构建的探究及其实现。
用计算机计算圆周率 --- 设计简单数值数据算法
教学准备
计算机教室,Python环境搭建,投影机。
教学素材
教材案例的代码
用计算机计算圆周率 --- 设计简单数值数据算法
教学过程
一、导入
圆周率是怎么计算的?从古至今数学家一直在算?
用计算机计算圆周率 --- 设计简单数值数据算法
一、导入
设计算法实现用数学公式计算
1735年,数学家欧拉得到了如下的公式:
以下我们就尝试用Python语言,根据上述欧拉发现的公式来计算圆周率。
用计算机计算圆周率 --- 设计简单数值数据算法
一、导入
复习回顾
程序设计的基本流程
分析问题
确定解决问题的方法
描述数据
运行调试
修改语法错误
运行程序
发现错误并修改
设计算法
选择描述算法的方法
设计算法
编写程序
选择程序设计语言
编写程序
用计算机计算圆周率 --- 设计简单数值数据算法
一、导入
复习回顾
程序设计的功能
常量和变量
程序设计语言
数据表达
流程控制
数据对象和类型
语句级控制
单位级控制
基本数据类型
整型 int
浮点型 float
布尔型 bool
复数类型 complex
组合数据类型
字符串 str
元组 tuple
列表 list
集合类型 set
字典类型 dict
常量如整数389, 浮点数23.56,字符串“hello”。
变量如x=12.3,
x="red"。
程序的基本控制结构
顺序
结构
循环
结构
选择
结构
A
B
顺序结构
A
B
选择结构
条件
是
否
当循环
A
条件
是
否
直到循环
A
条件
是
否
内置函数
数学函数(abs,round)
类型转换函数(int,float,str,repr)
集合操作函数(len,max,min,sum)
输入输出操作函数(input,print)
函数的调用方式
例如,计算 。
>>> from math import sqrt
>>> print(sqrt(2))
用计算机计算圆周率 --- 设计简单数值数据算法
一、导入
复习回顾
程序设计的功能
常量和变量
程序设计语言
数据表达
流程控制
数据对象和类型
语句级控制
单位级控制
用计算机计算圆周率 --- 设计简单数值数据算法
基本数据类型
整型 int
浮点型 float
布尔型 bool
复数类型 complex
用计算机计算圆周率 --- 设计简单数值数据算法
组合数据类型
字符串 str
元组 tuple
列表 list
集合类型 set
字典类型 dict
用计算机计算圆周率 --- 设计简单数值数据算法
常量如整数389, 浮点数23.56,字符串“hello”。
用计算机计算圆周率 --- 设计简单数值数据算法
变量如x=12.3,
x="red"。
用计算机计算圆周率 --- 设计简单数值数据算法
程序的基本控制结构
顺序
结构
循环
结构
选择
结构
用计算机计算圆周率 --- 设计简单数值数据算法
A
B
顺序结构
用计算机计算圆周率 --- 设计简单数值数据算法
A
B
选择结构
条件
是
否
用计算机计算圆周率 --- 设计简单数值数据算法
当循环
A
条件
是
否
直到循环
A
条件
是
否
用计算机计算圆周率 --- 设计简单数值数据算法
内置函数
数学函数(abs,round)
类型转换函数(int,float,str,repr)
集合操作函数(len,max,min,sum)
输入输出操作函数(input,print)
函数的调用方式
例如,计算 。
>>> from math import sqrt
>>> print(sqrt(2))
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
数值数据分为整数(int)和浮点数(float)。
一个算术表达式包含常量、变量、运算等要素。
类比数学中的运算说一说:
数值数据的常用的运算有哪些?
数值数据
整数
浮点数
例如,1是整数。
例如,1.0是浮点数。
1
数值数据及其运算
用计算机计算圆周率 --- 设计简单数值数据算法
运算符
含义
示例
运算结果
+
-
*
/
//
**
%
加法
减法
乘法
除法
整除
次幂
求余数
53+21
63.1-2.2
300*1.5
1/8
1//8
2**3
17%3
74
60.9
450.0
0.125
0
8
2
二、新授
1
数值数据及其运算
常用的算术运算符
①
用计算机计算圆周率 --- 设计简单数值数据算法
>>> 4.8//1.2
4.0
>>> 5//1.2
4.0
>>> 7//2
3
>>> 3//4
0
>>> 2**3
8
>>> 16**0.5
4.0
>>> 1.6**2.5
3.238172324012421
>>> x=34
>>> x%2
0
>>> x%3
1
>>> x%17
0
运算符//执行的是整除运算,它会产生一个小数部分为0的结果,小数部分会被舍掉。
运算符**执行的是次幂运算,a**a等价于数学运算 。
运算符%执行的是求余数运算。
二、新授
1
数值数据及其运算
常用的算术运算结果
②
用计算机计算圆周率 --- 设计简单数值数据算法
程序设计语言必须具备数据表达和流程控制的能力,我们一起探讨流程控制中的循环结构的算法构建。
你能用生活中的事例描述循环结构?
二、新授
2
循环结构的算法构建
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
某公司为提高销售额,针对销售部的员工制定旅游福利方案,以激励员工业绩:
方案
每月进行评优,评上优的员工该月有旅游的机会,当年评优次数在下年自动清0。请问张三一年内共有几次旅游机会?
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
自然语言描述
初始0次机会;
12个月每月评一次;
2.1当月达到评优 标准;
2.2 增加1次;
2.3 当月没有达到;
2.4 不增加;
3. 输出共几次。
流程控制图
0次机会
满12个月
达标加1
输出几次
是
否
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
循环控制
三要素
初值
终值
初值向终值变化语句
循环控制变量
的初值
循环控制变量
的终值
在循环体中使用循环控制变量由初值向终值变化的语句
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
例1:求50!。
分析问题
50!=1 x 2 x 3 x ... x 50,和累加问题类似,计算机算法的处理是逐项将1,2,3,…,50累乘到一个变量中。与累加问题不同的是,累乘变量的初值应为1。
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
例1:求50!。
设计算法
算法一:
1. 令s=1;
2. s=s x 1;
3. s=s x 2;
......
51. s=s x 50。
每一步都在做乘法
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
例1:求50!。
设计算法
通项公式:s=s x i。
循环控制,一共执行50次。
循环控制变量相当于计数器,从1开始到50结束,每一次递增1。
循环控制变量和通项公式变化的量i。
i=i + 1从初值变化到终值,最终结束循环。
算法二:
令s=1;
i=1;
循环当i小 于等于50;
3.1 s=s x i;
3.2 i=i + 1。
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
2
循环结构的算法构建
例1:求50!。
算法二流
程图
开始
结束
s=sxi,i=i+1
s=1,i=1
i≤50
输出s
是
否
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
3
实现循环结构的语句
确
定
次
数
循
环
确定次数循环指循环结构对循环次数有明确的定义,循环次数采用遍历结构中元素的个数来体现。Python语言中通过for语句来实现确定次数循环。
for <循环控制变量> in <遍历结构>:
<语句块>
遍历结构可以是range函数产生的序列、组合数据对象(列表、字符串)或文件对象。
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
3
实现循环结构的语句
确
定
次
数
循
环
用for语句实现求50!的语句块如下:
s=1
for i in range(1,51):
s=s*i
print(s)
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
3
实现循环结构的语句
不确定次数循环会一直保持循环操作,直到特定循环条件不被满足时才结束,不需要提前知道循环次数。Python语言中通过while语句来实现不确定次数循环:
while <条件>:
<语句块>
不
确
定
次
数
循
环
用计算机计算圆周率 --- 设计简单数值数据算法
二、新授
3
实现循环结构的语句
用while语句实现求50!的语句块如下:
s=1
i=1
while i<=50:
s=s*i
i=i+1
print(s)
不
确
定
次
数
循
环
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
分析问题
该公式是一项一项连续相加的,并且每一项都可由前一项经过有规律的变化得到,称为累加问题。
用自然语言描述如下:
设置累加器变量s的初始值为0;
s=s+1/(1 x 1);
s=s+1/(2 x 2);
....
①累加的通项公式s=s+item;②构造item=1/(i x i),i=i+1。
思考与讨论?
按如下要求该如何分别控制循环的执行?循环控制变量是哪一个?初值、终值是怎样的?如何变化?
累加n个item;
圆周率的精确度达到小数点后6位。
循环开始前,item的值是多少?循环结束后,item的值是多少?
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
分析问题
该公式是一项一项连续相加的,并且每一项都可由前一项经过有规律的变化得到,称为累加问题。
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
分析问题
用自然语言描述如下:
设置累加器变量s的初始值为0;
s=s+1/(1 x 1);
s=s+1/(2 x 2);
....
①累加的通项公式s=s+item;②构造item=1/(i x i),i=i+1。
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
设计算法
思考与讨论?
按如下要求该如何分别控制循环的执行?循环控制变量是哪一个?初值、终值是怎样的?如何变化?
累加n个item;
圆周率的精确度达到小数点后6位。
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
设计算法
思考与讨论?
循环开始前,item的值是多少?循环结束后,item的值是多少?
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
设计算法
令i=1,item=1.0,s=0;
循环当item大于等于0.000001;
2.1 s=s+item;
2.2 i=i+1;
2.3 item=1/(i x i);
3. pi= ;
4. 输出pi的值。
自然语言描述
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
设计算法
流程图描述
i=1,item=1.0,s=0
item大于等于
0.000001
输出pi
是
否
s=s+item,i=i+1,
item=1/(i x i)
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
编写程序
from math import sqrt
i=1
s=0
item=1
while item>0.000001:
s=s+item
i=i+1
item=1/(i*i)
pi=sqrt(6*s)
print("pi 的值是 ", pi)
在Python语言中,利用while语句可以实现该循环结构的算法,pi表示圆周率。
item大于等于
0.000001
输出pi
是
否
s=s+item,i=i+1,
item=1/(i x i)
i=1,item=1.0,s=0
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
编写程序
from math import sqrt
i=1
s=0
item=1
while item>0.000001:
s=s+item
i=i+1
item=1/(i*i)
pi=sqrt(6*s)
print("pi 的值是 ", pi)
在Python语言中,利用while语句可以实现该循环结构的算法,pi表示圆周率。
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
运行、调
试程序
在Python中创建并运行程序,检查运行结果。
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
如果按累加n项的方法控制循环,该如何修改程序?如何分别用while语句和for语句实现?
思考与讨论?
用计算机计算圆周率 --- 设计简单数值数据算法
三、巩固提高
1
设计算法实现用数学公式计算
计算圆周率π
用计算机计算圆周率 --- 设计简单数值数据算法
四、小结作业
1
小结
1. 今天你有什么收获?
2. 会画循环结构流程?
循环控制变量赋初值
终止条件判断
是
否
语句块
改变循环控制变量的值
循环结构的流程图
用计算机计算圆周率 --- 设计简单数值数据算法
四、小结作业
2
作业
使用沃斯公式计算圆周率。
用计算机计算圆周率 --- 设计简单数值数据算法
谢谢!