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