摘要:本文針對目前高等教育中對于培養學生鉆研和創新的要求,通過多個課堂實踐,提出在程序設計課堂教學中,培養學生提出自己的想法的思維習慣,促進學生科技創新的良好氛圍形成,全面提升教育質量,培育更多優秀的高素質、創新型人才。
關鍵詞:程序設計;鉆研;創新
鉆研和創新,就是提出自己不同于書本的想法、不同于別人的想法,并且能夠為自己的想法的實踐而努力。
馬大猷院士說:我國研究人員基礎都很好,但常提不出自己的設想,很多人都是“述而不作”。從院士的話中可以看出,掌握已有知識固然重要,尋求已有知識存在的問題,提出自己的設想更加重要,這就是鉆研與創新精神。
培養學生鉆研與創新精神的渠道很多,比如參加學校組織的科研訓練,參加各級各類競賽,但是作為學生,更多的時間是在課堂上,所以,教師在課堂上以啟發、引導等方式,使學生在課堂上積極思考,也是鍛煉鉆研與創新精神的一個很好的途徑。
程序設計的特點是答案并不唯一,同樣一個要求,很多做法都是可以的[1],課堂上僅僅講書本上的做法,會束縛了學生的思維,所以,課堂教學中,除了講經典的做法之外,鼓勵學生想想有沒有別的做法,也是個不錯的做法,教學實踐證明,這樣可以很好的解除思維的束縛,打開學生的思緒,而且還可以給學生很好的鼓勵。
幫助學生走出傳統教育的束縛,放飛思緒,從一點一滴做起,慢慢養成鉆研、創新的習慣,是當今大學教育的一個重要的教育思想,這對于學生將來的發展,對于國家和社會的發展都有很多益處。
1教學中的實踐舉例
程序設計類課程是大學生基本都要接觸的課程,計算機專業和非計算機專業基本都要開設,通過學習可以很好的培養學生的邏輯思維能力[2],非計算機專業的學生,將來結合自己的專業特點,可以做出有自己專業背景的、可以減輕人的繁雜勞動的軟件。
本文以非計算機專業學生的“VB程序設計”課程為例,講述幾個培養學生鉆研和創新精神的例子。
1.1實踐一:多張圖片交替出現
Visual Basic提供一個Timer控件,是一個具有間隔時間設置所觸發的時間程序,使我們可以將其隱藏在系統中,以某一時間間隔觸發相關程序,靈活地運用它可以取得很巧妙的效果。在講到Timer控件時,舉例實現幻燈片放映,即兩張圖片交替出現功能的程序,如時鐘程序1。
啟發學生考慮如果是多張圖片依次出現應該怎么修改,如時鐘程序2,其中mod運算符是經常用于循環算法的,例如時鐘、環狀的數據結構都經常用到,但是,這種方法也不是唯一的,在教師的鼓勵下,學生經過考慮又給出兩種不同的方法,如時鐘程序3和時鐘程序4。個人感覺學生給出的解決方法也非常好,由此鼓勵學生敢于自己去想、敢于創新,敢于鉆研。實踐證明,提出新想法在課堂上得到老師肯定的學生,在后面的學習中創新的熱情越來越高。
從兩張圖片交替出現的最基本的方法開始,引出其他方法,然后進一步擴展到多張圖片,鼓勵學生給出自己能夠想出的其他方法,最后,對這類問題進行
總結,凡是需要區別幾種狀態的交替出現的問題,都可以使用類似的方法,到此學生對于此類問題有了更深刻的認識,豁然開朗。
時鐘程序1
Private Sub Timer_Timer()
Static flag As Boolean
If flag=True Then
Form1.Picture = LoadPicture(“d:\\1.jpg”)
Else
Form1.Picture = LoadPicture(“d:\\2.jpg”)
End If
flag = Not flag
End Sub
時鐘程序2
Private Sub Timer_Timer()
Static flag As Integer
If flag=0 Then
Form1.Picture = LoadPicture(“d:\\1.jpg”)
ElseIf flag=1 then
Form1.Picture = LoadPicture(“d:\\2.jpg”)
Else
Form1.Picture = LoadPicture(“d:\\3.jpg”)
End If
flag = (flag+1) mod 3
End Sub
Private Sub Timer_Timer()
Static flag As Boolean
If flag=True Then
Form1.Picture = LoadPicture(“d:\\1.jpg”)
Else
Form1.Picture = LoadPicture(“d:\\2.jpg”)
End If
flag = Not flag
End Sub
時鐘程序3
Private Sub Timer_Timer()
Static flag As Integer
If flag=0 Then
Form1.Picture = LoadPicture(“d:\\1.jpg”)
ElseIf flag=1 then
Form1.Picture = LoadPicture(“d:\\2.jpg”)
Else
Form1.Picture = LoadPicture(“d:\\3.jpg”)
End If
flag = flag+1
If flag>3 then flag=0
End Sub
時鐘程序4
Private Sub Timer_Timer()
Static flag As Integer
If flag=0 Then
Form1.Picture = LoadPicture(“d:\\1.jpg”)
Flag=1
ElseIf flag=1 then
Form1.Picture = LoadPicture(“d:\\2.jpg”)
Flag=2
Else
Form1.Picture = LoadPicture(“d:\\3.jpg”)
Flag=0
End If
End Sub
Private Sub Timer_Timer()
Static flag As Integer
If flag=0 Then
Form1.Picture = LoadPicture(“d:\\1.jpg”)
ElseIf flag=1 then
Form1.Picture = LoadPicture(“d:\\2.jpg”)
Else
Form1.Picture = LoadPicture(“d:\\3.jpg”)
End If
flag = flag+1
If flag>3 then flag=0
End Sub
1.2實踐二:控件數組的使用
控件數組,有在設計時創建的,也有在運行中創建的。控件數組一方面使得程序簡潔、令代碼易于維護,另一方面能使程序具有靈活性。可見,科學地利用控件數組可使編程工作的效率更高。
《新編Visual Basic程序設計教程》中的例題5-5[3]要求設計一個平鋪墻紙程序,即在窗體上并排顯示給定的圖片,每個圖片加載到圖片框中,多個圖片框組成一個控件數組。程序運行前,只在窗體上創建一個圖片框,然后,在運行中不斷加載,題目分析中直接給出方法是加載6行6列張圖片,行數和列數是通過程序設計者多次嘗試得出的,書上給的運行界面確實實現了平鋪墻紙的效果。關鍵代碼如控件數組程序1所示。
控件數組程序1
ptop = 0
For i = 1 To 6
pleft = 50
For j = 1 To 6
k = (i - 1) * 6 + j
Load Picture1(k)
Picture1(k).Top = ptop
Picture1(k).Left = pleft
Picture1(k).Visible = True
Picture1(k).Picture = LoadPicture(\"E:\\1.bmp\")
pleft = pleft + Picture1(0).Width
Next j
ptop = ptop + Picture1(0).Height
Next i
但是,這個例題是否能實現平鋪的效果依賴于窗體的大小和平鋪圖片的大小,并不能對于任意尺寸的窗體進行圖片平鋪,不具有通用性,6行6列只針對于一個確定的窗體,于是,啟發學生質疑書上的程序,并引導學生進行修正。
第一次修改:加入兩個新的變量m和n,以表示更適合當前窗體的尺寸的平鋪圖片的行數和列數。如控件數組程序2中的加粗字體部分。
控件數組程序2
n = Form1.ScaleWidth \\ Picture1(0).Width
m = Form1.ScaleHeight \\ Picture1(0).Height
ptop = 0
For i = 1 To m
pleft = 50
For j = 1 To n
k = (i - 1) * n + j
Load Picture1(k)
Picture1(k).Top = ptop
Picture1(k).Left = pleft
Picture1(k).Visible = True
Picture1(k).Picture = LoadPicture(\"E:\\1.bmp\")
pleft = pleft + Picture1(0).Width
Next j
ptop = ptop + Picture1(0).Height
Next i
第二次修改:做出上述修改后,窗體還是會有小的多余的邊,去除這些邊要用到下面的語句。
Form1.Width = n * Picture1(0).Width + 50 + 100 + 100
Form1.Height= m * Picture1(0).Height + Form1.Height - Form1.ScaleHeight
從修改程序中體會到鉆研的樂趣,體會到書不是完美的,老師寫的程序也不是無可挑剔的,有意義的修改創新都是有價值的,培養學生樂于鉆研、善于鉆
研的精神和品質。另外啟發學生考慮還有沒有其他修改方法,比如不用修改窗體的大小,而是適當地放大或縮小平鋪圖片。
1.3實踐三:課前程序演示
程序設計的能力絕不是一張考試卷能體現的,而是體現在你能否用已經學過的設計語言編寫對于自己有用的程序[4],解決生活、學習中的問題。為了鼓勵學生學以致用,真正將編程融入生活,從課程開始,就通知學生課前10分鐘用來留給大家演示自己做的程序,任何感興趣的內容都可以,創新的想法是最有意義的。
如果有程序一時無法調試通過,可以和老師聯系,一起找尋修改的方法,還可以在CSDN之類的網站上發帖子,尋求更大范圍的幫助。一學期下來,很多同學通過努力編出了精彩的程序,有拼圖游戲、有戰斗游戲,學生也開闊了思維,反映非常好。
2結語
“程序設計語言”課程教學質量的優劣是關系到計算機及相關專業的學生對本專業知識能否掌握的關鍵。為促進學生科技創新的良好氛圍的形成,全面提升教育質量,培育更多優秀的高素質、創新型人才,鍛煉學生學習編寫程序的興趣,如何做到把充分發揮教師的主導作用和學生的主體作用與把培養學生的能力和索質這教學改革的總體目標緊密結合,對高校中的每位計算機教師來說都是個值得探討的問題。
鉆研與創新都可以讓學生體驗到成功的快樂,獲得頗有收獲的滿足感,這種成就感會使學生獲得更多的學習的興趣和動力,充分發揮自身的積極主動性,追尋更多的成功和滿足,這應該是所有老師所期望的,也是學校和社會對于學生的期望。
教無定法,學也無定法。要在教學中積極地探索和總結,真正做到教學相長,是教學的目的,也是教師的責任。
參考文獻:
[1] 文雄軍. 程序設計課程教學的探討[J]. 文教資料,2006(25):147-148.
[2] 徐光明. 程序設計教學實踐與思考[J]. 裝備制造技術,2008(7):152-153.
[3] 張艷. 新編Visual Basic程序設計教程[M]. 江蘇:中國礦業大學出版社,2009.
[4] 孫玉娣,張曉如. 計算機程序設計教與學[J]. 電腦知識與技術,2006(23):201-202.
The Explore of Developing Students Study the Spirit of Innovation in the Program Design
SUN Jin-fei, GUAN Hong-jie
(School of Computer Science Technology, China University of Mining Science Technology, Xuzhou 221116, China)
Abstract: In this paper, the current higher education research and innovation for the needs, through a number of classroom practice, classroom teaching in the program, the students put forward their own ideas of thinking habits, promote scientific and technological innovation to form a good atmosphere to enhance the quality of education and nurture more high-quality, innovative talent.
Key words: programming; research; innovation
(編輯:白杰)