朱鳳惠 王蘇明 鐘柏昌
在中小學程序設計教學中,教師應明確,就基礎教育而言,程序設計教學重要的并不是教給學生語言和語法,而是教給其程序設計的思想和思維方法,讓學生能夠用編程來表達自己的創意和想法,培養其創新能力以及分析問題、解決問題的能力。據此,筆者在本課選取極具啟發性和趣味性的“吃豆子”任務,以當前基礎教育改革中的“核心素養”理念為目標展開教學。

教材與學生情況分析
本節內容選自冀教版《Scratch程序設計》中的第7課,主要涉及隨機數與動作功能模塊結合的運用、偵測模塊“碰到‘顏色’”的使用、分支語句的使用、變量的使用,并進一步鞏固已學過的鼠標交互、廣播和接收控件的使用,從而完成大嘴巴吃豆子并實現自動計數的功能。

本節課的教學對象是五年級學生。經過前幾節課的學習,學生已經熟悉了Scratch的編程界面和各個功能模塊,掌握了其編程方法,他們也對使用Scratch創作有趣的動畫產生了濃厚的興趣,基于積木式的編程能力也有了顯著提升,并且腦海中產生了很多需要通過Scratch來實現的想法。

教學目標
基礎知識與基本技能層(雙基層)目標:掌握條件語句的使用;掌握顏色偵測控件的用法;掌握變量的使用方法。
問題解決層目標:能夠利用角色的顯示與隱藏設計游戲情節;能夠利用變量及循環結構實現自動計數功能。
學科思維層目標:在游戲制作的過程中,體驗抽象與建模的思想;經過對程序的修改,體驗迭代與復用的思想;了解Scratch功能模塊中積件組合的規律,體會Scratch自避免語法錯誤的優勢,體驗標準化思想。
游戲設計與實現
1.任務設計
基于上述教材和學情分析,筆者分別預設了兩個由易到難、逐步遞進的游戲開發任務(如表1)。從核心素養的角度來看,任務一注重雙基層和問題解決層,主要使學生掌握各個控件的使用方法,能利用所學知識解決簡單的問題,搭建簡單的游戲腳本。任務二是任務一的進階版,主要在任務一的基礎上進行修改,強調學生對已有作品的再利用和再創造,更注重核心素養中的問題解決層和學科素養,讓學生在不斷修改與測試的基礎上,體驗迭代與復用的思想。
2.程序實現
“吃豆子1.0”應用程序主要由以下四個部分組成:一是多個“豆子”角色隨機運動,可以借助隨機數控件設置豆子在屏幕中隨機位置的實現(如圖1);二是當豆子碰到大嘴巴時,發出廣播信號,并消失;三是借助“面向鼠標移動”控件,使大嘴巴跟隨鼠標運動;四是當大嘴巴吃到豆子后,即接收到廣播信號后,嘴巴閉合,并快速切換兩次造型,模擬吃到豆子的效果。
“吃豆子2.0”應用程序主要是在上述程序的基礎上添加自動計數功能?!按笞彀汀焙汀岸棺印苯巧膮⒖寄_本分別如圖2和圖3所示。
需要注意的是,本課中出現了一個新的概念——變量,對此概念的講解主要有兩種教學思路。一是通過與“常量”進行對比,直接講解“變量”的概念;二是不向學生介紹完整的“變量”概念,而是將變量比喻為一個容器來幫助學生理解,在“變量”這個容器中可以存儲數值,并且數值是可以變化的。在Scratch中創建的變量將在滿足一定條件時自動增加設定的數值,從而實現自動計數。鑒于本節課的教學對象是五年級的學生,常量和變量的概念都未接觸過,即使是從常量的概念出發來引導學生理解其含義仍有一定難度,因此在實際教學中,筆者選擇了第二種方案。
教學實踐
在本節課中,筆者主要通過以下四個環節來實施教學。
1.興趣導入
教師向學生演示游戲“大嘴巴吃豆子1.0”(游戲中的豆子在廚房中隨機運動,大嘴巴在鼠標的指引下去追逐豆子,吃到豆子后豆子消失,大嘴巴閉合,并快速切換兩次造型,然后繼續去追逐其他豆子)。教師提示學生在觀看游戲的過程中思考該游戲涉及哪些角色,并嘗試分析各角色有哪些行為,這些行為可以用Scratch中的哪些功能模塊來實現。
2.任務分析
對任務的分析是培養學生分析問題和解決問題能力的基礎。因此在開始制作之前,教師先讓學生欣賞游戲,再說一說該任務中的角色和各個角色所具有的行為,以及可能用到的相應控件,這是培養學生分析問題的能力的過程,最后要求學生完成表2和表3中的任務分析。
3.任務挑戰
在腳本搭建之前,筆者先拋出問題:如何判斷豆子遇到大嘴巴?遇到大嘴巴之后,豆子是通過什么交互模塊發出信號的?對于第二個問題,很快就會有學生聯想到以前學習過的廣播與接收控件。但是對于第一個問題,大部分學生都存在困惑,此時,筆者帶領學生一起認識“顏色偵測”控件、“隱藏”控件以及“面向鼠標指針”移動控件,由于大嘴巴和豆子的顏色不同,因此可以用“碰到‘顏色’”的方法來判斷大嘴巴是否吃到豆子,“隱藏”控件可以用來模擬豆子被吃到即消失的效果,“面向鼠標指針”移動控件則可以用來模擬大嘴巴跟隨鼠標移動的效果。最后筆者提出任務一:完成大嘴巴在鼠標指引下吃豆子的程序。學生自主探究,在不斷地測試和調試下完成該任務的腳本搭建。
接著,筆者提出任務二:對大嘴巴吃到的豆子進行計數。首先,讓學生人工計數被吃掉的豆子的數量。學生經體驗發現,在數量較少時人工計數尚可,但數量足夠大時,人工計數就比較費時費力。此時,筆者引入“變量”,在Scratch中創建一個新的變量,在滿足一定條件時自動增加設定的數值,從而實現自動計數。其次,筆者拋出問題:用來計數的“變量”在什么情況下會自動增加?學生很快就會想到是對被吃掉的豆子的數量進行計數,所以豆子被吃掉以后“變量”自動增加。這樣,本課中最大的難點就解決了。然后,筆者給學生充足的探究時間,讓學生自主探究或者以小組合作的形式完成任務二,在不斷測試和調試過程中發現問題并解決問題。如果學生仍未解決問題,引導學生回顧該課的重點知識:“顏色偵測”控件的兩種顏色是否選擇正確、廣播控件的使用是否得當、“變量”的使用是否正確等。最后,筆者與學生一起分享優秀作品并點評。

4.課堂總結
筆者對本節課進行了總結,并告訴學生利用Scratch可以制作很多有趣的小游戲,游戲制作最重要的就是創意,要養成勤動腦、多動手的好習慣?!扒趧幽X”就是要善于思考,并養成隨時記錄的好習慣,因為有些創意在腦海中會稍縱即逝;“多動手”就是要善于將自己的創意付諸實踐,用程序將“空想”變成現實,爭取做行動上和思想上的雙重巨人。
教學反思
本課的教學重點是“顏色偵測”控件的使用方法、利用變量實現自動計數、抽象和模塊化、測試和調試程序。從任務完成情況來看,所有學生都完成了任務,但由于課堂時間有限,為了照顧大多數學生的學習進度,本課并未設置拓展任務。因此,本課還需改進的地方就是可以適當增加拓展提升,讓學有余力的學生繼續進行探索發現。整體來說,整個教學過程生動有趣,學生在玩中學,在學中玩,提高了分析問題、解決問題的能力。