









摘要:本文針對(duì)turtle繪圖一堂課的實(shí)踐教學(xué),以任務(wù)為驅(qū)動(dòng),全面覆蓋turtle知識(shí)點(diǎn),以循序漸進(jìn)方式將內(nèi)容綜合融入其中,結(jié)合線上線下混合式課堂,引導(dǎo)學(xué)生找到解決問(wèn)題的方法,極大地提高了學(xué)生的編程興趣,培養(yǎng)了學(xué)生的創(chuàng)新思維。
關(guān)鍵詞:任務(wù)驅(qū)動(dòng);循序漸進(jìn);線上線下混合課堂;turtle庫(kù)
中圖分類號(hào):G434" 文獻(xiàn)標(biāo)識(shí)碼:A" 論文編號(hào):1674-2117(2024)08-0071-05
引言
Python程序設(shè)計(jì)語(yǔ)言因具有“開(kāi)源、共享、通用”等特征,擁有豐富多元的計(jì)算生態(tài),而成為許多高校非計(jì)算機(jī)專業(yè)首選的程序設(shè)計(jì)語(yǔ)言課程。[1-2]筆者根據(jù)教學(xué)實(shí)踐提出了“課前1+課中2+課后4”的線上線下混合教學(xué)模式,即:課前教師對(duì)教學(xué)內(nèi)容及任務(wù)布置1學(xué)時(shí)的自主預(yù)習(xí),用來(lái)初步了解教學(xué)內(nèi)容;課中教師授課2學(xué)時(shí);課后學(xué)生至少花4學(xué)時(shí)來(lái)鞏固與消化課堂內(nèi)容,充足的時(shí)間投入是學(xué)好該課程的必要條件。同時(shí),筆者采取循序漸進(jìn)的教學(xué)方式,通過(guò)環(huán)環(huán)相扣,由淺入深,引導(dǎo)學(xué)生不斷思考,解決問(wèn)題,最后形成一個(gè)完整的知識(shí)構(gòu)架。這種教學(xué)方式能集中學(xué)生注意力,讓學(xué)生在問(wèn)題解決的過(guò)程中獲得學(xué)習(xí)成就感,激發(fā)學(xué)習(xí)興趣,培養(yǎng)學(xué)生使用程序解決問(wèn)題的能力,同時(shí)提升創(chuàng)新意識(shí)和創(chuàng)新能力。
基于循序漸進(jìn)方式的Python-turtle庫(kù)教學(xué)設(shè)計(jì)
1.教學(xué)內(nèi)容
turtle是Python內(nèi)置標(biāo)準(zhǔn)庫(kù),turtle海龜繪圖體系是入門級(jí)的圖形繪制函數(shù)庫(kù)。其原理是利用一個(gè)小海龜,從坐標(biāo)系原點(diǎn)(0,0)位置開(kāi)始,根據(jù)一組函數(shù)指令的控制,在平面坐標(biāo)系中爬行,由爬行軌跡構(gòu)建圖形。turtle庫(kù)教學(xué)知識(shí)點(diǎn)包括認(rèn)識(shí)turtle庫(kù)、畫布設(shè)置、畫筆控制、運(yùn)動(dòng)控制、方向控制和圖形效果等六個(gè)方面。
2.教學(xué)模式
混合式課堂的教學(xué)過(guò)程分為課前、課中、課后三個(gè)部分。課前,教師以知識(shí)導(dǎo)圖為提綱,上傳基礎(chǔ)知識(shí)講解視頻,并設(shè)置明確的任務(wù)導(dǎo)入,讓學(xué)生帶著任務(wù)去預(yù)習(xí)。課中,教師主導(dǎo)課堂,以循序漸進(jìn)方式,從最初的海龜動(dòng)起來(lái)到海龜行走自如,設(shè)計(jì)教學(xué)過(guò)程和教學(xué)情境,通過(guò)提問(wèn)交流、小組討論、學(xué)生演示等方式進(jìn)行課堂內(nèi)化。課后,教師根據(jù)學(xué)生的學(xué)習(xí)情況分析和總結(jié),并通過(guò)網(wǎng)絡(luò)教學(xué)平臺(tái)布置具有拓展性的任務(wù),實(shí)現(xiàn)知識(shí)的提高與擴(kuò)展;通過(guò)教學(xué)反饋與評(píng)價(jià),不斷改進(jìn),提高質(zhì)量與教學(xué)效率,利用網(wǎng)絡(luò)平臺(tái)和雨課堂,完成翻轉(zhuǎn)課堂模式的混合式教學(xué)模式。教學(xué)策略與流程如下頁(yè)圖1所示。
3.基于任務(wù)驅(qū)動(dòng)的循序漸進(jìn)教學(xué)實(shí)施
任務(wù)一:海龜動(dòng)起來(lái)(繪制正方形)
①任務(wù)要求:讓海龜動(dòng)起來(lái),從原點(diǎn)處向東出發(fā),每向前爬行100像素后左轉(zhuǎn)90°,回到起點(diǎn)停止。
②任務(wù)目標(biāo):初識(shí)turtle圖形繪制;了解畫布;重點(diǎn)熟悉turtle繪圖坐標(biāo)系統(tǒng);感受海龜爬行軌跡。
③任務(wù)分析:turtle繪圖有絕對(duì)角度坐標(biāo)和海龜角度坐標(biāo)。絕對(duì)角度坐標(biāo)是以海龜為坐標(biāo)原點(diǎn)建立坐標(biāo)系,分為四個(gè)象限,用(x,y)來(lái)表示具體位置,如圖2(a)所示,使用turtle.goto(x,y)語(yǔ)句海龜移動(dòng)到絕對(duì)位置(x,y)點(diǎn)處;海龜角度坐標(biāo)是以海龜當(dāng)前點(diǎn)為起點(diǎn),分前后左右,如圖2(b)所示,海龜使用turtle.forward(d)、turtle.left(angle)、turtle.right(angle)等方法做相對(duì)運(yùn)動(dòng)。
具體實(shí)現(xiàn)以順序結(jié)構(gòu)逐條執(zhí)行語(yǔ)句,每向前爬行100像素,向左轉(zhuǎn)90°,讓學(xué)生先熟悉turtle繪圖畫布及坐標(biāo)系統(tǒng),掌握畫筆運(yùn)動(dòng)命令,以直觀的思維方式感受海龜?shù)呐佬羞^(guò)程,然后繪制出正方形。參考代碼及其運(yùn)行效果如圖3所示。
任務(wù)二:繪制以原點(diǎn)為中心點(diǎn)的正方形
①任務(wù)要求:繪制以原點(diǎn)為中心點(diǎn)的正方形,正方形各條邊分別對(duì)應(yīng)紅、綠、藍(lán)和紫色。
②任務(wù)目標(biāo):重點(diǎn)掌握畫筆起落;改進(jìn)任務(wù)一中代碼冗余;復(fù)習(xí)與鞏固列表或元組的應(yīng)用。
③任務(wù)分析:任務(wù)二是對(duì)任務(wù)一的改進(jìn)與提高,從任務(wù)一中的代碼可以看出,其中語(yǔ)句t.fd(100);t.left(90)重復(fù)四次,引導(dǎo)學(xué)生使用循環(huán)結(jié)構(gòu);若要使每一條線的畫筆顏色發(fā)生變化,就既要使用循環(huán)來(lái)控制畫線,又要讓畫線顏色變化,由此引導(dǎo)列表知識(shí)的引入。列表是有序序列,可以通過(guò)索引號(hào)來(lái)訪問(wèn)列表中的元素。因此,可以使用列表來(lái)存儲(chǔ)顏色,每繪制一條邊從列表中通過(guò)索引號(hào)取得對(duì)應(yīng)顏色;任務(wù)中要求正方形中心點(diǎn)在原點(diǎn),由此引入penup()或pendown()方法,實(shí)現(xiàn)在畫筆的抬筆、落筆時(shí)的運(yùn)動(dòng)控制。任務(wù)二參考代碼及運(yùn)行效果如下頁(yè)圖4所示。
任務(wù)三:繪制紅色框線綠色填充的正方形
①任務(wù)要求:繪制紅色框線綠色填充的正方形(中心點(diǎn)位置不作要求)。
②任務(wù)目標(biāo):掌握畫筆顏色控制命令pencolor()、fillcolor()、begin_fill()、end_fill()和color();掌握畫筆顏色的RGB體系。
③任務(wù)分析:顯示屏顯示的顏色是R(紅)、G(綠)、B(藍(lán))互相組合形成的,每種顏色取值范圍是0~255的整數(shù)或0~1的小數(shù),在Python中默認(rèn)是采用0~1的小數(shù)來(lái)表示RGB每種顏色的值。R(紅)、G(綠)、B(藍(lán))數(shù)值大小不同成份的組合構(gòu)成五顏六色,turtle繪圖中的RGB色彩體系如右表所示。
pencolor(colorstr)和fillcolor(colorstr)分別對(duì)應(yīng)畫筆顏色和填充顏色,也可以使用color(colorstr1,colorstr2)進(jìn)行設(shè)置,其中,函數(shù)中的參數(shù)colorstr(或colorstr1、colorstr2)可以直接使用顏色字符串常量,如turtle.pencolor(\"green\")或者RGB數(shù)值三元組,如turtle.pencolor((0,1,0))或者turtle.pencolor(0,1,0)。在使用填充時(shí)有begin_fill()和end_fill()兩個(gè)相關(guān)方法,類似是否填充的開(kāi)關(guān)。任務(wù)三參考代碼及運(yùn)行效果如圖5所示。
任務(wù)四:繪制正方形陣列
①任務(wù)要求:以原點(diǎn)為中心點(diǎn),繪制n個(gè)正方形陣列,由內(nèi)到外第1個(gè)正方形邊長(zhǎng)為20像素,第2個(gè)邊長(zhǎng)為40像素,第3個(gè)邊長(zhǎng)為60,依次類推,下一個(gè)正方形邊長(zhǎng)在前一個(gè)正方形邊長(zhǎng)基礎(chǔ)上增加20像素。
②任務(wù)目標(biāo):重點(diǎn)是函數(shù)的創(chuàng)建與調(diào)用;循環(huán)語(yǔ)句與range()函數(shù);進(jìn)一步強(qiáng)化畫筆起落控制。
③任務(wù)分析:繪制多個(gè)以原點(diǎn)為中心的正方形,構(gòu)成正方形陣列。因此,每繪制完一個(gè)正方形都要抬筆,將海龜移動(dòng)到落筆繪制起點(diǎn)位置,起點(diǎn)位置可以在y=x直線上;引入函數(shù)的使用、自定義函數(shù)paint()、函數(shù)的功能繪制一個(gè)正方形;繪制多個(gè)正方形,使用循環(huán),因此,自然引入計(jì)數(shù)循環(huán)range()函數(shù)。自定義函數(shù)的引入,使雙重循環(huán)結(jié)構(gòu)程序更簡(jiǎn)潔,結(jié)構(gòu)更清晰可讀、可理解,在前三個(gè)任務(wù)的基礎(chǔ)上,在知識(shí)的綜合應(yīng)用上再遞進(jìn)一層次。任務(wù)四參考代碼及運(yùn)行效果如下頁(yè)圖6所示。
任務(wù)五:繪制五彩正方形陣列
①任務(wù)要求:在任務(wù)四的基礎(chǔ)上修改,繪制五彩正方形陣列,即不同顏色的正方形。
②任務(wù)目標(biāo):熟悉random庫(kù)的使用;熟悉顏色模式與畫筆顏色pencolor()參數(shù)設(shè)置。
③任務(wù)分析:任務(wù)五與任務(wù)四的區(qū)別只是畫筆顏色的變化,在任務(wù)二中是使用列表來(lái)存放預(yù)置顏色,但這里顏色未明確。turtle繪圖顏色體系除了使用字符常量來(lái)表示,也可以使用RGB模式,其中RGB模式下其參數(shù)是在一定范圍內(nèi)的數(shù)據(jù),由此,引入random庫(kù),random庫(kù)中的randint()方法隨機(jī)產(chǎn)生[a,b]范圍內(nèi)整數(shù),random()方法隨機(jī)產(chǎn)生[0,1)范圍內(nèi)小數(shù)。具體使用整數(shù)形式還是0~1·內(nèi)小數(shù),與turtle.colormode()保持一致即可,系統(tǒng)默認(rèn)為RGB體系為1。通過(guò)任務(wù)練習(xí),讓學(xué)生理解屬性之間的相互約束與協(xié)調(diào)關(guān)系。任務(wù)五參考代碼及運(yùn)行效果如圖7所示。
任務(wù)六:繪制愛(ài)心
①任務(wù)要求:繪制愛(ài)心形狀。
②任務(wù)目標(biāo):熟悉circle()方法的使用;培養(yǎng)分析和創(chuàng)新能力。
③任務(wù)分析:
方法一,從圖形效果分析,turtle中沒(méi)有直接對(duì)應(yīng)的方法實(shí)現(xiàn)愛(ài)心圖形的繪制,通過(guò)拆解與分析,愛(ài)心圖形可以拆分為兩個(gè)半圓和兩條直線的組成,填充顏色即可。半圓的繪制最直接的是使用circle()方法,根據(jù)特殊到一般的方法,首先可以選擇比較特例的參數(shù)來(lái)繪制,即愛(ài)心由一個(gè)正方形和兩個(gè)半圓構(gòu)成。海龜在左轉(zhuǎn)135°后向前進(jìn)2R像素(R為圓的半徑),然后以R為半徑順時(shí)針畫半圓,在畫右半圓前海龜須左轉(zhuǎn)90°,在繪制好右半圓后,再向前進(jìn)2R像素,回到起點(diǎn)。
方法二,圓弧的繪制除了用circle()外,還可以使用fd()方法繪制,在前進(jìn)中逐步地轉(zhuǎn)角度,繪制效果就是曲線。使用循環(huán)語(yǔ)句,循環(huán)的次數(shù)與每次轉(zhuǎn)角相關(guān)。如果循環(huán)180次,則每次轉(zhuǎn)角1°,繪制出半圓曲線,若每次轉(zhuǎn)角2°,則繪制出看似圓的曲線。這種方法的難點(diǎn)是海龜在直行多少像素后再開(kāi)始繪制半圓曲線。示例中給出的參考代碼計(jì)算公式為π*R=180,推得d=180/π*2,參考代碼如上頁(yè)圖8所示。
任務(wù)七:繪制分形樹(shù)
①任務(wù)要求:應(yīng)用遞歸思想繪制分形樹(shù)。
②任務(wù)目標(biāo):深入理解遞歸函數(shù);培養(yǎng)程序設(shè)計(jì)思維。
③任務(wù)分析:遞歸可以把一個(gè)復(fù)雜問(wèn)題轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題,通過(guò)自己調(diào)用自己,找到最終解決這個(gè)問(wèn)題的條件,這個(gè)條件即為遞歸的出口,達(dá)到條件返回。遞歸函數(shù)是學(xué)生在學(xué)習(xí)過(guò)程中難以理解及運(yùn)用的難點(diǎn)之處,通過(guò)本任務(wù)的實(shí)踐練習(xí),理解遞歸函數(shù)的原理與使用方法。圖9為深度為3的分形樹(shù),分析每個(gè)分支節(jié)點(diǎn)處,發(fā)現(xiàn)每個(gè)分支具有相同的結(jié)構(gòu),每右轉(zhuǎn)角度?后,繪制一個(gè)枝干,枝干逐步變短,設(shè)定最后一個(gè)枝干的長(zhǎng)度為遞歸出口。因此,使用遞歸思想繪制,參考代碼如圖10所示。
4.課后擴(kuò)展
課后作業(yè)是擴(kuò)展學(xué)習(xí)的途徑,學(xué)生根據(jù)課堂所學(xué),發(fā)揮創(chuàng)造力和想象力,編程創(chuàng)作一幅有新意的畫面。通過(guò)給學(xué)生布置這種開(kāi)放性的任務(wù),啟發(fā)學(xué)生理解并發(fā)展與其專業(yè)或者興趣相關(guān)的其他領(lǐng)域的新想法和新觀念,培養(yǎng)學(xué)生的創(chuàng)新思維和能力。
結(jié)語(yǔ)
實(shí)踐證明,相對(duì)數(shù)學(xué)方法的編程,圖形案例教學(xué)通過(guò)循序漸進(jìn)的方式,以解決具體問(wèn)題為導(dǎo)向,更能吸引學(xué)生的注意力,使其對(duì)編程產(chǎn)生興趣,建立編程學(xué)習(xí)的信心。
參考文獻(xiàn):
[1]嵩天,黃天羽,禮欣.面向計(jì)算生態(tài)的Python語(yǔ)言入門課程教學(xué)方案[J].計(jì)算機(jī)教育,2017(08):7-12.
[2]嵩天,黃天羽,禮欣.Python語(yǔ)言:程序設(shè)計(jì)課程教學(xué)改革的理想選擇[J].中國(guó)大學(xué)教學(xué),2016(02):42-47.
[3]張莉,金瑩,張潔.多樣化可擴(kuò)展的Python教學(xué)體系探索與實(shí)踐[J],計(jì)算機(jī)教育,2017(8):18-22.
作者簡(jiǎn)介:尹建新,女,副教授,研究方向?yàn)橹悄軋D像識(shí)別、機(jī)器視覺(jué)。
基金項(xiàng)目:浙江省“十四五”教學(xué)改革項(xiàng)目(jg20220344);全國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育研究會(huì)計(jì)算機(jī)基礎(chǔ)教育教學(xué)研究項(xiàng)目(2023-AFCEC-116);2023教育部產(chǎn)學(xué)研合作項(xiàng)目(230701416280935)。