王鳴九
2006年,周以真教授系統(tǒng)地提出了計算思維的定義、概念和特征。從2010年5月起,計算思維開始融入大學(xué)計算機基礎(chǔ)課程,以培養(yǎng)高素質(zhì)的研究型人才。而在中學(xué)信息科技課程中,各地教師也已開展了諸多實踐,除了融入原有的計算機編程課程外,廣州、深圳、重慶的很多教師以Scratch、Kodu等為載體,將計算思維的培養(yǎng)融入其中,以此來體現(xiàn)學(xué)科價值。筆者所在學(xué)校近年來也一直在開展計算思維融入初中信息技術(shù)課的實踐研究,本案例所描述的是利用Scratch載體,結(jié)合傳感器,針對計算思維的抽象、分解、算法和糾錯等核心概念開展教學(xué)實踐。
案例描述
這是七年級Scratch課程中的一個案例,學(xué)生將通過三課時的學(xué)習,利用Scratch及其外設(shè)傳感器,通過程序設(shè)計來模擬現(xiàn)實生活中的抓娃娃機。在第一課時,學(xué)生們已經(jīng)接觸了Scratch傳感器,并學(xué)習了如何將滑桿應(yīng)用到Scratch作品中。本文重點探討第二課時中關(guān)于計算思維的落實,主要體現(xiàn)在以下幾個教學(xué)環(huán)節(jié)。
1.抽象
首先,筆者請學(xué)生描述生活中抓娃娃機的游戲過程,學(xué)生一般會給出如下描述:通過搖動手柄來控制爪子前后左右移動,然后對準要抓的娃娃后,按下按鈕爪子就會下降,當下降到一定高度后,爪子就會合上,無論是否抓到娃娃,爪子都會回到出口處的上方。接著,結(jié)合PPT,如圖1所示,筆者依次拋出這樣四個問題,請學(xué)生思考:第一,爪子是由什么控制的?第二,手柄可以讓爪子在什么方向上移動?第三,如何讓爪子下降?第四,爪子何時會上升?
學(xué)生們稍作思考便能回答,且答案也近乎統(tǒng)一,即爪子是由手柄控制的,手柄可以前后左右移動,當按下按鈕時爪子會下降,當下降到一定高度時爪子會上升。
筆者拋出這四個問題目的在于引導(dǎo)學(xué)生通過觀察、思考,將現(xiàn)實生活中的對象,與計算機中處理的對象進行一一對應(yīng)。如圖2所示,手柄和按鈕對應(yīng)Scratch傳感器上的滑桿和按鈕;爪子和娃娃對應(yīng)Scratch中的角色。
此環(huán)節(jié)就體現(xiàn)了計算思維中的“抽象”概念——將現(xiàn)實生活中的對象轉(zhuǎn)為計算機可以處理的對象,將一個現(xiàn)實問題轉(zhuǎn)變?yōu)橛嬎銠C可以處理的問題。而采用的教學(xué)策略是層層提問,促進學(xué)生思考,引導(dǎo)學(xué)生去描述現(xiàn)象和問題。
2.分解
計算思維中分解的概念是將一個復(fù)雜的大問題分解為若干個易于解決和實現(xiàn)的小問題。
在這個案例中,爪子的行為最復(fù)雜,直接讓學(xué)生去編程實現(xiàn)是很困難的。為了幫助學(xué)生理清思路,如圖3所示,筆者將爪子的行為分解為五個步驟:左右移動、下降、合上、回到原位、松開。當學(xué)生拿到學(xué)習單后,就要去思考:在什么情況下,爪子左右移動;在什么情況下,爪子會下降;又是在什么情況下,爪子會合上……
學(xué)生通過思考和課堂交流,了解到爪子的一系列行為都是有觸發(fā)條件的,而他們的腦中對這些條件的認識也變得清晰了:當調(diào)節(jié)滑桿時,爪子可以左右移動;當按下按鈕時,爪子會開始下降;當下降到一定高度時,爪子會合上;當爪子合上后,開始上升并回到原位;當回到原位后,爪子開始松開。
在引導(dǎo)學(xué)生對案例進行分解時,筆者采用的教學(xué)策略是提供學(xué)習支架,以“當……時候,爪子做……”的形式設(shè)計表格,啟發(fā)學(xué)生思考,進行課堂交流,引導(dǎo)學(xué)生發(fā)現(xiàn)每一個行為都是有對應(yīng)的觸發(fā)條件的,同時也為進一步提煉算法打下基礎(chǔ)。
3.算法
計算思維中另一個重要的概念就是算法,算法是有窮規(guī)則的集合,是用規(guī)則制定了某一特定類型問題的運算序列,或者是任務(wù)執(zhí)行與問題求解的一系列步驟。而算法又有很多種描述方式,在經(jīng)過抽象和分解后,學(xué)生們已經(jīng)可以用自然語言去描述這個案例。但僅憑借自然語言,學(xué)生在Scratch中進行程序設(shè)計是很困難的,因為分支和循環(huán)是很難用自然語言描述清楚的,因此,借助流程圖描述算法就是筆者采取的教學(xué)策略。
以爪子的左右移動和下降這兩個行為為例,在自然語言描述的基礎(chǔ)上,筆者給出流程圖如圖4所示,虛線框中的條件判斷和循環(huán)結(jié)構(gòu),對應(yīng)到Scratch中,就是“重復(fù)執(zhí)行直到傳感器按下按鈕”。在按下按鈕之前,都是由滑桿來控制爪子的移動,而左右移動,在計算機中對應(yīng)的就是爪子的x坐標發(fā)生變化,因此,可以通過設(shè)定爪子的x坐標來實現(xiàn)水平移動。
因為學(xué)生程序設(shè)計經(jīng)驗不足,所以給出流程圖以及Scratch中對應(yīng)的腳本,這樣能夠幫助學(xué)生更有效、更規(guī)范地描述算法,引導(dǎo)學(xué)生在Scratch中找到對應(yīng)代碼塊,進行腳本編寫。同樣,判斷爪子何時合上以及判斷是否碰到娃娃,筆者給出如圖5所示的流程圖。
與爪子左右移動同理,所謂爪子下降,就是將爪子的y坐標減小,這是一個重復(fù)執(zhí)行的過程,結(jié)束的條件是下降到一定高度,用y坐標小于某一個數(shù)值來實現(xiàn)。而當爪子合上后,需要進行一次判斷,如果碰到了娃娃,那么就進行廣播,以便“告知”娃娃在接收到這個廣播后可以執(zhí)行的后續(xù)行為,如跟隨爪子。
4.糾錯
其實,當學(xué)生在Scratch中編寫腳本進行程序設(shè)計時,糾錯是始終伴隨其中的。當學(xué)生運行程序,發(fā)現(xiàn)與預(yù)期不同的情況發(fā)生時,糾錯的行為就開始了,他們會去尋找到底哪里出現(xiàn)了問題,糾錯是通過測試和調(diào)試去實現(xiàn)的,糾錯同樣是計算思維的概念之一。
在這個環(huán)節(jié)中,筆者采用的教學(xué)策略有兩種,一是提供傳感器使用微視頻,二是指導(dǎo)學(xué)生學(xué)會添加注釋。有的學(xué)生對傳感器上的滑桿和按鈕如何應(yīng)用還不清楚,那么,就可以在Moodle平臺上下載微視頻教學(xué)資源并反復(fù)觀看,從而解決Scratch中傳感器的使用問題。
部分學(xué)生有些功能是實現(xiàn)了,但是在運行觀察中發(fā)現(xiàn)存在問題,而想要尋找問題出在哪里的時候,卻因為代碼塊數(shù)量的增加很難快速查找定位。對此,應(yīng)指導(dǎo)學(xué)生學(xué)會為代碼塊添加注釋功能,根據(jù)代碼所實現(xiàn)的功能添加注釋(如圖6),這樣便于排錯過程中快速定位,尋找問題所在。
案例反思
1.本案例的優(yōu)點及不足
本案例最顯著的優(yōu)點就在于抽象和分解這兩個環(huán)節(jié),筆者通過問題設(shè)計、層層提問、提示引導(dǎo),幫助學(xué)生把一個現(xiàn)實生活中的問題轉(zhuǎn)變?yōu)榭梢杂糜嬎銠C處理的問題,并且將復(fù)雜的大問題分解為多個簡單的小問題,讓學(xué)生在解決問題中培養(yǎng)計算思維。
筆者之所以選擇“抓娃娃機”,也是出于對學(xué)生最近發(fā)展區(qū)的考慮,這個例子是學(xué)生生活中熟悉并且能夠很好理解的,所以在引導(dǎo)學(xué)生對案例進行抽象和分解時,學(xué)生有很高的參與度。
這節(jié)課的不足之處在于,筆者僅考慮了案例本身的難點,卻忽視了學(xué)生接觸Scratch只有半個學(xué)期,編程經(jīng)驗不足這樣一個事實,因此,沒能充分預(yù)設(shè),在編程環(huán)節(jié)沒有給予學(xué)生更多幫助。任務(wù)是明確的,學(xué)生也清楚最終成品應(yīng)該是怎樣的,但在對作品進行反復(fù)運行和糾錯時就顯得很費力,沒有能夠獲得及時的輔導(dǎo)。
2.從計算思維角度進行教學(xué)設(shè)計的一般方法
類似的案例也有不少,如利用傳感器的滑桿制作平板接球游戲,利用傳感器的光感信號控制發(fā)射子彈制作射擊游戲等。
雖然案例的內(nèi)容和實現(xiàn)作品的技術(shù)手段各不相同,但可以得出此類教學(xué)設(shè)計的一般方法,即選擇案例→抽象建?!纸鈫栴}→形成算法→糾錯調(diào)試。
第一步,案例的選擇要貼近學(xué)生認知,對案例的熟悉程度和理解程度是對問題抽象和分解的基礎(chǔ)。
第二步,幫助學(xué)生將現(xiàn)實生活中的對象轉(zhuǎn)換為計算機可以處理的對象,將一個現(xiàn)實問題轉(zhuǎn)變?yōu)橐粋€計算機可以處理的問題,也就是抽象的過程。
第三步,分解問題,引導(dǎo)學(xué)生將一個大而復(fù)雜的問題分解為若干個更易實現(xiàn)和解決的小問題。
第四步,在分解的基礎(chǔ)上,針對每個小問題,形成解決問題的算法。
第五步,運行程序進行觀察和測試,對出現(xiàn)的異?,F(xiàn)象進行糾錯,而糾錯的過程會反復(fù)進行。
相信各地對計算思維開展研究的教師們,在思考和實踐計算思維與信息科技課程融合中也會有很多案例,筆者由衷地希望可以相互學(xué)習和交流。