王小玉



摘要:本文以“身邊的算法”項目為主題,通過將算法邏輯圖示轉成編程代碼,聚焦編程學習中算法的實現環節,引導學生在分析任務需求的基礎上,對問題進行描述和表達,并用圖示化的方式描述算法,最后根據邏輯圖示進行編程解決問題。
關鍵詞:算法教學;編程教學;三步轉譯編程教學法
中圖分類號:G434 ?文獻標識碼:A ?論文編號:1674-2117(2023)16-0012-03
編程教育是教育技術層面的一個重要分支,開展編程教育活動能夠使計算思維具體化。目前,國內中小學大多都開展了編程教學,但編程課堂的教學形式主要為講—練、講—演—練等,可是編程的學習不同于軟件使用技能的學習,軟件學習重在技術的使用,而編程學習重在思維和問題解決能力的培養。因此,編程教學需要在教學方式上進行改變。
“身邊的算法”項目簡介
“身邊的算法”是《義務教育信息科技課程標準(2022年版)》(以下簡稱“新課標”)中第三學段(5~6年級)中的內容,包括算法的描述、算法的執行、算法的效率等。通過本模塊的學習,學生能熟悉一些常用的算法描述風格與方式,理解算法執行的流程;能利用自然語言、流程圖等方式,針對簡單問題,嘗試設計求解算法,并通過程序進行驗證。新課標在教學提示中提到,從學生的生活體驗或《九章算術》等典籍中的適當問題出發,將算法學習的要點貫穿問題求解的過程,讓學生在不同算法的具體討論中養成算法思維,避免空洞地講授抽象概念。
1.學生的心理認知
五、六年級的學生認知發展處于具體形象思維到邏輯抽象思維的過渡階段,并且該階段的學生思維發展比較依賴于生活,而游戲化教學體驗具有趣味性、挑戰性、體驗性和交互性等特征,非常適合低齡學生,因此本項目選擇了他們熟悉的數學問題“雞兔同籠”和可參與的“打磚塊”游戲,激發學習興趣。同時,學生的思維以形象思維為主,他們對自己動手實踐的體驗印象深刻,所以可將流程圖示編程轉換成可執行的程序,讓學生在此過程中通過觀察、語言描述、邏輯圖示、動手實踐到最后解決問題享受學習成功的喜悅。隨著理論思維和自我認知的發展,這個階段的學生已經不滿足于被動地接受知識,對課堂活動表現出來極大的熱情,更希望參與課堂表現自我,所以可通過設計課堂分享活動和討論流程圖環節讓學生充分參與課堂。
2.項目內容框架
根據該學段學生的特點,充分考慮到新課標弱化編程語言和具體的完整代碼實現,更加重視算法思想和用編程思維解決問題的設計原理。本項目選擇了Mind+圖形化編程軟件,積木式的編程環境使得編程學習更易被學生接受。為了讓學生能夠深入理解“身邊的算法”,本項目共設計了6個課時的教學內容。課時內容如圖1所示。
第三步轉譯“從邏輯圖示到代碼實現”的具體教學實施
1.解決“雞兔同籠”問題中第三步轉譯的具體實施
“雞兔同籠”是數學中的一個十分經典的問題,教師向學生出示《孫子算經》中雞兔同籠問題:“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?”請學生完成學習單上的表格(如下表),找出雞和兔子分別有多少只。
(1)自然語言建模
學生分小組討論:要解決“雞兔同籠”問題,可以怎么設計算法?
算法A:假設雞有35只,兔子0只,算出腳的只數,然后假設雞有34只,兔子2只,算出腳的只數以此類推,也能找出雞和兔子分別有多少只。
算法B:假設35只全都是雞,那么有70只腳,因為雞有2只腳,兔子有4只腳,那么多出來的24只腳都是兔子的另外兩只腳,所以兔子的數量是24/2=12只,雞有23只。
算法C:假設雞有x只,兔子有y只,y=35-x,同時2*x+4*y=94,將y=35-x代入,計算得出雞的數量,然后兔子數量為35減去雞的數量。
算法D:讓雞和兔子分別抬起一只腳,那么剩下一半的腳47只,剩下的腳47減去兔子和雞的頭35得到的應該就是兔子的數量12只,最后算出雞的數量23。
(2)框圖梳理邏輯
學生四人一組,根據第一步的算法A的描述,完成學習單上的流程圖(如圖2)。
(3)功能代碼表達
學生根據流程框圖,利用圖形化編程軟件完成程序編寫,將算法轉化成為可執行的程序(如圖3、圖4)。
2.打磚塊游戲程序編寫中第三步轉譯的具體實施
將打磚塊的游戲程序轉換成.exe文件,讓學生先玩一玩,然后請學生分別說一說其中木板、小球和磚塊的動作效果以及變量的變化情況,并完成學習單。
(1)自然語言建模
木板效果描述:左右鍵控制木板左右移動;
小球效果描述:當綠旗被點擊的時候,移到舞臺下面某一位置,朝著向上的隨機方向移動,如果碰到磚塊反彈回來,如果碰到木板也反彈,如果碰到邊緣也反彈,如果碰到底部的紅色線條就停止游戲;
磚塊效果描述:當綠旗被點擊的時候,磚塊克隆16個自己,以4*4的形式分布在舞臺上,如果磚塊被小球打中則磚塊消失;
變量分數描述:如果小球打中磚塊,分數加1。
(2)框圖梳理邏輯
引導學生將復雜問題細化分解成多個子問題并逐一解決,最終實現整體問題解決。請學生四人一組自行根據語言描述繪制各個角色的流程圖,通過算法的方式解構游戲,將復雜問題形式化。
(3)功能代碼表達
學生根據流程和框圖,利用圖形化編程軟件完成程序編寫,將算法轉化成為可執行的程序(如圖5、圖6)。新課標中提到,不要求每個算法問題都由學生編程實現,閱讀理解、修改運行等也都是有意義的體驗,并且由于本游戲程序具有一定的難度,因此,筆者在課堂上將程序半成品發送給學生,學生可根據自己的能力選擇從零開始或在半成品基礎上搭建腳本。
3.教學反思
縱觀整個項目的教學環節,筆者發現學生根據自己繪制的流程圖能夠快速地完成程序編寫,因此可以明確,學生理解了解決該類問題的算法的工作流程。
在項目活動開展過程中,大部分學生能夠跟隨課堂進度學習和編程,但是有小部分學生對框圖和流程圖比較陌生,需要教師的進一步講解。
通過這輪教學實踐,在學生根據流程圖示進行編程的環節,編程效率有了非常大的提升,在編程過程中學生們也很少有畏難情緒。
結語
算法是計算思維的核心要素之一。三步轉譯編程教學法的第三步“從邏輯圖示到代碼實現”,通過程序解決問題,讓學生經歷問題解決的一般過程,理解算法,感知計算機解決問題的思想方法,這在一定程度上有助于在編程教學中提升學生的計算思維和問題解決能力。
參考文獻:
中華人民共和國教育部.義務教育信息科技課程標準(2022年版)[S].北京:北京師范大學出版社,2022:6.