張艷芳
(臨汾職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,山西 臨汾 041000)
Visual Basic(簡(jiǎn)稱VB)是一種可視化、面向?qū)ο?、采用事件?qū)動(dòng)編程機(jī)制的高級(jí)程序設(shè)計(jì)語(yǔ)言,是高職院校計(jì)算機(jī)專業(yè)學(xué)生必修的一門專業(yè)基礎(chǔ)課,也是學(xué)生接觸到的第一門程序設(shè)計(jì)類課程。通過(guò)本課程的教學(xué),一方面可以培養(yǎng)學(xué)生合作完成較小規(guī)模軟件開(kāi)發(fā)的能力,另一方面也能訓(xùn)練學(xué)生的邏輯思維能力,為學(xué)習(xí)其他程序設(shè)計(jì)語(yǔ)言課打好基礎(chǔ)。
在教學(xué)過(guò)程中發(fā)現(xiàn),多數(shù)高職生都覺(jué)得VB深?yuàn)W、枯燥、難懂,學(xué)習(xí)起來(lái)存在很大的困難。這主要有兩個(gè)方面的原因:一是高職生自身英語(yǔ)基礎(chǔ)差,看見(jiàn)用“英文”字母編寫出來(lái)的程序代碼首先從心理上就產(chǎn)生了畏懼,興趣幾乎全被“嚇”跑了。二是教學(xué)課時(shí)少,內(nèi)容多,教師往往忙于趕進(jìn)度,學(xué)生學(xué)得不扎實(shí),特別是當(dāng)課程進(jìn)行到復(fù)雜程序設(shè)計(jì)時(shí),有些學(xué)生根本就聽(tīng)不懂了。
筆者自2006年至今一直講授VB程序設(shè)計(jì)這門課,通過(guò)課堂講解和上機(jī)實(shí)踐發(fā)現(xiàn),教師在教學(xué)過(guò)程中要想讓學(xué)生喜歡并掌握VB程序設(shè)計(jì),首先必須做好教學(xué)計(jì)劃,備好課,尤其對(duì)于教學(xué)中的重點(diǎn)和難點(diǎn),更要準(zhǔn)備一些循序漸進(jìn)、由淺入深的精彩案例,這樣才能使整個(gè)教學(xué)過(guò)程有條不紊的進(jìn)行。其次,在教學(xué)過(guò)程中采用循序漸進(jìn)、由淺入深的教學(xué)方法,通過(guò)反復(fù)的實(shí)例練習(xí),可以更好地引導(dǎo)學(xué)生逐步掌握知識(shí),不斷產(chǎn)生成就感,從而大大提高學(xué)習(xí)興趣,最終掌握編程技能。
以VB程序設(shè)計(jì)中的inputbox()函數(shù)為例。
inputbox()函數(shù)定義[1]
格式:inputbox[$](<提示信息)[,<標(biāo)題>][,<默認(rèn)>][,
功能:該函數(shù)的作用是打開(kāi)一個(gè)對(duì)話框,等待用戶在對(duì)話框中輸入信息。
在課堂上逐一講解inputbox()函數(shù)的各個(gè)參數(shù)說(shuō)明后,通過(guò)投影顯示輸入框1(如圖1所示)。
圖1 輸入框1
同時(shí),向?qū)W生講解源代碼應(yīng)該這樣編寫:
Private sub form_click()
Dim name as string
Name=inputbox(“請(qǐng)輸入您的名字”)
End sub
在學(xué)生理解輸入框1程序后,接下來(lái)又用投影顯示輸入框2(如圖2所示)。
引導(dǎo)學(xué)生可以通過(guò)修改inputbox()函數(shù)的參數(shù)來(lái)實(shí)現(xiàn):
圖2 輸入框2
Name=inputbox(“請(qǐng)輸入您的名字”,“提示窗口”)
在學(xué)生理解輸入框2程序后,接下來(lái)又用投影顯示輸入框3(如圖3所示)。
圖3 輸入框3
然后請(qǐng)一位學(xué)習(xí)比較好的同學(xué)回答,要想實(shí)現(xiàn)圖3所示的效果應(yīng)該如何修改inputbox()函數(shù)的參數(shù)。
Name=inputbox(“請(qǐng)輸入您的名字”,“提示窗口”,“張明”)
在學(xué)生理解輸入框3程序后,接下來(lái)又用投影顯示輸入框4(如圖4所示)。
圖4 輸入框4
然后請(qǐng)一位基礎(chǔ)不太好的同學(xué)回答,要想實(shí)現(xiàn)圖4所示的效果應(yīng)該如何修改inputbox()函數(shù)的參數(shù)。
Name=inputbox(“請(qǐng)輸入您的名字”,“張明”)
教師通過(guò)輸入框4的講解使學(xué)生明白,inputbox()函數(shù)格式中所標(biāo)明的圓括號(hào)中的各參數(shù)次序必須一一對(duì)應(yīng),如果省略的參數(shù)處在中間位置,所對(duì)應(yīng)的逗號(hào)不能省略。[2]
接下來(lái),請(qǐng)學(xué)生修改inputbox()函數(shù)的參數(shù)為:
name=InputBox("請(qǐng)輸入您的名字","提示窗口","張明",100,100)
參數(shù)修改后請(qǐng)同學(xué)們運(yùn)行程序觀察效果與先前有何不同,然后再讓學(xué)生把參數(shù)中的“100,100”改為“500,500”后,再次運(yùn)行程序,看程序的運(yùn)行效果又會(huì)有何變化。通過(guò)自己動(dòng)手改編并運(yùn)行程序,學(xué)生會(huì)發(fā)現(xiàn)這對(duì)數(shù)字參數(shù)是控制輸入框在窗體上顯示位置的。
這樣通過(guò)逐漸增加或改變函數(shù)的參數(shù),使學(xué)生理解并掌握inputbox()函數(shù)的功能及用法。在學(xué)生真正理解該函數(shù)各參數(shù)的意義后,接下來(lái)可以再舉幾個(gè)關(guān)于inputbox()函數(shù)的實(shí)例以加深學(xué)生的理解。
在學(xué)生通過(guò)實(shí)例逐漸理解了inputbox()函數(shù)的所有參數(shù)的功能之后,再舉幾個(gè)綜合性的實(shí)例,讓學(xué)生更加深刻地理解這個(gè)函數(shù)的用法,真正掌握這個(gè)函數(shù)。
例1:用戶使用inputbox函數(shù)輸入姓名,程序如下:
Private sub form_click()
Dim name as string
Name=inputbox(“請(qǐng)輸入您的名字”)
End sub
在程序講解的過(guò)程中,先引導(dǎo)學(xué)生思考:在程序運(yùn)行時(shí),用戶若想輸入自己的姓名,需要定義一個(gè)字符型的變量,然后由inputbox()函數(shù)輸入姓名并賦值給變量name。
在學(xué)生理解了以上程序后,教師以問(wèn)題來(lái)引導(dǎo)學(xué)生,如這個(gè)程序在運(yùn)行時(shí)只是顯示了輸入框讓用戶輸入了自己的姓名,用戶輸入的信息在輸入完成后用戶能不能看見(jiàn)自己輸入的信息?圍繞這個(gè)問(wèn)題學(xué)生會(huì)展開(kāi)討論。由此教師接著引導(dǎo):我們以前學(xué)過(guò)的什么函數(shù)可以在窗體上顯示出信息?馬上就會(huì)有學(xué)生回答:“print”。這時(shí)教師和學(xué)生一起把剛才的程序修改完善,使得程序不僅能輸入信息,還能將輸入的信息顯示出來(lái),具體代碼參看例2。
例2:用戶使用inputbox函數(shù)輸入姓名,并在窗體上顯示出來(lái)。[3]
Private sub form_click()
Dim name as string
Name=inputbox(“請(qǐng)輸入您的名字”)
Print name
End sub
在學(xué)生理解了姓名的輸入與顯示之后,教師可以擴(kuò)展知識(shí)。如果除了姓名之外還需要再輸入年齡并且將輸入的年齡在窗體上顯示出來(lái),程序的具體代碼參看例3。
例3:用戶使用inputbox函數(shù)輸入姓名和年齡,并在窗體上顯示出來(lái)。程序如下:
Private sub form_click()
Dim name as string
Dim age as integer
Name=inputbox(“請(qǐng)輸入您的名字”)
Age=inputbox(“請(qǐng)輸入您的年齡”)
Print name
Print age
End sub
學(xué)生很快就能編出程序代碼。接下來(lái)教師再用問(wèn)題來(lái)引導(dǎo):這個(gè)程序只是輸出了一個(gè)名字和年齡,怎么樣讓輸出的信息更完善更好懂呢?比如可以這樣來(lái)輸出:張三的年齡是:17。
在學(xué)生的好奇心被激起之后,教師講解在輸出時(shí)可以將原來(lái)的兩個(gè)print語(yǔ)句改為一個(gè):print name;“的年齡是:”;age,具體代碼參看例4。
在講解這個(gè)print語(yǔ)句的時(shí)候要提醒學(xué)生,在print語(yǔ)句中變量會(huì)以具體的值輸出,而雙引號(hào)內(nèi)的字符串會(huì)原樣輸出。
例4:用戶使用inputbox函數(shù)輸入姓名和年齡,并在窗體上顯示出來(lái)。程序如下:
Private sub form_click()
Dim name as string
Dim age as integer
Name=inputbox(“請(qǐng)輸入您的名字”)
Age=inputbox(“請(qǐng)輸入您的年齡”)
Print name;”的年齡是:”;age
End sub
由于多數(shù)高職學(xué)生自主學(xué)習(xí)能力相對(duì)較差,上機(jī)實(shí)踐課教師如果只是讓學(xué)生自己參照筆記或教材編寫程序,那么10%的掌握得相當(dāng)好的學(xué)生可能會(huì)思考著去編程,60%的掌握得比較好的學(xué)生肯定會(huì)不加思索地照抄照搬源程序,而其他學(xué)生則要么玩游戲,要么閑聊。所以作為一名計(jì)算機(jī)專業(yè)的教師要想真正讓學(xué)生對(duì)自己所教的課程感興趣,上機(jī)實(shí)踐課上課件的制作、對(duì)學(xué)生實(shí)踐的不斷巡視以及必要時(shí)對(duì)于相關(guān)知識(shí)點(diǎn)的講解是很重要的。
針對(duì)不同的學(xué)生,上機(jī)任務(wù)也應(yīng)有所不同。如果上機(jī)課上只做簡(jiǎn)單的實(shí)例會(huì)讓基礎(chǔ)較好的學(xué)生感到無(wú)所事事。上機(jī)課必須兼顧到所有學(xué)生的實(shí)際情況,既要有簡(jiǎn)單有趣的實(shí)例,又要提供有助于思維拓展的綜合性實(shí)例,學(xué)生可以根據(jù)自己的學(xué)習(xí)狀況自行選擇。
基于以上原因,考慮到學(xué)生的個(gè)體差異,上機(jī)課中一般包含三種上機(jī)任務(wù),即簡(jiǎn)單任務(wù)、基本任務(wù)和拓展任務(wù)。簡(jiǎn)單有趣的實(shí)例可以激起基礎(chǔ)較差學(xué)生的學(xué)習(xí)興趣,學(xué)生在上機(jī)實(shí)踐過(guò)程中通過(guò)自己動(dòng)手編寫并運(yùn)行程序,可以使他們產(chǎn)生成就感,并催發(fā)出繼續(xù)學(xué)習(xí)編程的動(dòng)力;基本任務(wù)是針對(duì)大部分學(xué)生設(shè)計(jì)的上機(jī)任務(wù),要求學(xué)生掌握的一些主要的知識(shí)點(diǎn)和技能,通過(guò)這部分任務(wù)的完成,學(xué)生基本上可以理解和掌握所學(xué)的編程知識(shí)與技能;較復(fù)雜的綜合性實(shí)例為基礎(chǔ)好的學(xué)生提供了進(jìn)一步發(fā)展的空間,通過(guò)這些實(shí)例的編寫使得他們能夠?qū)λ鶎W(xué)知識(shí)有更深的理解,從而更好地掌握相關(guān)知識(shí)與技能。
針對(duì)不同的上機(jī)任務(wù),課程設(shè)計(jì)和教學(xué)方法也不盡相同。對(duì)于簡(jiǎn)單任務(wù),除了要給出題目和程序運(yùn)行的界面之外,還需要給出程序的源代碼,對(duì)于需要學(xué)生理解和掌握的關(guān)鍵知識(shí)點(diǎn),有時(shí)教師還需要用文字的形式進(jìn)行標(biāo)注,以加深學(xué)生的理解,從而引導(dǎo)學(xué)生以最快的速度掌握必備的知識(shí);基本任務(wù)在教學(xué)過(guò)程中教師已經(jīng)講過(guò),在課件中可以只給出題目和程序運(yùn)行的界面,在上機(jī)過(guò)程中教師通過(guò)巡視注意觀察,如果遇到共性的問(wèn)題可以通過(guò)投影進(jìn)行講解;拓展任務(wù)主要是針對(duì)基礎(chǔ)較好的學(xué)生設(shè)計(jì)的,在課件中除了需要給出題目和程序運(yùn)行的界面之外,有時(shí)還需要標(biāo)注出該程序?qū)崿F(xiàn)的難點(diǎn),以引導(dǎo)學(xué)生更好、更快地編寫出程序。這部分學(xué)生比較少,學(xué)習(xí)積極性又比較高,所以程序編寫過(guò)程中如果遇到什么問(wèn)題教師可以進(jìn)行個(gè)別輔導(dǎo)。
“授人以魚,不如授人以漁”,通過(guò)循序漸進(jìn)的方法,提高學(xué)生的思維能力,使學(xué)生學(xué)會(huì)學(xué)習(xí),學(xué)會(huì)思考,這是循序漸進(jìn)教學(xué)方法的核心目的,也是這種教法的優(yōu)勢(shì)。
筆者自2010年起,在2010級(jí)和2011級(jí)計(jì)算機(jī)專業(yè)VB程序設(shè)計(jì)課程的教學(xué)中采用了循序漸進(jìn)的教學(xué)方法,通過(guò)同一專業(yè)的2009級(jí)、2010級(jí)、2011級(jí)學(xué)生各方面情況的對(duì)比分析表明,在排除這三個(gè)年級(jí)學(xué)生本身差異因素的情況下,循序漸進(jìn)的教學(xué)方法可以極大地提高學(xué)生的學(xué)習(xí)興趣,讓學(xué)生對(duì)所學(xué)知識(shí)的掌握程度有顯著的提高。
表1 近三年計(jì)算機(jī)專業(yè)學(xué)生VB課程教學(xué)效果對(duì)比
教學(xué)實(shí)踐證明,循序漸進(jìn)的教學(xué)方法可以激發(fā)學(xué)生的學(xué)習(xí)興趣,有利于提高學(xué)生自主探究的學(xué)習(xí)能力,在一定程度上改善了教學(xué)效果。但是,在今后的教學(xué)過(guò)程中還需要不斷的探索,根據(jù)不同的情況采用不同的教學(xué)方法,因材施教,才能取得更好的教學(xué)效果。
[1]沈祥玖,徐紅,鄭有增.Visual Basic可視化程序設(shè)計(jì)教程[M].北京:中國(guó)水利水電出版社,2003.
[2]吳昌平.Visual Basic6.0程序設(shè)計(jì)[M].北京:人民郵電出版社,2002.
[3]柴欣,武優(yōu)西.Visual Basic程序設(shè)計(jì)基礎(chǔ)(第3版)[M].北京:中國(guó)鐵道出版社,2005.