探索魔法水晶球的奥秘
2012-04-29谢作如
谢作如
算法教学和数学是密切联系的。《普通高中技术课程标准》指出:算法教学要强调理论与实践的结合,引导学生注意寻找、发现身边的实际问题,进而设计出算法和计算机程序去解决这些问题。所以,教师选择的实例最好来源于生活,让学生深刻体会计算机是现代信息处理的基本工具。
本课是《信息技术基础》(广东版)的第四章《信息的加工与表达》第一节内容,教材通过演示并剖析一段给文本文件加密和解密的计算机程序,来帮助学生了解利用高级语言解决实际问题的基本过程,然后以这段加密和解密的计算机程序为例,讲解用计算机程序解决问题的基本过程,为学生学习选修模块打下基础。但对高一学生来说,在短时间内用VB编写加密解密的程序是很困难的,学生很难在一节课中完整地体验“用计算机程序解决问题”这一过程。
教学目标
知识与技能:掌握Scratch的基本操作,能根据算法编写简单的Scratch程序;初步了解什么是算法和常见的编程语言。
过程与方法:能归纳利用计算机程序解决问题的基本思想方法——“分析问题、设计算法、编写程序、调试运行、检测结果”,能设计多种算法来实现分析“读心术”;亲历用计算机程序解决问题的过程。
情感、态度与价值观:引导学生了解程序设计的更多知识,体验信息技术的强大魅力;激发学生对计算机编程解决现实问题的学习欲望,提高学习兴趣。
教学重、难点
教学重点:体验用计算机程序解决问题的基本过程。
教学难点:根据算法编写程序。
教学流程
1.设置情境
教师打开一个“读心术”的游戏。
师:这是吉普赛人的一个古老而神秘的游戏,游戏中的水晶球具有神奇的魔法。请大家先想好一个10 ~ 99之间的数,把这个数的十位与个位相加,再把想好的数减去这个和。例如:你想的数是78,7+8=15,78-15=63。然后,在图表中找出与最后得数相对应的符号。请把这个符号牢记心中,然后点击水晶球,奇迹就出现了……
设计意图:通过演示“读心术”游戏,让学生在惊讶中产生疑问,激发探究原理的好奇心。
2.分析问题
(1)出示具体问题,引导学生分析
师:看起来大家都很惊讶,因为水晶球真的显示出大家心里所记住的符号。但是,水晶球真的会“读心术”吗?全班这么多同学,想好的数字肯定不会完全相同,为什么记住的符号却一样?
师生讨论。
通过师生讨论,教师推荐一个看上去很“笨”却很有效的办法:将所有的二位数逐一计算,根据结果来分析其中是否存在某种规律,最终找出原因。计算机因为其运算速度快、运算精度高和可靠性高等特点,最适合来进行重复的计算工作。这种看起来很“笨”的方法,在计算机的帮助下,就变得很有效了。那么,如何编写一个计算机程序,来解决这个问题呢?
(2)分析问题
师:要让计算机来完成这一计算工作,我们得告诉它要做哪些事,并且要有明确的步骤。那么,计算机如何完成一次计算过程呢?
教师引导学生一步一步写出步骤:
① 给出一个数i,i=26;
② 取出i的个位上的数字;
③ 取出i的十位上的数字;
④ 结果=(i-十位上的数字-个位上的数字);
⑤ 输出结果;
计算所有的二位数,步骤为:
⑥ 给出一个数i,i=10;
⑦ 取出i的个位上的数字;
⑧ 取出i的十位上的数字;
⑨ 结果=(i-十位上的数字-个位上的数字);
⑩ 输出结果;
把i的值加上1;
重复执行①-⑥,直到i=100。
(3)小结
现在,我们已经把抽象的问题分析成为具体步骤或方法。在程序设计中,我们把解决问题的方法和步骤称之为算法。它是“用计算机程序解决问题”的一个重要步骤。
设计意图:在讨论中,学生能得出“二位数经过计算后,得到的结果中存在某种规律”的结论。逐一计算的方法虽然有效,却需要进行大量的计算工作。这时,教师引出用计算机程序来解决问题,让学生对计算机计算快且准确的特点有了更深的理解。
3.编写程序
(1)介绍编程软件(Scratch)
师:刚才我们已经完成了算法的步骤,接下来就要开始编程了。计算机编程语言分为机器语言、汇编语言和高级语言,我们一般使用高级语言。 常见的编程语言如下表所示:
C、C++:经典的编程语言之一;
VB:一种可视化的编程语言;
JAVA:著名的跨平台编程语言;
C#:微软为.net环境设计的语言;
Pascal:第一个结构化的编程语言;
Delphi:著名的快速应用程序开发工具。
教师介绍常见的编程语言后,给学生推荐一个简单的图形化编程语言——Scratch。教师运行Scratch,简要介绍编程界面,按照刚才总结出来的算法,以计算78这个数字为例,演示如何编写程序。
(2)学生实践
教师将分析“读心术”的程序分解为两个部分,让学生实践。
① 计算一个二位数78;
② 计算所有的二位数。
鼓励学生自主探究,并有所创新(即采用和教师不同的流程图),同桌之间要互助。参考代码如下:
(3)解决问题
师:在刚才的编程过程中,估计大家已经明白了这个神奇的魔法水晶球的奥秘所在。说出来其实很简单,所有的二位数经过计算后,得到的结果都是9的倍数。这时,我们可以拿出数学公式,来分析读心术的数字原理了:
一个二位数可以看作10x+y;
二位数减去十位和个位上的数字,也就是:
(10x+y)-x-y=9x;
9x当然就是9的倍数了。
教师重新展示魔法水晶球的Flash动画,让学生仔细观察,数字为9的倍数所对应的图标是否总是相同。
设计意图:让学生尝试自己编程解决问题,在有意义的任务驱动下,学生的学习兴趣变得更高,不知不觉中进入了学习的最佳状态。
4.课堂总结
师:今天,我们在这节课中研究了魔法水晶球的奥秘。其实,我们这节课的学习过程,就是一个典型的“用计算机程序解决问题”的过程。
教师归纳“用计算机程序解决问题”的一般过程,即“分析问题→设计算法→编写程序→调试运行→解决问题”,在介绍的同时,逐步用课件展示板书。
师:从解决问题的过程中可以发现,程序编写是很重要的。因为我们至少要掌握一门编程语言,才能够实现算法。但是编写程序也有前提,那就是设计算法,因为算法才是程序的灵魂。编程语言很多,Scratch仅仅是其中的一种。我们只有掌握一门编程语言以后,才能真正读懂程序、读懂算法、读懂问题,学会真正的“读心术”,成为计算机的主人。
设计意图:在探索了魔法水晶球奥秘后,教师引导学生进行回顾,总结出“用计算机程序解决问题”的一般过程,有效地完成了教学任务。
5.布置作业
(1)通过网络了解常见的编程语言,并用Scratch编写“韩信点兵”
韩信带1500名士兵打仗,战死四五百人。他让士兵站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人,然后马上说出剩余的士兵人数。
(2)自学教材4.1节,调试书中关于文本加密解密的VB范例
设计意图:作业环节是不可缺少的,不仅仅是巩固知识,还能继续引导学生如何解决类似的问题,从而对编程产生浓厚的兴趣。
教学反思
这是我2011年参加全国高中信息技术优质课展评活动获得特等奖的课例。教学目标明确,主线清晰,环环相扣,连预设的教学意外都没有发生。那节课虽然是上午的最后一节,但是因为教学内容新颖有趣,学生的学习兴趣还是很高。
1. 程序设计是信息技术教育的重要组成内容
《普通高中技术课程标准》强调要“培养解决问题的能力,倡导运用信息技术进行创新实践”,因而,我认为程序设计的教学要尽量满足以下两点:一是选择的例子(载体)尽可能贴近学生实际,既要达到吸引学生的目的,又能体现技术的真实内涵;二是要让学生理解计算机解决问题的基本过程,即把抽象的问题分析成为具体步骤或方法,从而形成算法,然后根据算法设计进行编制程序。最终让学生体验到信息技术的强大魅力,亲历利用编程来解决现实中的问题这一过程。所以,我选择编写程序来分析“读心术”游戏作为教学任务,该任务贴近生活、数学味儿浓、趣味性强,对学生具有一定的吸引力。
2. 基础模块的教学中可以适当采用图形化编程语言
因为这节课的教学必须要让学生初步尝试编程。但实际上在一节课中无论让学生用QB还是VB来编程,都显得太难,尤其是这节课的内容中还涉及循环。为此,我选择Scratch作为程序设计语言。因为教材强调的是通过算法与程序设计解决实际问题的方法,对程序设计语言的选择不作具体规定。Scratch是MIT推出的图形化编程软件,编程界面充满童趣,流程图即代码,能够减少学生对编程的神秘感,有效地突破了教学难点。
让高中生用积木式的非代码编程工具是否合适?听课的评委是否会有异议?我曾经犹豫不定。后来,我看到美国的哈佛大学《计算机科学cs50》课程中都使用了Scratch,台湾几所大学的研究生还在研究如何使用Scratch来帮助大学生学习C语言后,下定了决心。因为这节课毕竟属于基础模块,是引导学生对算法和编程产生兴趣的一节课。
(作者单位:浙江温州中学)