馬富泰 遼寧省大連市甘井子區(qū)紅旗中心小學(xué)
《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》(以下簡稱“新課標(biāo)”)中將計算思維列為四大核心素養(yǎng)之一。其對計算思維的描述是:個體運(yùn)用計算機(jī)科學(xué)領(lǐng)域的思想方法,在問題解決過程中涉及的抽象、分解、建模、算法設(shè)計等思維活動。那么,如何在小學(xué)信息科技教學(xué)中培養(yǎng)學(xué)生的計算思維呢?計算思維中的抽象、分解、算法、驗證、優(yōu)化、遷移等要素又是如何在教學(xué)中體現(xiàn)的呢?下面,筆者以小學(xué)五年級圖形化編程《猜數(shù)字》一課為例,具體闡述。
新課標(biāo)指出,學(xué)校應(yīng)模擬真實的生活場景,讓學(xué)生在場景中解決問題,并能夠由此遷移到未來生活之中。模擬情境能夠充分調(diào)動學(xué)生學(xué)習(xí)的主動性和積極性,讓每個學(xué)生都主動參與到學(xué)習(xí)中去,為計算思維的培養(yǎng)奠定良好的基礎(chǔ)。
教師提問:“同學(xué)們,你們有沒有玩過‘猜數(shù)字’的游戲?誰愿意給大家表演一下?”教師邀請表演者A、B、C,他們各自的任務(wù)如下。A:先在紙上寫一個只有自己知道的1~100以內(nèi)的整數(shù),并說出猜數(shù)者的結(jié)果是大了、小了還是對了;B:根據(jù)A的提示在1~100之間猜數(shù);C:在黑板上記錄B猜了幾次,如果達(dá)到限定的10次,說出提示語“很遺憾,下次繼續(xù)努力”。第一輪猜數(shù)的學(xué)生猜數(shù)時沒有技巧,以失敗告終。第二輪學(xué)生使用了猜數(shù)技巧,挑戰(zhàn)成功!教師順勢提出本節(jié)課的問題:能不能用程序編寫一個猜數(shù)字的程序?
計算思維中的抽象是指將現(xiàn)實中的對象轉(zhuǎn)為計算機(jī)可以處理的對象,將一個現(xiàn)實問題轉(zhuǎn)變?yōu)橛嬎銠C(jī)可以處理的問題。本課中,如何將“猜數(shù)”轉(zhuǎn)變?yōu)橛嬎銠C(jī)可以處理的對象就是計算思維中的“抽象”。
課堂中,筆者采用的方法是先讓學(xué)生說一說表演的哪一部分可以用編程中的命令來實現(xiàn)。學(xué)生自然而然地將大部分的對象轉(zhuǎn)變?yōu)槌绦蛑械拿睿瑐€別難以抽象的問題,教師可以讓學(xué)生合作探究,這樣更有利于計算思維的培養(yǎng)。
在抽象的過程中如果遇到很復(fù)雜的問題,教師可以引導(dǎo)學(xué)生對問題進(jìn)行分解。計算思維中的分解是指將一個復(fù)雜的大問題分解為若干個易于解決和實現(xiàn)的小問題。本節(jié)課中的“四次判斷”對于剛升入五年級的學(xué)生來說比較難,教師可以在黑板上用圖示法將此問題分解(如圖1),這樣不但解決了難點,理順了邏輯順序,而且為進(jìn)一步提煉算法打下了基礎(chǔ)。
算法是解題方案的準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制,是計算思維的核心要素之一。小學(xué)階段主要是讓學(xué)生了解日常生活中的算法,知道任何一個問題都有不同的解決方案,并能根據(jù)實際需要選擇最優(yōu)方案。如何用程序來描述“猜數(shù)字”的過程?經(jīng)過一系列的抽象與分解,學(xué)生初步明確了如何編寫程序。由于學(xué)生的思維水平不盡相同,編程中難免會出現(xiàn)各種各樣的問題,此時教師不要急于提供答案,可以新課標(biāo)“素養(yǎng)導(dǎo)向”為引領(lǐng),采用小組合作探究、觀察流程圖(如圖2)、補(bǔ)充流程圖、繪制流程圖等方法,促進(jìn)學(xué)生的計算思維進(jìn)一步發(fā)展。
驗證優(yōu)化是培養(yǎng)計算思維不可或缺的重要環(huán)節(jié)。新課標(biāo)指出,具備計算思維的學(xué)生,能夠嘗試模擬、仿真、驗證解決問題的過程,反思、優(yōu)化解決問題的方案。由于思維的慣性,學(xué)生很難檢查出哪個命令或哪一部分程序有問題。筆者給出的驗證方法是:顯示變量a,在知道答案的前提下逐一驗證程序中的四次判斷;請同組學(xué)生幫忙測試;與流程圖對照檢驗等。通過多種方法驗證,學(xué)生找出了自己的錯誤,不但完善了程序的設(shè)計,而且促進(jìn)了計算思維的發(fā)展。
學(xué)生通過不斷嘗試后發(fā)現(xiàn)用“減半法”猜數(shù)最快,既然用“減半法”猜數(shù)字很快,那么計算機(jī)程序又是如何運(yùn)用“二分查找”法來猜數(shù)字的呢?逆向推理對學(xué)生的計算思維有了更高的要求,在推理驗證的過程中不但探究了“二分查找”算法的算理,而且更好地培養(yǎng)了學(xué)生的計算思維。
課堂上,教師先演示“二分查找”法的猜數(shù)程序,讓學(xué)生感知其查找過程,激發(fā)求知欲。在教學(xué)算理的過程中,教師讓10位學(xué)生用1~10的數(shù)字卡片模擬二分查找過程,即先將計算思維形象化,再將直觀形象的表演進(jìn)行抽象概括,從而培養(yǎng)學(xué)生的計算思維向更深層次發(fā)展。10張卡片按序排列(說明二分查找的前提是一組有序數(shù)列),先查找哪個數(shù)?數(shù)字5是如何計算出來的呢?討論后得出結(jié)論:中間數(shù)=向下取整([最小數(shù)+最大數(shù))/2]。找到中間數(shù)后在卡片上做個標(biāo)記,將中間數(shù)與目標(biāo)數(shù)進(jìn)行比較,判斷是“大了”“小了”還是“對了”。如果“小了”,那么就將1~5的卡片放下,表示排查出一半;接著查找剩下部分的中間數(shù),這時最小數(shù)的變量發(fā)生了變化(最小數(shù)=最小數(shù)+1),再次計算中間數(shù)后,同樣做標(biāo)記,同樣排查出一半。如果“大了”,最大數(shù)的變量發(fā)生了變化(最大數(shù)=最大數(shù)-1)。以此類推。最后,教師讓學(xué)生把標(biāo)記過的中間數(shù)舉起來,進(jìn)行算理總結(jié):二分查找就是通過不斷地查找中間數(shù),用中間數(shù)與目標(biāo)數(shù)進(jìn)行比較判斷,從而逐步縮小范圍,直到“中間數(shù)=目標(biāo)數(shù)”查找成功為止。有了算理的支持,再加上教師準(zhǔn)備的教學(xué)支架,程序驗證“二分查找”就迎刃而解了。
新課標(biāo)指出,具備計算思維的學(xué)生能將驗證、優(yōu)化后的解題方案遷移運(yùn)用于解決其他問題。本節(jié)課可以通過練習(xí)環(huán)節(jié)引導(dǎo)學(xué)生將所學(xué)知識應(yīng)用到學(xué)習(xí)生活中,筆者設(shè)計了三道知識遷移練習(xí)題(如圖3)。
教師還可以引導(dǎo)學(xué)生將本節(jié)課的某一個知識點遷移到其他程序編寫中。例如,“回答”與“變量”的比較,這種命令就廣泛地應(yīng)用于“密碼驗證”“100以內(nèi)加減法”“知識問答”等程序中。課堂上教師要充分挖掘可遷移的知識點,積極促進(jìn)學(xué)生知識的有效遷移。