项目七第一课时 设计算法实现用数学公式计算 课件(共35张PPT)+教案

文档属性

名称 项目七第一课时 设计算法实现用数学公式计算 课件(共35张PPT)+教案
格式 zip
文件大小 2.8MB
资源类型 试卷
版本资源 沪教版(2019)
科目 信息技术(信息科技)
更新时间 2020-10-12 15:08:40

文档简介

(共35张PPT)
第一课时
设计算法实现用数学公式计算
信息技术沪教版
必修1
项目七
用计算机计算圆周率
——设计简单数值数据算法
目录

数值数据及其运算

循环结构的算法构建

课后作业

实现循环结构的语句

计算圆周率
一、数值数据及其运算
整数
浮点数
(float)
数值数据
(int)
数值数据的运算符号
运算符
含义
示例
运算结果
+
加法
53+21
74
-
减法
63.1-2.2
60.9
乘法
300
1.5
450.0
/
除法
1/8
0.125
//
整除
1//8
0
次幂
2
3
8
%
求余数
17%3
2
运算符
执行的是次幂运算
01
>>>
4.8//1.2
4.0
>>>5//1.2
4.0
>>>7//2
3
>>>3//4
0
02
a
b等价于数学运算ab
>>>2
3
8
>>>16
0.5
4.0
>>>1.6
2.5
3.238172324012421
03
运算符%执行的是求余数运算
>>>x=34
>>>x%2
0
>>>x%3
1
>>>x%17
0
>>>x%4
2
二、循环结构的算法构建
构建循环结构
要素
变量的初值
变量的终值
重复
分析问题
变化的语句
例1:求50!
1.分析问题
50!=1
2
3
4
5……
50,和累加问题类似,计算机算法的处理是逐项将1.2.3.……,50累乘到一介变量中。
算法一
算法二
1.令s=1;
2.令i=1;
3.循环当i小于等于50;
3.1
s=s
i;
3.2
i=i+1.
1.令s=1;
2.s=s
1;
3.s=s
2;
……
51.s=s
50.
例2:输入一个任意正整数,求它的逆序数。
求一个正整数的逆序数的方法,是每次取该数的最后一位数字,构造出一个新的整。例如,726的逆序数的求解过程如下。
1.分析问题
构造循环控制时,可以将表示输入数的变量作为循环控制变量。输入初始值后,每次整除10,直到该数为0,循环结束。重复执行的操作是将原数的最后一位取下,通过位权值构造到新的逆序数中。
2.设计算法
设输入的数为num,逆序数为reverseNum。
1.输入一个正整数到num;
2.令reverseNum=0;
3.循环当num>0;
3.1reverseNum=reverseNum
10+num%10;
3.2num=num//10;
4.输出reverseNum。
三、实现循环结构的语句
1.确定次数循环
Python语言中通过for语句来实现确定次数循环。
for<循环控制变量>in<遍历结构>;
<语句块>
1.确定次数循环
用for语句实现求50!的语句块如下:
s=1
for
i
in
range(1,51);
s=s
i
print(s)
1.确定次数循环
将1~50之间所有的奇数累加的语句块如下:
s=0
for
i
in
range(1,50,2);
s=s
i
print(s)
2.不确定次数循环
Python语言中通过while语句来实现不确定次数循环:
While<条件>:
<语句块>
2.不确定次数循环
用while语句实现例2求逆序数的语句块如下:
num=int(input(“请输入一个数:“))
reverseNum=0
while(num):
reverseNum=reverseNum
10+num%10
num=num//10
print(“它的逆序数是:”,reverseNum)
while语句也可以用于完成确定次数循环,请用它实现求解50!。
s=1
i=1
while
i<=50:
s=s
i
i=i+1
print(s)
四、计算圆周率
观察欧拉发现的数学公式可知,它是一项一项连续相加的,且每一项都可由前一项经过有规律的变化得到。有规律的数据项连续相加的问题,称为累加问题,用计算机算法处理就是逐项累加。上述累加计算的算法可以用自然语言描述。
1.分析问题
1.设置累加器变量s的初值为0;
2.s=s+1/(1
1);
3.s=s+1/(2
2);
……
累加可以用一个公式来表示:s=
s+item。这个式子称为累加的通项公式。对上述欧拉发现的公式来说,item的值是1/i2,即1/(ixi),i从1开始,每次增加1解决本问题需要重复进行的工作是;
①累加item到s,即s=s+item;
②构造item,即item=1/(i
i),i=i+1。
2.设计算法,编写程序
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)
1.令i=1,em=1.,s=0;
2.循环当item大于等0.000001;
2.1
s=s+item;
2.2
i=i+1;
2.3
item=1/(i
i);
3.pi=
4.输出pi的值。
3.运行、调试程序
在Python中创建并运行程序,检查运行结果。
五、课后作业
1.循环开始前,item
的值是多少?循环结束后,item
的值是多少?
2.如果将第2.1步调至循环体的最后一行,该如何调整算法步骤来保证程序结果的正确?请上机运行检验。
3.如果按累加n项的方法控制循环,该如何修改程序?如何分别用while语句和for语句实现?
谢谢
21世纪教育网(www.21cnjy.com)
中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php中小学教育资源及组卷应用平台
项目七
用计算机计算圆周率
———设计简单数值数据算法
第一课时
设计算法实现用数学公式计算
■教材分析
“设计算法实现用数学公式计算”这一小节,使用欧拉公式设计算法实现圆周率的计算。首先,引出数值数据及其运算,然后从需求出发,分析问题并提出解决问题的方法,从而引出并重点探究循环结构的算法设计思路。考虑到循环结构中的初值、赋值过程、终值相对较难理解,教材中又设计了活动7.1——使用沃利斯公式法计算圆周率,教师可根据学生的掌握程度适当开展此活动,以进一步巩固学生对如何实现控制结构算法的认识,加深学生对循环结构的理解。
■教学目标
1、知识和技能
探究循环结构的算法设计思路。
2、过程与方法
通过设计算法进一步巩固学生对如何实现控制结构算法的认识,加深学生对循环结构的理解。
3、情感态度与价值观
(1)
提高分析问题和解决问题的能力,体会算法分析的魅力。
(2)通过完成本项目,学生将体验使用不同的方法计算圆周率,激发学习兴趣。
■教学重点:
探究循环结构的算法设计思路。
■教学难点:
认识程序的循环结构。
■教学准备
计算机教室,Python,投影机。
■教学素材
教材案例的源代码.
■教学过程:
一.数值数据及其运算
数值数据分为整数(int)和浮点数(float)。浮点数是带小数的数值。例如,1是整数,1.0是浮点数。在计算机中,两种数据的存储方式是不同的。
数值数据的运算包括标准的算术符号,如下表所示。其中+、-、
、/运算符的含义和用法和数学符号是一样的。
运算符
含义
示例
运算结果
+
加法
53+21
74
-
减法
63.1-2.2
60.9
乘法
300
1.5
450.0
/
除法
1/8
0.125
//
整除
1//8
0
次幂
2
3
8
%
求余数
17%3
2
运算符//执行的是整数除运算,它会产生一个小数部分为0的结果,小数部分会被舍掉。运算符
执行的是次幂运算,a
b等价于数学运算ab
。运算符%执行的是求余数运算。这三种运算符的用法举例如下:
二、循环结构的算法构建
要构建一个循环结构,需要解决两个问题:一是重复要做的是什么事,二是如何控制循环。对重复要做的是什么事,可以从分析问题入手解决。面对循环操作的控制,一般是通达使用一个循环控制变量来实现的。实现循环控制有三个要素:①循环控制变量的初值;②循环控制变量的终值;③在循环体中使循环控制变量由初值向终值变化的语句。
例1:求50!
1.分析问题
50!=1
2
3
4
5……
50,和累加问题类似,计算机算法的处理是逐项将1.2.3.……,50累乘到一介变量中。与累加问题不同的是,累乘变量的初值应为1.
2.设计算法一
观察算法一,可以发现每一步都是在做乘法。虽然乘的数据不同,但是这些数据的变化是有规律的,可以得到通项公式:s=s
i。接下来要确定循环控制变量。求阶乘的循环控制是由通项公式的执行次数决定的,一共执行50次。此时循环控制变量相当于一个计数器,从1开始,到50结束,每一次递增1。循环控制变量的变化和通项公式中的变量i的变化规律一样,所以将i作为循环控制变量。
3.设计算法二
值得注意的是,在循环体中一定要有一句使该循环能趋于结束的语句,如这里i=i+1,这样循环控制变量才能从初值变化到终值,最终结束循环。
利用循环结构解决问题时,也会遇到一些循环执行次数不确定的问题,如例2。
例2:输入一个任意正整数,求它的逆序数。
1.分析问题
求一个正整数的逆序数的方法,是每次取该数的最后一位数字,构造出一个新的整。例如,726的逆序数的求解过程如下。
构造循环控制时,可以将表示输入数的变量作为循环控制变量。输入初始值后,每次整除10,直到该数为0,循环结束。重复执行的操作是将原数的最后一位取下,通过位权值构造到新的逆序数中。
2.设计算法
在本例中,循环的次数在程序执行前是未知的,由数num是否为0决定循环是否停止执行。循环体中通过一个整除操作来改变num的值,使它不断向终值0变化,最终结束循环的运行。这里的循环控制变量num相当于一个标志量,根据它的值决定循环是否结束。
三、实现循环结构的语句
根据上面的分析,按循环执行次数的确定性划分,循环可以分为确定次数循环和不确定次数循环。
1.确定次数循环
确定次数循环指循环结构对循环次数有明确的定义,循环次数采用遍历结构中元素的个数来体现。
Python语言中通过for语句来实现确定次数循环。
for语句简化了循环控制变量计数的过程,用遍历结构提供循环控制变量的所有值的集合。每一次循环,循环控制变量依次取集合中的一个值。遍历结构可以是
range
函数产生的序列、组合数据对象(列表、字符串等)或文件对象。
用for语句实现求50!的语句块如下:
如果要将1~50之间所有的奇数累加,则可以用range函数的第三个参数设定循环控制变量变化的步长,其语句块如下:
2.不确定次数循环
不确定次数循环一直保持循环操作,直到特定循环条件一被满足时才结束,不需要提前知道循环次数。Python语言中通过while语句来实现不确定次数循环:
用while语句实现例2求逆序数的语句块如下:
while语句也可以用于完成确定次数循环,如用它实现求解50!的语句块如下:
四、计算圆周率
我们尝试用Python语言,根据欧拉发现的公式来计算圆周率。
1.分析问题
观察上面的数学公式可知,它是一项一项连续相加的,且每一项都可由前一项经过有规律的变化得到。有规律的数据项连续相加的问题,称为累加问题,用计算机算法处理就是逐项累加。上述累加计算的算法可以用自然语言描述,具体如下。
累加可以用一个公式来表示:s=
s+item。这个式子称为累加的通项公式。对上述欧拉发现的公式来说,item的值是1/i2,即1/(ixi),i从1开始,每次增加1解决本问题需要重复进行的工作是;
①累加item到s,即s=s+item;
②构造item,即item=1/(i
i),i=i+1。
完成公式的计算就是重复执行以上步骤,直到满足某一个循环控制条件。循环控制条件可以是计数执行n次,也可以是某一个变量达到指定值。先根据循环控制条件确定循环控制变量,进而确定循环控制变量的初值、终值和如何变化,如右图循环结构的流程图所示。
2.设计算法,编写程序
如果以累加项item的值小于0.000001为循环终止条件,那么用自然语言描述上述问题的算法如左下所示。
在Python语言中,利用while语句可以实现该循环结构的算法,程序如右下所示。这里用pi表示圆周率π。
在Python语言中,当只需引用外部模块中一个特定的系统函数时,可以使用from命令。From
math
import
sqrt语句的作用是从math库中载入数学函数sqrt,这个函数用于求一个数的平方根。
3.运行、调试程序
在Python中创建并运行程序,检查运行结果。
五、课后作业
1.
循环开始前,item
的值是多少?循环结束后,item
的值是多少?
2.
如果将第2.1步调至循环体的最后一行,该如何调整算法步骤来保证程序结果的正确?请上机运行检验。
3.如果按累加n项的方法控制循环,该如何修改程序?如何分别用while语句和for语句实现?
>>>x=34
>>>x%2
0
>>>x%3
1
>>>x%17
0
>>>x%4
2
>>>
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
算法一
1.令s=1;
2.s=s
1;
3.s=s
2;
……
51.s=s
50.
算法二
1.令s=1;
2.令i=1;
3.循环当i小于等于50;
3.1
s=s
i;
3.2
i=i+1.
第一次
726%10=6
0
10+6=6
726/10=72
第二次
72%10=2
6
10+2=62
72/10=7
结束
第三次
7%10=7
62
10+7=627
7/10=0
设输入的数为num,逆序数为reverseNum。
1.输入一个正整数到num;
2.令reverseNum=0;
3.循环当num>0;
3.1reverseNum=reverseNum
10+num%10;
3.2num=num//10;
4.输出reverseNum。
for<循环控制变量>in<遍历结构>;
<语句块>
s=1
for
i
in
range(1,51);
s=s
i
print(s)
s=0
for
i
in
range(1,50,2);
s=s
i
print(s)
While<条件>:
<语句块>
Num=int(input(“请输入一个数:“))
reverseNum=0
While(num):
reverseNum=reverseNum
10+num%10
Num=num//10
Print(“它的逆序数是:”,reverseNum)
s=1
i=1
while
i<=50:
s=s
i
i=i+1
Print(s)
1.设置累加器变量s的初值为0;
2.s=s+1/(1
1);
3.s=s+1/(2
2);
……
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)
1.令i=1,em=1.,s=0;
2.循环当item大于等0.000001;
2.1
s=s+item;
2.2
i=i+1;
2.3
item=1/(i
i);
3.pi=
4.输出pi的值。
21世纪教育网
www.21cnjy.com
精品试卷·第
2

(共
2
页)
HYPERLINK
"http://21世纪教育网(www.21cnjy.com)
"
21世纪教育网(www.21cnjy.com)