毛華均
創(chuàng)意編程是用編程實現(xiàn)自己創(chuàng)意的過程。在2017年的信息技術(shù)新課程標(biāo)準(zhǔn)中,計算思維是信息技術(shù)的核心素養(yǎng)。計算思維是指利用計算機科學(xué)領(lǐng)域的思想方法,在形成問題解決方案的過程中產(chǎn)生的一系列思維活動。在創(chuàng)意編程中,需要把問題轉(zhuǎn)化為適合計算機表達和處理的形式,并選擇適合計算機處理的方法,利用計算作為工具實現(xiàn)自己的創(chuàng)意。創(chuàng)意編程的目標(biāo)是編程實現(xiàn)自己的創(chuàng)意,其核心也是計算思維。同時創(chuàng)意編程更看重可視化和趣味性,讓編程更有趣,學(xué)生更有成就感。
turtle簡介
Python語言自帶的turtle繪圖包,情景來源是小海龜在海灘上爬行,尾巴在沙灘上拖出線條。利用turtle畫圖具有l(wèi)ogo語言的特征,很適合創(chuàng)意編程。這是因為它有以下特點。
首先是實現(xiàn)簡單。只需要少量函數(shù)就可以完整實現(xiàn)平面上繪圖的功能,學(xué)習(xí)的門檻低。
其次是環(huán)境依賴小。只要安裝了Python語言,就自帶了turtle庫,而且不用設(shè)置,默認就可以用。這樣學(xué)生就不會在環(huán)境搭建等方面耗費精力,把注意力都放在創(chuàng)意編程上。
第三是學(xué)生的發(fā)揮空間大。turtle庫只提供了少量的基本繪圖函數(shù),一些高級的功能和函數(shù)則沒有涉及。這在思維和創(chuàng)意上給學(xué)生發(fā)揮的空間,有利于他們創(chuàng)造性地解決問題。雖然turtle基本功能簡單,但和Python語言結(jié)合緊密。二者結(jié)合表達能力很強,可以實現(xiàn)很好的效果。
第四是可視化好、趣味性好。turtle在屏幕上面運動,雖然可以通過指定坐標(biāo)繪圖,但也可以直觀地用左轉(zhuǎn)、右轉(zhuǎn)、前進、后退完成。另外,turtle本身就可以表現(xiàn)出繪畫的過程,從而在某種程序上實現(xiàn)動畫效果。
turtle創(chuàng)意編程教學(xué)模式
基于實現(xiàn)信息技術(shù)核心素養(yǎng)的課程,需要把課程重點放在創(chuàng)作作品、實踐創(chuàng)意編程上。創(chuàng)意編程實踐是重點,知識細節(jié)講解不應(yīng)成為課堂重點。
用turtle創(chuàng)意編程的課程基本模式為:
·以創(chuàng)作難度遞進的項目為教學(xué)主線,整體設(shè)計課程
·根據(jù)教學(xué)目標(biāo),設(shè)計貼近學(xué)生的教學(xué)情境
·根據(jù)教學(xué)內(nèi)容特點,選擇恰當(dāng)?shù)慕虒W(xué)方法
·提供有針對性的學(xué)習(xí)資源和樣例
·給出有針對性的技術(shù)支持
·布置難易適中的創(chuàng)意實踐內(nèi)容
·學(xué)生展示作品
教師的主要工作是根據(jù)教學(xué)內(nèi)容創(chuàng)設(shè)情景,有針對性地設(shè)計課堂引入,精講典型案例,提供教學(xué)資源,解答學(xué)生疑問,組織作品展示等。表1中的教學(xué)案例更多是課堂組織和教學(xué)過程的示例。
turtle創(chuàng)意編程學(xué)生作品展示
北大附中的Python教學(xué)中,有一部分內(nèi)容涉及turtle繪圖和刨意編程實踐。從實際情況看,創(chuàng)意編程能調(diào)動學(xué)生的學(xué)習(xí)熱情,學(xué)生們的作品很有創(chuàng)意。大家編寫了各種創(chuàng)意程序作品,有靜態(tài)的、動態(tài)的。靜態(tài)創(chuàng)意圖形由點和線構(gòu)成,如果設(shè)置好顏色和筆畫粗細,也可以有很好的效果。
創(chuàng)意編程作品1:卡通小人
創(chuàng)意編程作品常常來源于學(xué)生生活中喜歡的事物,如飾品。這個繪制卡通的程序只用了簡單的圓和線,但大小比例和形態(tài)都是學(xué)生喜歡的樣子。程序只用到了順序結(jié)構(gòu)和循環(huán),但作品透出濃濃的學(xué)生風(fēng),很有創(chuàng)意。
創(chuàng)意編程作品2:機器人園丁
機器人也是學(xué)生喜歡的主題,如下面的正在給草地上的花精心澆水的盒子機器人。這個程序的童趣很濃,一是作品本身的內(nèi)容和風(fēng)格,二是代碼很有初學(xué)者特點,如:在畫機器人的頭啊時,用的都是順序結(jié)構(gòu),一點一點通過絕對坐標(biāo)值確定位置,導(dǎo)致程序代碼有200多行。作為一個初學(xué)者,為了畫出澆水的效果,試了很多方法,最后模索出了用描點畫函數(shù)曲線的方法。
創(chuàng)意編程作品3:坦克
軍事元素也是學(xué)生喜歡的主題。雖然只會畫簡單的幾何圖形,但也能靜下心來一點一點調(diào)試,畫出了下面的坦克作品。雖然作品的編程風(fēng)格很初級,基本只使用順序結(jié)構(gòu),但學(xué)生小心地不厭其煩地調(diào)整各個畫圖語句的數(shù)值,拼出坦克酌效果,從中可以看到學(xué)生的興趣、專注和精益求精的精神。
創(chuàng)意編程作品4:超級馬里奧
這個學(xué)生明顯是《超級馬里奧》的玩家,蘑菇、馬里奧都是由一個一個像素點構(gòu)成,但還原度很高。編寫這個程序,學(xué)生需要投入大量的熱情,因為這個程序有700多行。程序中用到了很多自定義函數(shù),所以主程序很短,結(jié)構(gòu)清晰,代碼中用到了太多的坐標(biāo)數(shù)值,有些影響可讀性。但代碼的注釋較多,又改善了代碼的可讀性。
創(chuàng)意編程作品5:烏龜畫圖板
這是一個繪圖應(yīng)用程序。繪圖方式很有特點,先利用鍵盤上的方向鍵移動烏龜標(biāo)志。再按P鍵,用前景色繪制1個邊長25×25的正方形色塊。如果按e鍵則會用白色繪制1個邊長25×25的白色正方形色塊(擦除)。按y/h、u/j、i/k分別增加和減少前景色的紅色分量、綠色分量、藍色分量,用RGB函數(shù)合成顏色合為前景色,并把前景色效果顯示在繪圖板的右下方。
如果學(xué)生學(xué)會用遞歸解決問題,則他們還可以利用遞歸創(chuàng)作一些有趣的作品。這種作品明顯地具有自相似的特點。
創(chuàng)意編程作品6:小蟲子
這個同學(xué)畫的小蟲子主要由若干個不同大小和位置的圓構(gòu)成。
創(chuàng)意編程作品7:樹
遞歸加上創(chuàng)意,可以畫出各種風(fēng)格和形態(tài)的樹。
下面這棵愛心樹引入了隨機,每次運行的愛心分布是不一樣的。
表1
教學(xué)課題
PytHon中的自定義函數(shù)
函數(shù)是程序語言教學(xué)中的一個難點。除了語法規(guī)范外,更難的是學(xué)會把大問題分解為小問題的解決問題的思路。學(xué)生前面已經(jīng)學(xué)習(xí)過程序的3種控制結(jié)構(gòu)和常見繪圖語句。本課引入函數(shù)的定義和使用。借助PytHon的turtle繪圖庫,可以讓學(xué)生在有趣的創(chuàng)意編程實踐中學(xué)習(xí)函數(shù)的定義和使用,經(jīng)歷利用函數(shù)解決問題的過程。這是函數(shù)的第1節(jié)課,所以變量的定義域等其他細節(jié)可以在下節(jié)課講或?qū)W生遇到時告訴他。
教學(xué)目標(biāo)
(1)了解函數(shù)的定義和調(diào)用。
(2)在創(chuàng)意編程實踐中,體會函數(shù)的定義和調(diào)用方法。
(3)通過創(chuàng)意編程實踐,了解利用自定義函數(shù)解決問題的一般過程和方法。
(4)通過創(chuàng)意編程實踐,增強利用函數(shù)優(yōu)勢分解和解決問題的意識。
教學(xué)準(zhǔn)備
準(zhǔn)備Python自定義函數(shù)的相關(guān)資料,重新組織成學(xué)生容易看懂、重點突出的學(xué)習(xí)材料。放在學(xué)生容易獲取的地方。
教學(xué)引入的案例(學(xué)生前幾次課的作品)和一些優(yōu)秀的turtle繪圖案例。
教學(xué)過程