周運福
【摘 要】本文通過用Scratch制作一個簡單的投票器軟件,讓學生歷經確定問題、分解問題、轉化問題、算法設計及程序編寫、測試、評估等過程,在問題的形式化描述、解決方案的表達及方案的執行、評估方面進行了計算思維的培養探索。
【關鍵詞】計算思維;信息技術教學;Scratch;程序設計
在中小學的班級活動中少不了各種選舉,如課代表選舉、少先隊干部選舉,有些時候要從多人中隨機挑選1人投票選舉,用筆、紙的方式記錄既費時又不方便統計,我們嘗試利用Scratch來制作一個投票器軟件,幫助同學們統計選票。
教學目標及重難點
1.教學目標
(1)學生能新建變量,對變量初始化、賦值和運算。
(2)在界定信息問題,分解問題,設計程序解決問題中培養計算思維。
(3)在程序完善、修改中體驗軟件開發的迭代工程思想。
2.教學重點
新建變量,通過按鍵完成投票、計票等功能。
3.教學難點
變量的賦值理解。
情境導入,提出問題
一是談話揭示問題:前幾天碰到我們班同學對大隊委投票有想法,認為不透明、不真實,想要在屏幕上看到兩人的實時票數,該怎么辦呢?
二是小組討論:尋找解決問題可能性辦法。
三是引導聚焦技術:我們能不能借助信息技術提高投票、計票的公開性、透明度和效率?用五年級學過的Scratch設計程序幫助投票計票,實時顯示?
設計意圖:捕捉、發現學生生活中存在的問題,將問題解決與計算思維培養的必備知識整合在一起,在項目式或問題式學習中推進解決。
確定問題,分解問題
通過討論,我們明確設計一個投票器程序能夠通過按鍵點擊進行投票、自動計票,避免投票“黑幕”。
1.項目分解為幾個小問題
回憶生活中投票選舉我們必須要完成哪些工作。同桌輕聲交流討論。
歸納投票工作流程:投票、計票、票數公布。
2.生活問題轉化為信息問題
在活動中投票的過程可能對應計算機中哪些操作?同學們思考一下,在括號內填上自己的想法,如表1所示。
表1? 生活中投票問題轉化為信息問題
場景 投票過程 計票過程 結果顯示
生活中 填寫選票或同學們表決等方式 人工統計計算 寫在
黑板上
計算機 (? ? ? ? ? ? ? ? ? ) 用“變量”來存儲數據,程序指令進行數據處理 (? ? ? ? )
設計意圖:引導學生將大問題分解為投票、計票過程與結果顯示等幾個小問題,同時,將問題轉化為可計算的信息問題。
算法設計,程序編寫
1.程序界面的設計
(1)背景的選擇:從背景庫中選擇一個舞臺的背景。
(2)角色的選擇:從角色庫中選擇“girl1”代表女生張麗,“boy1”代表男生王剛。
2.算法設計
編寫程序要實現的功能是:點擊人物角色或者按鍵盤字母對候選人投票,投票次數是無限的,投票票數是累加的。
如果用一句話來表述上面的想法,請你補充完整括號里面內容:
當(? ? ? ? ? )的時候,某同學票數增加1票。
上述功能的實現,在Scratch中有多種實現方法,我們選擇按鍵實現方法。
在Scratch中,使用“事件”類指令中的“當按下空格鍵”模塊和“數據”類指令中的“變量”來完成投票、計票功能(圖1)。
圖1? 簡單投票器模型構建、算法設計
設計意圖:在算法設計中,用一句話填空的方式幫助學生理解、確定算法,用表格列項的方式將算法與實現的程序模塊一一對應,培養學生面對生活問題時的抽象、自動化解決問題的意識及能力。
3.程序腳本的設計
我們建立ZL和WG兩個變量分別代表張麗和王剛的票數。
(1)新建變量。
①選中女生角色。
②單擊“腳本”選項卡中的“數據”類別,再單擊“新建變量”按鈕。自定義一個“ZL”變量。這是一個全局變量,所以,腳本放在任一角色都可以用。
注意:“變量名”要使用“有意義”的英文單詞或中文、字母表示。
(2)按鍵響應。
①在角色區,單擊選擇需要搭建腳本的角色。例如先選擇“女孩”角色。
②單擊“腳本”選項卡中的“事件”類別,將“當按下空格鍵”指令拖入腳本區。并將默認的“空格鍵”修改為“Z”鍵。
思考:這里為什么建議使用“Z”鍵?
(3)變量計數(變量的賦值)。
單擊“腳本”選項卡中的“數據”類別,把“將變量ZL的值增加1”指令拖入腳本區。
與“按鍵響應事件指令”進行拼接。
完成“張麗”角色的投票、計票的腳本。隨著按鍵不斷按下,變量“ZL”也在不斷發生變化。
4.嘗試完成“王剛”角色變量制作
學生上臺演示,教師小結。
(1)新建變量。新建“WG”變量存儲王剛票數。
(2)按鍵響應。指定“W”鍵作為相應的響應按鍵。
(3)變量計數。將腳本“將ZL增加1”拖入腳本區,放在按鍵響應語句下。點擊“ZL”下拉菜單中選擇“WG”。
現在,我們的投票器軟件已經初具雛型了,請幾個同學上來試一試吧。試投票之前老師先把程序文檔保存為“投票器1.0”。
5.小試牛刀,自主編程
(1)自主學習,完成程序編制。不清楚的地方可以觀看微課學習。
(2)教師巡視指導。
程序測試,優化迭代
1.優化程序
展示學生作品,對照評價表進行互評、點評,引導學生思考:投票器只能使用一次,要重復使用該怎么辦?
兩人的投票要清零。選擇數據模塊中的“將ZL設定為0”和“將WG設定為0”語句。我們把優化后的投票器程序文檔保存為“投票器1.1”版本。
2.拓展提升
在使用“投票器”時,有的同學希望能夠及時地反映出投票總數,該如何進行改進?
總結與分享
通過學習,我們把一個生活中的問題轉化為一個信息問題,并且利用Scratch編程實現,解決了班級活動投票中的基本問題。如果要實現自動統計票數,并顯示得票多的人,我們又該如何對程序進行升級呢?大家課后思考。
設計意圖:程序教學中要弱化“操作性”和“知識性”的內容,注重迭代思想的滲透,要將類似迭代的這種學科核心思想和方法的培養貫穿問題解決的始終。
板書:制作一個簡單投票器(圖2),附參考程序(圖3)。
案例反思
1.計算思維教什么
(1)計算思維解決問題的思維方法。
要滲透基于計算機解決問題的學科思維方法的學習,重視個體在運用計算機科學領域的思想方法形成問題解決方案的過程中產生的一系列思維活動。面對真實情境,要掌握計算思維解決問題的步驟方法,這種方法不是僅僅關注局部算法、程序設計,而是面向問題的計算思維解決問題的整個思維流程。
在本案例中,讓學生經歷確定制作簡單投票器問題,把問題分解為投票、計票、公布票數幾個小問題,同時將問題轉化為計算機能夠執行的計算問題、用“當按鍵按下時,票數增加”的填空方法幫助學生進行算法設計。最后在老師講解變量的知識后完成程序的編寫、測試、評估等過程。在把生活問題轉化為信息問題并用編程解決的過程中培養了學生的計算思維,滲透了計算思維解決問題的思維方法。
(2)計算思維的核心要素。
計算思維的核心要素有分解、抽象、算法等概念,在教學中幫助學生學會分解問題、體驗抽象、掌握基本算法結構。借助思維導圖,將問題最終分解為投票、計票、顯示票數,逐個解決。在問題抽象方面,告訴學生抓住問題主要特征,通過提取關鍵信息的方法,培養抽象能力。比如,本案例中投票事件,關鍵流程就是投票、計票、展示票數,其他用什么方式投票,如何計票等可以不管。在算法設計方面,通過一句話“當 (? ?)的時候,某同學票數增加1”幫助學生分析算法、理解程序結構。
在編程算法實現方面,選擇按鍵實現方式,同時也可讓學生嘗試點擊角色實現方式,讓學生體會不同模塊可以實現相同的算法。但是,重視這些元素不意味著計算思維的培養就只是對這些元素的理解掌握,而是一定要有計算思維解決問題的流程意識,各元素的掌握學習是為了更好地落實用計算思維去解決問題的能力。單獨掌握這些核心元素而不談如何解決具體情境問題,就偏離了計算思維的培養。
2.計算思維怎么教
(1)要盡量運用真實的問題情境。
教師要善于捕捉、發現學生生活中存在的問題,在問題解決中讓學生獲得成就感,真正感受到技術改變學習、服務生活。例如案例中的投票程序,學生就在班會中進行了投票嘗試,獲得了班主任的贊賞。激發了學生興趣,更加積極尋找可計算的現實問題,通過編程完成。要注意把真實情境中的大問題引導分解成每節課能完成的小問題,逐個解決。本節課是設計可投票的程序,下節課是在此基礎上設計自動顯示得票獲勝的人,再后面是自動點名上臺投票的程序,在一次次優化迭代中完成問題解決。
(2)在“雙主線”教學中培養學生計算思維能力。
信息技術學科有自己的內在邏輯知識體系,要完成基礎知識和基本技能的學習,這是一條“顯性主線”。計算思維的培養需要借助信息技術學科知識的載體來實施。我們更要關注應用學科知識解決問題時的計算思維能力的培養,即分解、抽象、程序設計,這是教學中計算思維培養的“隱性主線”。
我們不能習慣于“操作”和“技能性”內容教學,更不能只對計算思維要素概念進行教學,強調概念知識的理解和記憶,而是要在教授解決問題所需的學科知識時,滲透、培養基于計算思維解決問題的思維方法,讓孩子們形成一種思維習慣,當自己再遇到一個真實問題時,能夠運用已有資源和素養獨立解決。所以,雙主線教學中應該是“隱性”主線為主導,圍繞其組織教學內容進行“顯現”的學習,最終在知識技能的習得中提升計算思維能力。
(3)計算思維教學小學階段重點關注問題的確定和分解。
計算思維教育關注的是利用信息技術解決問題的能力。這種能力既表現為“結構分解、實體抽象、模型建設、自動化實施”等信息技術應用特征,也包括“明確問題、設計方案、實施反饋、修訂完善”等一般性解決問題方法。而發現問題、確定問題是現階段學生們較弱的方面,我們習慣將現有問題拋給學生,讓學生在指定的問題中進行練習,而學生一旦面臨真實世界時,發現不了問題,或者找不到問題的主要矛盾,也就談不上解決問題了。
在計算思維的培養中,引導學生發現問題,確定信息問題,學會分解問題是需要我們重點關注的。如生活中的投票行為有很多環節,投票、計票、檢票等,哪些行為是投票工作所必須的?哪些是可要可不要的?把這些必要行為沉淀下來,思考能否被“計算”?如果可以,那么再進行問題分解、模型構建等系列流程。
注:本文系國家出版融合重點實驗室、人民教育出版社人教數字教育研究院規劃課題“計算思維在小學創客類課程-Scratch教學中培養的實驗研究”(課題批準號RJB0520001)成果