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