趙 斌
(江蘇省太倉市明德高級中學(xué) 江蘇太倉 215400)
2017年7月,國務(wù)院印發(fā)了新一代人工智能發(fā)展規(guī)劃,在人工智能普及方面,提出了實(shí)施全民智能教育項目,在中小學(xué)階段設(shè)置人工智能課程,逐步推廣編程教育;教育部于2018年3月初公布了《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017版)》,提出信息技術(shù)的核心素養(yǎng),其中計算思維應(yīng)運(yùn)而生,強(qiáng)調(diào)學(xué)生應(yīng)以計算思維的方式看待問題、分析問題、解決問題,強(qiáng)調(diào)對信息與數(shù)據(jù)的合理組織,通過綜合分析各種信息資源,運(yùn)用自然語言、流程圖等形式描述、理清思維,增強(qiáng)語義理解,進(jìn)行邏輯思維重定向,輔助開發(fā)數(shù)學(xué)思維,通過設(shè)計合理的算法,形成問題解決合理且行之有效的方案。
多年來,計算機(jī)教育一直被認(rèn)為少理論及過度強(qiáng)調(diào)工具,普通高中信息技術(shù)課程標(biāo)準(zhǔn)的頒布進(jìn)一步要求教師要讓學(xué)生學(xué)會自主學(xué)習(xí)、健康生活,通過核心素養(yǎng)的培養(yǎng),樹立正確的學(xué)習(xí)觀;通過實(shí)踐創(chuàng)新活動,靈活利用信息技術(shù),增強(qiáng)信息意識和責(zé)任,提升信息素養(yǎng),傳播計算機(jī)科學(xué)的魅力、讓學(xué)生愉悅地進(jìn)行學(xué)科知識學(xué)習(xí),積攢創(chuàng)新學(xué)習(xí)的力量。
從心理學(xué)角度,廣義上來講,思維是與大腦有關(guān),是高級的心理活動,是認(rèn)識的高級形式,是人腦對現(xiàn)實(shí)事物的概括加工,揭露了事物的本質(zhì)特征。從狹義的角度來講,思維就是邏輯思維。計算機(jī)學(xué)科和數(shù)學(xué)學(xué)科,在思維培養(yǎng)方面,具有不可或缺的連帶關(guān)系,數(shù)學(xué)學(xué)科主要培養(yǎng)理論思維,以推理和演繹為特征,培養(yǎng)學(xué)生的數(shù)學(xué)邏輯思維;計算機(jī)學(xué)科主要培養(yǎng)計算思維,主要以設(shè)計和結(jié)構(gòu)為特征,運(yùn)用計算機(jī)科學(xué)的基礎(chǔ)概念,設(shè)計系統(tǒng),讓計算機(jī)能理解人類的行為,通過運(yùn)用適當(dāng)?shù)木幊陶Z言,以遞進(jìn)、并行等方式,啟發(fā)式開展推理,引導(dǎo)學(xué)生對問題進(jìn)行分解,發(fā)現(xiàn)梳理規(guī)律,得出結(jié)論,最終完成知識的積累與延伸。
計算機(jī)處理問題,可以看作模仿人的思維,程序員(編程人員)根據(jù)問題,從計算機(jī)運(yùn)行的角度出發(fā),執(zhí)行如下四個步驟:
第一,解析問題(分析),將問題進(jìn)行拆分,厘清各個部分的屬性,將一個大問題拆分成小問題,分而治之,再綜合分析。
第二,模式識別(比較):找出拆分后各個部分之間的異同,考慮問題與問題之間的銜接,也可延伸到因?qū)W段的不同,結(jié)合不同學(xué)段的重點(diǎn)開展符合學(xué)段的教育思想與方法。
第三,模式歸納(抽象):探求出模式識別后問題背后的一般規(guī)律,從規(guī)律入手,理順符合一般思考的過程。
第四,算法設(shè)計(綜合):對找出的規(guī)律,運(yùn)用計算機(jī)可以理解的方式進(jìn)行問題解決方法的設(shè)計。
因此,計算思維其實(shí)是一個逐步分解,層層歸納,最終總結(jié)出問題解決思路的思維模式,能夠不斷提高學(xué)生的抽象思維和邏輯思維,培養(yǎng)面對模糊、復(fù)雜、開放性問題時能有解決問題的自信心和行動力。
本文以數(shù)學(xué)中斐波那契數(shù)列為例,描述在計算思維培養(yǎng)方面所做的一些嘗試,分析在問題或項目解決的過程中,如何以學(xué)生為中心,培養(yǎng)其信息技術(shù)核心素養(yǎng)。
基礎(chǔ)問題描述:斐波那契數(shù)列,又被稱為黃金分割數(shù)列或兔子數(shù)列,指的是諸如這樣的一個數(shù)列:1、1、2、3、5、8、13、21、34、55、89、144……,在數(shù)學(xué)上被如下遞推的方法進(jìn)行定義:F(1)=1,F(xiàn)(2)=2,F(xiàn)(n)=F(n-1)+F(n-2)(n≥3,n∈N)。
通過設(shè)計兩個基礎(chǔ)問題,在分析、討論和生成解決方案的過程中,運(yùn)用編程語言實(shí)現(xiàn)目標(biāo),幫助學(xué)生理解思維問題計算機(jī)處理的一般過程。
問題情景一:打印出指定第k個位置上的數(shù)字,例如第10個位置上,輸出當(dāng)前位置的數(shù)列值為55。
邏輯思維的引入,以數(shù)學(xué)的角度引導(dǎo)學(xué)生,根據(jù)斐波那契數(shù)列推導(dǎo)公式,推導(dǎo)出第10個位置的數(shù)值計算公式為:f(10)=f(9)+f(8),觀察推導(dǎo)中的計算公式,發(fā)現(xiàn)f(9)和f(8)成為新的未知數(shù),還應(yīng)該重復(fù)之前的操作進(jìn)行推導(dǎo),進(jìn)行逆向計算后,最終得出f(10)的答案為55。基本模式如圖1所示,從右往左,依次計算相應(yīng)位置的數(shù)值,直至得出規(guī)定位置的數(shù)字為止。
圖1
計算思維的引入,引導(dǎo)學(xué)生描述計算機(jī)處理問題的一般過程,根據(jù)數(shù)學(xué)思維的學(xué)習(xí)過程,引入兩個初始變量a,b,分別指向F1和F2,存儲F1和F2的值,初始值均設(shè)為1;引入第三個變量c,存儲的內(nèi)容為a和b兩者的和,同時將a和b指向進(jìn)行左移,分別指向F2和F3;重復(fù)相同的過程,直至F10被計算出來為止?;灸J饺鐖D2所示。通過變量的應(yīng)用,理解計算機(jī)處理數(shù)據(jù)的基本方法,即運(yùn)用計算機(jī)能理解的方式,逐步模擬人的思維模式,完成程序的運(yùn)行。在此過程中,除了使用自然語言進(jìn)行描述,也可以使用流程圖來輔助理解程序運(yùn)行的過程,更直觀地了解值在處理過程中的改變,進(jìn)一步理解計算機(jī)模擬問題解決的方式方法,流程圖如圖3所示。
圖2
圖3
進(jìn)一步挖掘細(xì)究,在計算思維的學(xué)習(xí)、提升的過程中,考慮計算機(jī)的特殊性,引入相應(yīng)的概念來輔助程序的完成,比如本例中的變量及表示的數(shù)據(jù)類型以及范圍的合理考慮等,也是培養(yǎng)學(xué)生計算思維、邏輯嚴(yán)密性的根本所在。除此之外,分析問題解決中的計算機(jī)運(yùn)行的特點(diǎn),即處理重復(fù)工作,引出在計算思維中很重要的循環(huán)概念,簡化描述的步驟,形成最終的解決思路。在教學(xué)、學(xué)習(xí)的過程中普及程序設(shè)計中的基礎(chǔ)概念和基礎(chǔ)結(jié)構(gòu),如圖4、圖5所示,描述了C++環(huán)境下的解決方案,觀察解決方案的不同,學(xué)生進(jìn)行關(guān)鍵特征分析。
圖4
圖5
拋開C++程序的規(guī)范問題,單從解決問題的角度出發(fā),剖析分解,層層歸納,通過變量存儲相應(yīng)的數(shù)據(jù),通過for循環(huán)完成向左遞推的任務(wù),引入遞歸的思想,提升學(xué)生的信息素養(yǎng),如圖5所示,引導(dǎo)學(xué)生分析程序處理方式的不同。從表面上看,程序上雖然沒有體現(xiàn)出循環(huán),但是究其本質(zhì),還是體現(xiàn)了循環(huán)的概念,通過不斷調(diào)用本身直至所需的位置計算出數(shù)值為止,進(jìn)一步引導(dǎo)分析與循環(huán)方式的不同,體現(xiàn)出計算機(jī)解決問題的一個顯著特點(diǎn),即分而治之,方法多樣且符合計算機(jī)運(yùn)行的規(guī)律。
通過問題一的解決,從數(shù)學(xué)思維角度向計算思維角度進(jìn)行轉(zhuǎn)換,以計算機(jī)運(yùn)行的視角重新審視問題,縮小問題范圍,不斷剖析、歸納,了解算法解決問題的思路,培養(yǎng)了學(xué)生信息處理的意識和計算思維的能力。
問題情景二:輸出至k(3≤k≤46)個位置上的所有的數(shù)字,每個數(shù)字之間用分隔符分開;每五個數(shù)字為一行,換行顯示所有的數(shù)字。
在完成指定位置上數(shù)字輸出的基礎(chǔ)上,逐步深化引導(dǎo),進(jìn)一步分析問題,縮小范圍,歸納思路,提出修改,實(shí)施評估。舉例示范,在遞歸的基礎(chǔ)上修改方案并實(shí)施,即引入for循環(huán),依次通過遞歸的方式輸出所在位置的數(shù)值,通過求余的方式實(shí)施換行,考慮語句的運(yùn)行順序,及時在換行前進(jìn)行數(shù)值的輸出。針對問題的解決過程,貫通了問題與問題之間的銜接,引導(dǎo)學(xué)生對模式進(jìn)行識別,探索規(guī)律,進(jìn)一步理解遞歸與循環(huán)的區(qū)別和聯(lián)系,如圖6所示。
圖6
拋出問題,提升教學(xué)效果,例如如何在圖4的基礎(chǔ)上輸出所有數(shù)據(jù),同樣要求按每五個換行的模式進(jìn)行輸出,引導(dǎo)學(xué)生分析,在過程中關(guān)注知識的遷移和模式的歸納。通過模擬、分析、討論等過程形成問題解決方案,在運(yùn)行的過程中,不斷地驗(yàn)證與調(diào)整,提升信息處理意識,增強(qiáng)計算思維與邏輯思維的培養(yǎng)。
信息技術(shù)教育的最終目標(biāo)是培養(yǎng)具有一定信息素養(yǎng)的學(xué)生,鼓勵學(xué)生思維進(jìn)階,進(jìn)一步挖掘問題,注重進(jìn)行問題驗(yàn)證。以討論分析斐波那契數(shù)列和黃金分割數(shù)的關(guān)系為例,通過問題驗(yàn)證的過程分析,進(jìn)一步理清計算思維和理論思維之間的關(guān)系和區(qū)別,進(jìn)一步理解信息技術(shù)核心素養(yǎng)。
問題描述:黃金分割數(shù)的計算,輸出在第幾個位置數(shù)列打印后,能得出0.618的數(shù)字(保留三位數(shù))。
分析問題:首先明確在斐波那契數(shù)列中,黃金分割數(shù)是由當(dāng)前位置前一個位置的數(shù)據(jù)和當(dāng)前位置的數(shù)據(jù)相除后所得。
分析要點(diǎn):
第一,首先考慮計算機(jī)如何保存這些數(shù)據(jù),引出浮點(diǎn)數(shù)以及數(shù)組的學(xué)習(xí)。
第二,思考三位數(shù)保留的概念,即在計算機(jī)中如何判斷和界定左、右邊界的數(shù)據(jù)。
第三,位置數(shù)據(jù)查出后,如何終止程序,在得出結(jié)論的同時,使之不再執(zhí)行后續(xù)的循環(huán),減少程序運(yùn)行時間,提升程序運(yùn)行效率,確保算法和程序的可行性和合理性。
結(jié)合上述分析要點(diǎn),學(xué)生討論、分析,考慮核心程序的修改,嘗試解決需求,形成計算機(jī)解決問題的思路。通過數(shù)組空間的開辟,保存數(shù)列中的數(shù)值,根據(jù)四舍五入的方式,確定左右邊界值,引導(dǎo)學(xué)生查閱資料,對for循環(huán)中的continue和break語句進(jìn)行理解,充分發(fā)揮學(xué)生的主觀能動性。程序示例如圖7所示。
圖7
通過對斐波那契數(shù)列數(shù)學(xué)邏輯思維轉(zhuǎn)為計算思維的研究過程中,在學(xué)科區(qū)別的對比中,理解體會計算思維的培養(yǎng),明確計算思維其實(shí)就是一個把復(fù)雜、困難問題進(jìn)行求解的過程。在思維方法的運(yùn)用中,從計算機(jī)技術(shù)角度出發(fā),通過將復(fù)雜的、大而難的問題分成多個部分去解決,體現(xiàn)了計算機(jī)并行、分而治之的處理方式;當(dāng)分解出來的問題不能直接解決的時候,還應(yīng)繼續(xù)分解,也是一種分而治之的思維訓(xùn)練,經(jīng)過多維分析,抽象和分解并存的方法,控制龐雜任務(wù)的完成。通過其中一個或幾個適合的方式來陳述問題,建模處理,期望通過概念化、結(jié)構(gòu)化的方法培養(yǎng)工程思維,提升計算思維,圍繞計算思維的六步培養(yǎng)法:問題界定、組織分析、數(shù)據(jù)抽象、自動化處理、確認(rèn)分析和概括遷移的步驟進(jìn)行鞏固強(qiáng)化和提升。
綜上所述,計算思維的培養(yǎng)是一個系列化的過程,具有一定的規(guī)律性。在規(guī)律探究的過程中尋求突破,在突破過程中,加深問題分析、處理、解決思路的擴(kuò)展,明確計算思維處理方式的特點(diǎn),進(jìn)一步提升計算思維能力,為以后的終身學(xué)習(xí)和創(chuàng)新學(xué)習(xí)打好基礎(chǔ)。