第9课 for循环的应用实例 课件(32张PPT)+教案

文档属性

名称 第9课 for循环的应用实例 课件(32张PPT)+教案
格式 zip
文件大小 2.8MB
资源类型 试卷
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2020-11-10 16:08:55

文档简介

(共32张PPT)
浙教版信息技术
八年级
第9课
for循环的应用实例
新知导入
上节课我们学习了for循环机构程序设计,这节课我们通过实例进一步理解应用for机构程序结构,来解决实际问题。让我们一块学习吧!
新知讲解
在印度有一个古老的传说:国王打算奖赏发明了国际象棋的大臣。
他对国王说:“陛下,我只要一些麦粒。请您在这张棋盘的第1个小格放1粒麦子,第2个小格放2粒,第3小格放4粒,第4小格放8粒,以此类推,直到把64格棋盘放满就行了。”
国王觉得这个要求太容易满足了,就答应给他这些麦粒。
当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就算把全印度甚至全世界的麦粒都拿来,也满足不了他的要求。
新知讲解
那么,这位大臣要求得到的麦粒到底是多少呢?
新知讲解
一、问题分析
该问题可以用累加的方法求解,相邻格子的麦粒数有一定规律,即后一格的麦粒数是前一格的2倍。
若用变量i表示当前所处格子的序号,变量p表示此格子中存放的麦粒数,变量s表示累加得到的麦粒数
新知讲解
那么分析过程如表所示
格子的序号(i)
当前格子存放的麦粒数(p)
累加和(s)
1
1
1
2
1
2
1+2
3
2
2
1+2+4
4
2
2
2
1+2+4+8
……
……
……
64
2
2
2...
2
1+2+4+8…
新知讲解
二、算法设计
根据以上分析,输入数据为棋盘的格子数n,输出数据为麦粒的总粒数s。间处理数据为计数器和每个格子的麦粒数,不用输出。
新知讲解
输入:棋盘的格子数n。
该算法用自然语言描述如下:
处理:每个格子的麦粒数p。
输出:麦粒的总数s。
新知讲解
该算法用流程图表示,如图所示。
新知讲解
三、编写代码
根据设计的算法,
先输入棋盘的格子数n,
然后通过for循环语句实现累加。麦粒总数s需要在循环之前进行数值初始化为0,第1格麦粒数p数值初始化为1。
新知讲解
其程序代码如下:
#n表示棋盘的格子数
n=int(input("请输入棋盘格子数:”))
P=l
#第1格麦粒数p置初值1
s=0
#累加器s初始化为0
#通过for语句循环累加,
并输出麦粒总数
for
i
in
range(1,
n+1)

s=s+p
p=p
2
print("棋盘格子数为:",
n,
",
麦粒总数:",
s)
新知讲解
循环的边界条件,也就是考虑循环的进入和退出条件。
本例中,循环是从第1个格子到第64个格子,
因为包含第64个格子本身
所以函数range()
的终值参数为n+1。
新知讲解
计数器
在算法执行过程中,用来记录某种事件发生次数的变量。
1.计数器的初值通常置为0.
2.循环体中的计数语句格式通常为i=i+1。
知识链接
新知讲解
累加器
在算法执行过程中,用来生成并存储数据累加和的变量。
1.累加器的初值通常置为0.
2.循环体中的累加语句格式通常为s=s+x。
知识链接
新知讲解
四、调试运行
按“F5”键,输入棋盘格子数,观察运行结果。
新知讲解
为了更好呈现麦粒重量和计算过程,可以将麦粒数转化为吨数(按每粒麦子约0.03克计算),并在循环过程中输出每个格子的麦粒数p。
新知讲解
其程序代码如下:
#n表示棋盘的格子数
n=int(input("请输入棋盘格子数:")
)
p=l
#第1格麦粒数p置初值1
S=0
#累加器s初始化为O
#通过for语句循环累加,
并输出每个格子麦粒数
#最后输出麦粒总重量,单位换算成吨
for
i
in
range(1,
n+1)

s=s+p
p=p
2
print("当前格子序号:",
i,
",
当前格子麦粒数:",
int(p/2)
)
s=(s
0.03)/(1000
1000)
print("麦粒总重量(吨):",
format(s,
'.2f')
)
新知讲解
判断m是否为素数(m为正整数,由用户输入)
实践1
新知讲解
分析:
(1)素数的定义:一个数是素数,则这个数的约数只有1和它本身。
(2)若一个数不是素数,则只有这个数存在除1和它本身之外的任意一个约数即可。即:若m不是素数,则除1和m外,至少还存在一个约数x,且x的取值范围是:[2,
m-1].
(3)综合前两条,判断m是否为素数,只需依次判断[2,m-1]中是否存在m的约数即可。显然,循环变量的初值为:start=2,终值为:stop=m-1+1=m,步长step=1.
新知讲解
代码示例:
新知讲解
但代码示例1存在一定的bug,那就是当m的值为1或2时,或提示出错,错误提示如下:
新知讲解
这是因为,当m的值为1或2时,for循环条件不成立,for循环不执行,i没有赋值。
所以会提示:变量i没有定义。
为解决程序bug,需要加上m=1和m=2这两种情况。
新知讲解
代码示例:
新知讲解
实践2
九九乘法表
新知讲解
分析:
观察九九乘法表,乘号前面的数是从1到9(以行为单位);
在每行内部,乘号后面的数是从1开始逐渐增加,直到等于乘号前面的数。
令变量i表示乘号前面的数,则i初值start=1,终值为stop=9+1=1;
令变量j表示乘号后面的数,则j初值start=1,终值为stop=i+1
新知讲解
代码示例:
lst=[
]
#初置空列表
for
a=i%10
#个位
b=(i//10)%10
#十位
c=i//100
#百位
if
(a
3+b
3+c
3)==i:
lst.append(i)
print(lst)
随堂练习
寻找水仙花数。水仙花数是指一个三位数,它每个数位上的数的3次幂之和等于它本身。
课堂小结
总结本节课所学内容
板书设计
一、问题分析
二、算法设计
三、编写代码
四、调试运行
求m到n的所有素数(m和n为正整数,由用户输入,且m和n均大于等于3)
作业布置
谢谢
21世纪教育网(www.21cnjy.com)
中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php中小学教育资源及组卷应用平台
浙教版信息技术八年级第9课for循环的应用实例教学设计
课题
for循环的应用实例
单元
第二单元
学科
信息技术
年级
八年级
学习目标
知识目标:掌握for循环的语法格式,学会使用for循环解决实际生活中的问题。技能目标:掌握利用for循环分析问题和解决问题的能力,能够编写正确的python代码。情感目标:通过实践,增强学生学习的自信心和自豪感;提升学生对学习python的兴趣。
重点
for循环结构语法格式
难点
使用for循环解决实际问题
教学过程
教学环节
教师活动
学生活动
设计意图
导入新课
上节课我们学习了for循环机构程序设计,这节课我们通过实例进一步理解应用for机构程序结构,来解决实际问题。让我们一块学习吧!
思考并回答问题
激发学生学习兴趣并快速进入学习状态
讲授新课
在印度有一个古老的传说:国王打算奖赏发明了国际象棋的大臣。他对国王说:“陛下,我只要一些麦粒。请您在这张棋盘的第1个小格放1粒麦子,第2个小格放2粒,第3小格放4粒,第4小格放8粒,以此类推,直到把64格棋盘放满就行了。”国王觉得这个要求太容易满足了,就答应给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就算把全印度甚至全世界的麦粒都拿来,也满足不了他的要求。那么,这位大臣要求得到的麦粒到底是多少呢?一、问题分析该问题可以用累加的方法求解,相邻格子的麦粒数有一定规律,即后一格的麦粒数是前一格的2倍。若用变量i表示当前所处格子的序号,变量p表示此格子中存放的麦粒数,变量s表示累加得到的麦粒数那么分析过程如表所示二、算法设计根据以上分析,输入数据为棋盘的格子数n,输出数据为麦粒的总粒数s。间处理数据为计数器和每个格子的麦粒数,不用输出。该算法用自然语言描述如下:输入:棋盘的格子数n。处理:每个格子的麦粒数p。输出:麦粒的总数s。该算法用流程图表示,如图所示。三、编写代码根据设计的算法,
先输入棋盘的格子数n,
然后通过for循环语句实现累加。麦粒总数s需要在循环之前进行数值初始化为0,第1格麦粒数p数值初始化为1。其程序代码如下:#n表示棋盘的格子数n=int(input("请输入棋盘格子数:”))P=l
#第1格麦粒数p置初值1s=0
#累加器s初始化为0#通过for语句循环累加,
并输出麦粒总数for
i
in
range(1,
n+1)

s=s+p
p=p
2print("棋盘格子数为:",
n,
",
麦粒总数:",
s)循环的边界条件,也就是考虑循环的进入和退出条件。本例中,循环是从第1个格子到第64个格子,
因为包含第64个格子本身所以函数range()
的终值参数为n+1。知识链接计数器在算法执行过程中,用来记录某种事件发生次数的变量。1.计数器的初值通常置为0.2.循环体中的计数语句格式通常为i=i+1。知识链接累加器在算法执行过程中,用来生成并存储数据累加和的变量。1.累加器的初值通常置为0.2.循环体中的累加语句格式通常为s=s+x。四、调试运行按“F5”键,输入棋盘格子数,观察运行结果。为了更好呈现麦粒重量和计算过程,可以将麦粒数转化为吨数(按每粒麦子约0.03克计算),并在循环过程中输出每个格子的麦粒数p。其程序代码如下:#n表示棋盘的格子数n=int(input("请输入棋盘格子数:")
)p=l
#第1格麦粒数p置初值1S=0
#累加器s初始化为O#通过for语句循环累加,
并输出每个格子麦粒数#最后输出麦粒总重量,单位换算成吨for
i
in
range(1,
n+1)

s=s+p
p=p
2
print("当前格子序号:",
i,
",
当前格子麦粒数:",
int(p/2)
)s=(s
0.03)/(1000
1000)print("麦粒总重量(吨):",
format(s,
'.2f')
)实践1判断m是否为素数(m为正整数,由用户输入)分析:(1)素数的定义:一个数是素数,则这个数的约数只有1和它本身。(2)若一个数不是素数,则只有这个数存在除1和它本身之外的任意一个约数即可。即:若m不是素数,则除1和m外,至少还存在一个约数x,且x的取值范围是:[2,
m-1].(3)综合前两条,判断m是否为素数,只需依次判断[2,m-1]中是否存在m的约数即可。显然,循环变量的初值为:start=2,终值为:stop=m-1+1=m,步长step=1.代码示例:但代码示例1存在一定的bug,那就是当m的值为1或2时,或提示出错,错误提示如下:这是因为,当m的值为1或2时,for循环条件不成立,for循环不执行,i没有赋值。所以会提示:变量i没有定义。为解决程序bug,需要加上m=1和m=2这两种情况。代码示例:实践2九九乘法表分析:观察九九乘法表,乘号前面的数是从1到9(以行为单位);在每行内部,乘号后面的数是从1开始逐渐增加,直到等于乘号前面的数。令变量i表示乘号前面的数,则i初值start=1,终值为stop=9+1=1;令变量j表示乘号后面的数,则j初值start=1,终值为stop=i+1代码示例:随堂练习寻找水仙花数。水仙花数是指一个三位数,它每个数位上的数的3次幂之和等于它本身。lst=[
]
#初置空列表for
a=i%10
#个位
b=(i//10)%10
#十位
c=i//100
#百位
if
(a
3+b
3+c
3)==i:
lst.append(i)print(lst)
通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。学生小组间讨论,共同完成任务。通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。学生小组间讨论,共同完成任务。通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。学生小组间讨论,共同完成任务。通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。学生小组间讨论,共同完成任务,并分组汇报。
通过小组合作,加强学生组内团结、共同完成任务培锻炼学生的语言组织能力和表达的能力。加强学生组内团结、共同完成任务。加强学生组内团结、共同完成任务培锻炼学生的语言组织能力和表达的能力。加强学生组内团结、共同完成任务培锻炼学生的语言组织能力和表达的能力。加强学生组内团结、共同完成任务培养学生独立完成练习的能力。
课堂小结
分小组总结归纳,教师补充。
各组汇报总结,其他小组成员做补充。
锻炼学生的总结能力,逻辑思维、语言表达能力。
布置作业
求m到n的所有素数(m和n为正整数,由用户输入,且m和n均大于等于3)
板书
一、问题分析二、算法设计三、编写代码四、调试运行
21世纪教育网
www.21cnjy.com
精品试卷·第
2

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