陳染


國慶節(jié)就要到來了,今年國慶恰逢中華人民共和國成立70周年,在這個盛大節(jié)日來臨之際,中小學(xué)紛紛開展了各種形式的愛國主義教育。愛國主義教育不僅僅是思想政治課程的工作任務(wù),更應(yīng)該融入每一個課程中。對于科技輔導(dǎo)員而言,將科技教育與愛國主義教育融合也是我們責(zé)無旁貸的工作責(zé)任,它體現(xiàn)在科技輔導(dǎo)員的工作任務(wù)和工作方法兩方面。
為了幫助科技輔導(dǎo)員更好地將科技教育與愛國主義教育結(jié)合起來,9月初,科技學(xué)堂“Python turtle圖形編程入門”的牛毅昕老師設(shè)計了一節(jié)“用Python turtle繪制國旗”的課程。下面我們以此為例分析如何讓科技教育與愛國主義教育結(jié)合起來。
在這個任務(wù)中,學(xué)生需要用Python turtle繪制1面國旗(當(dāng)然,你也可以選擇其他編程語言作為繪制工具)。作為一次愛國主義教育導(dǎo)向的課程,我們在課程開始之前需要引導(dǎo)學(xué)生對國旗產(chǎn)生更深入的認(rèn)識。我們可以通過五星紅旗是怎么產(chǎn)生的,其象征和意義是什么等內(nèi)容作為課程引入部分,引導(dǎo)學(xué)生理解繪制國旗的意義。
我們都知道中國國旗是五星紅旗,但很少會有學(xué)生意識到并不是所有的五星紅旗都是國旗。如果直接讓學(xué)生繪制國旗,學(xué)生可能會繪制出各種似是而非的五星紅旗。作為國家象征,國旗繪制活動更要注重準(zhǔn)確性,我們可以通過學(xué)習(xí)《中華人民共和國國旗法》讓學(xué)生們認(rèn)識到繪制國旗的嚴(yán)肅性。《中華人民共和國國家標(biāo)準(zhǔn)·國旗(GB12982—2004)》(下文簡稱《標(biāo)準(zhǔn)》)詳細(xì)記載了國旗的形狀、顏色和規(guī)格。這是一個強(qiáng)制性標(biāo)準(zhǔn),是一個具有法規(guī)性質(zhì)的技術(shù)性規(guī)范。
《標(biāo)準(zhǔn)》的附錄為我們提供了詳細(xì)的國旗制法,我們可以從中學(xué)習(xí)到國旗設(shè)計中的很多數(shù)學(xué)知識。因此,在開始用程序繪制之前,我們建議時間允許的教師先引導(dǎo)學(xué)生用直尺和圓規(guī)在紙面上繪制出國旗,這個過程不僅能提升學(xué)生的作圖能力,培養(yǎng)愛國主義精神,同時也是順理邏輯的過程,幫助學(xué)生更好地構(gòu)建程序設(shè)計思路。
接下來就是正式的繪制環(huán)節(jié)了,我們可以把任務(wù)分解成旗面、大五角星和4顆小五角星3部分。
《標(biāo)準(zhǔn)》對于國旗規(guī)格的描述是“旗面為紅色,長方形,其長與高為三與二之比”。這意味著我們需要定義長寬比為3∶2的旗面,我們用以下代碼繪制出長寬比滿足比例的旗面,并填充為紅色。在程序中,我們把起筆定在(-200,200)的位置,長度定為438,寬度定為292,當(dāng)然,你可以自由設(shè)置長度和高度的數(shù)值,只要符合3∶2的長寬比就可以了。程序如下:
import turtle
turtle.speed(10)#繪制速度
turtle.up()
turtle.goto(-200,200)
turtle.down()
turtle.begin_fill()
turtle.fillcolor(“red”)
turtle.pencolor(“red”)
for I inrange(2):
turtle.forward(438)
turtle.right(90)
turtle.forward(292)
turtle.right(90)
turtle.end_fill()
畫出了紅色的旗面后,我們要將5顆五角星放置到旗面上。《標(biāo)準(zhǔn)》對于五角星的描述是“一星較大,其外接圓直徑為旗高十分之三,居左;四星較小,其外接圓直徑為旗高十分之一,環(huán)拱于大星之右”。并且,《標(biāo)準(zhǔn)》附錄中的國旗制法詳細(xì)敘述了如何通過等分法確定五角星的位置。對于大五角星,其表述如下:“為便于確定五星之位置,先將旗面對分為四個相等的長方形,將左上方之長方形上下劃為十等分,左右劃分為十五等分。大五角星的中心點(diǎn),在該長方形上五下五、左五右十之處,其畫法為:
以此點(diǎn)為圓心,以三等分為半徑作一圓,在此圓周上,定出五個等距離的點(diǎn),其一點(diǎn)須位于圓之正上方,然后將此五點(diǎn)中各相隔的兩點(diǎn)相聯(lián),使各成一直線。此五直線所構(gòu)之外輪廓線,即為所需之大五角星,五角星之一個角尖正向上方。”
根據(jù)《標(biāo)準(zhǔn)》中的表述,我們可以計算出每一個星星的位置。前面我們已經(jīng)設(shè)置了旗面的坐標(biāo)位置、長度和寬度,可以計算出大五角星的坐標(biāo)位置。在程序中我們將turtle的筆觸和填充顏色設(shè)置為黃色,把turtle移動到起始位置,通過循環(huán)語句繪制出五角星,程序如下:
Import turtle
turtle.speed(10)
#更改海龜?shù)漠嫻P顏色和填充顏色
turtle.fillcolor(“yellow”)
turtle.pencolor(“yellow”)
turtle.up()
turtle.goto(-170,145)#五角星的坐標(biāo)
turtle.down()
turtle.begin_fill()
for x in range(5):
turtle.forward(50)#
turtle.right(144)#
turtle.end_fill()
值得注意的是,我們需要將for循環(huán)的部分放在begin_fill()和end_fill()之間,這樣我們才能將顏色填充到五角星中。同時,begin_fill()和end_fill()方法一定要成對出現(xiàn),缺一不可。
完成了大五角星的繪制,我們可以繪制4顆小五角星了。首先還是查閱《標(biāo)準(zhǔn)》中關(guān)于4顆小五角星位置的描述:“四顆小五角星的中心點(diǎn),第一點(diǎn)在該長方形上二下八、左十右五之處,第二點(diǎn)在上四下六、左十二右三之處,第三點(diǎn)在上七下三、左十二右三之處,第四點(diǎn)在上九下一、左十右五之處。其畫法為:以以上四點(diǎn)為加圓心,各以一等分為半徑,分別作四個圓。在每個圓上各定出五個等距離的點(diǎn),其中均須各有一點(diǎn)位于大五角星中心點(diǎn)與以上四個圓心的各聯(lián)結(jié)線上,然后用構(gòu)成大五角星的同樣方法,構(gòu)成小五角星。此四顆小五角星均各有一個角尖對大五角星的中心點(diǎn)。”
值得注意的是,每顆小五角星都有一角與大五角星的中心點(diǎn)相對,也就是說,我們需要為每個小五角星設(shè)置不同的轉(zhuǎn)動角度,我們可以通過平面幾何計算出每一顆星星轉(zhuǎn)動的角度。對于低年級的學(xué)生而言,我們可以用量角器測量出每一顆星星的角度,這也是為什么我們建議教師們在活動開始前引導(dǎo)學(xué)生手繪國旗的原因。在程序中,我們可以用turtle.setheading()語句實(shí)現(xiàn)星星的轉(zhuǎn)向,根據(jù)計算,從上到下4顆小五角星的轉(zhuǎn)向角度分別是305、30、3和300。
根據(jù)《標(biāo)準(zhǔn)》,我們換算出每顆小五角星的長度是20,并根據(jù)平面幾何知識可以計算出每顆小五角星的具體坐標(biāo),從上到下4顆小五角星的坐標(biāo)分別是(-100,180)(-85,150)(-85,120)和(-100,100)。通過以下程序畫出第1個小五角星。
turtle.up()
turtle.goto(-100,180)
turtle.setheading(305)#設(shè)置當(dāng)前海龜朝向:會改變海龜?shù)姆较騮urtle.down()
turtle.begin_fill()
for i in range(5):
turtle.forward(20)
turtle.left(144)
turtle.end_fill()
調(diào)整turtle.setheading()和turtle.goto()的參數(shù),就可以繪制出剩下3顆小五角星,這里就不贅述具體的程序了。最后,別忘了在程序結(jié)尾處加上hideturtle()語句隱藏小海龜,并加上turtle.done()表示繪制完成,這樣我們的國旗就停留在屏幕上了。
turtle.hideturtle()
turtle.done()
通過用Python turtle繪制國旗的課程,科技教師提升了學(xué)生的愛國情感,讓學(xué)生更加嚴(yán)肅地對待國旗,同時也提升了學(xué)生的Python編程水平,這正是科技輔導(dǎo)員“提升青少年的文明素質(zhì)”的工作任務(wù)和“活動內(nèi)容與德育結(jié)合的必要性和可行性”的工作原則的體現(xiàn)。