駱道松
(中央民族大學附屬中學海南陵水分校,海南 陵水 572400)
項目教學是一項計劃好的,有固定開始時間和結束時間的活動,原則上項目結束后應有一件較完整的作品。信息技術也稱信息處理技術,信息技術自信心這里主要是指使用計算機技術處理問題的信心[1]。本文通過項目活動實踐,讓學生學會處理現實問題,體驗解決問題的思維過程,得到滿意的作品。今后在遇到問題時,有解決問題的方法,通過自信心與創造力完美解決并獲得成功。
筆者在日常工作和生活中,同事和朋友都會有一些電腦問題,例如:wps文檔設置不好打印格式、電子表格不會計算或查詢、電腦聯不上打印機、設置雙面打印出現顛倒等等,其實這些問題都是基礎實用型問題,不需要很多專業知識。解決這些問題,只要敢于鉆研,有信心就能解決。自信心是靠平時的鉆研和積累,多鉆研就有解決問題的方法和思維。筆者聯想到同事和朋友在學生時代也應學習了信息技術,但如今卻沒有了自信心和解決問題的方法。筆者認為增強信息技術自信心,要通過項目化的學習與實踐,多做項目提高信息素養,才有信心找到解決辦法。只要愿意探索,總有方法能解決問題[2]。有意愿挑戰問題及其重要,這種意愿是自信和創造力的表現,遇到問題不敢動手嘗試,是沒有自信心和創造力的表現。因此希望學生們能增強信息技術自信心,在項目化實施的信息技術課堂中,為以后的工作和生活打下堅實的基礎[3]。
交通信號燈,在日常生活中是指揮交通的重要工具,是運用計算機語言邏輯編寫的,根據不同的交通路口設定時間。由單片機芯片控制燈亮的時間和滅的時間。具體就是當紅燈該亮時,單片機控制信號燈紅燈亮,并根據已編好的程序獲得一定時間的延時,然后再由其控制綠燈亮,并獲得一個延時;當信號燈為紅燈時,監控設備將會自動拍攝越線的車輛并保存下來。如何用VB程序設計一個能指揮的交通信號燈?
這樣一個現實問題,學生通過網絡搜索,結合已學的VB程序設計知識,設計方案、物化流程并編輯代碼調試。經過兩節課的實踐與小組合作,學生明白了交通信號燈的運行原理,并知道在VB程序設計中,可以使用shape形狀控件繪制圓形,添加紅、黃、綠三種顏色來代表信號燈。然后添加timer時鐘控件來計時,再使用程序控制紅、黃、綠三種形狀的可見與不可見來表示信號燈。但學生程序設計控制時間、數值不太精確,需要老師多加指導。下圖為VB設計信號燈界面,圖形1填充紅色,顯示紅燈;圖形2填充黃色,顯示黃燈;圖形3填充綠色,顯示綠燈。VB設計信號燈界面如題圖1所示。

圖1 VB設計信號燈界面
完成的項目部分程序代碼:紅燈先亮10 s顯示倒計時,然后紅黃燈同時亮3 s,再綠燈亮20 s顯示倒計時,最后綠燈和黃燈同時亮3 s,循環運行,紅燈亮10秒顯示倒計時。
Shape1.Visible = True ′紅燈對應的圖形1可見
Shape2.Visible = False ′黃燈對應的圖形2不可見
Shape3.Visible = False ′綠燈對應的圖形3不可見
Timer1.Enabled = True ′計時器開啟
Timer1.Interval = 1000 ′每1000毫秒自動更新
Private Sub Timer1_Timer()′′計時函數
i = i + 1
Select Casei
Case Is <= 10 ′計時小于等于10秒
Shape1.Visible = True ′紅燈對應的圖形1可見
Case Is <= 13 ′計時i值是11-13秒
Shape2.Visible = True ′黃燈對應的圖形2可見
Case Is <= 33 ′計時i值是14-33秒
Shape1.Visible = False
Shape2.Visible = False
Shape3.Visible = True
Case Is <= 36 ′計時i值是34~36秒
Shape2.Visible = True ′黃燈對應的圖形2可見
Case Else ′重新計時,紅燈亮
i = 0
Shape1.Visible = True
Shape2.Visible = False
Shape3.Visible = False
End Select
End Select
Label1.Caption = "時間:"&-i + 11 ′標簽顯示倒計時數字
Label2.Caption = "時間:"&-i + 34
項目思考:交通信號燈是日常交通中常見的設備,能讓復雜的交通控制順暢。用VB程序設計交通信號燈這個項目,雖然學生不一定能完全成功,但可以通過學習實踐,使用百度搜索引擎解決問題。在計算機中將對應顏色的圖形模擬信號燈,雖然與實際不符,但工作原理類似,這些搜索到的方法就是解決問題的途徑。將生活中的現實問題在VB中得到模擬實現,讓學生體會到了創新設計、工程思維、物化能力,提高了學生學習VB的興趣,有利于提升信息技術自信心。
本項目是筆者自身遇到的問題。學校初三年級畢業生有450人,高三年級畢業生有320人,完成畢業證打印,若運用傳統方式文檔制作好模板,一個個復制、粘貼學生信息,費時費力,770張畢業證兩人輪流也要一周才能打印完成,最后發給學生核對還有很多錯誤。如果借助計算機程序來完成任務,會提高效率,而且還減少出錯率。讓程序來讀取學生信息,打印在指定位置,其實算法思維并不難。因此設計了本項目,運用程序設計批量畢業證打印程序。
學生在一節課中,搜索到了VB讀取電子表格數據與定位打印的方法,但要完整地設計整個程序難度較大,需要老師引導完成項目程序代碼。運行結果如打印區域圖2所示。

圖2 程序運行打印區域
SetxlBook = xlapp.Workbooks.Open(App.Path &"xs.xls")′打開excel學生信息工作簿
Label2.Caption = j &""&zd(j + 1, 0) &""& zd(j + 1, 1) &""& zd(j + 1, 2) &""& zd(j + 1, 3) &""& zd(j + 1, 4) &""& zd(j + 1, 5) &""& zd(j + 1, 6) &""& zd(j + 1, 7) &""& zd(j + 1, 8) &""& zd(j + 1, 9) &""& zd(j + 1, 10)′打印之前,標簽顯示打印信息
Printer.Orientation=vbPRORLandscape ′橫向打印
Printer.FontName= "黑體" ′字體黑體
Printer.FontSize=14 ′字號14
Printer.CurrentY=3800 ′y軸坐標3800毫米
Printer.CurrentX=8600 ′x軸坐標8600毫米
Printer.Print zd(j+1, 0) ′j+1循環打印下一條數據
項目思考:學生經過學習,得到了使用VB程序讀取電子表格中的數據,電子表格數據容易將信息轉化成理想的類型,例如:將出生年月日阿拉伯數字分列,年月日一列一項容易定位;畢業時間要用漢字,使用電子表格容易轉化,然后打印在畢業證的相關位置。代碼設計學生還是不能完成,但學生通過搜索、使用百度、使用中國專業IT社區CSDN(Chinese Software Developer Network,CSDN),這些方法比解決問題更重要的。只要敢于探索,就會得到好的方法,就能增強解決問題的信心。只要不斷實驗和思考,就有解決問題的方法。
在python語言的學習中,前期學習了海龜畫圖,那怎樣畫出學校的?;誰ogo呢?本節課項目學習python繪制校徽logo。
學生已經學習了畫正方形、菱形、八個菱形的圖案以及畫曲線。學生搜索到了circle函數,可以繪制曲線和兩個圓形。但畫和平鴿和“S”比較難,還有弧形的文字和英文。通過完成的項目程序部分代碼,其運行結果如python運行結果圖3所示,?;誰ogo如?;赵瓐D4所示。

圖3 python運行結果

圖4 ?;赵瓐D
import turtle as t
t.penup()
t.goto(5,-120)
t.pendown()
t.pensize(2)
t.pencolor(′blue′)
t.circle(130) #繪制內圈圓形
#繪畫和平鴿
t.begin_fill()
t.penup()
t.goto((-80), 90)
t.pendown()
t.pensize(1)
t.pencolor(′pink′)
t.circle(-60,80)
t.circle(60,70)
t.circle(60,30)
t.circle(-100,-10)
t.circle(50,-20)
t.circle(80,-10)
t.circle(120,35)
t.circle(-100,-10)
t.circle(100,-20)
t.circle(80,-10)
t.circle(140,35)
t.circle(-100,-10)
t.circle(100,-20)
t.circle(80,-130)
t.circle(100,-20)
t.circle(10,60)
t.circle(100,-20)
t.fillcolor(′orange′)
t.end_fill()
#繪畫第一個S
t.begin_fill()
t.penup()
t.goto(0,100)
t.pendown()
t.left(-60)
t.pensize(1)
t.pencolor(′blue′)
t.circle(-90,80)
t.circle(-50,-70)
t.circle(240,-10)
t.left(200)
t.circle(-100,65)
t.fillcolor(0, 0, 1)
t.end_fill()
t.circle(117,46)
t.circle(-90,80)
t.circle(-50,-70)
t.circle(240,-10)
t.left(200)
t.circle(-100,65)
t.fillcolor(′blue′)
t.end_fill()
#繪畫第二個S,就是起點位置調整
t.goto(40,100)
#繪畫第三個S,就是起點位置調整
t.goto(80,100)
#繪畫2013
t.write(2013,move=False,align=′left′,font=(′arial′,18,′normal′)) #寫出內圈中的2013
t.penup()
t.goto(100,-130)
t.pendown()
t.pensize(2)
t.pencolor(′blue′)
t.circle(170) #繪制外圈圓形
t.bgpic(′wenzii.png′) #加載背景圖
項目思考:學生經過python學習,學習到了海龜畫圖中turtle庫中運用circle函數來畫弧,由于?;誰ogo有兩個圓形,其中的和平鴿和“S”學生繪制不佳。學生自己搜索到的知識,比老師講授的要理解深刻,這是最好的一種學習方式,也是項目化學習的優點。先自己搜索解決問題的方法,老師再講授,學生就會理解深刻,最后調試運行、思考理解。若能學生自己繪制出來,更能激發信息技術自信心。
項目化的學習,是讓學生自己先嘗試解決問題,明確解決問題的方法。自己查找資料,例如:使用搜索引擎百度搜索,程序代碼問題使用CSDN學習,都是很好的方法。敢于解決問題,一次次實驗,總能找到解決問題的方法,這些都需要信心和毅力。學習和生活是由一個個的項目組成,總能從網絡找到解決項目的方法。學生通過項目實踐,運用程序設計解決這些專業問題,增強自信心,對遇到的問題敢于搜索、實驗,從而積累經驗,提高信息素養[4]。
項目化學習的最重要意義是“由極大的幸福感點燃的可持續的內驅的學習動機和不輕易放棄的堅毅品格”。學生多做項目,才會遇到各種未知問題,通過搜索解決這些問題積累經驗,就能提高信息素養和增強自信心。對于學習和生活中不需要很多信息技術專業知識的問題,相信自己就能解決。