“童化”编程在小学程序设计教学中的应用探究

2017-01-26 21:12
珠江教育论坛 2017年4期
关键词:纸团程序设计气泡

(东莞市莞城区莞城中心小学,广东 东莞 523000)

一、小学程序设计教学的现状与挑战

为了在东莞市各小学有效推广和普及程序设计教学,促进和提高学生分析问题能力、数学抽象能力、编程语言能力以及程序技巧、想象力和创造性,市教育局自2007年起,每年组织全市小学生开展程序设计比赛。随着比赛擂台隆隆的战鼓声,程序设计成为了小学生最喜爱的兴趣课之一。

小学生学习程序设计可以培养严密的逻辑思维能力、积极的探索创造能力、严谨的科学研究精神、丰富的空间想象能力。这些能力和精神完全可以迁移到其他课程的学习和生活当中去。但是,由于程序设计具有抽象性、灵活性、逻辑性强等特点。从教学角度来说,程序设计类课程主要有抽象、枯燥和复杂三大难点。加之程序设计属于兴趣类课程,不要考试。相对于学生来说,认为没有强迫性,因此很多学生课后不会主动去花时间掌握课堂知识,导致上课时轰轰烈烈,课后教学内容全部还给了老师。对知识点记得慢忘得快。这些问题无疑给小学程序设计教学带来了极大的挑战。

二、小学程序设计教学的难点与误区

面对小学程序设计课程的抽象、枯燥和复杂等特性,教学最容易步入的误区是偏离童年本位,走向成人化,从而弱化程序设计教学对小学生学习、生活的引导作用,进而使学生失去了学习程序设计的兴趣与动力。

(一)程序设计课程的抽象性

在程序设计中使用的语言是用于编写计算机程序的语言。我校程序设计小组使用的是pascal语言,它包含了英语中的单词和根据规则由记号构成的记号串的总体。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,即表示构成程序的各个记号之间的组合规则,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,即表示按照各种方法所表示的各个记号的特定含义,但也不涉及使用者,语用表示程序与使用的关系。这些对于小学生来说都是抽象难懂的。

例如在学习将两个变量a,b进行交换时,学生的想法往往就是:“a:=b;b:=a;”但实际上,这2个语句的执行情况是将变量b的值给了变量a,变量a再将得到的值赋给变量b。结果是变量a拿到了变量b的值,但变量a原来的值却丢失了,变量b拿不到了。

(二)程序设计课程的枯燥性

在程序设计的训练中,现有的教材专业性强,成人味足,多拘泥于语言的本身或是经典算法的直观呈现,从而偏离了小学童年本位,使学生听课乏味、难懂。例如:在讲到冒泡法排序知识点时,冒泡法很抽象,尚未入门的同学很难接受。我们知道,冒泡排序的基本思想:是将待排序的数据看成一个个竖直排列重量不等的气泡,较小的数看作轻气泡要向上浮。对这一串气泡从底部向上进行检查,顺次比较相邻的两个气泡的重量,若发现轻气泡在下则进行交换。第一遍检查结束后,最轻的气泡(最小的数)浮到了最高位置。第二遍检查后,次轻的气泡浮到了次高位置。如此反复进行下去,直到全部满足轻气泡在上重气泡在下为止。所以有时在讲基本思想时,部份学生往往会感到枯燥乏味,更不懂如何将其应用到编程应用去。

(三)程序设计课程的复杂性

在程序设计中,解决问题的步骤往往不是一蹴而就的,它需要分析问题后,有条理地分步处理。但小学生的思维特点是很直观的,所想即所得。这容易导致他们在解题时忽略一些关键步骤而得不到想要的结果。例如,在二分查找中,查找的算法是:

(1)设置起点和终点;

(2)求中间点;

(3)如果要查找的值等于中间点,则输出结果,并结束;

(4)如果要查找的数小于中间点,则终点的值更新为中间点的值;

(5)如果要查找的数大于中间点,则起点的值更新为中间点的值;

(6)重复(2)~(5)直到找了要找的数,或终点的值小于起点的值。

在以上关键的6步中,学生只要搞错一步,就得不到结果。

三、“童化”编程在程序设计教学中的应用

如何采用有效的教学方法,帮助学生化抽象为具体,化枯燥为趣味,化复杂为简单,“童化”编程成为小学程序设计教学的一个关键抓手。具体来说,要以儿童为中心,释放儿童的灵性,通过各种贴切学生的事物、游戏等方式来打开学生思路,让原本其乐无穷的程序设计课程变得生动有趣,吸引学生主动学,喜欢学。

(一)“童化编程”化抽象为具体

程序设计教学内容比较抽象,有些内容难以理解。所以要立足儿童本位,用他们熟悉的事物去说明、去比喻还不熟悉的事物,让学生把教学内容和现实中非常接近我们的事情联系起来。在课堂中多用一些生活中的事物如火车、闹钟、替身演员等事物作为喻体,加深学生理解并强化记忆。

如在学习交换变量时,可以先拿出红色和蓝色2个不同颜色的杯子,往里面倒清水和茶,然后让学生想办法在不允许使用别的容器的情况下,把2个杯子的东西进行交换。学生很快就发现没有别的容器的帮助,把两个杯子的东西进行交换是不可能的。这时,再让学生使用一个白色空杯,让他们把杯子的东西进行交换,并写出算法。很快,学生就能写出如下算法:

把红色杯子的水倒进白色的空杯;

把蓝色杯子的茶倒进红色的杯子;

把白色杯子的水倒进蓝色的杯子;

接着讲引入两个变量的交换,学生就非常容易理解了。

(二)“童化编程”化枯燥为趣味

编程是一项较为枯燥的程序设计训练,如果教师通过比喻教学,把教学内容和现实中非常熟悉的事情联系起来,不仅能使枯燥乏味的编程知识生活化,趣味化,激发学生的学习兴趣。例如在将IF语句和randam函数结合的教学中,可以先给学生玩猜数字的游戏。把事先准备的一些写了数字的纸团让他们抽取,然后告诉他们数字的范围,让他们猜猜手上的纸团上写着的数字,看看谁猜得对。学生们都会很高兴的玩起来,最后看谁赢了教师可以进行精神鼓励和采用发一些小奖品鼓励方式来激发学生的学习兴趣。此时,老师让学生们回想刚才游戏的过程,把游戏的步骤写出来。学生写出来后再让他们互相比较,然后整理得出下面步骤。

(1)准备有数字的纸团;

(2)抽取纸团;

(3)写出自己猜想的号码;

(4)打开纸团和猜想的号码进行对比,对的获胜。

接着,老师对学生进行引导:每次都要做纸团猜数字太麻烦了,既然我们已经学了编程,那能不能让电脑帮帮忙随机产生一个数字然我们去猜,然后把比较结果告诉我们呢?带着问题让学生模拟游戏步骤写出算法。并总结归纳:

(1)产生一个随机数;

(2)从键盘输入自己猜想的数;

(3)两个数进行比较,如果一致输出“win”,不一致输出“lose”。

然后让学生根据算法,写出程序进行调试。

在一些奥赛辅导书上就有提倡将枯燥的问题进行游戏化的题目,如“猴子选大王”“狼追兔子”“齐王点兵”等有故事情节的题目,让小学生既感到非常有趣,又能让小学生主动地去思考问题。

(三)“童化编程”化复杂为简单

编程是给出解决特定问题程序的过程,包括分析、设计、编码、测试、排错等不同阶段。这对于小学生来说很复杂,如果我们在教学过程中将这些知识点细化,分成一个个简单易懂的小点,让学生接受了再继续下一个小点,就像把一块饼干分成好多份,让学生在不知不觉中吃掉一大块饼,比起一次给他们吃一大块效果好很多。例如,在讲插入排序时,可以先让学生学习把数组里面最后一个数放到数组的开头,其余的数据顺势往后移动一位。在这个过程中,着重让学生明白数组中数据是怎样移动的,如何移动数据才不会使原来的数据丢失。

接着,让学生模拟插班生排队的情况,一个新同学去到一个新的班级,他需要再排队时确定自己位置。在这里,着重让学生明白如何查找数据在一个有序的队列中所处的位置,然后把原数组的数据进行移动,再把插入数据放进对应的位置中。

再接着,把题目升级为有n个新同学需要插入原来的队伍。在这里,着重让学生明白,从1到n,每个同学的插入过程是一样的,但每当插入一个新同学,班级的队伍长度会发生改变。

最后,让学生完成一列输入的数,用前面学过的方法进行排序。在这里,学生需要完成从将一个插入一列数中到将一堆数逐个插入,形成一个有序数列的改变。简单来说,就是将原来的一列数变成一个只有一个数的数列就可以了。在学生完成程序前,是没有引入插入排序的概念的。学生完成程序后,要引导学生归纳总结插入排序的步骤:(1)找到插入位置;(2)移动数据;(3)把插入的数放到对应位置;(4)更新有序数列的长度。

在这个过程里,要着重对插入排序的知识点进行分割,让学生逐步掌握插入排序的要点,最后水到渠成。

四、结束语

自2003年起,笔者所在学校校开始组建程序设计兴趣小组,并在相关竞赛中取得了优异成绩,获得全国一等奖1人次,全国二等奖1人次,全国三等奖2人次,广东省三等奖2人次,东莞市一等奖40多人次。在最近3年的全市小学生程序设计比赛中,该校均荣获团体总分第一名的好成绩。这些成绩的取得是和该校在程序设计教学中使用“童化”编程教学模式分不开的。

“一切教育都是从我们对儿童天性理解开始的”(泰戈尔语)。可是要理解“儿童天性”,在教学中营造一个真切的儿童世界,必须有一个成熟的成人世界来作为支持。美国哲人霍姆斯说:“一个孩子的教育,应当在他出生前一百年开始。’他道出了“童化”的真义—不是作为教师的成人走向“弱化”、“稚化”,而是一个成人世界走向“成熟”的标志。尝试以具体有趣的实例降低学生的入门难度,精选重点知识为学生打好基础,在有针对性的练习中总结竞赛技巧,倡导“童化”,在小学中开展程序设计课外辅导活动方面作为研究方向,有着重要的价值。

猜你喜欢
纸团程序设计气泡
SIAU诗杭便携式气泡水杯
浮法玻璃气泡的预防和控制对策
医学专业“Python程序设计”课程教学改革总结与思考
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
冰冻气泡
快走,带刺的“纸团”
高职高专院校C语言程序设计教学改革探索
纸团作怪
热热闹闹排排坐