内容正文:
第10课 遍历列表
教材分析:
遍历列表,顾名思义就是将整个列表的数据从头到尾“访问”一遍。本课学生将综合运用所学对“知识问答”程序做最后的调整与完善,实现遍历列表,按顺序自动提问“问题”类表中的所有问题。
教材使用自然语言和流程图两种方式介绍了遍历列表的算法,让学生掌握遍历列表的一般方法。为了便于学生理解、掌握,在编写Scratch脚本时,并没有采用条件循环指令,而是使用了有限次数的循环指令。
考虑到学生有完善、扩充题库的雪球,教材通过“教你一招”的方法,介绍了通过文本批量导入列表数据的方法,介绍了通过文本批量导入列表数据的方法。
本课是编写“知识问答”程序的最后一课,因此教材安排了分享与测试环节,旨在让学生在与同伴分享、交流的过程中找出有待改善的地方,不断优化程序。
预设教学目标
1.理解利用循环结构遍历列表的算法,修改脚本实现按顺序自动提问所有问题的功能。
2.调试、优化程序,进一步完善作品。
预设教学重难点:
重点:理解利用循环结构遍历列表的算法,编写按顺序自动提问所有问题的脚本。
难点:理解利用循环结构遍历列表的算法,调试程序。
预设课时安排:
1课时
预设教学准备:
前一节课的“知识问答”程序作品。
教师课件
预设教学过程:
一、揭示课题
1.出示知识问答小程序程序设计和流程图。
2.上一节课我们利用一个“问题”列表和一个“答案”列表,让知识问答小程序实现了随机出题的功能。可是这样只能出一题,如果我们想把“问题”列表的问题全部按顺序都提一遍又该如何来实现呢?
学生:略。
今天这节课我们就来学习遍历列表,顾名思义,就是将整个列表的数据从头到尾全部访问一遍,就像我们进行班级点名一样,从学号1号开始,往下报,一直报到最后一个。
3.出示课题:遍历列表。
二、算法与描述
1.你觉得应该怎样从第1题开始按顺序提问所有问题呢?让我们尝试着说一说方法,画一画流程图吧。
展示上一节的流程图。
2.这是上一节课的流程图,要想实现从头到尾把问题列表访问一遍,这里哪些地方需要改一改?在回答这个问题之前,我们先来解决以下几个问题。
①“编号”还能不能取一个随机数了?
学生:不能。
那“编号”的初始值应该是多少?为什么?
学生:是1,因为要从第一题开始询问。
②“编号”设为1后,表示从第一题开始询问,那中间这块提问的过程有没有发生改变呢?
学生:没有。
问完第一题之后,应该问第几题?再问第几题?
学生:1,2,3……一直往下。
那么观察一下,“编号”的变化规律是什么?
学生:每次增加1。
哪一块积木可以表示这种变化规律?
学生:“将“编号”增加1”这一块积木。
③当编号增加1后,能不能直接输出得分,结束?那应该做什么?
学生:不能,应该继续提下一个问。
也就是说一开始编号是1,然后问完第一个问题后,编号增加了1,变成了2,继续提问第二个问题,什么时候表示问题问完了?
学生:当“编号”的值和列表的长度相等之后就问完了。
也就是说,我们一共要问几遍?
学生:列表的长度就是要问的次数。
④所以,流程就变成了这样,首先看问题有没有问完,没有问完,继续提问,每问好一个问题后,编号就增加1,当编号大于列表长度后,也就是不满足这个条件后,就表示结束了,可以输出得分。
⑤提问的过程都是重复的,所以我们可以利用哪一块积木来实现?
学生:“重复执行”这块积木。
是一直重复下去,还是有次数要求的?次数由什么来决定?
学生:列表长度。
3.分析到这里,我们可以利用“编号”从1开始逐一增加,通过循环调用题库里的问题,直到全部问完为止,这样就可以实现从第一题开始按顺序提问列表里所有的问题了。
谁来用自然语言来描述一下遍历列表的算法?
4.根据学生描述,教师辅助,出示本节课的流程图。
三、程序设计
1.有了算法,我们就一起来进行程序设计吧。
课件出示上一节课的程序脚本,想一想怎么修改这个程序?
“编号”的初始值设为1;
哪一部分是需要重复执行的?
重复执行多少次?使用“重复执行问题的项目数次”来控制重复的次数,依次询问,直到最后。
一个问题提问结束后,什么需要发生变化?
学生:“编号”需要增加1
2.请你试一试。
任务一:修改完善上节课的“知识问答”程序,现从第1题开始按顺序自动提问所有的问题。
学生操作,教师巡回指导。
3.反馈出现的问题,共同探讨。
4.老师发现很多同学的列表里问题太少了,在列表中一项项输入,增加列表数据是不是花费了你很多时间?
出示教你一招:通过文本导入的方式,可以一次性批量增加列表数据。
教师介绍:导入(import)和导出(export)。利用这个方法完成任务二,并将答案库也一并导入。
任务二:根据视频,将桌面中的记事本”问题“和”答案“,导入到自己的“问题”列表和“答案”列表中。
四、分享与测试
任务三:完成程序后,以小组为单位,一起分