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