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