樓佳群
計算思維是運用計算機科學的基礎概念進行問題求解、系統設計及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。2011年ISTE聯合CSTA提出,計算思維是一個問題解決的過程,該過程包括制定問題、分析數據、抽象、設計算法、選擇最優方案、推廣六大要素,以及自信、堅持、寬容、解決開放問題的能力和與他人交流合作的能力。從這些定義和解釋中,我們發現計算思維必須包含很多獨有的要素,因此,筆者根據在Scratch教學中的實踐和探究,同時結合小學生的年齡特點和發展規律,認為在小學階段計算思維應該包含以下五個基本要素:①自動化,即計算機科學的方式;②算法,即對問題的各種分析和思考;③邏輯,即各種問題引發出來的相互關系和可能性;④優化,即對問題的解決方案進行更好的完善;⑤抽象,即利用計算機科學的方式對問題解決的方法和思路進行歸納和整理。
Scratch教學中計算思維的表現
Scratch是美國麻省理工學院開發的一套開源程序,專為八歲以上兒童設計,它與以往的常用Office軟件學習有所不同,Scratch的教學并不是為了培養出小程序員,而主要是為了讓學生在利用Scratch進行創作的過程中,培養邏輯思維能力、數字化文化創作能力以及解決問題的能力,并在學習的過程中充分感受樂趣。當然,這一學習和體驗的過程,也是學生計算思維得到培養的過程。
1.在Scratch學習中,計算思維表現在學習和設計的自動化上
Scratch不需要像傳統編程軟件那樣逐行地“敲”代碼,而是通過拖拽已經定義好的程序模塊,采用搭積木的方式快速實現程序的編寫。圖形化的編程減少了識憶性的要求,將學生從死記命令及命令的使用參數中解放出來。學生學習Scratch編程的過程不再是枯燥的命令組合的集成,整個編程就像兒童在搭有趣的積木玩具,同時在Scratch的舞臺區,會對學生的積木式程序自動進行演示,學生可以很直觀地看到各種腳本設計所呈現出來的實際效果,這種借助Scratch進行編程學習的方式就是一種自動化的計算機科學方式。
2.在Scratch學習中,計算思維表現在任務分析和設計的算法上

Scratch中的每一項任務,都需要學生先進行分析,而后再根據各個任務和要求思考問題解決的方式方法,最終選擇和設計出各類符合自己需求的指令算法。
案例1:機器人巡邏。任務說明:要求學生設計腳本,讓機器人完成巡邏任務,舞臺如圖1所示,巡邏軌跡如圖2所示。
學生對這項任務基本上會有兩種以上的算法思路:一是利用移動指令,讓機器人四周移動巡邏,根據任務要求,可能需要多條移動指令,才能讓機器人進行四周巡邏,腳本如下頁圖3所示;二是利用一個重復執行指令,讓機器人在四周進行巡邏,這種算法讓機器人巡邏的腳本設計變得更為簡便易懂,而且呈現的效果也更加完整,如下頁圖4所示。

在這項任務設計中,學生通過不同的算法來解決機器人巡邏的問題,但通過不同學生不同方法的腳本演示,學生們肯定會發現算法不同會呈現出不同的腳本設計,效果也會不同,這樣一個問題分析、思考的過程就是計算思維中算法的體現。
3.在Scratch學習中,計算思維表現在腳本設計的邏輯思維上
在Scratch的腳本設計中,我們會根據不同角色的不同功能和呈現效果,選擇不同的腳本設計,腳本中各個指令的關系梳理與運用就是一種邏輯思維。
案例2:小動物過冬。任務說明:學生設計腳本,完成小動物過冬的一個情境故事設計,如圖5所示。
在這項任務中,學生就要分析每個角色的出場順序、相互關系等邏輯,如首先需要出現文字“小動物過冬”,并展示動態的文字效果,然后出現蛇,幾秒后蛇消失,最后出現蜜蜂,這樣的腳本設計如圖6所示。
在這個腳本設計中,學生在制作之前必須要理清楚各個角色的相互關系,在這一過程中學生計算思維中的邏輯能力肯定能得到提升。
4.在Scratch學習中,計算思維表現在對程序的優化處理上

在Scratch的腳本設計過程中,我們經常會發現同一個效果可以有多種途徑或方法來完成。在許多方式方法中,我們找出一種最好的或者最合理的方式,這個過程就是計算思維的優化過程。
案例3:打怪物游戲。任務說明:怪物隨機出現,用錘子進行打擊,打到一只怪物分數就增加一分,如圖7所示。
嘗試一:很多學生給錘子設計了如下頁圖8的腳本,發現這個腳本的設計復雜而且容易搞錯,并且每次角色發生一點變化,都需要重新設計整體腳本。嘗試二:有學生提出了一種更優的腳本設計,那就是給怪獸角色設計腳本,簡單的幾條指令就可以了,每只怪物角色全部自動復制同樣的腳本,就可以達到想要的效果,如下頁圖9所示。
通過腳本優化,我們讓程序變得更加簡潔,同時這種優化后的腳本也更加易懂、方便、好維護修改。在這一過程中,學生對計算思維中的優化特性有了更深刻的理解和體驗。

5.在Scratch學習中,計算思維表現在對學習過程和方法的歸納與整理上
學生在學習Scratch趣味編程的同時,會對學習過程中的一些學習方法和思維方式進行歸納整理,如對于角色的順序播放,我們可以采用廣播和等待指令來滿足自己的需求等。同時學生對Scratch的創作過程也會由不熟悉到熟悉并有一定的體驗,對于以后類似游戲化或者故事化的設計與開發就會有自己的思維方法和經驗了,這是一種抽象的計算思維能力表現和培養過程。
Scratch教學中學生計算思維培養的具體策略
根據計算思維的五個基本要素,同時針對Scratch軟件的特點,筆者所在的信息組團隊在Scratch教學中嘗試構建“分析·設計·創作·分享”的教學模式,以便更好地促進小學生計算思維的培養。
1.通過分析主題,培養學生計算思維的算法和邏輯能力
根據主題,幫助學生整體分析規劃這個主題作品需要哪些角色,弄清楚角色之間的相互關系,接著局部分析每個角色的造型、腳本、狀態,還可以再細致到每句指令、參數、先后執行順序的分析與搭建,由表及里、由淺入深、由易到難地分析事物和問題,最后能夠規劃出需要解決哪些子任務,這也是促進學生計算思維中的算法和邏輯能力的培養。
案例4:大魚吃小魚。任務說明:在深海中,鯊魚、章魚、蝦米們在海里自由地游動,但鯊魚碰到章魚或者蝦米時就會吃掉它們。如圖10所示,在設計之前讓學生看范例然后填寫“大魚吃小魚”分析表(見上表),啟發學生思考需要解決哪些問題。
學生在分析表中很好地分析出角色要實現的效果,并為其提供了簡單的指令依據,這為后期的腳本設計提供了方向和思路。
案例5:猜數字。游戲說明:設計一個猜數字的游戲。例如,玩家單擊0到9間的任何一個數字,小貓會提示你的數字是“大了”還是“小了”,直到你完全猜對為止,如圖11所示。
學生分析:電腦產生的隨機數和人單擊的猜測數要進行比較,因此這兩類數可以用變量表示。例如,小貓設定一個值為a,鼠標按下的值為一個變量b。如果按下0,這時這個角色的值為b=0,以此類推,如果按下9,則b=9,a與b進行比較,如果ab,則提示小了,如果X=Y,則提示答對了。
上面兩個案例都需要學生能理清楚每個角色的相互關系,以及每個角色腳本的算法和邏輯能力,而這些對于學生的邏輯思維能力和算法應用能力的培養是非常有效的,讓學生在思考實踐中促進了計算思維能力的培養。
2.通過設計腳本,提高學生計算思維的優化能力
學生有了具體的解決思路后,就會有針對性地去設計每個角色具體的腳本,能夠根據角色效果找有用的指令,修改指令的各種參數和先后順序,不斷地調試并最終設計出每個角色的腳本程序,實現角色效果。
案例6:小章魚游動。任務說明:設計小章魚游動的動畫。
圖13中的小章魚游動的腳本明顯比圖12中的小章魚游動的腳本更優,因為無論是從指令的數量上,還是執行效率和效果呈現方面,圖13的腳本都比圖12的腳本設計更合理,學生如果能對自己的腳本多次設計并使之達到優化,這就是一種計算思維中優化能力的培養。
3.通過創作和分享,培養學生計算思維抽象的歸納整理能力
通過對各類問題和情境的創作分享,學生對于類似的問題有了自己的經驗和想法,如圖14所示,對于魚的游動,學生會有很多不同的想法和設計,同時還能根據已有的知識經驗創造出更多有個性化的有創意的作品,這也是學生在Scratch學習過程中最大的收獲。
結語
從這些案例中,我們不難發現,學生的創作和想象遠遠超出了教師的預期,學生在自己的作品中都能加入自己的想法和創意。例如,第五個案例“猜數字”,教師和學生在學習的時候只是學習了數字的大小對比指令,然后設計腳本進行結果反饋。但在學生的創作作品中,他們加入了很多互動效果,每次可以讓玩家輸入任意一個數字,然后將程序進行對比和反饋。同時,每一次游戲開始,系統默認的標準答案都是隨機的,這就大大增加了“猜數字”游戲的真實性和娛樂性,這是學生對所學知識進行歸納、整理、內化并能進一步創造的表現。
在“分析·設計·創作·分享”教學模式的構建和應用實施過程中,每一個環節都滲透著計算思維的一個要素或者多個要素,學生在這個過程中不僅提高了編程能力和信息素養,同時也培養了計算思維能力。
通過一個學期的Scratch教學實踐,筆者發現學生學習Scratch對于計算思維能力的培養有顯著的促進作用。從學生提交的學生作品中,筆者也可以發現,學生的創新能力、邏輯思維能力、程序優化能力等均有了顯著的提高。當然,學生計算思維的培養是一項需要長期堅持的工作,需要教師們相互配合,才能更好地促進學生計算思維能力的提升。