分支结构的程序实现(if)教学设计
课程标准
和
教学目标
分支结构的程序实现(if)
教材内容:本课包含教材3.2.3分支结构的程序实现1.if语句与3.2.1Python语言基础中的关系运算符和逻辑运算符。
适应的课程标准:
1.7掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程。
教学目标:
●掌握if语句的格式。
●掌握关系运算符和逻辑运算符。
●学会利用if语句编写分支结构的程序解决问题。
指向的核心素养:
●信息意识:能够根据解决问题的需要,自觉、主动地寻求恰当的方式获取与处理信息。
●计算思维:在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。
学习环境:有教学控制软件的多媒体机房,需要安装Python编程环境。
建议课时:1课时
教学活动设计
教学环节
教学过程
设计意图
情境导入
问题:在第二章的学习中,同学们已经理解了分支结构的流程,接下来请大家看下面的两块伪代码:
伪代码①
if
今晚不下雨:
去体育馆打篮球
else:
去健身房健身
伪代码②
if
车牌记录在小区住户汽车记录能够查询到:
解锁门禁,允许汽车驶入
else:
提示警告音,禁止通行
在这两块伪代码中,if代表“如果”,else代表“否则”。请大家思考,“如果”和“否则”的代码是否会都运行?如果只是运行其中的一块,是由什么来控制的?和我们第二章学习过的什么控制结构一致?
参考答案:
这两块代码要么运行“如果”后的代码,要么运行“否则”后的代码,都是通过if后面的问题答案来确定执行哪一块的。与第二章学习过的控制结构中的分支结构一致。
通过生活实例伪代码引出本课要学习的if语句的内容。使用生活实例有助于学生更容易理解分支结构的代码表示形式。
新课教学
●知识讲解—if语句格式、关系运算符、逻辑运算符
教师展示if语句的一般格式:
if
<条件>:
<语句块1>
else:
<语句块2>
条件是一个表达式,它的值是布尔类型的数据,不是真(True)就是(False)。条件为真时,执行语句块1。条件为假时执行语句块2。在上面if语句一般格式中特别注意!语句块1和语句块2都缩进了4格,这是python的固定强制语法格式。
else语句块也可省略,if语句变为:
if
<条件>:
<语句块>
if语句格式中的条件可以用关系运算符或者逻辑运算符来计算,关系运算符和逻辑运算符见下表。
Python关系运算符
运算符表达式描述示例>x
>
yx大于y5>2结果是True<
yx小于y5<2结果是False>=x
>=
yx大于等于y5>=2结果是True<=x
<=
yx小于等于y5<=2结果是False==x
==
yx等于y5==2结果是False!=x
!=
yx不等于y5!=2结果是Trueinx
in
yx是y的成员1
in
[1,2,3]结果是True
Python逻辑运算符
运算符表达式描述说明andx
and
y布尔“与”x和y都为True,结果为True,否则结果为Falseorx
or
y布尔“或”x和y其中之一为True,结果为True,否则结果为Falsnotnot
x布尔“非”x为True,结果为False,否则为True
●学生活动—简单分支结构程序语句编写
①编写一个程序,输入[1,
100]范围能的整数分数,如果分数在60分以上,则输出及格,否则输出不及格。
参考答案:
score
=
int(input("请输入分数:"))
if
score
>
60:
print("及格")
else:
print("不及格")
②输入一个整数,如果该数既是3的倍数又是7的倍数则输出ok。
参考答案:
n
=
int(input("请输入整数:"))
if
n
%
3
==
0
and
n
%
7
==
0:
print("ok")
●学生任务—“区间测速”问题
目前,国内很多高速公路都启用了区间测速。所谓区间测速,是在同一路段上布设两个监测点,基于车辆通过前后两个监测点的时间来计算车辆在该路段上的平均行驶速度,并依据该路段上的限速标准判定车辆是否超速。
现有一段长为25千米的测速区间,小车的限速是100千米/小时。数据中心需要编写一
段程序,用来判断某辆小车在此测速路段是否超速。
对该任务进行抽象建模,随后设计算法,最终编写程序用于判断小车是否在此测速路段超速。
任务①:抽象建模
a.区间测速需要测量哪些数据?
b.该问题计算数据模型是怎样的?
参考答案:
a.判断小车是否超速最关键的是需要计算该车辆在该路段的平均行驶速度v,该段区间的长度s固定不变,始终为25km,只需要测量小车进入该区间和离开该区间的时间t就可以求解平均行驶速度v。
b.计算模型
平均速度计算:
“正常”(v
<=
100)
判断结果
“超速”(v
>
100)
任务②:设计算法
根据计算模型,设计解决“区间测试”问题的算法,并绘制流程图。
参考答案:
任务③:编写程序
根据设计的算法编写解决“区间测试”问题的程序。
参考答案:
t
=
float(input("请输入用时(小时):"))
s
=
25
v
=
s
/
t
if
v
<=
100:
print("正常")
else:
print("超速")
问题与讨论:分下下面两段代码,找出两者的区别。
代码段A:
t
=
float(input("请输入用时(小时):"))
s
=
25
v
=
s
/
t
if
v
<=
100:
print("正常")
else:
print("平均车速:"
+
str(v))
print("超速")
代码段B:
t
=
float(input("请输入用时(小时):"))
s
=
25
v
=
s
/
t
if
v
<=
100:
print("正常")
else:
print("平均车速:"
+
str(v))
print("超速")
参考答案:
代码段A的print("超速")因为没有缩进,所以总是会执行。而代码段B的print("超速")因为缩进了4格,属于else语句的代码块,只有v<=100不成立的时候才会执行。
理解关系运算符、逻辑运算符和if分支结构程序的编写。
通过简单分支结构程序语句编写初步掌握关系运算符、逻辑运算符和if分支结构程序的编写。
通过分析得到“区间测试”问题的计算模型,为后续的设计算法与编写程序作铺垫。
为后续的编写程序打下基础。
通过该任务让学生学会利用Python语言编写分支结构的if语句的程序解决问题,完成本课难点教学。通过问题与讨论进一步理解每条语句的功能,并感受顺序结构的执行过程。
课堂小结
1.if语句的格式。
2.关系运算符和逻辑运算符。
3.利用if语句编写分支结构的程序解决问题。
通过回顾总结帮助学生巩固本节课的学习内容。
作业布置
基础作业(面向所有学生):
本节配套课后作业
提升作业(面向学有余力学生):
编程实践:在Python的Shell中输入以下表达式看看能得到怎么样的结果?这些表达式是如何进行关系运算的?
①
4
<
5
<
6
②
6
>
5
>
4
>
3
>
2
>
1
③
6
>
5
<
8
>
7
<
9
④
8
>
4
<
3
==
3
>
2
基础作业主要是巩固本节课学习到的知识。提高作业给学有余力的同学完成,让学生了解在Python中关系运算表达式的语法糖表示形式。
教学设计思路
本课的内容为分支结构的程序实现(if语句)。建议这节课采用实例教学法和任务驱动教学法。学生在第二章的学习中,已经理解了分支结构的流程,本节课可在前面基础上,参考如下教学设计思路:首先,引入if语句来实现程序。对照if语句的格式,建议通过生活中的一些实例,如“根据天气选择是否外出”、“根据车牌识别结果是否解锁门禁判断”等,抽象出相应的“条件”和“语句块”,通过“条件”引出关系运算符和逻辑运算符,学习这重量运算符并通过实例来巩固学习的成果。教师可引导学生灵活运用关系运算符和逻辑运算符对“条件”进行描述,帮助学生深入理解分支结构程序实现的过程与方法。接下来,结合“区间测速”任务,在抽象建模环节,引导学生从问题描述中抽象出问题解决所需的要素,并将其形式化。如“距离”、“时间”、“速度”等要素,并对时间作简化处理,同时,为后续的编程考虑,对这三个要素设定相应的数据类型及变量名。“条件”为小车运行速度与限速比较的值(True或False),“语句块”分别为显示“正常”和“超速”信息,再根据公式v=s/t建立相应的模型。在抽象与建模的基础上设计相应的算法,并鼓励学生运用多种方式进行描述。最后,引导学生学会运用if语句编写程序,并在调试程序过程中进一步理解分支结构程序实现的过程与方法。在编写和调试过程中,教师要关注程序代码的缩进,可结合教材中的问题与讨论,组织学生进行分组讨论,不同的代码缩进对程序运行结果会产生哪些影响。
针对
核心素养培养的
设计考虑
本课核心素养的落点主要是计算思维和信息意识。
计算思维落点是在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。为此,我设计了一个学习任务—“区间测试”问题,这个任务又分解为了4个小任务,其中的①抽象建模、②设计算法、③编写程序三个小任务正是为落实计算思维的培养而专门设计的。第一个任务抽象建模,学生在教师的引导下通过分析问题得到该问题的计算模型,培养采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据的计算思维。第二个小任务设计算法和第三个小任务编写程序能够培养学生通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案的计算思维。
信息意识的落点是能够根据解决问题的需要,自觉、主动地寻求恰当的方式获取与处理信息。学习任务—“区间测试”问题的第一个小任务抽象建模阶段,学生需要从问题描述中抽象出问题解决所需的要素,在此过程中落实信息意识的培养。分支结构的程序实现(if-elif)教学设计
课程标准
和
教学目标
分支结构的程序实现(if-elif)
教材内容:本课包含教材3.2.3分支结构的程序实现2.if-elif语句。
适应的课程标准:
1.7掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程。
教学目标:
●掌握if-elif语句的格式。
●学会利用if-elif语句编写分支结构的程序解决问题。
指向的核心素养:
●信息意识:能够根据解决问题的需要,自觉、主动地寻求恰当的方式获取与处理信息。
●计算思维:在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。
学习环境:有教学控制软件的多媒体机房,需要安装Python编程环境。
建议课时:1课时
教学活动设计
教学环节
教学过程
设计意图
情境导入
试一试:在上节课学习if语句的时候,我们曾经举个生活中if语句伪代码的实例,比如下面这个例子:
if
今晚不下雨:
去体育馆打篮球
else:
去健身房健身
在这个例子中,只有“下雨”和“不下雨”这两种情况,但是现实世界的问题并非如此简单,请看下面的流程图:
在上面的流程图中,情况变的复杂了,下不下雨和朋友有没有空组合成了4中不同情况,这样的问题,用if语句来编写伪代码该如何实现呢?请尝试。
参考答案:
程序实现①
if
今晚下雨
and
朋友有空:
和朋友一起看电影
else:
if
今晚下雨
and
朋友没空:
独自一个人健身房健身
else:
if
今晚不下雨
and
朋友有空:
和朋友一起打篮球
else:
独自一个人户外长跑
程序实现②
if
今晚下雨
and
朋友有空:
和朋友一起看电影
if
今晚下雨
and
朋友没空:
独自一个人健身房健身
if
今晚不下雨
and
朋友有空:
和朋友一起打篮球
if
今晚不下雨
and
朋友有空:
独自一个人户外长跑
讨论:同学们认为这两种程序实现的方式好不好,是否有什么缺点?
教师引导总结:可以发现,情况比较复杂的分支结构仅仅用上节课学习过的if语句来解决,是比较麻烦的,程序实现①if语句嵌套比较多,读性也比较差。程序实现②可读性较好,但是存在一个问题:在第一个条件就满足的情况,后面的每个条件已经不可能成立了但是还会去依次进行判断,执行效率来说比较差。对于这种情况比较复杂的分支结构的程序实现,Python提供了一种解决方案--if-elif语句,这也是我们今天要学习的内容。
通过试一试可以回顾上节课学习过的if语句,同时也可以让学生了解条件较多、情况较复杂的分支结构编写成程序的时候只用if语句存在语句层次亲淘较多、可读性差或者程序执行效率较差等缺点,从而因此本节课要学习的if-elif语句。
新课教学
●知识讲解—if-elif语句
教师展示if-elif语句的一般格式:
if
<条件1>:
<语句块1>
elif
<条件2>:
<语句块2>
……
elif
<条件n>:
<语句块n>
else:
<语句块n+1>
一个if语句可以包含多个elif子句,最后一个else语句是可选的。elif子句仅当其if语句中的条件为假时才执行。如果if语句和elif子句中的条件都不为真时,末尾的else子句的语句块就会被执行。因此,带有elif子句的if语句有一个很重要的特性:只要某个条件为真,计算机就会执行其所对应的语句块,然后退出该语句。
上面同学们写的试一试的程序实现②的代码稍作修改,就是if-elif语句的分支结构的程序实现:
if
今晚下雨
and
朋友有空:
和朋友一起看电影
elif
今晚下雨
and
朋友没空:
独自一个人健身房健身
elif
今晚不下雨
and
朋友有空:
和朋友一起打篮球
elif
今晚不下雨
and
朋友有空:
独自一个人户外长跑
如上所示代码,当执行到条件成立的语句块时,if-elif语句就会退出,从而避免了效率问题,而且在这个程序实现中也可以发现,else分支是可以省略的。当然该代码最后一种情况是上面三种情况都不成立时候的情况,所以代码也可以改写为如下形式:
if
今晚下雨
and
朋友有空:
和朋友一起看电影
elif
今晚下雨
and
朋友没空:
独自一个人健身房健身
elif
今晚不下雨
and
朋友有空:
和朋友一起打篮球
else:
独自一个人户外长跑
●学生活动—if-elif语句实战:学生考试等第判断
编写程序,输入分数([1,
100]之间的整数),如果分数在[85,
100]之间等第为优秀,[70,
84]等第为良好,[60,
69]之间等第为合格,[0,
59]之间等第为不合格。
参考答案:
score
=
int(input("请输入分数:"))
if
score
>=
85:
print("优秀")
elif
score
>=
70:
print("良好")
elif
score
>=
60:
print("合格")
else:
print("不合格上")
●学生任务—“区间测速”问题
目前,国内很多高速公路都启用了区间测速。所谓区间测速,是在同一路段上布设两个监测点,基于车辆通过前后两个监测点的时间来计算车辆在该路段上的平均行驶速度,并依据该路段上的限速标准判定车辆是否超速。
现有一段长为25千米的测速区间,小车的限速是100千米/小时。数据中心需要编写一
段程序,用来判断某辆小车在此测速路段是否超速。
在上述“区间测速”的基础上,如果某辆小车超速,数据中心能同步显示超速的程度,
如“超过规定时速且不足20%”、“超过规定时速20%以上且不足50%”、“超过规定时速50%
以上且不足70%”、“超过规定时速70%以上”。如何用程序来实现这个目标?
对该任务进行抽象建模,随后设计算法,最终编写程序用于判断小车是否在此测速路段超速。
任务①:抽象建模
绘制超速标准及判断条件对应表格,并给出计算模型。
参考答案:
超速标准判断条件超过规定时速且不足20%100<v<120超过规定时速20%以上且不足50%120≤v<150超过规定时速50%以上且不足70%150≤v<170超过规定时速70%以上170≤v
计算模型
平均速度计算:
判断结果:
“超过规定时速且不足20%”(100<v<120)
“超过规定时速且不足20%”(120≤v<150)
“超过规定时速50%以上且不足70%”(150≤v<170)
“超过规定时速70%以上”(170≤v)
任务②:设计算法
根据计算模型,设计解决“区间测试”问题的算法,并绘制流程图。
参考答案:
任务③:编写程序
根据设计的算法编写解决“区间测试”问题的程序。
参考答案:
t
=
float(input("请输入用时:"))
s
=
25
v
=
s
/
t
print("平均车速:"
+
str(v))
if
v
<=
100:
print("正常")
elif
v
<
120:
print("超过规定时速且不足20%")
elif
v
<
150:
print("超过规定时速20%以上且不足50%")
elif
v
<
170:
print("超过规定时速50%以上且不足70%")
else:
print("超过规定时速70%以上")
让学生理解if-elif语句的语法格式以及它的使用。通过将试一试中的代码变形得到if-elif语句能够让学生理解if-elif语句在解决情况较为复杂的分支结构的问题的时候的优点。
通过if-elif实战,让学生初步掌握if-elif语句的格式及其实际应用。
通过分析得到“区间测试”问题的计算模型,为后续的设计算法与编写程序作铺垫。
为后续的编写程序打下基础。
通过该任务让学生学会利用Python语言编写分支结构的if-elif语句的程序解决问题,完成本课难点教学。
课堂小结
1.if-elif语句的格式。
2.利用if-elif语句编写分支结构的程序解决问题。
通过回顾总结帮助学生巩固本节课的学习内容。
作业布置
基础作业(面向所有学生):
本节配套课后作业
提升作业(面向学有余力学生):
将“区间测速”问题的if-elif语句的程序实现修改为if语句的程序实现,对比实现上有何不同?
基础作业主要是巩固本节课学习到的知识。提高作业给学有余力的同学完成,将if-elif语句改写为if语句有助于进一步掌握if语句的缩进,也能更好的理解if-elif语句在解决多条件分支结构程序的优势。
教学设计思路
第3课时的内容为分支结构的程序实现(if-elif语句)。if-elif语句是if语句的加强版,在if语句的基础上添加了多条件的判断。在进行if-elif语句教学的时候建议在上节课学习过的if语句的基础上进行if-elif语句的教学。建议这节课采用问题或任务驱动教学法。在导入阶段建议可以将上节课导入阶段的生活实例改造为多条件的分支结构的程序,引导学生对其分析,发现if语句的不足,从而引出本节课的学习内容。建议教师使在讲解if-elif语句格式和使用的基础上让学生先完成一个简单的if-elif语句的应用--学生考试等第判断,让学生初步掌握if-elif语句的格式和使用,完成本课重点的教学。建议教师可在上节课“区间测速”实例的基础上,提出“区分超速程度”的问题,引发学生的思考。此时,教师可引导学生自主学习if-elif语句,并完成“区分超速程度”的任务。通过多分支语句的学习,结合“区间测速超速的程度区分”实例,抽象出各级的条件,编制相应的程序,理解if-elif语句的功能和应用,在此过程中也完成本课难点的教学。
针对
核心素养培养的
设计考虑
本课核心素养的落点主要是计算思维和信息意识。
计算思维落点是在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。为此,使用了上节课的学习任务—“区间测试”问题,但是,在此基础上做了改进,添加了更多的条件。这个任务分解了3个小任务,抽象建模、设计算法、编写程序正是为落实计算思维的培养而专门设计的。第一个任务抽象建模,学生在教师的引导下通过分析问题得到该问题的计算模型,培养采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据的计算思维。第二个小任务设计算法和第三个小任务编写程序能够培养学生通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案的计算思维。
信息意识的落点是能够根据解决问题的需要,自觉、主动地寻求恰当的方式获取与处理信息。学习任务—“区间测试”问题的第一个小任务抽象建模阶段,学生需要从问题描述中抽象出问题解决所需的要素,在此过程中落实信息意识的培养。