王翠芝 劉君亮
愛玩是孩子的天性,兒童早期的學習是在玩中進行的,游戲對兒童有強大的魔力。既然學生對玩游戲那么癡迷,如果讓學生成為游戲的設計者和創(chuàng)作者,情況會如何呢?華南師范大學附屬小學的王繼華老師在任教的五六年級的信息技術課程中進行了嘗試,以一個個游戲的創(chuàng)作為主線開展兒童數字文化創(chuàng)作,在創(chuàng)作游戲的過程中掌握課堂內容,并且領會創(chuàng)作的思想,其中在五年級王老師利用美國麻省理工學院開發(fā)的Scratch兒童可視化編程軟件來教學生學習基本的程序設計知識,學生的學習效果很好。筆者通過觀察王老師的課堂,更加體會到王老師為創(chuàng)作而教的思想。下面以《猜數字》游戲創(chuàng)作為例來進行課堂評述,以期為讀者提供參考案例。
王老師在五年級的信息技術課程序設計教學部分使用Scratch軟件作為創(chuàng)作的工具平臺,在教學實踐過程中提出了“為創(chuàng)作而教”的教學模型,該模型包含“提出創(chuàng)作主題→范例研習→模仿設計→自由創(chuàng)作→分享交流”五個階段,并且引導學生創(chuàng)作了很多的游戲作品?!恫聰底帧酚螒蚴峭趵蠋煘榻淌诔绦蛟O計中的變量、條件判斷及循環(huán)語句內容時而設計的小游戲,課堂上通過引導學生編寫此游戲從而達到對知識內容的掌握,并且領會創(chuàng)作的思想。該主題的教學包含了“為創(chuàng)作而教”教學模型的五個階段,本文只是對第一節(jié)課的評述,主要涉及前三個階段。
● 第一階段:提出創(chuàng)作主題
本節(jié)課的教學內容是程序設計的變量、條件判斷和循環(huán)語句。由于沒有相應的教材,而Scratch軟件本身帶有一些例子,王老師根據自帶例子針對自己的教學內容重新進行了設計,把授課的內容融入到游戲的創(chuàng)作過程中,設計了新的游戲《猜數字》。課堂伊始王老師和學生進行互動,一起玩《猜數字》游戲,游戲界面如圖1所示,學生的積極性很高。然后王老師詢問學生想不想創(chuàng)作出這樣的游戲呢?怎么樣創(chuàng)作出比這個游戲更好玩的游戲呢?這時學生都很興奮,想象并談論著自己要創(chuàng)作的游戲。隨后王老師提示學生先根據游戲的效果,對游戲中的角色進行抽象并設計實現的方法,為下面的范例研習做準備。
● 第二階段:范例研習
范例研習是游戲創(chuàng)作中的重要環(huán)節(jié)。在范例研習的教學方法上,如果教師采用課堂示范然后學生進行模仿的方法,學生往往會抄寫教師的語句或者很機械地模仿教師的程序,盡管能制作出教師示范的游戲,但是在自由創(chuàng)作階段,就不知道如何下手,顯然學生沒有真正理解,學生也沒能獲得遷移的能力。王老師分析原因發(fā)現,學生常遇到學習困難的原因是對游戲的流程設計不夠清晰。鑒于此,在課堂教學中王老師增加了流程圖設計的環(huán)節(jié),采用解釋流程圖為主范例制作為輔的范例研習方法,在提出創(chuàng)作主題之后先引導學生設計流程圖,范例研習階段注重分析范例的流程圖,并引導學生對比自己的流程圖,找到差異,逐漸掌握游戲創(chuàng)作的建模方法,為接下來的模仿設計以及自由創(chuàng)作奠定基礎。下面以課堂實錄的形式介紹王老師在范例研習階段是如何引導學生進行流程圖設計以及進行流程圖的對比和解釋的。
1.引導學生理解流程圖的課堂實錄片段
師:剛才我們一起玩了《猜數字》的游戲,誰能用語言描述一下這個游戲是如何設計的?或者說,如果是你要創(chuàng)作一個猜數字游戲,你會如何設計呢?
學生發(fā)表了自己的看法,用語言描述了如何進行設計。
師:我們一起來看一下該游戲的程序設計流程圖,并思考我們與之的差距(如圖2)。
評述:在提出創(chuàng)作主題以及觀看游戲效果后,學生們思考著如何去實現這個游戲或者如何改進,這時老師提供讓學生表達的機會,在學生表達之后,教師向學生展示了“猜數字”游戲的設計流程圖,并引導學生思考老師畫的流程圖和自己心中所想的流程圖的區(qū)別。這對于養(yǎng)成學生的思考的能力有重要的作用。
師:我們結合剛才看的游戲的過程來分析程序的流程圖。點擊綠旗,游戲開始,在說完一些話語之后游戲出現詢問“請猜數字是多少”,在這之前是先設定好了一個隨機數字,這個隨機數字在1到100之間,這里隨機數字的設定是通過變量來實現的,那么什么是變量呢?
生:能變的數。
師:回答得很好。變量里存放的數字從哪里來呢?
生:可以設定為一個數。
師:設定為一個數的話,那么一個游戲只能玩一次了,下一次就知道了答案,一猜就對了。所以需要再想辦法,誰能說一下呢?
生:讓電腦隨便產生一個數。
師:很好,那么如何實現呢?我們可以給它一個范圍,電腦會隨機地選取一個數字,即產生一個隨機數進行賦值。
評述:對比實際游戲來看程序流程圖,在解釋流程圖的過程中提出本節(jié)要講到的知識點變量,并用一步步詢問的方式引導學生回憶之前所學的生成隨機數。這樣就結合實際提出講授內容,讓學生先有一個感性的認識,并思考如何用之前學過的知識進行實現。
師:大家可以看到,我輸入一個數字,電腦根據這個數字與提前產生的數字之間的關系不斷地給出“大了”、“小了”、“對了”這樣的反饋,我們不停地輸入、電腦不停地判斷直到回答正確為止。對應到程序中,我們輸入的數字相當于回答的那個數字,這時候繼續(xù)判斷所輸入的是對的還是錯的。如果輸入的是對的,它說回答對了。如果沒有對,這時候就又有了一個判斷,判斷是大于還是小于。判斷結束后繼續(xù)詢問數字是多少。
評述:先有實際體驗再來分析流程圖,這個順序能使學生更好地理解流程圖,在實際游戲和流程圖之間建立清晰的聯(lián)系。
師:如果我們輸入的數據不對,我們每次都要這樣判斷嗎?有沒有簡便的方法?
生:循環(huán)判斷。
師:對,這時候就需要一個重復執(zhí)行,詢問這個數字是多少,然后判斷,直到我們輸入對了為止。只要我們沒有猜對這個數字,它會在里面不斷地詢問和判斷。
評述:引導學生回憶和使用之前的知識,用之來解決面臨的實際問題。
師:每輸入一個數字都要繼續(xù)判斷,那么我們使用什么語句來進行條件判斷呢?程序中提到進行大于、小于及等于的判斷,這屬于對程序的偵測,所以可以在偵測里面尋找,用里面的語句來實現偵測的功能。
評述:提到了將要講到的“條件判斷”的判斷方法。
師:接下來是調試,看程序執(zhí)行的是否正確。編輯菜單中找到單步執(zhí)行,反復調試是很重要的。如果這個做好了,可以加上計時器功能(記錄答對需用的時間)、計數功能(記錄輸入數字的次數),或者回答正確后出現一些小紅花等以使游戲更加完美。
評述:最后提到程序的調試以及提出不同難度的問題。
2.在Scratch中進行演示的課堂實錄片段
師:下面我們在Scratch中演示操作,操作時注意這些步驟是如何實現流程圖中的功能的,重點是要達到對流程圖的理解,而不是抄寫這些語句,理解了流程圖,功能是可以用多種語句來實現的。
學生停止抄寫老師的語句,轉而動腦思考這些語句和流程圖的關系。
評述:提示學生理解流程圖并根據流程圖來編寫程序,引導學生掌握正確的學習方法。
師:在程序演示中老師直接用小貓這個角色了。現在小貓要你猜數字。首先設定一個變量,我們進入變量模塊中,這時候變量模塊里是沒有語句的,需要我們新建一個變量(如圖3所示),變量的名字可以用中英文或數字即可,但是最好用有意義的英文,形成良好的編程習慣。新建一個變量時要注意后面有兩個選項“只適用于這個角色”和“適用所有角色”,這個作品中只有一個角色,選擇只適用于這個角色和適用所有角色都是可以的。如果是多個角色,需要選擇只適用于這個角色。(學生點頭表示理解)
這個變量是多少呢?如果是一個數值,那以后一直是這個數值,而顯然我們呈現的數值每一次都是不同的,所以可以是任何數,隨機產生一個數即可(如圖4),數值范圍是1~100。
評述:有了前期對流程圖的分析,程序設計階段提到的概念以及用法都能很好地理解。
師:給變量設定了一個隨機數,接下來是詢問數字是多少。我們來找一下詢問在哪里。
生:偵測模塊中的詢問并等待。
評述:通過提問學生學過的內容使學生回憶。
師:詢問之后是出現一個對話框,讓我們輸入,然后進行判斷。詢問會一直重復執(zhí)行下去。這需要控制模塊里的循環(huán)語句來實現,控制模塊里有很多種類的重復執(zhí)行語句。今天我們用的是“重復執(zhí)行直到”這個循環(huán)語句,那么重復執(zhí)行到什么時候呢?這時候就需要進行條件判斷了,我們判斷“誰等于誰”。當我們的回答等于變量的值時就表明對了,循環(huán)結束,并顯示“對了”,這時候整個程序結束(如圖5)。
如果不等于怎么辦呢?我們知道要再進行判斷,判斷是大了還是小了,并且每一次輸入后如果不等于都要進行大了還是小了的判斷,這步可以仿照剛才的循環(huán)和條件判斷來判定(如圖5、圖6),大家思考如何來進行呢?循環(huán)的方法很多,大家思考如何使用不同的循環(huán)來實現(如圖7、圖8)?最后進行調試,如何進行調試呢?
生:編輯菜單里的單步執(zhí)行,點擊運行,執(zhí)行到的語句會一直閃動。
師:大家自己操作,根據理解的流程圖來編寫程序,有問題的請告訴老師。
評述:在范例研討環(huán)節(jié)中,無論是流程圖的設計還是游戲的創(chuàng)作演示,都注意引導學生對游戲創(chuàng)作的整體把握,同時把本次課的主要學習內容變量、循環(huán)、條件判斷融入其中,讓學生知其然并且知其所以然,并且探索多種實現方法,而不是模仿老師的程序設計語句,從而使學生達到能力上的提升。
● 第三階段:模仿設計
在學習創(chuàng)作之初,模仿是很重要的一個學習技能。在這里王老師強調對流程圖的模仿,根據剛才所解釋的流程圖來進行游戲的創(chuàng)作。這時候老師進行個別化輔導。在輔導過程中發(fā)現,學生遇到的大部分問題的原因是對流程的設計不夠清晰。
下面是摘取的一部分問題。
Q1:運行程序,輸入數字,但是無論輸入哪個數字,結果都顯示“對了”。
師:程序中語句太少,只實現了部分功能,對照流程圖,沒有實現對輸入數字是大了還是小了的判斷。
Q2:運行程序,輸入數字,一直出現詢問“是多少”。
師:當調試時出現問題時,我們用程序對照著流程圖來進行分析。在對大了還是小了做判斷的時候,循環(huán)里還用繼續(xù)詢問“是多少”嗎?在循環(huán)直到回答數字等于所設定答案時,已經加入了詢問數字是多少了。這里還需要嗎?
生:不需要了。
有的學生很快就實現了猜數字的游戲,有的嘗試用了幾種實現方法,有的增加了計時和計數的功能。學生學習的積極性很高,掌握得也較好。
● 小結
王老師踐行“為創(chuàng)作而教”的教學理念,把教學內容融入游戲創(chuàng)作的過程中,并最終達到能獨立創(chuàng)作的程度,在這個過程中王老師有三個地方做得非常好。
1.為游戲和程序之間搭建一座橋梁——程序設計流程圖的引入
王老師在授課過程中通過對流程圖的使用,注意培養(yǎng)學生的設計能力和創(chuàng)作能力。范例研習階段王老師并沒有直接介紹這個游戲是如何做的,而是先讓學生說出自己的設計構想,引發(fā)學生思考,接著引導學生理解該游戲的設計流程圖,在解釋流程圖的過程中提出本節(jié)課要掌握的三個知識點。這就使得學生的參與度提高,不是被動地接受,而是先進行主動的建構并且不斷地形成認知沖突,從而達到對知識更深刻的理解。王老師把游戲的角色要素抽象出來用流程圖表述,這樣學生進行理解的難度就降低了,同時也培養(yǎng)了學生在編程之前的建模能力和設計能力。
2.將授課內容融入游戲的創(chuàng)作過程中
在流程圖的解釋過程中,王老師首先引導學生思考什么是變量,如何進行設值,這對應Scratch中變量模塊的新建變量以及通過生成隨機數給變量賦值。然后繼續(xù)引導學生如何進行大于、小于及等于的判斷,這對應Scratch中數字和邏輯運算中的大于、小于及等于的邏輯運算符以及偵測中的條件判斷。這樣就把有難度的變量學習可視化,使學生較為容易地接受,并且這個學習發(fā)生在游戲創(chuàng)作的過程中,學生學習的積極性很高。
3.引導學生把握程序流程,促進能力的遷移
在模仿階段,學生模仿流程圖來進行創(chuàng)作,而不是照抄老師演示的程序設計語句,這一點有助于培養(yǎng)學生活學活用的意識和能力。在學生遇到問題時,老師不是直接告知其答案,而是引導學生對整體程序設計進行反思,從流程圖對比上意識到問題所在并且尋找解決方法。這樣使學生知其然并且知其所以然,有助于知識的遷移和應用。王老師利用游戲的強大“魔力”,引導學生從游戲的“消費者”走向“創(chuàng)作者”,在模擬創(chuàng)作的過程中,學生學到的不僅是程序設計的基本知識,還有更為可貴的設計和創(chuàng)作思想。讓學生成為創(chuàng)作的主體,老師的作用不再是“禁止”學生玩游戲,而是“引導”在創(chuàng)作游戲的過程中進行學習,我們期望有更多更好的課堂實例。