潘洪波
提出問(wèn)題
比爾·蓋茨說(shuō):“學(xué)習(xí)編程可以鍛煉你的思維,幫助你更好地思考,創(chuàng)建一種我認(rèn)為在各領(lǐng)域都非常好用的思維方式?!?美國(guó)麻省理工學(xué)院的切爾·雷斯尼克說(shuō):“當(dāng)你學(xué)會(huì)編程,你會(huì)開(kāi)始思考世界上的一切過(guò)程。”2015年,美國(guó)政府投入40億美元推動(dòng)全美孩子學(xué)習(xí)編程,他們?yōu)槭裁慈绱酥匾暰幊蹋?/p>
未來(lái)的世界一定是智能化、自動(dòng)化的世界,與大數(shù)據(jù)、人工智能等技術(shù)相關(guān),而這一切的基礎(chǔ)是程序。學(xué)會(huì)編程,就能在計(jì)算機(jī)無(wú)處不在的世界里,更高效地使用計(jì)算機(jī);學(xué)會(huì)編程就能更好地讀懂世界、適應(yīng)世界、創(chuàng)造未來(lái)世界。小學(xué)生學(xué)習(xí)編程并不是為了將來(lái)成為程序員,而是在學(xué)習(xí)中開(kāi)發(fā)智力、培養(yǎng)創(chuàng)造力,學(xué)會(huì)運(yùn)用計(jì)算思維解決問(wèn)題,學(xué)會(huì)編程就擁有了一筆巨大的財(cái)富。
正因?yàn)榫幊倘绱酥匾袊?guó)計(jì)算機(jī)學(xué)會(huì)從1984年起,每年都舉行“青少年信息學(xué)奧林匹克競(jìng)賽NOI”,希望通過(guò)比賽促進(jìn)學(xué)校、社會(huì)開(kāi)展程序教學(xué)。然而,現(xiàn)有的小學(xué)生信息學(xué)培訓(xùn)教材,大部分是照搬大學(xué)教材來(lái)編寫(xiě)的,相關(guān)知識(shí)常常集中、系統(tǒng)地出現(xiàn),像用戶說(shuō)明書(shū)一樣面面俱到,所舉的例子經(jīng)常涉及初中、高中的知識(shí),所以這種教材并不適合小學(xué)生來(lái)學(xué)習(xí),讓大部分同學(xué)聽(tīng)不懂、學(xué)不會(huì),害怕學(xué)。于是,本人萌發(fā)了自己編寫(xiě)一本符合小學(xué)生心理、適合小學(xué)生學(xué)習(xí)的教材,既能讓自己輕松地教,又能讓學(xué)生愉快地學(xué)。
分析與解決問(wèn)題
做任何事情,最重要的是方向,方向?qū)α耍蛟S稍做努力就能成功。小學(xué)生學(xué)編程,怎樣的方向才是正確的?
1. 以程序?yàn)橹行娜趸Z(yǔ)句語(yǔ)法
程序是整體,語(yǔ)句語(yǔ)法是局部,先把握住整體后研究局部?,F(xiàn)在的教材大部分是以語(yǔ)法為中心的。一般第一章是軟件安裝、卸載、軟件的啟動(dòng)與退出,第二章是語(yǔ)言的基礎(chǔ)知識(shí),如基本符號(hào)、保留字、標(biāo)識(shí)符、數(shù)據(jù)類型、標(biāo)準(zhǔn)函數(shù)、運(yùn)算符及表達(dá)式等。
如果按教材的順序來(lái)上課,學(xué)生學(xué)了一個(gè)月,連程序是什么樣子都不知道,學(xué)得很枯燥,興趣全無(wú)。于是,我就確定以程序?yàn)橹行?,弱化語(yǔ)句語(yǔ)法,每課都有程序。
雖然這個(gè)程序沒(méi)實(shí)現(xiàn)什么功能,但是通過(guò)這個(gè)簡(jiǎn)單的程序,學(xué)生們已經(jīng)對(duì)C++程序有了一個(gè)初步的、整體的認(rèn)識(shí):程序總是從main()主函數(shù)開(kāi)始執(zhí)行,“return 0;”處返回,結(jié)束程序;每個(gè)語(yǔ)句以分號(hào)作為分隔符。
時(shí)間是有限的,知識(shí)與技能的學(xué)習(xí)是無(wú)限的,在有限的時(shí)間里學(xué)習(xí)無(wú)限的知識(shí)與技能時(shí),必須要學(xué)會(huì)取舍。我以“程序”為主干,舍棄一些超越小學(xué)生能力范圍的繁枝細(xì)葉,不盲目拔高,讓普通的學(xué)生在有限的時(shí)間里輕松地看懂、學(xué)會(huì),體驗(yàn)成功的喜悅。
如講數(shù)據(jù)類型整型時(shí),舍棄了無(wú)符號(hào)整型unsigned int、有符號(hào)短整型shor、無(wú)符號(hào)短整型unsigned shor、無(wú)符號(hào)長(zhǎng)整型unsigned long、無(wú)符號(hào)超長(zhǎng)整型unsigned long long, 保留最常用的整型int、長(zhǎng)整型long、超長(zhǎng)整型long long,同時(shí)它們不是集中出現(xiàn)在一課中,而是在各課的程序中,依次呈現(xiàn)。
2. 循序漸進(jìn),層層鋪墊
一般的信息技術(shù)教材是按章節(jié)編排,一章一個(gè)練習(xí)。而小學(xué)語(yǔ)文、數(shù)學(xué)、英語(yǔ)、科學(xué)教材都是按單元和課的形式編排的,課課都有練習(xí)。為什么大學(xué)教材以章節(jié)編排,小學(xué)教材以單元和課的形式編排?同一門(mén)課程,在大學(xué)里一般都是兩節(jié)課或三節(jié)課連起來(lái)上,有時(shí)甚至一個(gè)上午,而在小學(xué)中,則根據(jù)小學(xué)生年齡特點(diǎn)和認(rèn)知水平,以40分鐘為單位,一節(jié)一節(jié)地上,一般每節(jié)課上的是不同的課程。
于是,本書(shū)按順序結(jié)構(gòu)、選擇結(jié)構(gòu)、for循環(huán)、while與do-while循環(huán)、多重循環(huán)、數(shù)組、函數(shù)、針與類八個(gè)單元來(lái)編排,由82課組成,把變量、數(shù)據(jù)類型、表達(dá)式等語(yǔ)言基礎(chǔ)知識(shí)依次呈現(xiàn)在各課中,把累加求和、求最大值、枚舉、模擬、排序、查找、遞歸等算法深入淺出依次出現(xiàn),同時(shí)做好層層鋪墊。
如在學(xué)“用for語(yǔ)句編寫(xiě)1+2+3+…+100的和”程序前,就做了許多鋪墊,先從第4課《列朋波骨——計(jì)數(shù)器》中學(xué)會(huì)變量的自增與自減,再?gòu)牡?課《雪花——累加器》中學(xué)會(huì)累加,然后學(xué)習(xí)第29課《布納特老師出的難題——累加求和》時(shí)就水道渠成了。
同時(shí),每課都有“動(dòng)動(dòng)腦”,一題選擇題、一題寫(xiě)運(yùn)行結(jié)果、一題程序填空。把一些基礎(chǔ)知識(shí),以習(xí)題的形式依次呈現(xiàn)在每課中,讓上課教師,不需要太多的時(shí)間去鉆研教材、調(diào)整教材、準(zhǔn)備習(xí)題,信手拈來(lái)就能上課。
本教材以兒童為中心,按課和單元來(lái)分類、分塊排列,把各知識(shí)點(diǎn)循序漸進(jìn)、層層鋪墊,依次呈現(xiàn),符合兒童的認(rèn)識(shí)規(guī)律,像一本小學(xué)語(yǔ)文、數(shù)學(xué)書(shū)一樣,深入淺出、易學(xué)易會(huì)。同時(shí)課課有習(xí)題,有利于學(xué)生鞏固升華,也方便教師授課。
3. 貼近生活,彰顯趣味性
為了突出“趣”字,我從教材編排的形式和內(nèi)容上做了很多探索。
(1)通過(guò)創(chuàng)設(shè)故事情景來(lái)激發(fā)學(xué)習(xí)興趣。
創(chuàng)設(shè)了風(fēng)之巔小學(xué)的狐貍老師帶著兔子尼克和泰迪狗格萊爾學(xué)編程這一情境。
如在學(xué)習(xí)整除與整除運(yùn)算符時(shí),有些教材可能在語(yǔ)言基礎(chǔ)章節(jié)中直接出現(xiàn)。我是創(chuàng)設(shè)“尼克與強(qiáng)盜”故事情景后,再來(lái)學(xué)習(xí)整除與整除運(yùn)算符。
尼克家種的胡蘿卜今年不僅大豐收,而且還收獲了一棵超級(jí)胡蘿卜王,強(qiáng)盜兔聽(tīng)到這個(gè)消息就想著把這棵胡蘿卜占為己有。這天強(qiáng)盜兔來(lái)到尼克家門(mén)口,記下了他家的門(mén)牌號(hào)——62號(hào),準(zhǔn)備晚上再動(dòng)手。這件事剛好被尼克發(fā)現(xiàn)了,聰明的尼克把門(mén)牌號(hào)十位上的數(shù)字和個(gè)位上的數(shù)換一下,變成了26號(hào),并報(bào)警。晚上,愚蠢的強(qiáng)盜兔找了半天都沒(méi)找到62號(hào),同時(shí)被警察逮了個(gè)正著。
通過(guò)一個(gè)小小的故事,增加了學(xué)習(xí)的愉悅性。
(2)通過(guò)“比特童幣”獎(jiǎng)勵(lì)積分卡來(lái)激發(fā)學(xué)習(xí)興趣。
如《第59課比特童幣——四重循環(huán)》。比特童幣是風(fēng)之巔小學(xué)信息學(xué)社團(tuán)的獎(jiǎng)勵(lì)積分卡,學(xué)生們獲得比特童幣后可以在每月最后一周的周五,到比特超市買(mǎi)文具、玩具、零食等商品,同時(shí)也可以存入風(fēng)之巔比特銀行,獲得利息。今天,狐貍老師布置了一個(gè)學(xué)習(xí)任務(wù),同學(xué)們完成后可以獲得 (1000) 2元比特童幣,其中(1000) 2=(8) 10。
學(xué)生們?cè)趯W(xué)習(xí)時(shí),教師根據(jù)每位同學(xué)的表現(xiàn),獎(jiǎng)勵(lì)不同積分的“比特童幣”,學(xué)生的學(xué)習(xí)興趣就十分濃厚了。
(3)通過(guò)知識(shí)本身來(lái)激發(fā)學(xué)生的學(xué)習(xí)興趣。
如我在第27課《老狼老狼幾點(diǎn)鐘—— for語(yǔ)句》中,選用了“老狼老狼幾點(diǎn)鐘”的例子,先直接用cout語(yǔ)句寫(xiě),然后再提出思考問(wèn)題:cout<<"老狼老狼幾點(diǎn)鐘? "重復(fù)出現(xiàn)了12次,輸入時(shí)運(yùn)用復(fù)制、粘貼可以很快地完成,但是解決有些問(wèn)題時(shí),需要復(fù)重幾百次、幾千次、或幾萬(wàn)次,是不是只能這樣做呢?這時(shí)才引出for語(yǔ)句,在講解其格式與用法之后,再用for語(yǔ)句來(lái)寫(xiě)“老狼老狼幾點(diǎn)鐘”的程序。通過(guò)這個(gè)過(guò)程,學(xué)生明白和理解了用for語(yǔ)句寫(xiě)的程序是非常簡(jiǎn)潔的,for語(yǔ)句是非常有用的。
通過(guò)for語(yǔ)句這個(gè)知識(shí)點(diǎn)的學(xué)習(xí),學(xué)生體會(huì)到學(xué)習(xí)的樂(lè)趣。同樣一個(gè)知識(shí)點(diǎn),若選的例子脫離學(xué)生的實(shí)際,就無(wú)法引起學(xué)生的共鳴,學(xué)習(xí)起來(lái)就是枯燥無(wú)味的。若選的例子有趣或貼近學(xué)生的生活,學(xué)生學(xué)習(xí)起來(lái)就有滋有味,興趣濃厚。
4. 重算法,重流程圖
本教材注重算法,利用流程圖,讓學(xué)生輕松理解解題思路,舉一反三。
計(jì)算機(jī)是工具,學(xué)習(xí)編程就是為了更高效地使用計(jì)算機(jī)。學(xué)習(xí)編程的過(guò)程就是分析問(wèn)題、解決問(wèn)題的過(guò)程。解決問(wèn)題的方法有很多,解決問(wèn)題時(shí)需要條理清晰、步驟清楚,所以本書(shū)配有許多的流程圖,幫助小學(xué)生理清思路。
又如學(xué)習(xí)if語(yǔ)句時(shí),以“智商問(wèn)題”作為導(dǎo)入課。智商,表示人的聰明程度,也就是IQ,它是德國(guó)心理學(xué)家施特恩在1912年提出的。智商采用200分制,分?jǐn)?shù)越高,表示越聰明,智商就越高,140分以上者被稱為天才。
流程圖如圖所示。
#include
using namespace std;
int main()
{
int iq;
cout<<"IQ:";
cin>>iq;
if (iq>140) cout<<"天才";
return 0;
}
同學(xué)們通過(guò)流程圖,理解if語(yǔ)句含義,掌握if語(yǔ)句的使用方法,創(chuàng)造性地編出了“顏值問(wèn)題”、“關(guān)于愛(ài)”的程序。
研究的成果
筆者編寫(xiě)的《小學(xué)生C++趣味編程》已與清華大學(xué)出版社在3月簽定出版合同,估計(jì)2017年10月以后就能上市發(fā)行。
學(xué)生通過(guò)信息學(xué)社團(tuán)一到兩年的學(xué)習(xí),參加市、區(qū)小學(xué)信息學(xué)奧林匹克競(jìng)賽都能獲獎(jiǎng)。同時(shí),編程學(xué)習(xí)為學(xué)生在信息學(xué)方面的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ),許多學(xué)生升入初中、高中后繼續(xù)學(xué)習(xí)信息學(xué)。我校學(xué)生至今已有多人獲全國(guó)一等獎(jiǎng),并被上海復(fù)旦大學(xué)等名校提前錄取。
基于小學(xué)生的《C++趣味編程》校本教材的出版,希望能夠幫助更多的小朋友們有趣地學(xué)習(xí)編程,能夠讓更多一線信息技術(shù)教師少走彎路。
(作者單位:浙江金華市環(huán)城小學(xué))