王鳴九
2006年,周以真教授系統地提出了計算思維的定義、概念和特征。從2010年5月起,計算思維開始融入大學計算機基礎課程,以培養高素質的研究型人才。而在中學信息科技課程中,各地教師也已開展了諸多實踐,除了融入原有的計算機編程課程外,廣州、深圳、重慶的很多教師以Scratch、Kodu等為載體,將計算思維的培養融入其中,以此來體現學科價值。筆者所在學校近年來也一直在開展計算思維融入初中信息技術課的實踐研究,本案例所描述的是利用Scratch載體,結合傳感器,針對計算思維的抽象、分解、算法和糾錯等核心概念開展教學實踐。
案例描述
這是七年級Scratch課程中的一個案例,學生將通過三課時的學習,利用Scratch及其外設傳感器,通過程序設計來模擬現實生活中的抓娃娃機。在第一課時,學生們已經接觸了Scratch傳感器,并學習了如何將滑桿應用到Scratch作品中。本文重點探討第二課時中關于計算思維的落實,主要體現在以下幾個教學環節。
1.抽象

首先,筆者請學生描述生活中抓娃娃機的游戲過程,學生一般會給出如下描述:通過搖動手柄來控制爪子前后左右移動,然后對準要抓的娃娃后,按下按鈕爪子就會下降,當下降到一定高度后,爪子就會合上,無論是否抓到娃娃,爪子都會回到出口處的上方。接著,結合PPT,如圖1所示,筆者依次拋出這樣四個問題,請學生思考:第一,爪子是由什么控制的?第二,手柄可以讓爪子在什么方向上移動?第三,如何讓爪子下降?第四,爪子何時會上升?
學生們稍作思考便能回答,且答案也近乎統一,即爪子是由手柄控制的,手柄可以前后左右移動,當按下按鈕時爪子會下降,當下降到一定高度時爪子會上升。

筆者拋出這四個問題目的在于引導學生通過觀察、思考,將現實生活中的對象,與計算機中處理的對象進行一一對應。如圖2所示,手柄和按鈕對應Scratch傳感器上的滑桿和按鈕;爪子和娃娃對應Scratch中的角色。
此環節就體現了計算思維中的“抽象”概念——將現實生活中的對象轉為計算機可以處理的對象,將一個現實問題轉變為計算機可以處理的問題。而采用的教學策略是層層提問,促進學生思考,引導學生去描述現象和問題。
2.分解

計算思維中分解的概念是將一個復雜的大問題分解為若干個易于解決和實現的小問題。
在這個案例中,爪子的行為最復雜,直接讓學生去編程實現是很困難的。為了幫助學生理清思路,如圖3所示,筆者將爪子的行為分解為五個步驟:左右移動、下降、合上、回到原位、松開。當學生拿到學習單后,就要去思考:在什么情況下,爪子左右移動;在什么情況下,爪子會下降;又是在什么情況下,爪子會合上……
學生通過思考和課堂交流,了解到爪子的一系列行為都是有觸發條件的,而他們的腦中對這些條件的認識也變得清晰了:當調節滑桿時,爪子可以左右移動;當按下按鈕時,爪子會開始下降;當下降到一定高度時,爪子會合上;當爪子合上后,開始上升并回到原位;當回到原位后,爪子開始松開。
在引導學生對案例進行分解時,筆者采用的教學策略是提供學習支架,以“當……時候,爪子做……”的形式設計表格,啟發學生思考,進行課堂交流,引導學生發現每一個行為都是有對應的觸發條件的,同時也為進一步提煉算法打下基礎。
3.算法

計算思維中另一個重要的概念就是算法,算法是有窮規則的集合,是用規則制定了某一特定類型問題的運算序列,或者是任務執行與問題求解的一系列步驟。而算法又有很多種描述方式,在經過抽象和分解后,學生們已經可以用自然語言去描述這個案例。但僅憑借自然語言,學生在Scratch中進行程序設計是很困難的,因為分支和循環是很難用自然語言描述清楚的,因此,借助流程圖描述算法就是筆者采取的教學策略。
以爪子的左右移動和下降這兩個行為為例,在自然語言描述的基礎上,筆者給出流程圖如圖4所示,虛線框中的條件判斷和循環結構,對應到Scratch中,就是“重復執行直到傳感器按下按鈕”。在按下按鈕之前,都是由滑桿來控制爪子的移動,而左右移動,在計算機中對應的就是爪子的x坐標發生變化,因此,可以通過設定爪子的x坐標來實現水平移動。
因為學生程序設計經驗不足,所以給出流程圖以及Scratch中對應的腳本,這樣能夠幫助學生更有效、更規范地描述算法,引導學生在Scratch中找到對應代碼塊,進行腳本編寫。同樣,判斷爪子何時合上以及判斷是否碰到娃娃,筆者給出如圖5所示的流程圖。
與爪子左右移動同理,所謂爪子下降,就是將爪子的y坐標減小,這是一個重復執行的過程,結束的條件是下降到一定高度,用y坐標小于某一個數值來實現。而當爪子合上后,需要進行一次判斷,如果碰到了娃娃,那么就進行廣播,以便“告知”娃娃在接收到這個廣播后可以執行的后續行為,如跟隨爪子。
4.糾錯

其實,當學生在Scratch中編寫腳本進行程序設計時,糾錯是始終伴隨其中的。當學生運行程序,發現與預期不同的情況發生時,糾錯的行為就開始了,他們會去尋找到底哪里出現了問題,糾錯是通過測試和調試去實現的,糾錯同樣是計算思維的概念之一。
在這個環節中,筆者采用的教學策略有兩種,一是提供傳感器使用微視頻,二是指導學生學會添加注釋。有的學生對傳感器上的滑桿和按鈕如何應用還不清楚,那么,就可以在Moodle平臺上下載微視頻教學資源并反復觀看,從而解決Scratch中傳感器的使用問題。
部分學生有些功能是實現了,但是在運行觀察中發現存在問題,而想要尋找問題出在哪里的時候,卻因為代碼塊數量的增加很難快速查找定位。對此,應指導學生學會為代碼塊添加注釋功能,根據代碼所實現的功能添加注釋(如圖6),這樣便于排錯過程中快速定位,尋找問題所在。
案例反思
1.本案例的優點及不足
本案例最顯著的優點就在于抽象和分解這兩個環節,筆者通過問題設計、層層提問、提示引導,幫助學生把一個現實生活中的問題轉變為可以用計算機處理的問題,并且將復雜的大問題分解為多個簡單的小問題,讓學生在解決問題中培養計算思維。
筆者之所以選擇“抓娃娃機”,也是出于對學生最近發展區的考慮,這個例子是學生生活中熟悉并且能夠很好理解的,所以在引導學生對案例進行抽象和分解時,學生有很高的參與度。
這節課的不足之處在于,筆者僅考慮了案例本身的難點,卻忽視了學生接觸Scratch只有半個學期,編程經驗不足這樣一個事實,因此,沒能充分預設,在編程環節沒有給予學生更多幫助。任務是明確的,學生也清楚最終成品應該是怎樣的,但在對作品進行反復運行和糾錯時就顯得很費力,沒有能夠獲得及時的輔導。
2.從計算思維角度進行教學設計的一般方法
類似的案例也有不少,如利用傳感器的滑桿制作平板接球游戲,利用傳感器的光感信號控制發射子彈制作射擊游戲等。
雖然案例的內容和實現作品的技術手段各不相同,但可以得出此類教學設計的一般方法,即選擇案例→抽象建模→分解問題→形成算法→糾錯調試。
第一步,案例的選擇要貼近學生認知,對案例的熟悉程度和理解程度是對問題抽象和分解的基礎。
第二步,幫助學生將現實生活中的對象轉換為計算機可以處理的對象,將一個現實問題轉變為一個計算機可以處理的問題,也就是抽象的過程。
第三步,分解問題,引導學生將一個大而復雜的問題分解為若干個更易實現和解決的小問題。
第四步,在分解的基礎上,針對每個小問題,形成解決問題的算法。
第五步,運行程序進行觀察和測試,對出現的異常現象進行糾錯,而糾錯的過程會反復進行。
相信各地對計算思維開展研究的教師們,在思考和實踐計算思維與信息科技課程融合中也會有很多案例,筆者由衷地希望可以相互學習和交流。