孫婷婷
(江蘇南京市青云巷小學(xué),江蘇 南京)
【案例背景】
根據(jù)《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版》的第三學(xué)段(5~6年級)中“身邊的算法”要求,義務(wù)教育信息科技教學(xué)由傳統(tǒng)的注重技能實(shí)操轉(zhuǎn)向更加強(qiáng)調(diào)學(xué)生計(jì)算思維等核心素養(yǎng)的培養(yǎng)。計(jì)算思維是指學(xué)生運(yùn)用計(jì)算機(jī)科學(xué)領(lǐng)域的思想方法,在問題解決過程中涉及的抽象、分解、建模、算法設(shè)計(jì)等一系列思維活動。
小學(xué)生的計(jì)算思維可塑性強(qiáng),且計(jì)算思維是學(xué)生必備的基本能力素養(yǎng)之一。Scratch 圖形化編程語言具有操作簡單、畫面生動、積木搭建、模塊豐富等特點(diǎn),通常用來制作小游戲、動畫、數(shù)學(xué)模型等。這不僅大大提高了學(xué)生的邏輯思維,還實(shí)現(xiàn)了算法應(yīng)用和思維的表達(dá)。通過案例研究分析和編程教學(xué)實(shí)踐,教師可以培養(yǎng)學(xué)生的計(jì)算思維。
【案例分析】
一、教材分析
本課是蘇科版小學(xué)信息科技五年級圖形化編程單元第10 課“小貓出題”。通過小貓隨機(jī)出兩個(gè)數(shù)順序相加,舉一反三,再提出減、乘和除計(jì)算,并拓展出多位數(shù)累加,引出高效的高斯算法。本課旨在讓學(xué)生借助真實(shí)案例,體驗(yàn)問題解決,理解算法是解決某個(gè)特定任務(wù)的方法,是一系列解決問題的清晰指令。在體驗(yàn)過程中,學(xué)生能用自然語言、流程圖等方式描述程序,能在分析程序的過程中進(jìn)一步理解算法規(guī)則。通過完善和調(diào)試程序,驗(yàn)證解決同一問題時(shí)不同算法所執(zhí)行步驟的次數(shù)及時(shí)間效率的高低,從而學(xué)會選擇并優(yōu)化算法。
二、學(xué)情分析
本課的教學(xué)對象是五年級的學(xué)生,他們具有較好的信息操作基礎(chǔ),已經(jīng)學(xué)習(xí)了Scratch 教學(xué)單元的大部分模塊,經(jīng)歷了一些項(xiàng)目的實(shí)踐,掌握了基本的編程方法。他們具有初步的算法意識,但還未形成算法思維,他們的認(rèn)知發(fā)展正處于從具象思維到抽象思維的過渡時(shí)期。在生活或數(shù)學(xué)學(xué)科的學(xué)習(xí)過程中,他們已經(jīng)了解并掌握了一些算法描述的方法和技巧,但是還沒有真正系統(tǒng)全面地認(rèn)識和運(yùn)用算法,同時(shí)缺少對算法的具體認(rèn)識以及綜合分析能力,用計(jì)算機(jī)領(lǐng)域的思維去解決實(shí)際問題的能力并不強(qiáng)。所以在教學(xué)時(shí),教師要把握這一階段學(xué)生的年齡特征和心智模式,注重具象內(nèi)容和抽象內(nèi)容的關(guān)系和平衡。
三、教法分析
從創(chuàng)設(shè)情境、新知學(xué)習(xí)、歸納梳理、拓展提升、遷移應(yīng)用五個(gè)方面分析學(xué)生計(jì)算思維培養(yǎng)的設(shè)計(jì)策略。根據(jù)特定問題,可以使用不同解決方法,并根據(jù)實(shí)際問題需求,優(yōu)化解決方法,選擇合適算法。
【案例描述】
一、創(chuàng)設(shè)情境,引出問題
新課標(biāo)倡導(dǎo)基于真實(shí)問題情境開展項(xiàng)目式教學(xué),借助問題驅(qū)動,結(jié)合流程圖,逆向推導(dǎo),開展教與學(xué)活動。
活動1:小貓出題
問題描述:要求在舞臺上出示1~10 之間的兩個(gè)自然數(shù)相加,這兩個(gè)加數(shù)是隨機(jī)產(chǎn)生的,輸入答案后,程序會自動判斷答案是否正確,怎么實(shí)現(xiàn)?
問題分析:首先,要實(shí)現(xiàn)隨機(jī)兩個(gè)加數(shù),需要用到變量存儲和隨機(jī)顯示這些控件;其次,變量這個(gè)概念是學(xué)生之前沒有接觸過的,如何解釋變量概念并讓學(xué)生能夠理解;最后,自動判斷如何實(shí)現(xiàn)。
小結(jié):借助流程圖,學(xué)生用自然語言描述小貓出題的過程:新建三個(gè)變量分別是和、加數(shù)1 和加數(shù)2;設(shè)置和=加數(shù)1+加數(shù)2;開始判斷輸入的值,如果輸入的值即和=回答,那么外觀顯示答對了,否則顯示錯(cuò)了。這種解決問題的方法,我們稱之為順序執(zhí)行,也叫順序法。
提問:請列舉小貓解決其他計(jì)算問題的事例。
設(shè)計(jì)意圖:本課內(nèi)容以游戲的形式展開,課堂氣氛活躍,學(xué)生能夠快速集中注意力。在問題解決中,流程圖是設(shè)計(jì)作品的基礎(chǔ)和依據(jù),自然引出本課題——小貓出題。通過追問和列舉流程圖過程,學(xué)生明白了順序執(zhí)行算法在學(xué)習(xí)中的應(yīng)用,從而引入后續(xù)的教學(xué)。
二、新知學(xué)習(xí),拆解腳本
通過“小貓出題”活動,學(xué)生對變量概念有了初步的認(rèn)識,引出“數(shù)據(jù)”模塊。通過腳本搭建,將理論分析轉(zhuǎn)化為實(shí)踐操作,最后通過驗(yàn)證,不斷調(diào)試腳本,優(yōu)化思維過程。通過Scratch 語言實(shí)現(xiàn)順序算法,體現(xiàn)計(jì)算思維。
活動2:新建變量、設(shè)置參數(shù)和回答
問題描述:新建變量在“數(shù)據(jù)”模塊中,設(shè)置參數(shù)在“數(shù)字和邏輯運(yùn)算”模塊,回答在“偵測”模塊,需要注意些什么?
要求:參閱書本,小組討論完成。
新建三個(gè)變量,并嘗試命名。
問題分析:順序算法分析,根據(jù)問題描述如下。
①變量要關(guān)注命名過程。
②“數(shù)字和邏輯運(yùn)算模塊”中的四個(gè)模塊可以對變量和數(shù)值進(jìn)行計(jì)算。
③判斷腳本設(shè)置,借助邏輯運(yùn)算。
設(shè)計(jì)意圖:將“小貓出題”腳本作為范例講解,闡述流程簡單且學(xué)生容易理解。繼而拋出一個(gè)與之類似的“兩個(gè)數(shù)的乘法運(yùn)算”,通過知識遷移,讓學(xué)生嘗試模仿,搭建腳本,體驗(yàn)順序結(jié)構(gòu),結(jié)合判斷語句解決問題過程,這樣便能迅速調(diào)動學(xué)生探索的欲望,強(qiáng)化其對邏輯算法的理解,讓學(xué)生在模仿中建構(gòu)Scratch 編程。
三、知識梳理,理解算法
通過上述兩個(gè)活動,筆者總結(jié)出Scratch 語言能夠高效解決數(shù)學(xué)計(jì)算問題。以此類推,其他的簡單算式也可以通過加減乘除來表達(dá),并可以通過后續(xù)的循環(huán)結(jié)構(gòu),設(shè)計(jì)出多道算式的解法。
小結(jié):隨機(jī)出題解決問題的考慮因素:(1)三點(diǎn)關(guān)鍵:對象、范圍和判斷條件。(2)算法特征:結(jié)果=回答,驗(yàn)證正確。(3)程序結(jié)構(gòu):循環(huán)判斷結(jié)構(gòu)。通過循環(huán)多次出題,如可以設(shè)計(jì)小貓出五道題。
順序結(jié)構(gòu),外加循環(huán)并結(jié)合判斷控件可以解決很多有趣的數(shù)學(xué)問題。
設(shè)計(jì)意圖:梳理學(xué)生已經(jīng)建構(gòu)好的框架流程,關(guān)注算法的對象、范圍,確定合適的算法,并為后面的多個(gè)算法提供基礎(chǔ),幫助學(xué)生形成編程解決問題的思想和方法。
四、拓展提升,應(yīng)用算法
活動3:計(jì)算1+2+3+…+100=?
問題描述:這是一道數(shù)學(xué)思維題,從1 累加到100求和,用Scratch 編程方法設(shè)計(jì)程序腳本。這種相較之前的出題,稍有區(qū)別。如果用硬算的方法,對于學(xué)生比較復(fù)雜,但是對于計(jì)算機(jī)卻是非常容易的。
問題分析:(1)涉及的數(shù)字范圍?(2)一共累加多少次?如何實(shí)現(xiàn)重復(fù)?(循環(huán))(3)公式表達(dá)?
參考計(jì)算過程:
第1 步:0+1=1;
第2 步:1+2=3;
第3 步:3+3=6;
......
第100 步:4950+100=5050。
從上述的計(jì)算過程,我們可以看出,其實(shí)每一步計(jì)算的數(shù)字變化和計(jì)算方式都是有規(guī)律的,這就非常適合使用循環(huán)結(jié)構(gòu)來表達(dá)。
如果用Sn表示從1 累加到100 的自然數(shù)的和,用i表示1 到100 變化的加數(shù),那么上述計(jì)算過程的規(guī)律就是:每一步都是用上一步累加的和Sn加上每一步變化的加數(shù)i。這個(gè)計(jì)算規(guī)律可用公式Sn=Sn+i 來表示。(這里“=”是賦值的意思)
驗(yàn)證過程:(1)新建變量Sn和i;(2)將Sn和i 的初始值分別設(shè)定為0 和1;(3)將Sn設(shè)定為上一次累加的和Sn加上本次變化的加數(shù)i,每重復(fù)執(zhí)行一次,就將循環(huán)變量i 增加1,共重復(fù)執(zhí)行100 次;(4)添加“說….2秒”和“停止”這兩個(gè)控件。(5)單擊綠旗執(zhí)行所有腳本。
設(shè)計(jì)意圖:通過前面案例的學(xué)習(xí),學(xué)生已經(jīng)熟練掌握了兩個(gè)隨機(jī)加數(shù)的腳本制作。這里將設(shè)計(jì)多個(gè)確定加數(shù)運(yùn)算作為對象,不僅可以拓展鞏固前面的教學(xué)內(nèi)容,還可為下一個(gè)簡便高斯算法活動做鋪墊。通過重復(fù)執(zhí)行100 次循環(huán)的引入,學(xué)生掌握了多對象加法的算法編程結(jié)構(gòu)。
五、舉一反三,遷移應(yīng)用
活動4:計(jì)算1+2+3+…+99+100=?高斯算法
問題描述:在一次數(shù)學(xué)課上,教師同樣提出了這個(gè)數(shù)學(xué)問題:1+2+3+…+99+100=?小高斯并沒有運(yùn)用依次累加的方法,而是另辟蹊徑,他是全班唯一一個(gè)又快又準(zhǔn)地答對問題的同學(xué)。
問題分析:(1)涉及的數(shù)字范圍?(2)如何組合?(3)公式表達(dá)?
從上述的計(jì)算過程,我們可以看出,每組圓球上下相加都是101 個(gè),這就非常適合用公式來表達(dá)。
同樣用Sn表示從1 累加到100 的自然數(shù)的和,用首項(xiàng)表示1 到100 變化的第一個(gè)自然數(shù),末項(xiàng)表示最后一位自然數(shù),項(xiàng)數(shù)代表從首項(xiàng)到末項(xiàng)一共有多少個(gè)自然數(shù)。上述計(jì)算過程的規(guī)律就是:用首項(xiàng)加末項(xiàng)的和乘以項(xiàng)數(shù),最后再除以2。這個(gè)計(jì)算規(guī)律可用公式Sn=(首項(xiàng)+末項(xiàng))×項(xiàng)數(shù)/2 來表示。
驗(yàn)證過程:(1)新建變量Sn、首項(xiàng)、末項(xiàng)和項(xiàng)數(shù);(2)將Sn、首項(xiàng)、末項(xiàng)和項(xiàng)數(shù)的初始值均設(shè)定為0;(3)將Sn設(shè)定為上一次累加的和Sn加上本次變化的加數(shù)i,每重復(fù)執(zhí)行一次;(4)通過偵測模塊里面的“詢問……并等待”控件,將首項(xiàng)、末項(xiàng)和項(xiàng)數(shù)三個(gè)變量均設(shè)定為回答。(5)借助數(shù)字和邏輯運(yùn)算模塊將Sn公式進(jìn)行表達(dá)。(6)外觀模塊顯示輸出結(jié)果。
思考:上述腳本中,程序腳本需要執(zhí)行幾次?相較于之前的逐個(gè)累加算法,高斯算法的優(yōu)點(diǎn)是什么?
高斯算法只需要執(zhí)行1 次,從時(shí)間復(fù)雜度和空間復(fù)雜度綜合考慮算法的效率,有效減少了計(jì)算機(jī)的執(zhí)行次數(shù),縮小了累加范圍,實(shí)現(xiàn)了算法方案的最優(yōu)化。
小結(jié):通過對比,我們發(fā)現(xiàn),同一個(gè)問題可以從不同的角度思考解決問題的過程。高斯算法提升了算法執(zhí)行效率,因此在解決實(shí)際問題時(shí)應(yīng)用更為廣泛。
設(shè)計(jì)意圖:通過經(jīng)典數(shù)學(xué)題“高斯算法”案例,進(jìn)一步鞏固本課教學(xué)目標(biāo),學(xué)生基本掌握了運(yùn)用Scratch 編程解決生活中的數(shù)學(xué)問題,并能獨(dú)立編寫完整腳本。同時(shí),通過比較兩種算法方案,引出算法優(yōu)化的思想,提高計(jì)算機(jī)的執(zhí)行效率,讓學(xué)生體會算法優(yōu)化的必要性,培養(yǎng)學(xué)生從多角度分析問題、驗(yàn)證問題的能力,形成高階思維。
拓展提問:你聽過《九章算術(shù)》典籍嗎?里面有很多有趣的算法,你可以嘗試結(jié)合今天所學(xué),運(yùn)用Scratch 編程設(shè)計(jì)。
設(shè)計(jì)意圖:通過從中華典籍中拋出問題,拓展遷移算法的更多應(yīng)用,總結(jié)算法的思想,將算法作為學(xué)習(xí)的要點(diǎn),讓學(xué)生養(yǎng)成算法思維,形成解決問題的思路。
【案例反思】
一、明晰課標(biāo)要求,精準(zhǔn)設(shè)計(jì)案例
算法是學(xué)生計(jì)算思維的核心要素之一,新課標(biāo)要求以學(xué)生身邊的算法為載體,從生活實(shí)際出發(fā),運(yùn)用多種方法解決問題?!靶∝埑鲱}”考查的是隨機(jī)列出兩位數(shù)的加法,相對比較簡單,學(xué)生基本能夠通過流程圖講解,搭建過程腳本,拓展到經(jīng)典高斯算法,在由淺入深的一個(gè)個(gè)活動和問題鏈中感受算法的概念與特征。教師要運(yùn)用合適的描述方法和控制結(jié)構(gòu)幫助學(xué)生理解,體驗(yàn)使用圖形化編程實(shí)現(xiàn)算法程序設(shè)計(jì)的方法,感受算法效率的重要性,在不斷的調(diào)試驗(yàn)證中感受成功的喜悅。所以,教師前期的精準(zhǔn)教學(xué)設(shè)計(jì)和提前預(yù)設(shè)對學(xué)生的計(jì)算思維培養(yǎng)和邏輯性養(yǎng)成有重要意義。教學(xué)設(shè)計(jì)不僅要在內(nèi)容上凸顯新課標(biāo)的要求,更要在理念上彰顯新課標(biāo)的精神。如在順序算法的理解基礎(chǔ)上,進(jìn)行累加算法和衍生出的高斯算法,體現(xiàn)了新課標(biāo)強(qiáng)調(diào)的“科”與“技”并重的理念,以及技術(shù)定位即驗(yàn)證、模擬,體現(xiàn)高階思維和深度學(xué)習(xí)。
二、分析教學(xué)內(nèi)容,有效開展活動
新課標(biāo)中強(qiáng)調(diào):“學(xué)生能進(jìn)一步判斷解決同一問題的不同算法在時(shí)間效率上的高低?!敝觳侍m博士曾公開講座表示:新課標(biāo)的編程活動,一方面要引導(dǎo)學(xué)生將初步獲得的理論應(yīng)用于實(shí)踐,檢驗(yàn)、驗(yàn)證算法的執(zhí)行可行性和執(zhí)行時(shí)間效率;另一方面要借助實(shí)踐活動加深學(xué)生印象,促進(jìn)學(xué)生理解,實(shí)現(xiàn)認(rèn)識與實(shí)踐的雙重循環(huán)。本節(jié)課筆者設(shè)計(jì)的四個(gè)活動均圍繞教學(xué)目標(biāo)展開,層層遞進(jìn)、系列關(guān)聯(lián)、邏輯性強(qiáng)、逐步優(yōu)化,引導(dǎo)學(xué)生經(jīng)歷算法解決問題的過程,推動了學(xué)生算法知識的學(xué)習(xí),思維品質(zhì)得到提升。教學(xué)活動還要體現(xiàn)探究性、開放性、實(shí)踐性和可行性,使學(xué)生能夠閱讀理解,修改運(yùn)行程序等,并保證學(xué)生至少掌握和正確運(yùn)用一種算法。學(xué)生在體驗(yàn)中具備了獨(dú)立思考的機(jī)會,課堂中適當(dāng)安排小組協(xié)作,引導(dǎo)學(xué)生進(jìn)行探究和交流。在全班互動的基礎(chǔ)上,靈活進(jìn)行學(xué)生自評、互評和師評,提高班級整體參與度,進(jìn)而提高課堂效率。
三、搭建學(xué)習(xí)支架,革新思維過程
在圖形化教學(xué)編程中,筆者結(jié)合學(xué)生反饋與課堂表現(xiàn),提供個(gè)性化的助學(xué)支架。借助流程圖、微視頻和程序腳本等可視化媒體資源,幫助學(xué)生深層次體驗(yàn)算法解決問題的全過程。通過對比不同的算法方案,學(xué)生能充分體會算法優(yōu)化的意義,從而全面提升學(xué)生的計(jì)算思維能力。
新課標(biāo)強(qiáng)調(diào),在信息科技教學(xué)中,教學(xué)內(nèi)容要滲透計(jì)算思維,而算法作為核心要素之一,對學(xué)生的重要性不言而喻。聚焦小學(xué)生計(jì)算思維素養(yǎng)培養(yǎng),將知識建構(gòu)、技能培養(yǎng)與思維發(fā)展融入教與學(xué)全過程,還需要我們更加積極探索有效的策略方法。而后筆者也將繼續(xù)遵循學(xué)生的身心發(fā)展規(guī)律,甄選主題內(nèi)容和基礎(chǔ)知識,細(xì)化育人目標(biāo),優(yōu)化課程組織形式,全面提高學(xué)生的信息素養(yǎng)。