張淑紅
【摘 要】算法是信息科技的課程標(biāo)準(zhǔn)六條邏輯主線之一。在課堂中我們可以運(yùn)用自然語言描述算法、流程圖設(shè)計(jì)算法、編程驗(yàn)證算法、在生活中的應(yīng)用算法四步驟逐步培養(yǎng)學(xué)生的算法思維,提升學(xué)生分析問題和解決問題的能力。
【關(guān)鍵詞】算法思維;分析問題;描述算法;流程圖
【中圖分類號(hào)】G434? ?【文獻(xiàn)標(biāo)志碼】A
【論文編號(hào)】1671-7384(2024)06-061-02
2022版信息科技課程標(biāo)準(zhǔn)第三學(xué)段(5~6年級(jí))“身邊的算法”模塊指出:“本模塊以身邊的算法為載體,使學(xué)生了解利用算法求解簡(jiǎn)單問題的基本方式,培養(yǎng)學(xué)生初步運(yùn)用算法思維的習(xí)慣,并通過實(shí)踐形成設(shè)計(jì)和分析簡(jiǎn)單算法的能力。”[1]算法是計(jì)算機(jī)科學(xué)的核心問題所在,算法思維可以理解為發(fā)現(xiàn)并確定問題、分析問題的構(gòu)成要素,對(duì)問題進(jìn)行分析分解,為問題的解決提供相對(duì)有效的途徑和方法。新課標(biāo)進(jìn)一步擴(kuò)展了算法的范疇,指出算法教學(xué)的基本思路是從“計(jì)算機(jī)算法”發(fā)展到“身邊的算法”?!吧磉叀庇袃煞矫娴囊螅阂环矫媸峭ㄟ^算法,編寫計(jì)算機(jī)程序解決一些問題,這是“用”計(jì)算機(jī)解決身邊的問題;另一方面以算法的思路,形成與優(yōu)化問題解決的步驟,這是“以”計(jì)算機(jī)編程等的工程思維方式解決身邊更多的問題,是計(jì)算思維的體現(xiàn)[2]。
那如何在平時(shí)課堂中落實(shí)學(xué)生算法思維的培養(yǎng)呢?小學(xué)五年級(jí)的學(xué)生認(rèn)知發(fā)展處于從具象思維到抽象思維的過渡時(shí)期,結(jié)合學(xué)生的思維特點(diǎn),我們可以選取貼近學(xué)生生活的例子,創(chuàng)設(shè)真實(shí)情境,運(yùn)用自然語言描述算法、流程圖設(shè)計(jì)算法、編程驗(yàn)證算法、在生活中的應(yīng)用算法的步驟展開教學(xué),培養(yǎng)學(xué)生的算法思維。描述算法主要是指梳理真實(shí)問題解決步驟,然后用自然語言描述;設(shè)計(jì)算法是指提取自然語言的關(guān)鍵詞,把問題解決步驟轉(zhuǎn)換為更符合計(jì)算機(jī)處理問題步驟的邏輯圖示;驗(yàn)證算法是指運(yùn)用圖形化編程把邏輯圖示轉(zhuǎn)換成計(jì)算機(jī)小程序;應(yīng)用算法是指運(yùn)用學(xué)到的算法遷移到更廣泛的問題解決之中。
本文以“猜數(shù)游戲”為例具體闡述課堂如何實(shí)施教學(xué)?!安聰?shù)游戲”是編程學(xué)習(xí)中一個(gè)非常經(jīng)典的游戲,趣味性足,可以激發(fā)學(xué)生的探究興趣。在這個(gè)游戲中有明確的輸入(猜測(cè)的數(shù)字)和輸出(反饋“大了”“小了”“正確”),流程清晰簡(jiǎn)單,比較適合作為算法學(xué)習(xí)的入門課。這個(gè)游戲設(shè)計(jì)算法的過程中需要應(yīng)用到分支和循環(huán)兩種結(jié)構(gòu),設(shè)計(jì)算法的過程可以提升思維的縝密性,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)乃季S習(xí)慣。同時(shí)猜數(shù)游戲中還包含著計(jì)算機(jī)經(jīng)典算法——二分法,可以讓學(xué)生在玩游戲的過程中去理解二分法,同時(shí)理解二分法在生活中的應(yīng)用。
親歷游戲,用自然語言描述算法
計(jì)算機(jī)解決問題時(shí),算法通過程序能將一定規(guī)范的輸入在有限的時(shí)間內(nèi)轉(zhuǎn)化為所要求的輸出。因此,在分析簡(jiǎn)單問題時(shí),學(xué)生首先要能對(duì)問題進(jìn)行描述,其次對(duì)問題的條件進(jìn)行分析,最后明確求解問題的目標(biāo)結(jié)果[3]。
上課伊始,教師出示游戲規(guī)則:老師隨機(jī)在紙上寫一個(gè)數(shù),請(qǐng)學(xué)生來猜,老師會(huì)說“回答正確”“大了”“小了”,學(xué)生可根據(jù)老師的回答再次猜測(cè),“回答正確”后游戲結(jié)束。接著教師提出問題,請(qǐng)學(xué)生用自己的語言描述一下游戲的步驟。學(xué)生1回答:老師寫一個(gè)數(shù)字、學(xué)生猜測(cè)、老師回答、游戲結(jié)束;學(xué)生2補(bǔ)充:我認(rèn)為他的描述不太完整,缺少一個(gè)步驟,應(yīng)該是老師寫一個(gè)數(shù)字、學(xué)生猜測(cè)、老師回答“大了”“小了”或“回答正確”、學(xué)生再次猜測(cè)直,到答對(duì)為止、游戲結(jié)束。
本教學(xué)環(huán)節(jié)教師先跟學(xué)生玩猜數(shù)游戲,當(dāng)學(xué)生對(duì)游戲有了一個(gè)整體感知的時(shí)候,教師再引導(dǎo)學(xué)生用自己的語言描述猜數(shù)游戲的步驟,促使學(xué)生深入思考游戲的整個(gè)過程,抽象出猜數(shù)游戲的關(guān)鍵步驟。總結(jié)梳理的過程讓學(xué)生對(duì)猜數(shù)游戲有了全面的認(rèn)識(shí)和系統(tǒng)的分析,從抽象到具象,提取出了問題的關(guān)鍵特征,從而促進(jìn)學(xué)生思維的發(fā)展。
合作探究,運(yùn)用流程圖設(shè)計(jì)算法
算法是通過明確的、可執(zhí)行的操作步驟描述的問題求解方案。設(shè)計(jì)算法需要學(xué)生在明確輸入輸出的基礎(chǔ)上,將問題的求解方案設(shè)計(jì)為明確的、可執(zhí)行的操作步驟。熊璋教授曾指出,信息科技課程不應(yīng)該局限于讓學(xué)生對(duì)現(xiàn)有程序設(shè)計(jì)語言的掌握,而應(yīng)讓學(xué)生學(xué)習(xí)使用計(jì)算機(jī)解決問題的思維和實(shí)踐方法。
本環(huán)節(jié)教師再次提出問題:能否用流程圖來描述一下猜數(shù)游戲的過程。師生先一起梳理游戲的關(guān)鍵步驟:教師出數(shù)字,學(xué)生猜數(shù)字,教師回答大了、小了或正確,重復(fù)猜測(cè)直到答對(duì)為止;再思考這些步驟對(duì)應(yīng)到Kitten里面是哪些積木塊,學(xué)生能很快思考出“教師出數(shù)”對(duì)應(yīng)設(shè)置一個(gè)變量為隨機(jī)數(shù),“猜數(shù)字和回答”對(duì)應(yīng)“詢問……并獲得答復(fù)”積木塊,重復(fù)猜測(cè)需要用到重復(fù)積木塊,判斷的過程需要用到“如果……否則……”。至此,學(xué)生完成了由自然語言向計(jì)算機(jī)語言的轉(zhuǎn)換。這正是促使學(xué)生分解、抽象、建模,用計(jì)算機(jī)解決問題的思維去思考問題的過程。
接著教師出示流程圖模塊,要求學(xué)生小組合作運(yùn)用在線流程圖編輯軟件繪制猜數(shù)游戲流程圖并展示匯報(bào)。學(xué)生在繪制流程圖的過程中提出疑問:為什么沒有“猜小了”這個(gè)積木塊?教師引導(dǎo)學(xué)生可以自己添加并思考這個(gè)積木塊是否必要。學(xué)生在匯報(bào)的過程中出現(xiàn)一正一誤兩種流程圖。教師引導(dǎo)學(xué)生思考分析兩種流程圖所代表的計(jì)算機(jī)程序執(zhí)行方式,指出計(jì)算機(jī)在執(zhí)行任務(wù)時(shí)只能逐步判斷,不能一下子判斷三種情況,所以錯(cuò)誤的流程圖不符合計(jì)算機(jī)語言的執(zhí)行流程;思考的過程讓學(xué)生把現(xiàn)實(shí)問題的步驟與計(jì)算機(jī)解決問題的步驟對(duì)應(yīng)起來,逐步養(yǎng)成算法思維。最后教師再次提出問題“猜小了”這個(gè)積木塊是否必須,學(xué)生意識(shí)到除了判定“猜對(duì)了”“猜大了”就只有第三種情況,因此非必須。在修正流程圖的過程中,學(xué)生學(xué)會(huì)以計(jì)算機(jī)解決問題的方式去分解問題、設(shè)計(jì)算法,從而促進(jìn)了學(xué)生思維的發(fā)展。
動(dòng)手實(shí)踐,運(yùn)用圖形化編程驗(yàn)證算法
從計(jì)算機(jī)解決問題的途徑來看,學(xué)生需要將形式化的描述轉(zhuǎn)變?yōu)榭梢詫?shí)現(xiàn)的結(jié)果。編寫程序、執(zhí)行程序是驗(yàn)證算法實(shí)現(xiàn)的一種方式。從學(xué)生的認(rèn)知發(fā)展角度來看,學(xué)生需要將描述算法時(shí)的推演結(jié)果轉(zhuǎn)變?yōu)榫幊痰念A(yù)測(cè)結(jié)果,然后執(zhí)行程序驗(yàn)證結(jié)果,從而完成從自然語言到程序設(shè)計(jì)語言的過程。
當(dāng)猜數(shù)游戲流程圖拼完整后,教師提出問題:根據(jù)流程圖嘗試用Kitten編寫猜數(shù)小程序。教師指導(dǎo)學(xué)生分析算法流程圖中每個(gè)步驟對(duì)應(yīng)的積木塊,提供編寫好的積木塊,讓學(xué)生動(dòng)手拼接在一起,降低編寫程序的難度。學(xué)生動(dòng)手拖動(dòng)組合完成猜數(shù)小游戲的程序。編完后,試玩的過程會(huì)出現(xiàn)問題,如有的小組只能猜測(cè)一次,有的小組每次猜測(cè)的反饋是相反的,該說“大了”卻說“小了”。教師指導(dǎo)學(xué)生對(duì)照流程圖修改程序錯(cuò)誤,讓學(xué)生建立流程圖描述算法與程序設(shè)計(jì)語言執(zhí)行算法的聯(lián)系,對(duì)計(jì)算機(jī)執(zhí)行算法有個(gè)整體的感知。
拓展提升,在生活中應(yīng)用算法
猜數(shù)游戲的猜數(shù)技巧涉及二分法。二分法在生活中有著廣泛的應(yīng)用。教師提出問題:如何用盡量少的次數(shù)猜中數(shù)字?學(xué)生很快想到要先猜中間數(shù)字,并說出可以把猜數(shù)的范圍縮小一半的想法,教師適時(shí)提出二分法。了解二分法的概念后,教師拋出電線電纜故障問題,100公里長(zhǎng)的電纜中間出現(xiàn)故障,如何快速找到故障點(diǎn),學(xué)生根據(jù)二分法作出反應(yīng),先從中間50公里處開始找,然后逐步縮小范圍,只需經(jīng)過6次檢測(cè)就可以把故障點(diǎn)鎖定在0.2公里之內(nèi)了。由猜數(shù)游戲到二分法,讓學(xué)生由了解算法、掌握算法到在生活中以算法的思維去解決真實(shí)問題,體現(xiàn)了更高的學(xué)科價(jià)值與作用。
參考文獻(xiàn)
李鋒. 新版課程標(biāo)準(zhǔn)解析與教學(xué)指導(dǎo)·小學(xué)信息科技[M]. 北京:北京師范大學(xué)出版社,2022.
武健,康小微.從算法、思維到問題解決實(shí)踐:三步轉(zhuǎn)譯編程教學(xué)法引發(fā)的思考[J]. 中國(guó)信息技術(shù)教育,2023(15): 9-11.
黃榮懷,熊璋.義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)解讀[M]. 北京:北京師范大學(xué)出版社,2022.