高中信息科技计算思维教学实践

2018-08-23 02:07曾伟锋
中国信息技术教育 2018年13期
关键词:流程图箱子算法

曾伟锋

● 案例背景

青少年逐步成为新时代的数字土著,他们在日常生活中已经潜移默化地掌握了常用的信息技术处理工具。中小学计算思维教育并不是要把所有学生都培养成计算机专家,而是要帮助每位学生更好地适应当代信息社会,更好地利用信息技术理解和解决生活与学习中的真实问题,成为合格的数字化公民。计算思维是一种解决问题的思维,那么让学生体验解决问题的过程应该是培养学生计算思维的一种路径。通过在每次课上让学生经历发现问题、提出问题、利用信息技术学科思维方式解决问题的过程,引导学生逐步建立、形成计算思维。中小学信息技术教育的学科价值除了让学生掌握必要的知识与技能外,更重要的是培养学生运用这些知识和技能解决实际问题的能力。《对分查找》一课的设计与实施就体现了高中程序设计教学中渗透计算思维教育的一些做法。

对分查找实施原理:(1)对分查找是效率很高的查找方法,但被查找的数据必须是有序的;(2)首先将查找的数与有序数组内处于中间位置的数据进行比较,如果中间位置上的数与查找的数不同,根据有序性,就可确定应该在数组的前半部分或后半部分继续查找;(3)在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。

本课重点:探索、理解、分析对分查找的执行过程。

本课难点:根据算法的过程描述设计对分查找算法流程图。

由于信息科技课程具有很强的实践性,围绕实践性这个学科特点,本节课教师让学生在解决问题的过程中提高计算思维能力。

● 课堂教学

环节一:根据生活经验,初步感知对分查找算法

师:有一个整数在1~100之间(举例62),一般情况下,如果要用较少的次数猜出这个数。你会先猜几?

生:50。

师:小了,那么这个数在51~100之间,接下来猜几?

生:75。

师:刚才的对话中隐藏着经典的算法——对分查找,它是比顺序查找效率更高的方法。通过这种每次查找范围缩小一半的方法很快就能猜出这个数是62。

如图1所示,1~21号代表21个箱子,在21个箱子里分别放着21位学生的考试号码(考试号码为无序)。上一次课用顺序查找的方法找到了489号。

师:能不能用对分查找的方法找出489号?

生:不能。对于一个找到的数,如第一次查找的11号数312,它不能和前面或后面的数比较大了还是小了。

因此,要用对分查找须先将数字进行排序,使之变成有序数列。

教师利用学生已学的冒泡排序的算法将这组数据进行升序排列,如图2所示。

为了节约教学成本,教师要尽快切入正题,争取在两三分钟内引入对分查找,同时让学生从互动讨论中预热对分查找的思想。教师从学生生活经历中提炼对分算法,引出冲突,引导学生发现问题,得知使用对分要先进行排序,使学生对对分查找算法有初步的认识。

环节二:结合图形,化抽象为形象,引导学生探索对分查找的过程

对分查找每次要查找的是中间的数。那么,如何确定中间的数是哪一个数字呢?教师引导学生通过图形直观地观察查找并表达出来。如图3所示,M表示每次查找的中间箱子的编号,L、R表示每次查找的第一个和最后一个箱子的编号。

第一次要找的箱子是:M=11=(1+21)/2=(L+R)/2。

第二次要找的箱子是:M=16=int((12+21)/2)=int(16.5)=int((L+R)/2)。

第三次要找的箱子是:M=13=int((12+15)/2)=int((L+R)/2)。

三次找到考试号码489。

通过每次查找的过程归纳总结出每次查找的M与L、R的关系:M=int((L+R)/2)。

如图4所示,教师再次引导学生详细描述查找箱子的过程,仔细分析梳理查找的过程,细化每一个步骤。学生通过查找的过程描述出算法的过程。

教师要让学生参与分析过程,而不是直接告诉他们“是什么”,应与他们一起经历“这是怎么来的”学习过程。结合图形,利用形象直观的查找过程,学生在头脑中容易形成形象具体的问题解决过程的模型,并通过学习过程理清楚查找的详细过程。同时,该例子形象地表示了数据在计算机内部数组元素中对分查找的过程,有利于学生形成抽象思维,帮助学生掌握知识。

环节三:根据算法的过程描述,设计流程图并书写程序代码

教师应逐渐展开流程图,让学生结合算法描述逐步填充并完成流程图的设计。结合流程图,学生利用VB语言编写程序计算出结果。学生的中心任务就是完成对分查找程序。经过编写、调试、思考、改进和教师旁白引导、个别指导,绝大部分学生在5分钟内都能编写出完整的对分查找程序。适当的留白可让学生只需把精力投入到对分查找的主体程序上。這样做的目的是让学生充分聚焦到学习重点上,让时间有限的一节课变得更有效,从而实现教学目标的最大化达成。

● 进一步思考

这节课没有先声夺人的情境铺垫,没有气氛热烈的小组合作,没有滔滔不绝的教师讲解,更多的是教师严密理性的引导和学生被激活的思考和实践。同时考虑到一节课的时间,如果要查找的数据不在数组里面,还没有被考虑进来,留给学生下一节课去解决。学生运用信息知识与技术解决问题时,首先要理性地分析问题,将一个复杂的问题转变为若干便于解决的简单问题。通过细致的分析,可以自上而下,逐步求精,不断将问题分解,直至计算机可以解决。这有助于培养学生的分析性思维方式。

中小学计算思维教育不应限于计算知识的学习和技术工具的操作应用,而应强调学生利用计算知识和技术工具解决问题综合能力的形成与思维的内化。如果孤立地学习程序编码而不给学生创设算法设计的体验情境,就会导致盲目模仿科学实验而不知为什么做科学实验;如果一味要求学生进行算法设计,而不给学生验证自己想法的机会,就会掉入只讲授科学知识而不做科学实验的泥潭。因此,中小学计算思维教育既不能简单地等同于代码编写,也不能将算法设计与程序实现割裂开来,最重要的还是要引导学生体验“程序驱动”的技术工具应用情境,感受到计算方法与自动化实现的真实存在,使其在实践、体验程序设计每个环节的过程中将计算思维内化为普适性的思维方式。

猜你喜欢
流程图箱子算法
云的识别指南
Travellng thg World Full—time for Rree
一模一样的箱子
箱子
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
薄箱子
领个箱子去街上
流程图学习指南