秦琦
Scratch程序設(shè)計語言是由麻省理工學(xué)院媒體實驗室團隊設(shè)計并制作的。構(gòu)成程序的命令和參數(shù)通過模塊中積木式的控件來實現(xiàn),拖動控件并按序拼接就可實現(xiàn)編程。思考怎樣來輕松編寫屬于自己的互動媒體,怎樣能讓最終效果和相關(guān)控件進行對接并銜接,就需要對作品進行翔實解剖和分析,提煉有效的關(guān)鍵詞,梳理關(guān)鍵詞邏輯關(guān)系,關(guān)聯(lián)關(guān)鍵詞與對應(yīng)的控件,漸近式構(gòu)建出作品模型,通過對關(guān)鍵詞解讀實現(xiàn)與控件的對接,轉(zhuǎn)變成程序化的語言,真正實現(xiàn)無縫連接。在程序設(shè)計教學(xué)過程中,應(yīng)該重視分析問題和解決問題的思維過程和方法,逐漸培養(yǎng)學(xué)生的計算思維能力。下面以《打地鼠》游戲作品為例,談?wù)勛约旱膶嵺`與思考。
【教學(xué)片段一】
學(xué)生體驗《打地鼠》游戲。
師:我們先來看榔頭的基本動作,誰來用語言描述下?
生:榔頭在移動,而且是鼠標動的時候,榔頭跟著移動。
師:這位同學(xué)說得非常準確,說明他觀察得非常仔細。
師:我們在分析時,可以找找其中的關(guān)鍵詞。
任務(wù):“榔頭”中包含的信息有哪些?關(guān)鍵詞是什么?它們之間是怎樣的關(guān)系?
師:能用語言描述下一只地鼠的基本動作呢?
生:游戲開始后,沒有看見地鼠,過了一會兒,地鼠冒出來,過一會兒,又消失了。
師:這位同學(xué)表述得非常詳細了。我們再來找一找這句話里的關(guān)鍵詞。
任務(wù):“地鼠”中包含的信息有哪些?關(guān)鍵詞是什么?它們之間是怎樣的關(guān)系?
生:隱藏—等一會—出現(xiàn)—等一會—隱藏……
師:這樣的過程重復(fù),我們能用箭頭簡單的表述出來嗎?
師生合作畫出地鼠關(guān)系結(jié)構(gòu)圖。
【思考】
在本環(huán)節(jié)教學(xué)中,教師注重學(xué)生主動的參與,讓學(xué)生在實踐操作和思維碰撞中分析作品中的每個角色及動作,教師要特別關(guān)注學(xué)生對過程的語言描述,強調(diào)對其中關(guān)鍵詞的提煉,從而潛移默化地使學(xué)生初步掌握通過關(guān)鍵詞構(gòu)建模型的方法,從而滲透學(xué)生計算思維意識。
化整為零,提煉關(guān)鍵詞,形成建模意識。程序語言的腳本追求的是精煉、簡潔明了。而剛才學(xué)生的描述是片段式的,屬于感性、通俗易懂的描述性語言。如何巧妙地從語言中獲取精髓即核心信息,這就需要學(xué)生學(xué)會關(guān)鍵詞的提煉。關(guān)鍵詞關(guān)系能一清二楚地展現(xiàn),完成從具體描述語言到程序語言的過渡,讓看似雜亂無章的編程有規(guī)律可循,也就是隱射了建模思想。比如在描述榔頭動作時,學(xué)生自主得出,榔頭的移動和鼠標動作一致,自然而然,榔頭和鼠標之間的結(jié)構(gòu)圖就建立起來了,也為之后關(guān)鍵詞向控件的轉(zhuǎn)換做了鋪墊。
【教學(xué)片段二】
師:同學(xué)們仔細觀察下,我們找到的關(guān)鍵詞在控件區(qū)能否找到對應(yīng)的控件?
師:剛才我們畫的榔頭關(guān)系圖,你能發(fā)現(xiàn)榔頭和誰的動作一致?
生:榔頭和鼠標動作一致。
師:那我們可以用哪個控件?
生:鼠標指針。
師:接下來,看地鼠的關(guān)系圖,你能根據(jù)關(guān)鍵詞在控件區(qū)找到相應(yīng)控件嗎?
生:“隱藏”可以在控件區(qū)找到,“出現(xiàn)”可以用“顯示”控件,“等一會”可以用“等待”控件。
師:等待多久?剛才有同學(xué)說,地鼠是時不時冒出來的,也就是沒有規(guī)定時間。那我們可以運用一個怎樣的詞來表達?
生1:隨機的。
師:隨機數(shù),誰能準確地說說它的含義?
生2:隨便哪個數(shù)字都可以。
師:結(jié)合游戲情形,等待的時間在多少范圍內(nèi)比較合適?為什么?
生3:可以等待1 ~ 6秒。如果等待時間超過6秒,地鼠隱藏和顯示的動作就太慢了。
師:如果等待時間在1 ~ 10秒呢?
生4:因為是隨機數(shù),可能會碰到每個地鼠都要等待10秒,那地鼠的動作就太慢了。
師:大家找找,哪個控件類似于隨機數(shù)的要求?
生:“數(shù)詞和邏輯運算”控件里面“在1到10間隨機選一個數(shù)”。
【思考】
在本環(huán)節(jié)中,教師用榔頭和地鼠的關(guān)系結(jié)構(gòu)圖,引導(dǎo)學(xué)生把關(guān)鍵詞與控件區(qū)的控件產(chǎn)生聯(lián)系,進行控件的對接。比如在描述榔頭動作時,學(xué)生自主得出:榔頭和鼠標動作一致,即榔頭隨鼠標移動。而如此精準的關(guān)鍵詞可以及時轉(zhuǎn)變?yōu)槟_本語言,一目了然,學(xué)生瞬間感受到Scratch程序設(shè)計的易懂性。
在地鼠關(guān)鍵詞向控件的轉(zhuǎn)化中,學(xué)生通過實踐操作,發(fā)現(xiàn)問題,并通過自主探究來解決問題。比如,控件中的隨機數(shù)是一個難點。學(xué)生的疑問出現(xiàn)了:有等待1秒,有等待2秒。有的直接來反問老師,具體要等待多久。通過多種可能性,教師自然而然地引出了隨機數(shù)這個概念,繼而讓學(xué)生自己感受下隨機數(shù)含義,最后聯(lián)系實際游戲的需求,鼓勵學(xué)生自己來說一說運用怎樣的隨機數(shù)比較合適。學(xué)生都積極參與,并且在自主探索和思辨中完成學(xué)習(xí),理解了數(shù)字和邏輯中隨機數(shù)的概念。
通過這樣的處理,在腳本編寫中,教師并沒有一開始就拖動控件形成腳本,而是充分讓學(xué)生從感性的現(xiàn)象描述上升到理性的理解和思考,特別是關(guān)鍵詞的提煉、角色結(jié)構(gòu)圖的呈現(xiàn),讓每位學(xué)生都有一個初步建模的意識。
【教學(xué)片段三】
師:地鼠和榔頭之間有沒有交互動作呢?以地鼠為例。
生1:榔頭碰到地鼠,地鼠被榔頭打到。
師:那我們也來找找這個交互動作里面的關(guān)鍵詞。
生2:碰到榔頭,按下鼠標。
師:除了要碰到榔頭,打到地鼠,還要滿足什么條件?
生:鼠標按下。
師:是的,地鼠和榔頭的交互動作,這兩個關(guān)鍵詞都要滿足,不但要碰到榔頭還要按下鼠標。
師:接下來,把地鼠被打到這一過程中的關(guān)鍵詞都找出來。
師生共同羅列關(guān)鍵詞:碰到榔頭并且按下鼠標,得分加1,最后消失。
師:這組交互動作,該怎樣把關(guān)鍵詞關(guān)聯(lián)起來?
任務(wù):畫一畫關(guān)鍵詞的流程圖。要求:涉及判斷用◇框表示,涉及計分用□框表示,涉及先后順序用帶箭頭的線段→表示。
【思考】
在本環(huán)節(jié)教學(xué)中,主要解決榔頭和地鼠互動腳本的問題,學(xué)生不單單要提煉關(guān)鍵詞,還要把兩個角色進行關(guān)聯(lián),為把關(guān)鍵詞之間的關(guān)系搞清楚,化零為整,關(guān)聯(lián)關(guān)鍵詞,在教學(xué)中引入了流程圖概念。
如果說上一片段中關(guān)鍵詞是讓學(xué)生了解怎樣來建立模型,那么這里的關(guān)鍵詞是對程序的又一個深入理解。首先教師讓學(xué)生用關(guān)鍵詞關(guān)聯(lián)角色之間的互動,在此過程中,提煉的關(guān)鍵詞讓兩個角色之間產(chǎn)生了關(guān)系,學(xué)生基本都會提取關(guān)鍵詞“碰到榔頭”,教師引導(dǎo)學(xué)生了解滿足這個條件還不夠,在“碰到榔頭”的同時,還要“鼠標按下”,要兩個條件同時滿足,才能成功加分。學(xué)生在這一分析過程中,能感受到程序設(shè)計的嚴謹性,也就是滲透了計算思維的培養(yǎng)。
小學(xué)階段,學(xué)生對流程圖不是很熟悉,課堂中師生應(yīng)共同分析,補充、完善流程圖。在這一過程中,遵循一個主旨:用關(guān)鍵詞來讓流程圖成立。將關(guān)鍵詞在流程圖中進行布局,理清角色之間的關(guān)系,使學(xué)生真正理解編程的思路,真正掌握編程的方法,強化計算思維。
Scratch語言程序設(shè)計的教學(xué),注重的并不是結(jié)果,而是學(xué)生的思維過程和思維方式。在教學(xué)中,應(yīng)該努力引導(dǎo)學(xué)生學(xué)會分析作品的手段和方法,讓學(xué)生嘗試獨立自主建立模型,培養(yǎng)學(xué)生的探索精神和創(chuàng)新意識,把計算思維的培養(yǎng)真正做到實處。
(作者單位:無錫市洛社中心小學(xué))