樓佳群
計算思維是運用計算機科學的基礎(chǔ)概念進行問題求解、系統(tǒng)設計及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。2011年ISTE聯(lián)合CSTA提出,計算思維是一個問題解決的過程,該過程包括制定問題、分析數(shù)據(jù)、抽象、設計算法、選擇最優(yōu)方案、推廣六大要素,以及自信、堅持、寬容、解決開放問題的能力和與他人交流合作的能力。從這些定義和解釋中,我們發(fā)現(xiàn)計算思維必須包含很多獨有的要素,因此,筆者根據(jù)在Scratch教學中的實踐和探究,同時結(jié)合小學生的年齡特點和發(fā)展規(guī)律,認為在小學階段計算思維應該包含以下五個基本要素:①自動化,即計算機科學的方式;②算法,即對問題的各種分析和思考;③邏輯,即各種問題引發(fā)出來的相互關(guān)系和可能性;④優(yōu)化,即對問題的解決方案進行更好的完善;⑤抽象,即利用計算機科學的方式對問題解決的方法和思路進行歸納和整理。
Scratch教學中計算思維的表現(xiàn)
Scratch是美國麻省理工學院開發(fā)的一套開源程序,專為八歲以上兒童設計,它與以往的常用Office軟件學習有所不同,Scratch的教學并不是為了培養(yǎng)出小程序員,而主要是為了讓學生在利用Scratch進行創(chuàng)作的過程中,培養(yǎng)邏輯思維能力、數(shù)字化文化創(chuàng)作能力以及解決問題的能力,并在學習的過程中充分感受樂趣。當然,這一學習和體驗的過程,也是學生計算思維得到培養(yǎng)的過程。
1.在Scratch學習中,計算思維表現(xiàn)在學習和設計的自動化上
Scratch不需要像傳統(tǒng)編程軟件那樣逐行地“敲”代碼,而是通過拖拽已經(jīng)定義好的程序模塊,采用搭積木的方式快速實現(xiàn)程序的編寫。圖形化的編程減少了識憶性的要求,將學生從死記命令及命令的使用參數(shù)中解放出來。學生學習Scratch編程的過程不再是枯燥的命令組合的集成,整個編程就像兒童在搭有趣的積木玩具,同時在Scratch的舞臺區(qū),會對學生的積木式程序自動進行演示,學生可以很直觀地看到各種腳本設計所呈現(xiàn)出來的實際效果,這種借助Scratch進行編程學習的方式就是一種自動化的計算機科學方式。
2.在Scratch學習中,計算思維表現(xiàn)在任務分析和設計的算法上
Scratch中的每一項任務,都需要學生先進行分析,而后再根據(jù)各個任務和要求思考問題解決的方式方法,最終選擇和設計出各類符合自己需求的指令算法。
案例1:機器人巡邏。任務說明:要求學生設計腳本,讓機器人完成巡邏任務,舞臺如圖1所示,巡邏軌跡如圖2所示。
學生對這項任務基本上會有兩種以上的算法思路:一是利用移動指令,讓機器人四周移動巡邏,根據(jù)任務要求,可能需要多條移動指令,才能讓機器人進行四周巡邏,腳本如下頁圖3所示;二是利用一個重復執(zhí)行指令,讓機器人在四周進行巡邏,這種算法讓機器人巡邏的腳本設計變得更為簡便易懂,而且呈現(xiàn)的效果也更加完整,如下頁圖4所示。
在這項任務設計中,學生通過不同的算法來解決機器人巡邏的問題,但通過不同學生不同方法的腳本演示,學生們肯定會發(fā)現(xiàn)算法不同會呈現(xiàn)出不同的腳本設計,效果也會不同,這樣一個問題分析、思考的過程就是計算思維中算法的體現(xiàn)。
3.在Scratch學習中,計算思維表現(xiàn)在腳本設計的邏輯思維上
在Scratch的腳本設計中,我們會根據(jù)不同角色的不同功能和呈現(xiàn)效果,選擇不同的腳本設計,腳本中各個指令的關(guān)系梳理與運用就是一種邏輯思維。
案例2:小動物過冬。任務說明:學生設計腳本,完成小動物過冬的一個情境故事設計,如圖5所示。
在這項任務中,學生就要分析每個角色的出場順序、相互關(guān)系等邏輯,如首先需要出現(xiàn)文字“小動物過冬”,并展示動態(tài)的文字效果,然后出現(xiàn)蛇,幾秒后蛇消失,最后出現(xiàn)蜜蜂,這樣的腳本設計如圖6所示。
在這個腳本設計中,學生在制作之前必須要理清楚各個角色的相互關(guān)系,在這一過程中學生計算思維中的邏輯能力肯定能得到提升。
4.在Scratch學習中,計算思維表現(xiàn)在對程序的優(yōu)化處理上
在Scratch的腳本設計過程中,我們經(jīng)常會發(fā)現(xiàn)同一個效果可以有多種途徑或方法來完成。在許多方式方法中,我們找出一種最好的或者最合理的方式,這個過程就是計算思維的優(yōu)化過程。
案例3:打怪物游戲。任務說明:怪物隨機出現(xiàn),用錘子進行打擊,打到一只怪物分數(shù)就增加一分,如圖7所示。
嘗試一:很多學生給錘子設計了如下頁圖8的腳本,發(fā)現(xiàn)這個腳本的設計復雜而且容易搞錯,并且每次角色發(fā)生一點變化,都需要重新設計整體腳本。嘗試二:有學生提出了一種更優(yōu)的腳本設計,那就是給怪獸角色設計腳本,簡單的幾條指令就可以了,每只怪物角色全部自動復制同樣的腳本,就可以達到想要的效果,如下頁圖9所示。
通過腳本優(yōu)化,我們讓程序變得更加簡潔,同時這種優(yōu)化后的腳本也更加易懂、方便、好維護修改。在這一過程中,學生對計算思維中的優(yōu)化特性有了更深刻的理解和體驗。
5.在Scratch學習中,計算思維表現(xiàn)在對學習過程和方法的歸納與整理上
學生在學習Scratch趣味編程的同時,會對學習過程中的一些學習方法和思維方式進行歸納整理,如對于角色的順序播放,我們可以采用廣播和等待指令來滿足自己的需求等。同時學生對Scratch的創(chuàng)作過程也會由不熟悉到熟悉并有一定的體驗,對于以后類似游戲化或者故事化的設計與開發(fā)就會有自己的思維方法和經(jīng)驗了,這是一種抽象的計算思維能力表現(xiàn)和培養(yǎng)過程。
Scratch教學中學生計算思維培養(yǎng)的具體策略
根據(jù)計算思維的五個基本要素,同時針對Scratch軟件的特點,筆者所在的信息組團隊在Scratch教學中嘗試構(gòu)建“分析·設計·創(chuàng)作·分享”的教學模式,以便更好地促進小學生計算思維的培養(yǎng)。
1.通過分析主題,培養(yǎng)學生計算思維的算法和邏輯能力
根據(jù)主題,幫助學生整體分析規(guī)劃這個主題作品需要哪些角色,弄清楚角色之間的相互關(guān)系,接著局部分析每個角色的造型、腳本、狀態(tài),還可以再細致到每句指令、參數(shù)、先后執(zhí)行順序的分析與搭建,由表及里、由淺入深、由易到難地分析事物和問題,最后能夠規(guī)劃出需要解決哪些子任務,這也是促進學生計算思維中的算法和邏輯能力的培養(yǎng)。
案例4:大魚吃小魚。任務說明:在深海中,鯊魚、章魚、蝦米們在海里自由地游動,但鯊魚碰到章魚或者蝦米時就會吃掉它們。如圖10所示,在設計之前讓學生看范例然后填寫“大魚吃小魚”分析表(見上表),啟發(fā)學生思考需要解決哪些問題。
學生在分析表中很好地分析出角色要實現(xiàn)的效果,并為其提供了簡單的指令依據(jù),這為后期的腳本設計提供了方向和思路。
案例5:猜數(shù)字。游戲說明:設計一個猜數(shù)字的游戲。例如,玩家單擊0到9間的任何一個數(shù)字,小貓會提示你的數(shù)字是“大了”還是“小了”,直到你完全猜對為止,如圖11所示。
學生分析:電腦產(chǎn)生的隨機數(shù)和人單擊的猜測數(shù)要進行比較,因此這兩類數(shù)可以用變量表示。例如,小貓設定一個值為a,鼠標按下的值為一個變量b。如果按下0,這時這個角色的值為b=0,以此類推,如果按下9,則b=9,a與b進行比較,如果ab,則提示小了,如果X=Y,則提示答對了。
上面兩個案例都需要學生能理清楚每個角色的相互關(guān)系,以及每個角色腳本的算法和邏輯能力,而這些對于學生的邏輯思維能力和算法應用能力的培養(yǎng)是非常有效的,讓學生在思考實踐中促進了計算思維能力的培養(yǎng)。
2.通過設計腳本,提高學生計算思維的優(yōu)化能力
學生有了具體的解決思路后,就會有針對性地去設計每個角色具體的腳本,能夠根據(jù)角色效果找有用的指令,修改指令的各種參數(shù)和先后順序,不斷地調(diào)試并最終設計出每個角色的腳本程序,實現(xiàn)角色效果。
案例6:小章魚游動。任務說明:設計小章魚游動的動畫。
圖13中的小章魚游動的腳本明顯比圖12中的小章魚游動的腳本更優(yōu),因為無論是從指令的數(shù)量上,還是執(zhí)行效率和效果呈現(xiàn)方面,圖13的腳本都比圖12的腳本設計更合理,學生如果能對自己的腳本多次設計并使之達到優(yōu)化,這就是一種計算思維中優(yōu)化能力的培養(yǎng)。
3.通過創(chuàng)作和分享,培養(yǎng)學生計算思維抽象的歸納整理能力
通過對各類問題和情境的創(chuàng)作分享,學生對于類似的問題有了自己的經(jīng)驗和想法,如圖14所示,對于魚的游動,學生會有很多不同的想法和設計,同時還能根據(jù)已有的知識經(jīng)驗創(chuàng)造出更多有個性化的有創(chuàng)意的作品,這也是學生在Scratch學習過程中最大的收獲。
結(jié)語
從這些案例中,我們不難發(fā)現(xiàn),學生的創(chuàng)作和想象遠遠超出了教師的預期,學生在自己的作品中都能加入自己的想法和創(chuàng)意。例如,第五個案例“猜數(shù)字”,教師和學生在學習的時候只是學習了數(shù)字的大小對比指令,然后設計腳本進行結(jié)果反饋。但在學生的創(chuàng)作作品中,他們加入了很多互動效果,每次可以讓玩家輸入任意一個數(shù)字,然后將程序進行對比和反饋。同時,每一次游戲開始,系統(tǒng)默認的標準答案都是隨機的,這就大大增加了“猜數(shù)字”游戲的真實性和娛樂性,這是學生對所學知識進行歸納、整理、內(nèi)化并能進一步創(chuàng)造的表現(xiàn)。
在“分析·設計·創(chuàng)作·分享”教學模式的構(gòu)建和應用實施過程中,每一個環(huán)節(jié)都滲透著計算思維的一個要素或者多個要素,學生在這個過程中不僅提高了編程能力和信息素養(yǎng),同時也培養(yǎng)了計算思維能力。
通過一個學期的Scratch教學實踐,筆者發(fā)現(xiàn)學生學習Scratch對于計算思維能力的培養(yǎng)有顯著的促進作用。從學生提交的學生作品中,筆者也可以發(fā)現(xiàn),學生的創(chuàng)新能力、邏輯思維能力、程序優(yōu)化能力等均有了顯著的提高。當然,學生計算思維的培養(yǎng)是一項需要長期堅持的工作,需要教師們相互配合,才能更好地促進學生計算思維能力的提升。