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