





摘要:計算思維是信息技術學科的核心素養之一,學生計算思維的習得是需要教師根據學生認知特點和教學內容去設計和深度挖掘的。本文針對編程模塊的Python程序結構教學內容,利用Turtle庫的繪圖功能,讓學生在設計圖形自動化繪制程序過程中,體驗問題分解,引導學生尋找規律,識別重復的模式,表示算法,編寫程序。在識別結構、構建結構和駕馭結構的過程中體驗和習得計算思維。
關鍵詞:Python;模式識別;編程;計算思維
中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2022)12-0070-03
數字技術、數字經濟是世界科技革命和產業變革的先機,是新一輪國際競爭的重點領域,因此,提升計算思維,發展信息素養,成為信息技術教育的重中之中。
什么是計算思維?計算思維是利用計算機科學的基本概念解決問題、設計系統和理解人類行為的思維活動。它包括問題分解、物理世界的抽象(根據需要把物理世界的信息抽象成計算機能夠理解的數字信息)、尋找規律、識別模式、設計算法。計算思維的培養方式與途徑有很多,編程是學生習得計算思維的重要途徑之一,計算思維和編寫代碼是計算機程序解決問題的兩個重要環節,計算思維在前,編寫代碼在后。目前,義務教育階段的信息技術課中已經有了編程模塊,不管是圖形化編程還是代碼編程,教師都要引導學生體驗問題分解、現實抽象、模式識別、算法設計、程序排錯等過程,培養學生計算思維。
浙江省義務教育教科書《信息技術》八上的學習內容是Python程序設計,因此,筆者結合第二單元“Python程序基本結構”的教學內容,嘗試利用Turtle模塊設計程序自動繪制圖形,在識別、構建和駕馭結構的過程中幫助學生習得計算思維。
● 過程可視,識別結構
學習編程,首先要理解程序執行過程。為了讓學生快速入門,教師可通過編寫畫圖程序,使程序執行過程可視化,在可視化的條件下幫助學生更好地理解程序的結構。
任務1:編程畫一個等邊三角形。
通過任務分析,總結出畫等邊三角形的步驟如下:先把畫三角形的問題分解為畫邊和轉角兩個子問題,然后表示成算法,最后編寫程序(如圖1)。程序運行就能看到三角形繪制的全過程,從而理解順序結構,明白程序是由上到下依次執行的。
如果用同樣的方法編程畫一個正方形、正六邊形、正六十邊形,代碼行數就會不斷增加,創設認知沖突引入循環結構。
通過觀察可以發現,畫邊、轉角、延時的代碼一樣,不同的是轉角的參數與代碼行數不同。
教師引導學生找出程序中重復執行的代碼,作為循環體根據循環流程用For循環編程,編寫出程序(如圖2),體會循環結構對減少代碼冗余的作用,并引導學生對比程序執行的過程,理解循環結構與順序結構中的程序執行過程其實是一樣的,只是循環結構控制了循環體的執行次數。
同樣,要求學生修改圖中程序的參數畫一個正方形、正六邊形、正六十邊形。在For循環程序中,只需修改循環次數和轉角度數,就能完成相應的圖形繪制,調試程序修改參數非常方便。
● 尋找規律,構建結構
任務1中代碼的重復是一個非常簡單的重復模式,通過前面修改循環次數和旋轉角度可以畫出多種不同的正多邊形,引導學生觀察,找出繪制不同多邊形程序中的相同點和不同點,分析轉角的度數與邊數的關系,思考如何使程序變成一個能繪制任意正多邊形的程序。
運用變量來概括性描述規律,尋找重復模式,是構建循環的利器。這里的變量就像數學中用字母表示數一樣,有助于揭示概念或規律的本質特征,實現對一類問題的抽象。
教師可引導學生通過觀察與分析,明確畫正多邊形的每次轉角的度數,即外角的度數。外角的大小可以從內角和定理180-(n-2)*180/n推導出。也可以這樣推導:正多邊形的外角和為360度,旋轉一周回到起始位置,n條邊,旋轉n次,每次旋轉的角度就是360/n。這樣,程序就能根據n的取值畫出相應的正多邊形,變量n就泛指大于3的任何整數。
任務2:編程畫出圖3中的某一個圖形。
在拆解復雜問題時,需要遵循置頂向下的原則,從宏觀到中觀,從中觀再到微觀,尋找規律,識別重復模式。圖3(a)可以理解為一個正三角形重復旋轉4次而形成的,因此把宏觀的圖形的問題分解為畫正三角形和旋轉角度兩個中觀問題,由此構建外循環,再考慮中觀的正三角形的實現,構建內循環。
由圖3(a)遷移可知,圖3(b)可以看成由正五邊形等角旋轉5次而成;圖3(c)可理解為正六邊形等角旋轉6次而成,由于有幾條邊重合,有點難以辨別。
通過分析發現3個圖形的繪制方法相同,可以理解為一個正多邊形經過多次重復等角旋轉而成,從而形成一個統一的重復模式,流程圖與程序如下頁圖4所示。
● 封裝提取,駕馭結構
應用計算思維解決問題是培養計算思維的重要途徑和最佳方式,臨近期末,創客社團需要通過激光雕刻制作一批社團考核展示牌,在激光雕刻之前需要設計圖形(如下頁圖5)。
任務3:編寫自動化繪制社團展示牌的程序。
一批展示牌,具體數量暫時不定,要求程序能根據具體要求快速繪制出所需要圖形。通過觀察分析發現,展示牌都是由LOGO、星級、社團名和矩形框元素組成,其中LOGO圖、星級數量和社團名各不相同。由此決定把四個元素的程序分別封裝到自定義函數print_rectangle()、print_logo()、print_star()和print_name()中,對可變的元素分別通過傳送參數的方式進行改變。
有了元素的自定義函數,只要確定好每個元素的繪制位置就能把展示牌圖案繪制出來。
根據展示牌案樣式中各元素的相對位置,以外框的左下角位置(x,y)為參照點,內框的左下角位置為(x+10,y+10),LOGO繪制位置為(x+60,y+75),組名繪制的起始點位置為(x+120,y+55),星星從(x+260,y+40)繪制位置開始畫,每畫完一個向左移動30。
把組名、星級、LOGO類型分別按順序添加到列表中,在循環中引用列表中的值作為參數傳給自定義函數,輸入想繪制的展示牌的行數與列數,就能繪制出想要的所有展示圖案(如圖6)。
計算思維能幫助我們理解計算機世界和AI背后的運行機理,掌握解決大規模復雜問題的思考方法。“計算思維的內涵其實就是一種轉換,是人類理解向著機器執行之間的轉換,是復雜問題解決向著機器基本操作的轉換”,需要運用分層、抽象、封裝和迭代去構建結構,設計算法,在平時的教學中,還需要教師去挖掘程序算法與數據中的結構之美。
參考文獻:
[1]諸葛越.未來算法:下一個十年贏在計算思維[M].北京:中信出版社,2021,6.
[2]費海明.回歸本源:再論信息技術核心素養的養成[R].寧波:江北教育局教研室,2021,11.
作者簡介:劉宏中(1970—),男,高級教師,浙江省初中信息技術教材編委。