内容正文:
学科小学信息技术 授课年级五年级
第8课时教学设计
课题
《算法验证与实现》第8课时
课型
新授课□ 章/单元复习课□ 专题复习课□
习题/试卷讲评课□ 学科实践活动课□ 其他□
1.教学内容分析
一、单元与课时定位:本课是第二单元“算法结构与描述”的第4课(教材第45—50页),也是本单元的收束课,把前面描述的算法真正交给计算机执行——用Python程序验证买水果计算价格与公园购票算法,实现顺序结构和分支结构,并经历编写、运行、调试、改进的过程。
二、核心内容及其发展核心素养的功能价值:核心内容是input( )、int( )、float( )、print( )四个函数与变量的含义,用if语句构成单分支、用if……else……构成双分支,以及数据类型必须转换才能参与运算这一关键规则;通过买水果总价计算和公园购票两个程序的编写与调试,训练学生把自然语言描述的算法逐句翻译成程序指令,初步形成用计算验证思路、以调试求正确的计算思维和编程意识。
三、蕴含的正确价值观念:算法要真正发挥作用必须依靠程序来实现,编程不仅是技能更是思维方法;面对TypeError提示要读懂信息、按步骤调试、逐条改进,不猜测也不随意改动数据。
四、与已学内容的关联:学生已用自然语言和流程图描述了顺序结构(第5课)与分支结构(第6课),也画过循环结构(第7课);本课不再新增结构,只解决“怎样让计算机认识这些步骤”,因此第6课未输入完整的购票流程图被直接搬来当编程蓝本。
2.学习者分析
一、已有学习经验与知识储备:学生已在数学课上解决过买水果算总价、换算温度这类计算题,能说清先算什么再算什么;对流程图的顺序结构与分支结构已有认识;多数学生见过Python窗口但没写过完整程序。
二、学科能力水平:能把“输入单价与质量、算总价、算总金额”排成顺序步骤,但面对input( )拿回的数据不知道还要再转换类型,容易在第一行就卡住。
三、兴趣与需求:看到程序能立刻算出总金额和票价,成就感和新鲜感很强,乐于反复试不同数据验证结果;遇到报错信息时容易直接放弃或把错误答案当正确结果抄下来。
四、发展需求与发展路径:从“能照着代码输入并运行”到“能逐句说出语句对应算法哪一步”,再到“能读懂TypeError提示、自己加float( )改对程序”,并能用不同输入反复验证结果是否正确,承接第5至第7课描述的算法,实现从“描述算法”到“实现算法”的跨越。
五、学习本课时可能碰到的困难:一是把input( )得到的数当数字用,直接写出b=a*8.5,运行时弹出TypeError却不知道原因,误以为是程序写坏了;二是把语句中的“=”当成等号,a=input( )填入5后去写a=5.0这种“改错”指令;三是if与else后的缩进不一致,导致该执行时没执行或执行了两条;四是判断条件的边界用错,把身高小于120写成小于等于120;五是print输出时把变量名当字符串原样打印,或一条语句输出里夹中文逗号导致结果看不明白。
3.学习目标及核心素养指向
1. 知道算法要借助程序才能真正执行,能说出input( )、int( )、float( )、print( )在程序中分别承担获取输入、类型转换和输出结果的作用。
2. 经历“编写—运行—调试—改进”的过程,能独立写出买水果计算总金额的六条Python语句并运行得到正确结果。
3. 在把自然语言描述的购票算法翻译成if……else……程序的过程中,理解语句与算法的对应关系,发展把步骤转化为指令的编程思维。
4. 遇到TypeError提示时能主动读懂信息并加float( )转换类型,修改后重跑,并用不同身高数据验证半价5元、全价10元两条分支是否都正确执行。
4.学习重点难点
本课必须让学生会用input( )、float( )、print( )写出买水果总金额程序,并用if……else……程序验证公园购票分支算法。 学生不知道input( )得到的数是字符、不转换类型就不能参与运算,也读不懂TypeError提示,因此程序第一步就算不出来。
5.教学策略选择与设计
教法:任务驱动、讲练结合、调试归纳、合作互教
学法:自主编程、动手调试、同伴互助、交流展示
6.学习活动设计
教师活动
学生活动
环节一:情境导入—明确实现路径
教师活动1:
学习情境:小智陪妈妈去超市买水果,苹果每千克8.5元、香蕉每千克12.6元,请编写程序帮妈妈算总金额;追问算法图画得好好的,计算机为什么读不懂。
驱动性问题:我们设计的算法,计算机认识吗?怎样让计算机认识?自然语言直接写进去行不行?
学习任务类型:观察与分析任务,读教材的顺序结构流程图,依次回答要输入的数据有哪些、要对这些数据做哪些处理、输出的数据是什么。
学科思想方法的示范与指导:先回顾第5课的顺序结构,把买水果过程拆成输入苹果质量、输入香蕉质量、算两种水果总价、相加、输出总金额,再点明编程就是把每个步骤写成计算机认识的指令,让学生体验从直观描述到抽象指令的跨越。
对课堂生成的关注与思维错漏的纠正:预料学生写出“把8.5和12.6存起来”这种含糊表述,追问“存到哪里去”,引出变量;预料把总金额写成“8.5+12.6”,追问“质量还不知道呢,乘哪两个数”。
评价方式与工具:用课堂观察记录表记下能完整回答输入处理输出三问的学生,对说不清处理环节的当场追问。
学生活动1:
真实情境活动:把自己当成收银员,模拟在超市买水果,算出买两种水果一共要付多少钱。
分析任务—设计方案—解决问题—分享交流:同桌互说输入什么、处理什么、输出什么→小组把五个环节画成顺序结构流程图→全班对照教材流程图,把“算总价、算总金额”两框里的算式读出来。
实际收获:明白算法写得再清楚,计算机也不能直接看懂,需要换成程序语言。
活动意图说明:组织与实施意图:用学生熟悉的购物情境引出编程需求,把“自然语言计算机无法识别”这一难点拆成几个小问题逐个突破,而不是一次抛出完整程序。
预设障碍:认为“把算法给机器人就能执行”;输入、处理、输出答不全,尤其说不清处理环节的两个算式。
对目标达成与学生发展的意义:帮助学生理解算法的基本流程在程序中仍然成立,落实学习目标1的前半与学习目标2的起点。
教与学关联与互动层次:同桌互说→小组画流程图→全班对照展评,互动从生活计算走向对程序流程的初步认识。
环节二:动手编程—实现买水果算法
教师活动2:学习情境:在Python IDLE中新建程序文件,让学生逐行输入a = input('输入苹果的质量:')、b = input('输入香蕉的质量:')、c = float(a)*8.5、d = float(b)*12.6、e = c+d、print('总金额:', e)六条语句。
驱动性问题:input( )拿到的是文字还是数字?为什么第三条语句改用float( )就能算了?这里的“=”在做什么?
学习任务类型:编程实现任务,逐行输入代码并运行、输入质量、观察输出结果。
学科思想方法的示范与指导:先用a = input( )后直接写b = a*8.5复现TypeError,让学生看到报错,再教float( )把输入数据转换为浮点数;着重讲清赋值号不是等号,是把右侧的结果保存给左侧变量;介绍+ - * /四种运算符与先乘除后加减的优先级。
对课堂生成的关注与思维错漏的纠正:预料报错后把程序删了重打,追问“提示里写的是什么”,引导读TypeError;预料把a=5.0写在代码里“修正”,追问“那妈妈买5千克苹果还怎么试”;预料输出多个数被逗号隔行拆开,提醒print里逗号是分隔符。
评价方式与工具:以程序能运行并输出正确总金额为准,巡视中逐台检查float( )是否加全,对照手算结果核对。
学生活动2:真实情境活动:在Python窗口中实际输入苹果和香蕉的质量,运行程序看输出的总金额,再用手算核对。
分析任务—设计方案—解决问题—分享交流:个人逐行输入并运行→小组互比输出结果,解释每条语句对应流程图里的哪一步→全班展评成功案例,说明程序里为什么必须写float( )。
实际收获:掌握“编写—运行—调试—改进”的基本过程,会用input( )获取数据、用print( )输出结果。
活动意图说明:组织与实施意图:以一个完整可运行的顺序程序收束前面几课的算法描述,让学生获得“写出程序就能算对”的直接体验。
预设障碍:照抄代码时漏掉冒号或引号;运行报错后不敢继续;把程序文件名和保存位置弄混。
对目标达成与学生发展的意义:落实学习目标1、2,为分支结构的程序实现打好指令基础。
教与学关联与互动层次:独立输入运行→小组互比结果→全班展评讲评TypeError的成因,互动从动手试错走向理解原因。
环节三:迁移应用—验证购票分支算法
教师活动3:学习情境:先回顾第6课公园购票算法的流程图,找出其中的输入、处理和输出,再用Python打开教材配套资源中的购票程序文件,运行并输入不同的身高数据。
驱动性问题:身高116厘米和138厘米分别会输出哪句话?if和else为什么只执行其中一条?120厘米的人会怎么样?
学习任务类型:补全与验证任务,依据流程图补全if……else……代码,运行程序输入多组身高,比较输出结果与手算结果是否一致。
学科思想方法的示范与指导:先给出完整代码逐行讲解语句与算法的对应,再让学生依据流程图补全红字部分;讲清“#”是注释、int( )取整使身高数据能参与比较、缩进决定语句属于哪个分支。
对课堂生成的关注与思维错漏的纠正:预料把else写成交互式“则”,提示Python里是if……else……;预料缩进不对使两条都执行或都不执行,用116厘米试跑验证;预料判断条件写成小于等于,追问“正好120厘米的妹妹该买哪种票”。
评价方式与工具:用116厘米、138厘米、120厘米三组数据的实际输出与手算结果比对,作为本课最关键的检验;把典型报错屏幕投屏集中讲评。
学生活动3:真实情境活动:把自己和妹妹、同学的设成不同身高,分别运行程序,检验输出是否符合公园半价5元、全价10元的规则。
分析任务—设计方案—解决问题—分享交流:同桌互说→小组分别输入116厘米、138厘米、120厘米并记录输出→全班汇总,判断两组分支是否都正确执行,并比对手算与程序的差异。
实际收获:体会到程序和流程图一一对应,改动流程图就要同步改程序。
活动意图说明:组织与实施意图:把第6课学过的分支结构真正跑起来,让学生直观看到条件判断在机器里是怎么执行的,并收到本单元四课的最后一个成果。
预设障碍:把if与else写成中文;缩进混乱;只测一个身高就断定程序正确;把注释当代码执行。
对目标达成与学生发展的意义:落实学习目标3、4,形成描述算法—实现算法的闭环,并明确调试是算法的必经环节。
教与学关联与互动层次:个人补全运行→小组多组数据互测→全班汇总比对与展评,按“流程图与程序是否对得上”“多组数据是否都正确”逐项检查,互动由试运行走向用证据说话。
……
课后学习评价
【学生活动】学生完成学习单并提交:一是抄写买水果总金额的六条语句并写出运行结果;二是把买水果程序改成“一共买5千克苹果、4千克香蕉”,输出总金额;三是记录自己运行中出现过的提示信息(如TypeError)和改法。组长收齐上交,教师批阅反馈。
【设计意图】评价内容对应学习目标1、2、4,由学生自评、同伴互评和教师评价共同完成,重点看input( )、float( )、print( )是否用对、TypeError能否自己解决。错误提示记录单把调试过程变成可见证据,批改中暴露的“忘加float( )”等问题在下一单元开头集中复现,实现教—学—评一致与以评促教、以评促学。
7.学习评价设计
评价目标:看学生能否写出并运行买水果程序(目标1、2),能否用if……else……实现购票分支(目标3),能否读懂报错并自行调试(目标4)。
评价主体:学生自评、同伴互评和教师评价相结合,以教师评价为主。
评价方式与工具:机房逐台运行检查、同伴互助互测、程序输出与手算结果比对、课后学习单批阅。
评价标准(量规):A档——程序一次运行成功并输出正确结果,多组身高数据验证分支都正确,能说清报错原因与改法;B档——程序能运行但要提示才改对float( )或缩进,分支验证只测了一组数据;C档——代码输入后无法运行,看不懂提示,需要教师代为改正。
评价结果的运用:A档学生承担小组内的调试答疑并尝试把买水果程序改成购票程序,B档课后在机房重做一次,C档进入个别辅导清单;错误类型统计作为下一单元编程教学的起点数据。
8.板书设计
算法验证与实现
一、算法与程序(学生板演生成)
买水果:输入苹果质量、输入香蕉质量→算两种水果总价→相加→输出总金额
程序步骤:编写—运行—调试—改进
二、四个函数(随讲随写)
input( ) 获取输入的数据 float( ) 转换为浮点数 int( ) 取整 print( ) 输出结果
a = input('输入苹果的质量:') “=”是赋值号,不是等号
三、分支结构程序(学生补全后展评)
if height < 120 : 半价票5元
else: 全价票10元
缩进决定语句属于哪个分支 “#”是注释
四、调试记录(学生在学习单上补充)
TypeError:输入的数被当作字符,要先 float( ) 转换
生成说明:第一部分由学生口述流程图后板演生成,第二部分由学生逐条输入代码时板书,第三部分由学生依据第6课流程图补全后上台展评,第四部分由学生抄写并补充自己遇到的其他报错。
算法流程与程序主干用黑色书写,放黑板中央;学生运行成功得到的总金额与程序输出语句用红色书写,标出这是计算机算对的结果;四个函数名、if……else……代码和赋值号说明用蓝色书写,标示这是Python的固定写法;报错提示TypeError与“加float( )”的修改办法用黄色在右侧标注,与代码区明显区隔,提醒这是出错时才需要看的内容。
9.作业与拓展学习设计
一、作业意图、功能、针对性:巩固input( )、float( )、print( )和if……else……的用法,养成运行后与手算结果比对的习惯,面向全体,预计课外完成15分钟。
二、分层作业:A档(基础)抄写买水果六条语句并写出输入5千克苹果、4千克香蕉时的输出结果;B档(提高)把购票程序的判断条件改成“身高大于等于120厘米”买全价票,用120厘米和138厘米各跑一次并记录输出;C档(拓展)给买水果程序增加一个判断:若总金额超过50元则输出“超过50元”,否则输出总金额,并写出流程图对应的分支。
三、作业衔接:A档为检测类,B档为检测加辨析类,C档为探究类与实践类;课上A档正确运行的结果作为下一单元学习起点,B、C档成果在学习任务群中共享展示。
四、完成情况分析:批改后统计“忘加float( )”“缩进不一致”“判断条件边界写错”三类问题,在下一单元起始课的复习环节用TypeError复现集中讲评;C档的自创分支程序择优进机房演示栏展示。
10.特色学习资源分析、技术手段应用说明
教材配套资源中的公园购票程序文件、温度转换程序可作为学生打开、运行与比对的直接校本资源;学校机房的Python编程环境与学生已积累的买水果、购票等手算结果,可作为算法正确与否的比对证据;学生家庭中超市小票、水电费单据上的单价与总价,是把算法与真实数据对照的生活资源。;在Python IDLE中用File→New File新建程序文件,把买水果的六条语句逐行输入后用File→Save保存,用Run→Run Module或按F5运行;在交互窗口输入5、4等质量数据,观察print('总金额:', e)输出的数值,再与手算的5×8.5+4×12.6核对。输入购票程序时用File→Open打开配套资源中的程序文件,运行后分别输入116、138、120,读取屏幕上打印的半价或全价提示,与第6课手算结果比对;出TypeError时读提示中的“类型错误”,在输入处补上float( )或int( )再重跑,实现编写—运行—调试—改进的循环。
11.教学反思与改进
一、经验性总结:先让无类型转换的版本真实报出TypeError,再教float( ),学生一下就记住了为什么要转换,比直接讲“数据类型不同”有效得多;用多组身高数据检验分支是否都正确执行,也让学生养成了“不试几组不算验证”的习惯。
二、对照学习者分析与目标达成度的反思:针对“不知道input( )得到的是字符”“读不懂报错”这些困难,在同伴互助环节大部分学生能互相解决,但仍有约五分之一的学生需教师逐台指导才能改对缩进;目标1、4达成度约八成,目标2完成较好但表达时说不清语句与算法哪一步对应,目标3达成度约七成半。
三、教学自我评估与改进设想:机房巡视时把时间过多花在一个学生的报错上,导致后半节课仓促;下次课把易错点做成一张“常见报错—原因—改法”对照卡贴在机房屏幕边,先集体认读一遍再上机,输入代码的量也可减少一行,保留更多时间给多组数据的验证。
四、单元整体实施的改进策略:本课形成的“流程图与程序一一对应”“用多组数据验证”的做法,将作为后续单元的编程习惯继续要求;下一单元的第9课移位密码,直接复用本课买水果程序的输入—处理—输出框架和调试记录单,把“编写—运行—调试—改进”变为固定流程;本课学生自创的50元判断分支与第6课8折任务留下的多条路径问题,分别留到后续多分支结构课时复用;C档演示程序择优存入班级程序资源库,作为下一单元编程任务的样例。
1
学科网(北京)股份有限公司
$