張玉潔 江蘇省南京外國語學校
《普通高中信息技術課程標準(2017年版)》(以下簡稱“新課標”)在學科核心素養中對學生的計算思維提出了要求。通過計算思維的培養,學生可以掌握如何分析新信息和處理新問題。現階段,信息技術課堂對學生計算思維的培養大多通過開設編程課來實現,在課堂上學生能夠運用編程語言解決問題被認為是有效的計算思維的培養,但編程要做的絕不僅僅是對學生進行技術訓練,而是要關注如何讓學生理解和掌握編程背后用到的思維的過程。筆者結合新課標對計算思維框架的定義與要求,提出了基于計算思維框架的編程教學模式,在信息技術編程課堂上指導學生運用計算思維框架來思考問題,從而有效引導并培養學生的計算思維能力。下面,結合具體案例展示如何使用計算思維框架進行編程教學。
新課標在對計算思維的定義中,明確計算思維的要素主要包括抽象、分解、算法、模式識別、泛化和評估,筆者基于六要素提出了基于計算思維框架的編程教學模式,將計算思維的六要素以具體化的思維活動貫穿于課堂教學活動中,從而完成對學生計算思維能力的培養。下表展示了計算思維框架的步驟及每個步驟被具體化的思維活動。

計算思維框架步驟及具體化的思維活動
結合提出的計算思維框架,筆者以《for循環打印字符圖形》為例,以難度遞進的四個任務為主線,運用計算思維框架,探索信息技術編程課堂中基于計算思維框架的編程教學模式的具體實施。
任務一:編程輸出n行m列的*號矩形。當n=5,m=8時,輸出如圖1所示的圖形。
對于圖1所示的矩形,引導學生運用計算思維的6個步驟來分析,實現過程如下(以n=5,m=8為例)。
模式識別——輸出的矩形中存在重復的模式,每行作為一個整體,那么問題就變成了輸出一行*號,并重復5次(如圖2)。

圖2
分解——輸出一行*號還是無法直接用輸出語句實現,本例中輸出一行8個*號可以分解成輸出一個*號不換行,此動作重復8次。
抽象——經過前面兩步,問題可以抽象成:①輸出一個*號不換行,重復8次;②輸出一行*號重復5次。
算法——基于上述分析,可以得出一個步驟列表:①輸入行號n和列號m;②重復執行抽象、算法步驟n次;③重復執行輸出*號m次不換行;④換行。
泛化——如果將本題進行變換,輸出其他的圖形或者數字,上述思想同樣適用。因此,我們可以將問題進行抽象,用于解決輸出相同形狀的符號矩形問題。
評估——上述算法可以簡潔有效地解決輸出*號矩形的問題,并且有很強的復用性,類似輸出字符圖形的問題都可以用此模板來解決。
在完成任務一的基礎上,將任務一進行變換,實現輸出圖1所示的*號直角三角形。學生仍然運用計算思維框架來分析完成。在課堂實施過程中,學生快速地完成了模式識別這一步驟。在分解這一步驟,由于每行做的事情仍然是重復輸出一個*號,不同點在于每行輸出的*號個數不同,因此重復次數不同。引導學生觀察每行*號個數的出現規律,第一行1個*號,第二行2個*號……第五行5個*號,可以得出結論每行的*號數與行數相同,因此抽象出每行*號重復次數與行數相等。基于上述分析,學生很容易地完成了算法過程,并能快速編程實現。
進一步給出輸出圖1所示*號平行四邊形的任務。平行四邊形和前面圖形的區別在于需要在輸出*號前輸出空格,因此存在相同的模式即每行先輸出空格再輸出*號。在分解階段,將每行輸出內容分解為先輸出空格不換行,重復若干次,再輸出*號不換行,重復5次。學生觀察空格規律得出每行輸出的空格數為行數減一。基于以上分析,問題可以抽象為輸出一個空格不換行,重復次數為行數減一次,緊接著輸出一個*號不換行,重復5次。將上面的操作重復行數次即可實現輸出*號平行四邊形。

圖1
經過運用計算思維框架完成三個圖形的輸出任務后,學生對計算思維的一系列思維活動有了清晰的認知,能夠較為熟練地運用計算思維框架去思考并解決問題。因此在課程最后,拋出一個與前面的任務有關聯但是有難度跨度的問題,即編程輸出如下頁圖3所示的乘法口訣表。

圖3
輸出九九乘法表的計算思維過程如下。
模式識別——此圖存在重復的模式,每行輸出和行數相同個數的等式。每行中等式的第一個乘數是遞增的,第二個乘數相同。
分解——具體分析每一個等式,可以分解為先輸出第一個乘數,輸出x號,輸出第二個乘數,輸出等號,最后輸出兩個數的乘積。
抽象——觀察可得,每一行等式的第一個乘數從1變化到行數n,第二個乘數和行數n相等。因此問題可抽象為:①每行輸出行數個等式;②每個等式表示為i*j=res,其中i表示當前行的第幾個等式,j表示當前的行數,res表示i乘以j的乘積。
算法——基于上述的分析,可得出算法如下:①重復執行步驟[2]9次;②重復執行抽象步驟j次(j∈(1,9));③輸出i*j=res,輸出空格不換行(i∈(1,j));④換行。
泛化——如果將本題進行變換,輸出有規律變化的式子,上述思想同樣適用。因此,我們可以將問題進行抽象,用于解決有規律變化的式子輸出問題。
評估——上述算法可以簡潔高效地解決輸出乘法表的問題,并且有很強的復用性,類似輸出有規律變化的式子問題都可以用此模板來解決。
在實際課堂實施中,筆者選取四個班級,將本文中的教學任務按照傳統教學模式和基于計算思維框架的教學模式兩種方式展開對比教學實驗。傳統教學模式指按照常規的教學方法即老師講解解題思路,學生編程實現;基于計算思維框架的教學模式在課堂中要求學生首先按照計算思維的六個步驟進行思考,完成思維活動后再編程實現。A1、A2兩個班級運用傳統教學模式完成教學,B1、B2兩個班級運用基于計算思維框架的教學模式展開。對比兩種教學模式在教學過程中學生對四個任務(輸出星號矩形T1、星號三角形T2、星號平行四邊形T3、乘法表T4)的初始完成率c_1和最終完成率c_2。其中,初始完成率c_1是指教師沒有講解題目前學生獨立思考編寫的程序能夠通過OJ系統評測的占所有學生的比值;最終完成率c_2是指在傳統教學模式下教師講解解題思路后學生的題目提交通過率和基于計算思維框架教學模式下教師帶領學生按照計;算思維框架的六個步驟完成思維活動后,學生的題目提交通過率。
在實驗結束后,筆者根據學生的初始完成率c_1和最終完成率c_2統計數據分析得出:對于T1和T2兩道題,在傳統教學模式下學生的題目初始完成率和基于計算思維框架的教學模式沒有明顯的差別,而T3和T4兩道題,使用基于計算思維框架的教學模式的初始完成率要高于傳統教學模式。分析其原因在于,T1是本堂課的第一個任務,在教師沒有講解之前,初始完成率是四個班級學生的真實水平的反映,而T2作為第二個任務,學生對計算思維框架理解還不夠透徹,因此計算思維框架對其思維活動的幫助還沒有顯現。隨著學生對計算思維框架的不斷熟悉,對計算思維框架的一系列思維活動的深入理解,學生在完成T3和T4兩道題時,已經可以很好地應用計算思維框架幫助自己一步步分析問題,根據計算思維的一系列思維活動將復雜問題分解為可以具體化的小問題,從而編程實現。
通過以上分析可以看出,學生運用計算思維框架的六個步驟來思考問題,能夠幫助他們將遇到的復雜問題分析簡化成更容易解決的小問題,從而完成對問題的求解。在信息技術編程課堂上通過具體化的思維活動來培養學生的計算思維,可以幫助學生養成自主思考、嘗試多角度解決復雜問題甚至提出新問題的能力。