李麗華+魏樹權
摘要:案例教學法對于計算機專業(yè)是一種新的教學形式,能激發(fā)學生的學習積極性,提高學生分析問題和解決問題的能力。該文以掃雷游戲為例闡述了在VB教學中采用案例教學法對控件數組、函數過程、遞歸算法等重要的知識點進行教學設計和教學實施的過程。
關鍵詞:案例教學法;案例設計;控件數組
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2016)22-0108-03
案例教學法,在計算機科學中是一種開放式、互動式的新型教學方式,它通過模擬或者重現(xiàn)軟件項目中的關鍵場景,使學生主動把自己納入案例當中,運用已有的知識和經驗來分析、判斷案例提供的背景、軟件需求描述,并解決相關軟件設計技術問題,最后,從中總結出某些關鍵的知識點或設計方案;也可以讓學生通過自己的思考或者跟隨他人的思路來拓寬自己的視野,從而促進學生進行知識技能遷移,提高學生的軟件設計能力[1]。
控件數組是Visual Basic中的一個較難的知識點,它是一組具有相同名稱和類型的控件的集合,通過各自的編號(下標)來識別,并且可以共享事件。程序中使用控件數組所占用的資源比單獨添加多個控件所占用的資源更少,而且控件數組的事件共享,使用多個同類型控件在一個應用中執(zhí)行相同或類似的代碼,使用控件數組比單獨創(chuàng)建多個控件更容易設計,代碼更容易維護[2]。在控件數組的教學過程中,需要學生理解以控件為數組的設計形式、控件在應用界面上的微差異可視化的表現(xiàn)形式,結合控件事件代碼的共享機制以解決軟件設計問題的設計思維,由于設計思維的轉變,實踐證明,采用單純的講解其知識點并簡單演示,很難獲得優(yōu)良的教學效果。
將案例教學法引入Visual Basic的教學過程,就是要把軟件案例的設計實現(xiàn)過程加以典型化處理[3],形成供學生思考分析的案例,采用鼓勵學生獨立研究學習與師生相互探討相結合的教學方式,提高學生分析問題和解決問題的能力。本文在教學過程中模擬一個Windows系統(tǒng)自帶的掃雷游戲的實現(xiàn)過程,靈活的運用VB各個章節(jié)的知識點,以案例驅動的方式,結合界面設計和編碼,以使學生能夠更加真切的理解和掌握控件數組的知識要點,并能進行實際應用設計。
1 案例準備
通過多年的教學實踐探索,我們認為教學案例的選擇,要滿足三個條件:典型、貼近實際、有趣,經過細致選擇,Windows系統(tǒng)自帶的掃雷游戲最后被選中。
在案例教學中,要讓學生成為教學過程的主角,我們在講解控件數組課前將準備好的掃雷游戲案例告知學生,要求學生查找一些必要的資料,做好發(fā)言準備;同時,我們將初步的案例問題分解細節(jié)告訴學生[4]。初步分解如下:
1)游戲地圖構建;
2)游戲地雷分布構建;
3)游戲中點擊控件按鈕,地雷顯示;
4)游戲中排雷錯誤處理。
2 案例課堂講解討論
案例課堂講解討論是案例教學過程的中心環(huán)節(jié),教師需要主動調動學員的主動性,引導學生主動緊緊圍繞案例進行思考和分析[5]。以10×10的游戲地圖為例,共需100個按鈕控件。
1)游戲地圖構建
地圖如何構建?首先引導學生對不正確的設計方案進行否定,比如先繪制20個左右的按鈕控件到界面上,然后依次點擊按鈕生成控件單擊事件,在這個過程中引導學生對各個環(huán)節(jié)進行發(fā)言,時機成熟后,引入控件數組知識點:
①控件數組的概念及功能:控件數組是VB中特有的一組對象,同一個控件數組的所有控件擁有共同的名稱和類型并響應同一個事件過程,但每一個控件都擁有自己的屬性值。數組通過下標來標示每一個控件元素。
②引入掃雷游戲的實際需要,生成游戲地圖,基本完成步驟:
a、做好一個按鈕當模版
b、建立控件數組
c、生成99個新的控件數組元素
③對設計進行小結,引導學生一起歸納采用控件數組設計地圖的初步特征,并重點強調應用到的控件數組的知識要點[6]。
2)游戲地雷分布構建
①分析地雷和控件的關系:教學過程中和學生一起分析,地雷是游戲中的一個關鍵元素,但它不是游戲中的獨立元素,必須和控件進行關聯(lián)。
②地雷設計:可以采用二維數組記錄哪些按鈕控件對應地雷。在窗體的聲明部分聲明二維數組,用于存儲按鈕控件有地雷的情況。假設規(guī)定二維數組某元素的值為1,代表該位置上的按鈕有地雷,為0代表無地雷。
Dim zha(1 To 10, 1 To 10) As Integer
③生成隨機地雷
教學中和學生一同進行分析:10×10的游戲地圖中有10個地雷,地雷的分布必須具有隨機性,所以對10個地雷的位置使用隨機函數來進行設置,同時要注意生成的代表地雷位置的隨機數不能重復。最后一同設計出主要代碼,參考如下:
zhdshu = 10 '地雷總數
Dim tmp(10) As Integer
t = 0
While t < 10
biaozhi = 0 '用于標識當前控件是否有雷
linshishu = Int(Rnd * 100)
For i = 0 To t
If tmp(i) = linshishu Then
biaozhi = 1
Exit For
End If
Next i
If biaozhi = 0 Then
t = t + 1
tmp(t) = linshishu
End If
Wend
For i = 1 To 10
zha(tmp(i) \ 10 + 1, (tmp(i) Mod 10) + 1) = 1
Next i
④對設計進行小結,引導學生一起歸納地雷分布設計過程中,將代碼與界面進行關聯(lián)的設計要點,并回顧隨機數知識點。
3)游戲中點擊控件按鈕,地雷顯示
①首先提出關鍵問題引導學生思考:在按鈕上點擊鼠標左鍵需要顯示其周圍有幾個地雷,如何計算?游戲中如何判斷是否獲勝?
②地雷個數的計算:在按鈕上點擊鼠標左鍵后,界面上需要顯示其周圍有幾個地雷,地雷個數的計算問題可以轉換為判斷當前點擊的按鈕所對應的行列數,即對應的二維數組元素周圍的8個按鈕有幾個地雷。一同設計出主要代碼,參考如下:
Dim hang As Integer, lie As Integer, shuzi As Integer
hang = Int(Index / 10) + 1
lie = (Index Mod 10) + 1
'判斷當前點擊按鈕的周圍有幾個地雷,并顯示出來
shuzi = 0
For i = hang - 1 To hang + 1
For j = lie - 1 To lie + 1
If i >= 1 And i <= 10 And j >= 1 And j <= 10 And (Not (i = hang And j = lie)) Then
'判定周圍是否有按鈕
If zha(i, j) = 1 Then
shuzi = shuzi + 1
End If
End If
Next j
Next i
cmd(Index).Caption = shuzi '顯示有幾個地雷
③判斷獲勝
引導學生分析出設計方案:用戶已經標識出所有地雷,標示正確了就算贏,所以程序中我們只需要判斷是否zha數組中所有的等于1的元素,在界面上顯示的標志是符號"●",并且顯示的地雷總數是10個。然后和學生一同設計出程序代碼。
④對設計進行小結,引導學生一起歸納控件數組共享事件代碼的編程方式,重點加強學生理解控件數組中各個控件既獨立又統(tǒng)一的設計特點。
4)游戲中排雷錯誤處理
引導學生分析出設計方案:如果游戲中,用戶點擊錯了,則應該顯示所有的雷,這個過程我們只需要遍歷zha數組,如果數組元素等于1,則是地雷,顯示出來即可。一同設計出主要代碼,參考如下:
If zha(hang, lie) = 1 Then
For i = 1 To 10
For j = 1 To 10
If zha(i, j) = 1 Then
cmd(i * 10 - 10 + j - 1).Caption = "●"
End If
Next j
Next i
Exit Sub
End If
5)游戲優(yōu)化
基本功能設計結束后,引導學生對案例中部分代碼進行優(yōu)化設計。
①將求按鈕周圍地雷數量編寫為函數,引導學生一同設計函數代碼,參考代碼如下:
Private Function qiugeshu(suoyin As Integer) As Integer
numhang = Int(suoyin / 10) + 1 ‘找出控件數組元素對應的行列信息
numlie = (suoyin Mod 10) + 1
shuzi = 0
For i = numhang - 1 To numhang + 1
For j = numlie - 1 To numlie + 1
If i >= 1 And i <= 10 And j >= 1 And j <= 10 And _
(Not (i = numhang And j = numlie)) Then
If zha(i, j) = 1 Then
shuzi = shuzi + 1
End If
End If
Next j
Next i
qiugeshu = shuzi
End Function
②采用遞歸實現(xiàn)掃雷游戲過程的連續(xù)排雷處理功能,每次點擊,對被點擊按鈕周圍的按鈕進行處理,引導學生一同設計函數代碼,參考代碼如下:
Private Sub fun(suoyin1 As Integer)
numhang = Int(suoyin1 / 10) + 1
numlie = (suoyin1 Mod 10) + 1
cmd(suoyin1).Caption = qiugeshu(suoyin1)
'遍歷周圍的8個
If qiugeshu(suoyin1) = 0 Then
For i = numhang - 1 To numhang + 1
For j = numlie - 1 To numlie + 1
If i >= 1 And i <= 10 And j >= 1 And j <= 10 And _
(Not (i = numhang And j = numlie)) Then
If Not IsNumeric(cmd((i - 1) * 10 + j - 1).Caption) Then
fun ((i - 1) * 10 + j - 1)
End If
End If
Next j
Next i
End If
End Sub
③對優(yōu)化設計進行小結,復習遞歸程序的設計,引導學生一起歸納應用控件數組解決項目設計問題的特點:在方案設計上,可批量處理大量重復或功能相近的控件;在代碼設計上,利用for-next循環(huán)結構,可以方便地為控件數組的各個元素設置屬性等。
3 結論
案例教學以其與實際聯(lián)系緊密、操作性強的特點架起了理論與實踐的橋梁。相對單純講解理論知識并簡單演示的傳統(tǒng)教學,將案例教學法應用于VB教學過程的最大優(yōu)勢在于以案例為課堂教學基本支撐點,將學生引人一個特定的相對真實的軟件設計情境中,通過師生、生生之間的共同探討,逐步剖析、層層推進的解決問題,在整個教學過程中激發(fā)學生的學習積極性,培養(yǎng)學生的分析問題和解決問題的能力,幫助學生將理論知識轉化為實踐能力,經過多年的探索和實踐取得了很好的教學效果。
參考文獻:
[1] 丁海燕.Visual Basic程序設計課程實踐教學模式的探討[J].實驗室研究與探索.2013,32(10):431-433
[2]黃爽.VB程序設計與應用課程項目教學法的實施[J].遼寧高職學報,2010,12(10):45-46.
[3]胡緒英.VB中控件數組及其應用[J].軟件導刊.2014,13(10):20-22.
[4]譚浩強.visualBasic程序設計案例教程[M].北京:清華大學出版社,2012.
[5]楊鈞.如何在計算機教學中激發(fā)學生學習興趣[J].遼寧中醫(yī)藥大學學報,2006(8):65-67.
[6] 葉子,龐麗娟.試論師生互動模式形成的基本過程[J].教育研究,2009(2).