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