打比方:让程序设计不再“曲高和寡”

2017-04-12 16:10程佑寅
江苏教育研究 2017年8期

程佑寅

摘要:初中阶段的信息技术课程越来越强调程序设计和计算思维,然而这一学段的程序设计课程中不少概念、算法较为抽象难懂。如果将“比喻教学法”应用到程序设计课程中,就可以帮助学生更好地理解新学知识,激发学习的兴趣,提高教学效果。

关键词:程序设计教学;比喻教学法; 应用案例

中图分类号:G632 文献标志码:A 文章编号:1673-9094(2017)02B-0098-03

一、问题的提出

程序设计是信息技术教育的传统内容。《基础教育信息技术课程标准(2012版)》中,小学、初中和高中三个学段均包含了算法与程序设计的内容,江苏省最新版的初中信息技术教材中的“程序设计”部分,也从以前的九年级选修内容调整到八年级下学期的必修内容。让学生体验程序设计思想和算法思维,是初中阶段程序设计教学的重要目标。

苏教版八年级信息技术教材中,选用高级程序设计语言VisualBasic进行教学。很多初次接触到程序设计的学生对于设计计算机程序非常感兴趣,但是每当学习到诸如数据类型、算法等基础知识时,课堂反应和学习效果往往不尽理想。不少学生认为这些概念和算法过于抽象,教材上对这些概念的解释晦涩难懂,一定程度上影响了学习的信心与学习的效果。

如何让“曲高和寡”的程序设计知识更加通俗易懂,引领学生更好、更快地掌握这些概念和算法?这是一线的信息技术教师研究的热点和难点。我们尝试使用“比喻法”进行教学,收到了良好的成效。

二、比喻教学法在初中程序设计课程中的应用

比喻就是“打比方”,即根据事物之间的相似点,把某一事物比作另一事物,把抽象的事物变得具体,把深奥的道理变得浅显。比喻教学法,就是在教学过程中通过打比方的方法,将两个本质不同但又有相似点的事物建立起联系,使抽象的概念和理论知识更为生动、浅显易懂,以进一步激发学生的学习兴趣,提高学生的有意和无意注意力,增强教学的效果。

1.用比喻解释程序设计的基础概念

程序设计课程的难点之一在于基础概念较多且较难理解,例如常量、变量、数据类型等等。对此,我们在教学中一般采用比喻的方法帮助学生理解这些抽象的概念。

我们把“变量”比喻成橡皮泥。因为变量是在程序中值会发生变化的量,就像学生经常把玩的橡皮泥一样——它们是会变的。例如语句LET A=1:LET A=3:LET A=5:PRINT A,这段程序的作用是在给变量A进行多次赋值,变量A的值从1变成了3,最后变量A的值是5。这个过程就好像学生把玩橡皮泥:先捏成圆形,再捏成长条形,最后捏成方块形,橡皮泥最后的形状是由最后一次塑型决定的,这恰好与一个变量多次赋值之后,值是由最后一次赋值的内容决定的一样。

而在介绍“常量”这一概念时,我们通常会把它比喻成一块坚硬的石头。因为在不破坏石头原有结构的情况下(比如打碎或融化),石头的形状是不会发生改变的。而常量便是在程序中值不会发生变化的量,“不会发生改变”就是石头和常量的共同点,所以石头可以作为常量的比喻对象。

2.用比喻区分IF语句的三种格式

在讲解分支语句时,我们通常要介绍三种不同形式的分支语句,即:

(1)完整的行IF語句:IF<判断条件> THEN <语句1>ELSE<语句2>

(2)不完整的行IF语句:IF<判断条件> THEN<语句1>

(3)块IF语句:

IF <判断条件> THEN

<语句组1>

ELSE

<语句组2>

END IF

这三种不同格式的IF语句各有特点,且书写格式不尽相同,很容易出错。

在学习了完整的行IF语句之后,学生要学习没有ELSE <语句2>的不完整行IF语句。我们会用小壁虎的尾巴作比喻,即小壁虎的尾巴有时候会断掉,但是不会死。这是因为在某些情况下,程序只需要在满足条件之后执行<语句1>,而对于不满足判断条件的情况时,程序不做任何改变,所以可以不用后半部分的ELSE <语句2>,程序也能正确运行。这样不完整的行IF语句和断尾的小壁虎一样依然可以正常生存。

在讲解完整的行IF语句和块IF语句的区别时,我们通常将之比喻为一杯水倒在宽口的大烧杯中与倒在细长的试管里,水面的高度是有区别的。这是因为行IF语句是把判断条件、语句1、语句2写在一行,这样在视觉上看IF语句会显得“宽而扁”;而块IF的格式则是将判断条件、语句组1、语句组2分别写在不同行上,并且要在最后加上END IF作结尾,这样的IF语句在视觉上看则会显得“窄而高”。需要强调的是,块IF语句和完整的行IF语句的作用是一样的,只不过书写格式不同而已,当然,块IF语句更适合于多语句组的情况。

3.用比喻揭示初级算法的执行过程

讲解如何在三个数中找到最大数时,我们会把计算机的“两两比较”过程比喻成“三个学生打擂台”:首先选择一个学生作为擂主,第二位学生上场打擂(例如比身高),如果打擂成功则擂主换成第二位同学,否则擂主不变;最后,第三位学生上场和擂主打擂,如果打擂成功,则擂主换成第三位同学,否则擂主不变。经过两次打擂之后,擂主就是要找的人。可以用如下程序表示这一过程:

DIM AS INTEGER A,B,C,MAX ‘定义变量A,B,C,MAX

INPUT A,B,C ‘从键盘输入A,B,C的值

MAX=A ‘把A设为擂主

IF B>MAX THEN MAX=B ‘B打擂,如果成功则擂主变成B

IF C>MAX THEN MAX=C ‘C打擂,如果成功则擂主变成C

PRINT MAX ‘打印擂主

SLEEP:END ‘结束

在讲授“打擂台”算法时,我们还可以请三位学生亲身示范打擂的过程,这样,可以更好地帮助他们理解和熟悉计算机算法的执行过程,算法思维也在游戏的过程中得到了进一步的内化。

三、在程序设计课堂上运用比喻教学法的注意点

上述只是本人在教学过程中运用“打比方”的个别例子,在初中程序设计课程中还有很多问题,可以拿现实生活中的例子去形象地讲解。当然,打比方要打得好,如果比方打得不好,或者说打得不恰当,那就起不到帮助学生理解疑难问题的目的了。

1.比喻不能“喧宾夺主”

所有的教学手段都是服务于课堂教学的,比喻教学法也不例外。对于一些晦涩难懂的概念,我们可以借助比喻,让学生更好地理解抽象的概念。但是,并不是所有的知识点都是抽象的,或者都可以找到合适的比喻。如果比喻过多过滥,往往会浪费宝贵的课堂时间,增加学生理解比喻的难度,从而偏离服务课堂的主旨。我们不能无视教材中对于程序设计基础概念和算法的经典描述,对于这些,初学时可能难懂,但是当学生通过比喻法理解了之后,便要重新回归理性,将感性的、具体的知识内化为理性的、严谨的概念,这样才更加符合程序设计的学科特点。

2.喻体要常见易懂

试想一下,如果我们将一个抽象的概念比喻成另一个学生不熟悉或者很少见的事物时,学生能很好地理解这个概念么?答案无疑是否定的。比喻法就是要让学生形成知识的正向迁移,学生首先要熟悉比喻物是什么,然后才能将比喻物的知识结构迁移到抽象的概念之中,在脑海中构建起自己对于新知识的理解。教师要选择学生“耳熟能详”的常见实物作为比喻的对象,这样才能便于学生更好、更快地掌握这些概念。

3.喻体要特征鲜明

教师要对比喻对象和被比喻对象的特点进行认真概括,找到它们的相似点,引领学生通过这些相似点搭建一座“知识桥”,更好地理解新概念。如果在教学时随意打比方,在比喻对象和被比喻对象之间“生拉硬拽”,学生找不到两者的相似点,反而会越学越糊涂。

责任编辑:宣丽华