(東莞市莞城區(qū)莞城中心小學(xué),廣東 東莞 523000)
為了在東莞市各小學(xué)有效推廣和普及程序設(shè)計(jì)教學(xué),促進(jìn)和提高學(xué)生分析問題能力、數(shù)學(xué)抽象能力、編程語言能力以及程序技巧、想象力和創(chuàng)造性,市教育局自2007年起,每年組織全市小學(xué)生開展程序設(shè)計(jì)比賽。隨著比賽擂臺(tái)隆隆的戰(zhàn)鼓聲,程序設(shè)計(jì)成為了小學(xué)生最喜愛的興趣課之一。
小學(xué)生學(xué)習(xí)程序設(shè)計(jì)可以培養(yǎng)嚴(yán)密的邏輯思維能力、積極的探索創(chuàng)造能力、嚴(yán)謹(jǐn)?shù)目茖W(xué)研究精神、豐富的空間想象能力。這些能力和精神完全可以遷移到其他課程的學(xué)習(xí)和生活當(dāng)中去。但是,由于程序設(shè)計(jì)具有抽象性、靈活性、邏輯性強(qiáng)等特點(diǎn)。從教學(xué)角度來說,程序設(shè)計(jì)類課程主要有抽象、枯燥和復(fù)雜三大難點(diǎn)。加之程序設(shè)計(jì)屬于興趣類課程,不要考試。相對(duì)于學(xué)生來說,認(rèn)為沒有強(qiáng)迫性,因此很多學(xué)生課后不會(huì)主動(dòng)去花時(shí)間掌握課堂知識(shí),導(dǎo)致上課時(shí)轟轟烈烈,課后教學(xué)內(nèi)容全部還給了老師。對(duì)知識(shí)點(diǎn)記得慢忘得快。這些問題無疑給小學(xué)程序設(shè)計(jì)教學(xué)帶來了極大的挑戰(zhàn)。
面對(duì)小學(xué)程序設(shè)計(jì)課程的抽象、枯燥和復(fù)雜等特性,教學(xué)最容易步入的誤區(qū)是偏離童年本位,走向成人化,從而弱化程序設(shè)計(jì)教學(xué)對(duì)小學(xué)生學(xué)習(xí)、生活的引導(dǎo)作用,進(jìn)而使學(xué)生失去了學(xué)習(xí)程序設(shè)計(jì)的興趣與動(dòng)力。
在程序設(shè)計(jì)中使用的語言是用于編寫計(jì)算機(jī)程序的語言。我校程序設(shè)計(jì)小組使用的是pascal語言,它包含了英語中的單詞和根據(jù)規(guī)則由記號(hào)構(gòu)成的記號(hào)串的總體。在程序設(shè)計(jì)語言中,這些記號(hào)串就是程序。程序設(shè)計(jì)語言包含三個(gè)方面,即語法、語義和語用。語法表示程序的結(jié)構(gòu)或形式,即表示構(gòu)成程序的各個(gè)記號(hào)之間的組合規(guī)則,但不涉及這些記號(hào)的特定含義,也不涉及使用者。語義表示程序的含義,即表示按照各種方法所表示的各個(gè)記號(hào)的特定含義,但也不涉及使用者,語用表示程序與使用的關(guān)系。這些對(duì)于小學(xué)生來說都是抽象難懂的。
例如在學(xué)習(xí)將兩個(gè)變量a,b進(jìn)行交換時(shí),學(xué)生的想法往往就是:“a:=b;b:=a;”但實(shí)際上,這2個(gè)語句的執(zhí)行情況是將變量b的值給了變量a,變量a再將得到的值賦給變量b。結(jié)果是變量a拿到了變量b的值,但變量a原來的值卻丟失了,變量b拿不到了。
在程序設(shè)計(jì)的訓(xùn)練中,現(xiàn)有的教材專業(yè)性強(qiáng),成人味足,多拘泥于語言的本身或是經(jīng)典算法的直觀呈現(xiàn),從而偏離了小學(xué)童年本位,使學(xué)生聽課乏味、難懂。例如:在講到冒泡法排序知識(shí)點(diǎn)時(shí),冒泡法很抽象,尚未入門的同學(xué)很難接受。我們知道,冒泡排序的基本思想:是將待排序的數(shù)據(jù)看成一個(gè)個(gè)豎直排列重量不等的氣泡,較小的數(shù)看作輕氣泡要向上浮。對(duì)這一串氣泡從底部向上進(jìn)行檢查,順次比較相鄰的兩個(gè)氣泡的重量,若發(fā)現(xiàn)輕氣泡在下則進(jìn)行交換。第一遍檢查結(jié)束后,最輕的氣泡(最小的數(shù))浮到了最高位置。第二遍檢查后,次輕的氣泡浮到了次高位置。如此反復(fù)進(jìn)行下去,直到全部滿足輕氣泡在上重氣泡在下為止。所以有時(shí)在講基本思想時(shí),部份學(xué)生往往會(huì)感到枯燥乏味,更不懂如何將其應(yīng)用到編程應(yīng)用去。
在程序設(shè)計(jì)中,解決問題的步驟往往不是一蹴而就的,它需要分析問題后,有條理地分步處理。但小學(xué)生的思維特點(diǎn)是很直觀的,所想即所得。這容易導(dǎo)致他們?cè)诮忸}時(shí)忽略一些關(guān)鍵步驟而得不到想要的結(jié)果。例如,在二分查找中,查找的算法是:
(1)設(shè)置起點(diǎn)和終點(diǎn);
(2)求中間點(diǎn);
(3)如果要查找的值等于中間點(diǎn),則輸出結(jié)果,并結(jié)束;
(4)如果要查找的數(shù)小于中間點(diǎn),則終點(diǎn)的值更新為中間點(diǎn)的值;
(5)如果要查找的數(shù)大于中間點(diǎn),則起點(diǎn)的值更新為中間點(diǎn)的值;
(6)重復(fù)(2)~(5)直到找了要找的數(shù),或終點(diǎn)的值小于起點(diǎn)的值。
在以上關(guān)鍵的6步中,學(xué)生只要搞錯(cuò)一步,就得不到結(jié)果。
如何采用有效的教學(xué)方法,幫助學(xué)生化抽象為具體,化枯燥為趣味,化復(fù)雜為簡(jiǎn)單,“童化”編程成為小學(xué)程序設(shè)計(jì)教學(xué)的一個(gè)關(guān)鍵抓手。具體來說,要以兒童為中心,釋放兒童的靈性,通過各種貼切學(xué)生的事物、游戲等方式來打開學(xué)生思路,讓原本其樂無窮的程序設(shè)計(jì)課程變得生動(dòng)有趣,吸引學(xué)生主動(dòng)學(xué),喜歡學(xué)。
程序設(shè)計(jì)教學(xué)內(nèi)容比較抽象,有些內(nèi)容難以理解。所以要立足兒童本位,用他們熟悉的事物去說明、去比喻還不熟悉的事物,讓學(xué)生把教學(xué)內(nèi)容和現(xiàn)實(shí)中非常接近我們的事情聯(lián)系起來。在課堂中多用一些生活中的事物如火車、鬧鐘、替身演員等事物作為喻體,加深學(xué)生理解并強(qiáng)化記憶。
如在學(xué)習(xí)交換變量時(shí),可以先拿出紅色和藍(lán)色2個(gè)不同顏色的杯子,往里面倒清水和茶,然后讓學(xué)生想辦法在不允許使用別的容器的情況下,把2個(gè)杯子的東西進(jìn)行交換。學(xué)生很快就發(fā)現(xiàn)沒有別的容器的幫助,把兩個(gè)杯子的東西進(jìn)行交換是不可能的。這時(shí),再讓學(xué)生使用一個(gè)白色空杯,讓他們把杯子的東西進(jìn)行交換,并寫出算法。很快,學(xué)生就能寫出如下算法:
把紅色杯子的水倒進(jìn)白色的空杯;
把藍(lán)色杯子的茶倒進(jìn)紅色的杯子;
把白色杯子的水倒進(jìn)藍(lán)色的杯子;
接著講引入兩個(gè)變量的交換,學(xué)生就非常容易理解了。
編程是一項(xiàng)較為枯燥的程序設(shè)計(jì)訓(xùn)練,如果教師通過比喻教學(xué),把教學(xué)內(nèi)容和現(xiàn)實(shí)中非常熟悉的事情聯(lián)系起來,不僅能使枯燥乏味的編程知識(shí)生活化,趣味化,激發(fā)學(xué)生的學(xué)習(xí)興趣。例如在將IF語句和randam函數(shù)結(jié)合的教學(xué)中,可以先給學(xué)生玩猜數(shù)字的游戲。把事先準(zhǔn)備的一些寫了數(shù)字的紙團(tuán)讓他們抽取,然后告訴他們數(shù)字的范圍,讓他們猜猜手上的紙團(tuán)上寫著的數(shù)字,看看誰猜得對(duì)。學(xué)生們都會(huì)很高興的玩起來,最后看誰贏了教師可以進(jìn)行精神鼓勵(lì)和采用發(fā)一些小獎(jiǎng)品鼓勵(lì)方式來激發(fā)學(xué)生的學(xué)習(xí)興趣。此時(shí),老師讓學(xué)生們回想剛才游戲的過程,把游戲的步驟寫出來。學(xué)生寫出來后再讓他們互相比較,然后整理得出下面步驟。
(1)準(zhǔn)備有數(shù)字的紙團(tuán);
(2)抽取紙團(tuán);
(3)寫出自己猜想的號(hào)碼;
(4)打開紙團(tuán)和猜想的號(hào)碼進(jìn)行對(duì)比,對(duì)的獲勝。
接著,老師對(duì)學(xué)生進(jìn)行引導(dǎo):每次都要做紙團(tuán)猜數(shù)字太麻煩了,既然我們已經(jīng)學(xué)了編程,那能不能讓電腦幫幫忙隨機(jī)產(chǎn)生一個(gè)數(shù)字然我們?nèi)ゲ?,然后把比較結(jié)果告訴我們呢?帶著問題讓學(xué)生模擬游戲步驟寫出算法。并總結(jié)歸納:
(1)產(chǎn)生一個(gè)隨機(jī)數(shù);
(2)從鍵盤輸入自己猜想的數(shù);
(3)兩個(gè)數(shù)進(jìn)行比較,如果一致輸出“win”,不一致輸出“l(fā)ose”。
然后讓學(xué)生根據(jù)算法,寫出程序進(jìn)行調(diào)試。
在一些奧賽輔導(dǎo)書上就有提倡將枯燥的問題進(jìn)行游戲化的題目,如“猴子選大王”“狼追兔子”“齊王點(diǎn)兵”等有故事情節(jié)的題目,讓小學(xué)生既感到非常有趣,又能讓小學(xué)生主動(dòng)地去思考問題。
編程是給出解決特定問題程序的過程,包括分析、設(shè)計(jì)、編碼、測(cè)試、排錯(cuò)等不同階段。這對(duì)于小學(xué)生來說很復(fù)雜,如果我們?cè)诮虒W(xué)過程中將這些知識(shí)點(diǎn)細(xì)化,分成一個(gè)個(gè)簡(jiǎn)單易懂的小點(diǎn),讓學(xué)生接受了再繼續(xù)下一個(gè)小點(diǎn),就像把一塊餅干分成好多份,讓學(xué)生在不知不覺中吃掉一大塊餅,比起一次給他們吃一大塊效果好很多。例如,在講插入排序時(shí),可以先讓學(xué)生學(xué)習(xí)把數(shù)組里面最后一個(gè)數(shù)放到數(shù)組的開頭,其余的數(shù)據(jù)順勢(shì)往后移動(dòng)一位。在這個(gè)過程中,著重讓學(xué)生明白數(shù)組中數(shù)據(jù)是怎樣移動(dòng)的,如何移動(dòng)數(shù)據(jù)才不會(huì)使原來的數(shù)據(jù)丟失。
接著,讓學(xué)生模擬插班生排隊(duì)的情況,一個(gè)新同學(xué)去到一個(gè)新的班級(jí),他需要再排隊(duì)時(shí)確定自己位置。在這里,著重讓學(xué)生明白如何查找數(shù)據(jù)在一個(gè)有序的隊(duì)列中所處的位置,然后把原數(shù)組的數(shù)據(jù)進(jìn)行移動(dòng),再把插入數(shù)據(jù)放進(jìn)對(duì)應(yīng)的位置中。
再接著,把題目升級(jí)為有n個(gè)新同學(xué)需要插入原來的隊(duì)伍。在這里,著重讓學(xué)生明白,從1到n,每個(gè)同學(xué)的插入過程是一樣的,但每當(dāng)插入一個(gè)新同學(xué),班級(jí)的隊(duì)伍長(zhǎng)度會(huì)發(fā)生改變。
最后,讓學(xué)生完成一列輸入的數(shù),用前面學(xué)過的方法進(jìn)行排序。在這里,學(xué)生需要完成從將一個(gè)插入一列數(shù)中到將一堆數(shù)逐個(gè)插入,形成一個(gè)有序數(shù)列的改變。簡(jiǎn)單來說,就是將原來的一列數(shù)變成一個(gè)只有一個(gè)數(shù)的數(shù)列就可以了。在學(xué)生完成程序前,是沒有引入插入排序的概念的。學(xué)生完成程序后,要引導(dǎo)學(xué)生歸納總結(jié)插入排序的步驟:(1)找到插入位置;(2)移動(dòng)數(shù)據(jù);(3)把插入的數(shù)放到對(duì)應(yīng)位置;(4)更新有序數(shù)列的長(zhǎng)度。
在這個(gè)過程里,要著重對(duì)插入排序的知識(shí)點(diǎn)進(jìn)行分割,讓學(xué)生逐步掌握插入排序的要點(diǎn),最后水到渠成。
自2003年起,筆者所在學(xué)校校開始組建程序設(shè)計(jì)興趣小組,并在相關(guān)競(jìng)賽中取得了優(yōu)異成績(jī),獲得全國(guó)一等獎(jiǎng)1人次,全國(guó)二等獎(jiǎng)1人次,全國(guó)三等獎(jiǎng)2人次,廣東省三等獎(jiǎng)2人次,東莞市一等獎(jiǎng)40多人次。在最近3年的全市小學(xué)生程序設(shè)計(jì)比賽中,該校均榮獲團(tuán)體總分第一名的好成績(jī)。這些成績(jī)的取得是和該校在程序設(shè)計(jì)教學(xué)中使用“童化”編程教學(xué)模式分不開的。
“一切教育都是從我們對(duì)兒童天性理解開始的”(泰戈?duì)栒Z)??墒且斫狻皟和煨浴?,在教學(xué)中營(yíng)造一個(gè)真切的兒童世界,必須有一個(gè)成熟的成人世界來作為支持。美國(guó)哲人霍姆斯說:“一個(gè)孩子的教育,應(yīng)當(dāng)在他出生前一百年開始。’他道出了“童化”的真義—不是作為教師的成人走向“弱化”、“稚化”,而是一個(gè)成人世界走向“成熟”的標(biāo)志。嘗試以具體有趣的實(shí)例降低學(xué)生的入門難度,精選重點(diǎn)知識(shí)為學(xué)生打好基礎(chǔ),在有針對(duì)性的練習(xí)中總結(jié)競(jìng)賽技巧,倡導(dǎo)“童化”,在小學(xué)中開展程序設(shè)計(jì)課外輔導(dǎo)活動(dòng)方面作為研究方向,有著重要的價(jià)值。