汪霞華
近年來,越來越多的小學開展計算機編程教學,這是培養學生使用信息技術解決各類問題的意識和能力的重要組成部分。圖示化、積木式的程序環境的出現,降低了編程的入門要求。但對于大多數小學生而言,編程本身并不有趣,無論編程語句還是編程規則,都是抽象和枯燥的。基于小學生愛玩的天性,編制游戲程序獲得他們普遍的歡迎。然而,面對小學生對游戲編程教學的喜愛,教師的教學遇到了新的挑戰。首先,以前的編程教學基本上是教師出示一個任務,學生照著模仿寫語句,但時間長了,學生缺乏自由想象與創新,自己的分析與設計較少體現在自己的程序中;其次,由于小學生的年齡偏小,而編程的學習一定需要邏輯思維的支撐,所以教師需要培養學生對事情抽象再邏輯化表達的能力,提高他們分析問題和解決問題的能力;最后,小學生的關注點往往在游戲本身,這樣會忽略游戲編程背后的編程思想。因此,教學設計需要把“理解編程思想,培養編程思維”作為重要的教學目標。
困難一:
關注編程任務分析,缺乏指導學生建模的方法
存在問題:大多數教師在編程教學中,關注的是編寫代碼本身,對如何建模并不重視。學生往往根據一個任務,在教師的指導下通過模仿類似的程序設計,開始編程和調試,在整個過程中,學生可能學會了一些編程的技巧,但對編程的目的和方法還是一知半解,無法編寫出具有自己想法和個性化的程序。
解決方法:編程任務的分析與建模是指能夠對現實世界的事物進行分析,用適合計算機編程的形式表達出來。這種抽象能力和構造能力,不僅在編程中很重要,也是一種在日常工作生活中解決問題的能力。
以《捕魚達人》為例,它是用Kodu編程環境完成的教學任務,其要求是根據自己創編的“捕魚達人”故事,制訂相應的游戲規則,編寫一個游戲程序:游戲主角在海里移動,捉到魚時可以獲得獎勵,同時要避開障礙;當獎勵值達到一定數值時成為捕魚達人,游戲結束。
根據王榮良教授提出的“故事—規則—語句—作品”兒童編程學習流程,筆者把《捕魚達人》設計為故事分析、人物設計與游戲規則制訂、場景設計、編寫代碼、作品調試等五個教學環節。其中,故事分析、人物設計與游戲規則制定環節就是完成編程任務的分析與建模工作。
課上,老師首先提出:“海里有很多魚,如果你想讓Kodu成為一名捕魚達人,你能編一個怎樣的故事呢?”
同學甲:海里有一些魚,它們自由地游動,Kodu很聰明也游得很快,一會兒他就捉到了5條小魚,成了捕魚達人了。
同學乙:海里有各種各樣的魚,有的魚是Kodu喜歡的,有的魚還會傷害Kodu,他既要捉住小魚,也要防止壞魚,他要捉到6條小魚才能成為捕魚達人。
同學丙:海里有魚也有一些水草,當Kodu被水草纏住,他就不能捕魚了,他要繞過水草,捉住6條小魚,才能成為捕魚達人。
以上師生問答教學環節的設計,是希望通過一定的故事情境幫助學生理解、分析任務的目的、參與的角色及角色之間的關系,為游戲規則的制訂做好準備。然后,教師提出了如下幾個問題,要求學生作深入的思考:①根據你的故事,在游戲中需要設計哪些場景和對象?②根據你的故事,每一個對象會做哪些動作?③根據你的故事,如何設定游戲的獎勵和懲罰?④根據你的故事,如何認定Kodu成為捕魚達人了?
接著,教師要求學生填寫學習單,歸納整理《捕魚達人》游戲中的對象和游戲規則。
請根據你創編的故事,選擇相關的場景和對象,填寫下面的表格。
場景:□海洋□陸地
對象:□Kodu □魚 □水草 □_______
至此,盡管教師還沒有開始用計算機編寫程序,但已經為學生下一步編寫程序提供了明確的要求。這樣的設計強化了學生的思考過程,把學生關注計算機的操作轉化為對問題的分析。學生通過這樣的學習方法,可以在游戲故事情境中學會“抽象”游戲規則,并用形式化的方式“表達”規則,潛移默化地學會“構造”計算機程序的方法。
困難二:
關注編程積木工具的具體功能,缺乏程序思維滲透的方法
存在問題:Scratch程序設計是一種全新的編程理念,搭積木式的編程方式,操作簡單,學生利用它可以充分表達自己的創意,輕松創作各種故事、音樂、游戲等動畫作品。由于Scratch積木式編程方式把一些語句做成模塊,所以學生對一些程序命令的流程缺少認識,這在一定程度上也弱化了計算機學科形式化編程思想的習得。
解決方法:正因為Scratch編程環境采用積木方式,所以學生不用記憶命令語句,教師不需要通過對程序語句的解構來抽象地分析程序流程的結構特點。當教師把教學重點放在對任務的分析上時,就能順應學生的創作欲望,同時整理清楚所分解的每個小任務的相互關系,從而把邏輯思維的教學滲透在編程教學中。
以《圖形的變化》為例,它是在Scratch編程環境下完成的一個畫規則圖形組合的教學任務,其要求是:①通過觀察規則圖形,發現其規律,能夠利用循環指令編寫程序繪制規則圖形;②理解循環語句的意義,掌握循環語句的使用方法。其中,“循環”是計算機編程的一個典型結構,是需要重點掌握的編程思想。
課堂上老師提出故事情境:我們的神奇花園里盛開著一朵神奇的花,大家仔細觀察,你們發現了什么?能畫出來嗎?
通過討論,學生得到答案,這朵花是由六個一樣大小的正方形組合而成的(如下圖)。但是學生卻無從下手,他們似乎遇到了很多困難。有的學生直接提出來:正方形如何畫?老師開始把大的困難分解成若干小的問題:
1.Scratch中哪兒的積木負責畫畫,你能找到嗎?
2.畫筆的顏色,粗細可以設置嗎?
3.哪一塊積木負責畫畫的?畫錯了怎么辦?
4.你能試著畫出一條長度為60毫米的直線嗎?
5.你能試著畫出一個正方形嗎?endprint
6.你發現有什么簡便的方法畫出正方形嗎?
當把大的問題分解成若干小問題后,學生的積極性提高了,較容易地就完成了前面四個問題。但是,學生的感受是Scratch可以當作畫板,很有趣。因此,教師需要進一步提示。
老師提示:如果我是一只小螞蟻,剛才很容易走了60步,走出了一條直線,現在我要轉彎啦,往右轉,轉多少度就能走出一個直角呢?學生一下子就反應過來,要“右轉90度”。通過不斷嘗試,學生在“小螞蟻”的引導下,畫出了第一個正方形。
繼續提示:你們發現代碼有重復的地方嗎?學生很容易看到:move 60步;右轉90度;這兩句寫了四遍。這次,老師再告訴學生,我們可以用另外一個命令——重復命令來代替剛才的過程。我們寫了四遍,那么重復命令就應該選擇重復4次的積木。其實在計算機里,我們把重復這塊積木稱為循環。在這個例子里,循環的內容是前進60步,右轉90度,就是告訴我們循環4次后,我們的正方形就繪制成功了。
最后,老師布置課堂任務,促使學生深入思考:
1.圖中的花朵是六個正方形組成,我們接下來需要重復幾次?
2.每個正方形都是圍著一個中心點進行旋轉,那么你知道旋轉了幾度嗎?
3.你可以嘗試畫出大小不同的花朵嗎?
教學過程呈現了學生的理解過程是:認識Scratch可以畫畫→發現畫正方形有規律→Scratch中的重復積木可以使用→循環,這是一種表達操作步驟的方式。計算機編程中一些教學內容比較抽象,不容易被小學生接受和理解,所以教師在指導編程技巧時,可以通過化繁為簡的引導,將深奧的理論講得通俗易懂,讓學生既能完成“圖形的變化”的編程任務,又能對條件、判斷、循環等編程方法有正確的理解。
困難三:
關注學生編程過程,缺乏學生調試程序的教學方法
存在問題:小學生往往因缺乏調試程序的思路和方法而無從下手,調試隨意,甚至在調試過程中,為了讓程序順利運行,沒有根據原有的設計目標去合理修改自己的程序,反而讓程序無法完成原來的設計目標,甚至有的學生根據程序執行的結果,修改原有的設計目標。
解決方法:程序調試不僅是程序設計的重要環節,也是編程教學的重要環節。只要程序有一定的規模,程序編寫就不可能一次成功。對于程序設計工程而言,程序調試是為了獲得無錯的程序。對于編程教學而言,除了完整地完成程序設計工作,獲得成就感以外,程序調試還有更多的教育價值:第一,可以很好地體驗到計算機的自動化屬性;第二,可以強化設計目標的理解,也就是對計算機世界的理解;第三,可以培養縝密的邏輯思維和推理能力。在編程教學過程中,調試環節的設計是指要求學生先依據原來的方案設計,調試和完善自己的游戲程序,在這個過程中,學生需要再次把故事與最終的程序進行匹配,是一種預設與效果的比較,體驗通過自動化的程序來完成任務。
仍以《捕魚達人》為例,學生學習了when…do…語句完成自己的游戲程序的編寫后,進入調試階段。他們根據自己原來的方案設計,從場景、對象、過程、結果進行了針對性的測試。對于不能達到預期目標的現象,查找與檢測對應的when…do…語句。
在實際教學過程中,因為學生編制的是游戲程序,所以調試程序很容易變成玩游戲。事實上,玩游戲同樣具有教育價值,同伴之間相互調試程序就是一種實現方法。
同伴之間的互換調試程序行為,是希望通過測試他人的程序來拓寬自己的思路,讓同伴幫助自己完善作品。為了避免互換調試程序行為陷入單一的玩游戲,教師要給出評價標準、評價內容,以幫助學生掌握評價的重點。
在學生基本完成自己的程序調試工作以后,教師要求相鄰同學互相交換運行游戲程序,并填寫下面的學習單,把自己的感受和建議告訴你們同伴。
同學之間調試他人的作品,能夠取長補短,共同完善雙方的作品,提高學生之間的合作能力;通過發現同伴方案設計與程序設計的不同,可以關注細節,培養學生的耐心和理解力。
結語:
此次專題只是兒童編程教育的一個初步探索,也許還不夠全面,但這并不是重點,重點是希望通過兒童編程教育,讓孩子從編程開始學會思考,這就是兒童編程的最大意義。endprint