浙教版(2019)信息技术 必修1 3.2.4 Python语言程序设计——循环结构的程序实现 教学设计(2课时)

文档属性

名称 浙教版(2019)信息技术 必修1 3.2.4 Python语言程序设计——循环结构的程序实现 教学设计(2课时)
格式 zip
文件大小 44.5KB
资源类型 教案
版本资源 浙教版(2019)
科目 信息技术(信息科技)
更新时间 2021-01-19 14:45:18

文档简介

循环结构的程序实现—while语句教学设计
课程标准

教学目标
循环结构的程序实现—while语句
教材内容:
3.2.4
循环结构的程序实现
2.while语句
适应的课程标准:
1.7掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程。
教学目标:
●掌握while语句的格式。
●学会使用while语句编写循环结构的程序。
●学会按照问题需求,抽象问题的本质,建立问题模型,设计相应算法,编写Python语言的程序,从而掌握编写程序的过程与方法。
指向的核心素养:
●计算思维:(1)在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。(2)通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。
●数字化学习与创新:掌握数字化学习系统、学习资源与学习工具的操作技能,用于开展自主学习。
学习环境:有教学控制软件的多媒体机房,需要安装Python编程环境。
建议课时:1课时
教学活动设计
教学环节
教学过程
设计意图
情境导入
教师引导学生一起体验本节课要完成的任务--猜数字游戏。
猜数字游戏:给定一个数字让用户猜,用户输入猜测的数字,计算机给出相应的提示:“偏大”、“偏小”或“正确”。若所猜数字正确,则游戏结束;否则继续猜数。
让学生体验几次猜数字游戏,随后回答如下的问题:
问题1:每次猜数字的过程中,计算机程序是否重复执行了特定的步骤?这个重新执行的特定步骤是什么?
参考答案:用户输入猜测的数字,若正确,游戏结束;若猜测的数字偏大,显示“偏大”,继续猜数;若猜测的数字偏小,显示“偏小”继续猜数。
问题2:每次猜到正确数字的次数是否相同?用for循环能够实现猜数字的游戏?
参考答案:不同。for语句用于循环次数明确的问题的编程,而猜数字游戏每次运行循环的次数都是不同的,因此无法使用for语句来编程解决该问题。
通过体验猜数字游戏明确本节课的任务。通过问题1让学生明白猜数字游戏的过程本质上是循环,通过问题2明确该猜数字游戏与上节课用for语句实现的循环算法问题不同,它的循环次数是不确定的,从而引出本节课的内容while语句。
新课教学
如果循环的执行次数是未知的,可以使用while循环来编程解决该类问题。
●自主学习--while语句的格式及其使用
(1)自主学习教师提供的微课--while语句的格式和的使用。
while循环的格式:
while
条件:
<循环体>
while循环在执行时,首先会判断条件是否为真,如果条件为真,执行一次循环体,在此判断条件是否为真,如果仍威震,那么再执行一次循环体,以此类推,直到条件为假时推出while语句。
while语句的使用:
地球到月球的距离是38.4万千米,一张A4纸的厚度大约是0.1毫米,将这张A4纸不停的对折,请问对折多少次,纸的厚度将到达月球?
d
=
38.4
10000
1000
100
10
#
地月距离
h
=
0.1
#
A4纸的厚度
c
=
0
#
对折的次数
while
h
<=
d:
c
+=
1
h
=
2
print(c)
(2)while语句程序填空
完成程序填空:程序从命令行输入一个大于1的整数,能够判断该数是否为素数。根据素数的定义,素数除了1和它本身以外不再有其他因数。所以判断n是否为素数,只要判断2到n-1是否存在n的因数即可。
分析该问题,只需要找到2到n-1中的第一个因数就能证明n是非素数,程序便可以输出结果,所以不需要把2到n-1的所有数字都进行检验。但是,通过几次检验找到因数是不确定的,所以该问题适合用while语句编程解决。在解决该问题时,可以先假设n是素数,然后依次检验2到n-1的数字,找到第一个因子,假设不成立,循环结束,程序输出结果;如果2到n-1没有一个数字是n的因子,假设没有被推翻,n是素数。
参考答案(划线处为填空):
n
=
int(input("请输入一个大于1的整数:"))
i
=
2
is_prime
=
True
while
i
<=
n

1
and
is_prime:
if
n
%
i
==
0:
is_prime
=
False
i
+=
1
if
is_prime:
print(str(n)
+
"是素数。")
else:
print(str(n)
+
"不是素数。")
●学习任务—“猜数字游戏”编程实现
编程实现本课开始演示的“猜数字游戏”。
任务1:小组合作完成“猜数字游戏”的抽象与建模。
参考答案:
游戏中首先要确定一个数number,然后将用户猜测的数guess与number比较,直到相等为止。
通过上述的问题抽象,建立如下模型:
“正确”(guess=number),游戏结束。
猜数结果
“偏小”(guess“偏大”(guess>number),继续猜数。
任务2:小组合作讨论绘制该算法的流程图。
任务3:小组合作编写“热量消耗”计算的完整程序。
参考答案:
running
=
True
number
=
66
while
running:
guess
=
int(input("请输入猜测的数:"))
if
guess
==
number:
print("正确")
running
=
False
else:
if
guess
<
number:
print("偏小")
else:
print("偏大")
任务4:程序改进。(1)观看老师提供的关于break语句的微课,小组讨论在“猜数游戏”中,若不引入布尔型变量(本例中的running),程序该如何实现?(2)小组讨论,用户最多只能猜5次程序该如何实现?
参考答案:
(1)如果在循环条件仍然为假的时候想要跳出循环,可以用break语句。
(2)可以设置一个循环变量count,每次猜数字后将count的值累加1,count如果超过5,退出循环结束执行。
number
=
66
count
=
1
while
count
<=
5:
guess
=
int(input("请输入猜测的数:"))
if
guess
==
number:
print("正确")
break
else:
if
guess
<
number:
print("偏小")
else:
print("偏大")
count
+=
1
通过自主学习教师提供的while语句的格式和使用的微课理解while循环的格式和使用,初步理解while循环的循环变量与条件控制。
该任务需要学生在理解while语句格式和使用的基础上来解决问题,让学生在掌握while语句的格式和使用,特别是加深对while循环变量与控制条件的理解。
对“猜数字问题”进行抽象与建模,得到解决该问题的计算模型。
通过绘制“猜数字”算法流程图让学生进一步加强算法的设计与描述能力,对该算法有一个清晰的认识,为接下来的程序编写打下良好的基础。
通过编写“猜数字游戏”的完整程序,让学生进一步掌握while语句的使用,提升学生使用while语句解决真实情境问题的能力。该任务的解决,也让学生亲历“抽象与建模、设计算法、编写程序”的过程,能够使学生更加全面而深刻地掌握用算法解决问题的一般过程与方法,完成本节课的重点教学。
让学生掌握break语句的使用,能够根据真实情境的需求改进程序。通过让学生进一步的掌握while循环的循环变量与条件控制,突破本节课的难点。
课堂小结
知识梳理:
1.
while语句的格式
2.
while语句的特点与适用场景;
3.
break语句的作用;
4.
算法解决问题的一般过程与方法。
通过回顾总结帮助学生巩固while语句的格式、特点、适用场景、使用,回顾“抽象与建模、设计算法、编写程序”的过程,使学生更牢固的掌握用算法解决问题的一般过程与方法。
作业布置
基础作业(面向所有学生):
本节配套课后作业
提升作业(面向学有余力学生):
“猜数字游戏”的程序能否可以使用for语句实现?如果能,请尝试使用for语句实现“猜数字游戏”的程序。
课后作业是课堂学习的延伸,是巩固和升华知识点的有效途径。根据学生的基础和能力设置不同难度的作业,以满足不同层次的学生需求。
教学设计思路
本课内容为循环结构的程序实现-while语句。while语句相比for语句是一种更加通用的循环结构的程序实现语句,适用性更加强。for语句的主要应用场景是循环次数已知的情况,对于某些循环次数未知的情况,for语句显得力不从心。而这恰恰是while语句擅长的,因此,while语句是解决循环次数未知的编程问题的一种重要的程序语法结构,学习本课,能够为后续解决各种循环次数未知的实际编程问题打下良好的基础。
在上一课学习for语句的过程中,学生已经亲历了“抽象与建模、设计算法、编写程序”的过程,有了使用循环结构的程序编程解决实际问题的经验。因此,本课在实施教学的时候采用案例教学法、任务驱动法和自主学习。学生在完成“猜数字游戏”的过程中,通过小组合作、自主学习来学习while语句的相关知识,并最终利用学到的知识完成“猜数字游戏”。
在教学中,首先让学生玩几次“猜数字游戏”,分析该问题的基本程序结构,循环次数是否固定来引出本节课的教学内容。随后,学生通过自主学习教师提供的数字化学习资源来掌握while语句的格式与使用,为了帮助学生进一步的理解和掌握while语句的使用,还给学生准备了一个简单的“判断素数”的问题供学生练手。在解决“判断素数”问题的过程中,使学生体验while语句解决循环次数不固定的问题的优势,对while语句循环变量与控制条件也有更进一步的思考,为本节课的难点教学做好铺垫。
学生在掌握了while语句格式与while语句使用的基础上,再解决“猜数字游戏”问题,培养、提升学生的计算思维。在上一节课的学习中,学生已经有了
“抽象与建模、设计算法、编写程序”的经历与体验,所以这个问题的解决完全可以放手给学生做,让学生小组合作完成该问题,教师在这个过程中只需要做好支持者和指导者的角色,帮助学生更好的学习。
本节课主要通过完成“猜数字游戏”来完成本节课重点的教学。While语句的循环变量与控制条件是本节课的难点,学生在初次编写while语句的时候经常会忘记循环体中改变循环变量或者忘记修改循环的控制条件,从而导致死循环。对于该难点,在“判断素数”的问题中,已经让学生对于while循环的循环变量和条件控制有了一定的体验,在“猜数字游戏”的完成过程中,让学生进一步加强对于while循环的循环变量和条件控制的理解,通过限定猜数字的次数和使用break语句进一步加深学生对于while循环循环变量和条件控制的掌握,突破本节课的难点。
针对
核心素养培养的
设计考虑
考虑上一节课的学习内容,学生已经掌握了使用for语句编写解决循环结构的程序来解决问题的方法,在本节课的学习中可以把更多的主动权交给学生,让学生通过数字化学习来学习本节课的知识,培养学生的数字化学习与创新素养。本课所使用的案例“猜数字游戏”是一个基于真实情境的问题,因此,在解决该问题的过程中必定要经历计算机编程解决问题的一般步骤,而这恰恰非常适合计算思维的培养。
在本课的教学中,教师并不像往常那样讲解while语句的格式、while语句的使用、break语句的使用。而是提供给学生预先准备数字化学习资源,为什么进行数字化学习提供条件。学生通过自主学习教师提供的数字化学习资源来学习while语句的格式及其使用,通过学生自主的数字化学习来培养学生掌握数字化学习系统、学习资源与学习工具的操作技能,用于开展自主学习的数字化学习与创新素养。除了提供数字化学习资源,在自主学习的过程中,教师也要做好支持和指导的工作,数字化学习过程中的一些问题给予学生知道与帮助。
在掌握while语句的格式及使用以后,随后布置学习任务—“猜数字游戏”编程实现。按照算法解决问题过程的“抽象建模”—“设计算法”—“编写程序”的3个步骤,让学生小组分工合作最终完成“猜数字游戏”。在“抽象建模”阶段中培养了学生通过计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据的计算思维。在“设计算法”阶段通过绘制解决该问题的流程图,培养学生分析与综合各种信息资源,运用合理的算法形成解决问题的方案的计算思维。在“编写程序”阶段培养学生能够编写简单程序用以解决问题的计算思维。为了进一步的提升学生计算思维,还设计了程序改进的任务,不引入布尔型变量的break的程序实现和限制猜数次数的程序实现。循环结构的程序实现—for语句教学设计
课程标准

教学目标
循环结构的程序实现—for语句
教材内容:
3.2.4
循环结构的程序实现
1.for语句
适应的课程标准:
1.7掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程。
教学目标:
●掌握for语句的格式。
●掌握range函数的用法。
●学会利用for语句编写循环结构的程序。
●学会按照问题需求,抽象问题的本质,建立问题模型,设计相应算法,编写Python语言的程序,从而掌握编写程序的过程与方法。
指向的核心素养:
●信息意识:能够根据解决问题的需要,自觉、主动地获取与处理信息。
●计算思维:(1)在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。(2)通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。
学习环境:有教学控制软件的多媒体机房,需要安装Python编程环境。
建议课时:1课时
教学活动设计
教学环节
教学过程
设计意图
情境导入
教师引导学生针对下面问题进行思考、讨论。
问题1:现在有一个列表hobby
=
["篮球",
"羽毛球",
"看书",
"旅行",
"音乐"],如果要将hobby中的所有元素输出到屏幕上(一行一个元素),这属于何种控制结构?
问题2:如果要将1到20的所有整数都输出到屏幕上,这属于何种控制结构?
问题1与问题2都属于循环结构的算法例子,通过循环结构的算法实例引出本节课的内容—循环结构的程序实现。
新课教学
●知识讲解--for语句的格式和for语句的例子
教师讲解Python中for语句的格式:
for
<变量>
in
<序列>:
<循环体>
For语句通过遍历序列中的元素实现循环,并通过序列的元素数量来控制循环次数,即循环过程,序列中的每个元素都会依次被赋值给变量,并分别执行一次循环体。随后,教师演示通过for语句编程实现情境导入—问题1。
for
x
in
hobby:
print(x)
以上程序会依次在屏幕上输出hobby中的每一个元素。
●学习任务--for语句编程实践
①有一个表示编程语言的列表langs
=
["C#",
"Java",
"JavaScript",
"Ruby",
"Python",
"clojure",
"Go",
"Rust"],请编写程序在屏幕上输出名称少于6个字符的编程语言。
参考答案:
for
lang
in
langs:
if
len(lang)
<=
6:
print(lang)
②学生自主学习教材中关于range函数的使用及其说明。随后编程实现输出20以内的偶数。
参考答案1:
for
i
in
range(2,
22,
2):
print(i)
参考答案2:
for
i
in
range(2,
21):
if
i
%
2
==
0:
print(i)
●学习任务—讨论for语句的特点和使用场景
问题:for语句有何特点?什么情况下使用比较合适?
参考答案:for语句是在一个序列上循环,并通过序列的元素数量来控制循环次数,因此在循环次数明确的情况下使用for语句比较方便。
●学习任务—热量消耗计算
人体运动时,热量的消耗取决于多方面的因素。进行同样的运动,体重越重所消耗的热量就越高。运动项目、运动强度、运动量等因素的不同也会导致所消耗的热量有较大的差异。请查阅相关资料,估算某一天你的主要运动所消耗的热量,并编程计算总量。
任务1:通过网络查找运动、运动时间、热量消耗之间的关系,根据自己的实际情况将自己一天当中主要运动的时间和该运动消耗的热量绘制成表格。然后根据绘制的表格抽象出总热量计算的公式。
从网络上查找到的运动需要消耗的热量主要和运动类型及其运动时间有关,比如慢走一般是1小时4公里,消耗的热量是255卡,单车1小时消耗的热量是415卡。所以,在绘制表格的时候要表明运动项目,每小时的消耗和运动时间(单位为小时)。
分析表,可以得到热量消耗的计算模型如下:
(其中s为总热量,为运动每小时消耗热量,为该项运动运动时间。)
任务2:小组合作讨论绘制该算法的流程图。
任务3:小组合作编写“热量消耗”计算的完整程序。
参考答案:
在本算法中,我们为了确保存储数据的完整性和可读性,列表的每一项都用字典来表示,比如慢走这项运动表示如下:
{'运动项目':'慢走',
'每小时消耗':
255,
'运动时间':
0.5}
整个列表如下:
data
=[
{'运动项目':'慢走',
'每小时消耗':
255,
'运动时间':
0.5},
{'运动项目':'慢跑',
'每小时消耗':
655,
'运动时间':
0.5},
{'运动项目':'单车',
'每小时消耗':
245,
'运动时间':
0.2},
{'运动项目':'爬楼梯',
'每小时消耗':
480,
'运动时间':
0.2},
{'运动项目':'游泳',
'每小时消耗':
550,
'运动时间':
1},
{'运动项目':'手球',
'每小时消耗':
600,
'运动时间':
0.5},
]
s
=
0
for
item
in
data:
s
=
s
+
item['每小时消耗']
item['运动时间']
print(s)
任务4:将任务3的for语句修改为如下形式,完成划线处的代码。
s
=
0
for
i
in
range(0,
len(data)):
s
=
s
+
print(s)
通过讲解for语句的格式以及for语句的实际应用,让学生了解for语句的格式和for语句的使用。
该任务需要学生使用已经初步了解的for语句来解决问题,而且需要结合已经学习过的分支结构if语句的实现,有一定的综合性,让学生通过实践从了解for语句的使用上升到掌握for语句的使用,并能够结合前面学过的分支结构解决简单算法问题。
通过自主学习理解range函数,通过学习任务进一步掌握range函数的使用,并能够使用range函数根据需要生成需要的整数区间。
通过讨论让学生理解for语句的特点机器适用的场景,让学生可以针对具体情境判断是否使用for循环。
通过任务1培养学生根据解决问题的需要,自觉、主动地获取与处理信息的信息意识,随后对热量消耗问题进行抽象与建模,得到解决该问题的计算模型。
通过绘制“热量消耗”算法流程图让学生进一步加强算法的设计与描述能力,对该算法有一个清晰的认识,为接下来的程序编写打下良好的基础。
通过编写“热量消耗”计算的完整程序,让学生进一步巩固for语句的使用,提升学生使用for语句解决真实情境的问题的能力。该任务的解决,也让学生亲历“抽象与建模、设计算法、编写程序”的过程,能够使学生更加全面而深刻地掌握用算法解决问题的一般过程与方法,突破本节课的难点。
让学生掌握for语句与range函数配合使用的方法,扩宽学生视野,让学生在实现算法的时候能够有更多的选择。
课堂小结
知识梳理:
1.
for语句的格式
2.
for语句的特点与适用场景;
3.
range函数;
4.
算法解决问题的一般过程与方法。
通过回顾总结帮助学生巩固for语句的格式、特点、适用场景、使用和range函数,回顾“抽象与建模、设计算法、编写程序”的过程,使学生更牢固的掌握用算法解决问题的一般过程与方法。
作业布置
基础作业(面向所有学生):
本节配套课后作业
提升作业(面向学有余力学生):
通过网络查询Python的for语句的底层实现机制,更加深刻的理解Python的for语句。
课后作业是课堂学习的延伸,是巩固和升华知识点的有效途径。根据学生的基础和能力设置不同难度的作业,以满足不同层次的学生需求。
教学设计思路
本课主要采用案例教学法与任务驱动法来进行教学。本课主要围绕真实情境问题“运动消耗热量计算”这个案例展开教学,学生通过完成教师布置的一项项任务最终完成解决该问题的程序。
本课首先通过一些循环的例子进行导入。让学生理解循环结构是对某些语句反复执行。当学生理解了for语句的格式与使用之后,完成2个for语句编程实践(输出字符较少的编程语言名称和输出偶数)理解和掌握for语句的简单实用。其中第二个编程实践是输出偶数,使用的是range函数,range函数与for语句配合使用的情况很多,range函数又是相对来说比较简单的,所以range函数掌握通过自主学习完成。随后通过讨论的形式来分析for语句的特点和适用场景。for语句是在一个序列上循环,并通过序列的元素数量来控制循环次数,因此在循环次数明确的情况下使用for语句比较方便。
学生在掌握了for语句格式与for语句使用的基础上,开始解决真实情境中的“运动热量消耗计算”问题,引导学生经历“抽象与建模、设计算法、编写程序”的过程,培养、提升学生的计算思维。
真实情境中的问题通常比较复杂,教师要做好设计者和激励者的角色。教师应该讲问题先进行分解,转化为一系列步骤,并将这些步骤设计成学生能够完成的任务,通过任务驱动来完成整个问题的程序设计。学生在完成这些任务的时候可以分组,通过讨论合作完成任务,教师再次过程中要对学生的活动进行引导,并激励学生,帮助学生一步一步的完成该问题的程序设计。在完成第1个任务的时候着重培养能够根据解决问题的需要,自觉、主动地获取与处理信息的信息意识和在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据的计算思维。在完成第2个任务的时候着重培养通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案的计算思维。在完成第3个任务的时候着重培养能够编写简单程序用以解决问题的计算思维。
本节课的重点教学建议通过for语句编程时间和真实情境问题的解决来进行,难点的突破主要在通过真实情境问题的解决。
针对
核心素养培养的
设计考虑
本课所使用的案例“运动消耗热量计算”是一个真实情境的问题,使用计算机编程来解决真实情境的问题,可以让学生经历“抽象建模”—“设计算法”—“编写程序”这几个步骤,
因此,在设计本课的时候,核心素养的培养主要聚焦在了计算思维的培养上,但是“运动消耗热量计算”不同于3.1中绘制多边形的问题,它需要具体的数据支撑(需要运动项目和消耗热量等数据),所以在“抽象建模”阶段也顺带培养了信息意识。
本课在具体设计的时候,通过3个任务,让学生充分体验“抽象建模”—“设计算法”—“编写程序”这3个步骤。
抽象建模阶段。设计第1个任务:计算某一天主要运动的所消耗的总热量。要计算总热量,学生需要分析总热量和哪些因素相关,最终计算的总热量和这些因素之间存在怎样的关系,即得出计算模型。在完成这个任务的过程中,培养了学生通过计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据的计算思维。分析出相关的因素之后,还需要收集相关数据,没有数据光有计算模型无法进行计算。因此,在相关数据的收集的过程中又附带培养了根据解决问题的需要,自觉、主动地获取与处理信息的信息意识。第2个任务设计算法。
第2个任务主要让学生小组合作完成解决该问题的流程图。通过绘制解决该问题的流程图,培养学生分析与综合各种信息资源,运用合理的算法形成解决问题的方案的计算思维。在这个阶段,教师应该给予学生充分的时间让学生思考和讨论,教师给予适当的引导,让学生的计算思维能够得到充分的培养。
第3个任务是编写程序。在这个任务中,学生需要根据完成的流程图来把解决该问题的实际程序编写出来。在这个阶段,应该让学生对写好的程序多进行测试,对于学生出现的问题教师给予解答,对于比较普遍的问题可以拿出来当堂讨论。在此过程中,培养学生能够编写简单程序用以解决问题的计算思维。
在“运动消耗热量计算”的3个任务完成以后,还设计了一个使用range改写程序的任务,目的是通过这个任务进一步提升学生编写简单程序用以解决问题的计算思维。