高娟,李向群,王娟,王新
(中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,徐州 221116)
隨著計(jì)算機(jī)的不斷普及,社會(huì)信息化進(jìn)程的不斷推進(jìn),各行各業(yè)的運(yùn)作都離不開(kāi)計(jì)算機(jī)。很多行業(yè)對(duì)人才在信息技術(shù)素質(zhì)方面的要求,不再滿(mǎn)足于對(duì)計(jì)算機(jī)的基本操作、基本應(yīng)用上,而是更多地關(guān)注于他們是否具備使用計(jì)算機(jī)解決工作中實(shí)際問(wèn)題的能力,以及是否具備一定的程序設(shè)計(jì)能力,將實(shí)際問(wèn)題的解決方法編寫(xiě)成計(jì)算機(jī)程序,利用計(jì)算機(jī)高速、自動(dòng)運(yùn)行的特點(diǎn),更快、更精準(zhǔn)地解決問(wèn)題。
《VB程序設(shè)計(jì)》是高校針對(duì)非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生開(kāi)設(shè)的計(jì)算機(jī)基礎(chǔ)課程系列中的重要課程之一。課程主要介紹使用VB進(jìn)行程序設(shè)計(jì)的基本思想和方法,目的是讓學(xué)生掌握可視化程序設(shè)計(jì)的通用方法和步驟,初步具備使用編程技術(shù)來(lái)解決本專(zhuān)業(yè)實(shí)際問(wèn)題的能力,并在學(xué)習(xí)過(guò)程中不斷提升自身的編程能力和邏輯思維能力。
通過(guò)多年的教學(xué)實(shí)踐,發(fā)現(xiàn)目前在《VB程序設(shè)計(jì)》的教學(xué)中主要存在以下幾個(gè)問(wèn)題:
(1)未能充分認(rèn)識(shí)課程的重要性。不少學(xué)生不能充分認(rèn)識(shí)編程技術(shù)對(duì)其以后解決專(zhuān)業(yè)領(lǐng)域?qū)嶋H問(wèn)題的重要性,認(rèn)為程序設(shè)計(jì)語(yǔ)言是計(jì)算機(jī)的專(zhuān)業(yè)課程,作為一個(gè)非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生沒(méi)有必要深入學(xué)習(xí)。
(2)在學(xué)習(xí)過(guò)程中存在畏難情緒。很多學(xué)生第一次接觸編程,面對(duì)全新的概念和全新的思維方式,難免產(chǎn)生畏難情緒,剛開(kāi)始自己編程時(shí)往往不知從何處下手,不能較快地進(jìn)入編程狀態(tài)。
(3)課程內(nèi)容相對(duì)比較枯燥,有一定難度。程序設(shè)計(jì)課程的特點(diǎn)是概念較多、知識(shí)點(diǎn)細(xì)、算法抽象、邏輯性強(qiáng)。在學(xué)習(xí)過(guò)程中,學(xué)生會(huì)感到學(xué)習(xí)內(nèi)容枯燥難懂,缺乏興趣,不能達(dá)到理想的教學(xué)效果。
(4)學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題的能力有待提高。在自己編程時(shí),很多學(xué)生只能局限于對(duì)現(xiàn)有例題的模仿和改進(jìn),但對(duì)于一個(gè)全新的問(wèn)題,很難獨(dú)立設(shè)計(jì)出合適的算法并編寫(xiě)出能正確運(yùn)行的程序。
興趣是最好的老師。程序設(shè)計(jì)課程的知識(shí)點(diǎn)略顯繁瑣和枯燥,初學(xué)者剛接觸時(shí),難免會(huì)產(chǎn)生畏難甚至厭學(xué)情緒。但通過(guò)精心設(shè)計(jì)好的案例,可以逐漸培養(yǎng)學(xué)生的學(xué)習(xí)興趣,讓學(xué)生慢慢喜歡上編程。特別是重點(diǎn)章節(jié)引例的設(shè)計(jì),可以對(duì)新章節(jié)的學(xué)習(xí)起到很好的引導(dǎo)作用。
(1)精心設(shè)計(jì)引例,引導(dǎo)學(xué)生興趣。
引例的作用在于啟發(fā)學(xué)生從已有的知識(shí)去思考,進(jìn)而引出新的教學(xué)內(nèi)容。VB程序設(shè)計(jì)課程的重點(diǎn)教學(xué)內(nèi)容是程序的基本控制結(jié)構(gòu)、數(shù)組和過(guò)程,對(duì)這幾部分內(nèi)容都設(shè)計(jì)了相應(yīng)的引例,如表1所示。
表1 重點(diǎn)章節(jié)的引例
在介紹VB程序的基本控制結(jié)構(gòu)之前,學(xué)生已經(jīng)學(xué)習(xí)了VB語(yǔ)言的基礎(chǔ)知識(shí),包括數(shù)據(jù)類(lèi)型、常量與變量、運(yùn)算符與表達(dá)式、內(nèi)部函數(shù)等,但這些知識(shí)還不足以編寫(xiě)出一個(gè)功能相對(duì)復(fù)雜的程序,因此第4章使用的是兩個(gè)算法的引例,從學(xué)生熟悉的求最大公約數(shù)和判斷素?cái)?shù)的方法出發(fā),引出程序設(shè)計(jì)中算法的概念、算法的表示,以及算法和程序代碼之間的關(guān)系,強(qiáng)調(diào)算法的重要性。第5章數(shù)組以計(jì)算一個(gè)班30個(gè)學(xué)生的數(shù)學(xué)平均分為例,使用一個(gè)有30個(gè)元素的數(shù)組來(lái)實(shí)現(xiàn),進(jìn)而引出數(shù)組的概念,并說(shuō)明數(shù)組的作用和使用方法。第6章過(guò)程使用求組合數(shù)的引例,編寫(xiě)一個(gè)實(shí)現(xiàn)求任意數(shù)階乘的通過(guò)過(guò)程,可以減少代碼輸入,由此引出通用過(guò)程的概念和作用,并介紹通用過(guò)程的定義和調(diào)用方法。
(2)及時(shí)安排課后實(shí)驗(yàn),鞏固所學(xué)知識(shí)。
一部分課程內(nèi)容講完后,應(yīng)該及時(shí)給學(xué)生安排課后實(shí)驗(yàn),以鞏固所學(xué)知識(shí)。相對(duì)于其他內(nèi)容,學(xué)生對(duì)剛學(xué)完的內(nèi)容具有更深刻的印象,但如果不及時(shí)復(fù)習(xí)鞏固,很快就會(huì)遺忘。因此應(yīng)該讓學(xué)生在學(xué)完課程內(nèi)容的1~2天之內(nèi),運(yùn)用所學(xué)知識(shí)自己動(dòng)手編程,以達(dá)到鞏固知識(shí)的目的。
對(duì)于布置的課后實(shí)驗(yàn)題目,要讓學(xué)生先預(yù)習(xí),并寫(xiě)出算法或者具體的程序代碼,再在實(shí)驗(yàn)課上輸入代碼驗(yàn)證,否則可能一節(jié)課也完成不了一個(gè)實(shí)驗(yàn)。對(duì)于學(xué)生在實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題,要盡量讓學(xué)生自己分析,可以通過(guò)程序運(yùn)行時(shí)的錯(cuò)誤提示或錯(cuò)誤結(jié)果來(lái)分析問(wèn)題所在,要盡量引導(dǎo)學(xué)生自己分析問(wèn)題、解決問(wèn)題。通過(guò)努力取得成功帶來(lái)的喜悅是興趣的重要來(lái)源之一,當(dāng)學(xué)生通過(guò)自己的思考、分析、修改,最終運(yùn)行得到正確結(jié)果時(shí),興奮的心情是可想而知的,興趣也就自然而然地產(chǎn)生了。
程序設(shè)計(jì)的教學(xué)不應(yīng)該僅僅是知識(shí)的傳授,而應(yīng)該著重于對(duì)學(xué)生編程能力的培養(yǎng),學(xué)生應(yīng)學(xué)會(huì)如何自己動(dòng)手編程,并善于通過(guò)編程解決實(shí)際問(wèn)題。
算法是指計(jì)算機(jī)解決問(wèn)題的方法和步驟,可以用自然語(yǔ)言、流程圖、偽代碼等來(lái)表示。算法設(shè)計(jì)是VB程序設(shè)計(jì)中非常重要的一個(gè)環(huán)節(jié),應(yīng)該要求學(xué)生在編寫(xiě)代碼之前先設(shè)計(jì)好算法,較復(fù)雜的算法可以在紙上寫(xiě)出來(lái),簡(jiǎn)單的算法不一定寫(xiě)出來(lái),但在輸入代碼之前必須有一個(gè)完整的解題思路。在VB程序設(shè)計(jì)課程中涉及到的很多案例,如累加累乘,求最大公約數(shù),判斷素?cái)?shù),數(shù)組元素的排序、查找、插入、刪除等,都要以算法講解為主,算法講透徹了,程序代碼自然就能看懂。
良好的編程習(xí)慣對(duì)于提高學(xué)生的編程能力有著非常重要的作用。學(xué)生剛開(kāi)始學(xué)習(xí)編程,往往因?yàn)闆](méi)有清晰的解題思路,正確的編程方法而導(dǎo)致編寫(xiě)出來(lái)的程序可讀性較差,掌握了一定的編程技巧,養(yǎng)成良好的編程習(xí)慣,有助于學(xué)生更快更精確地進(jìn)行程序設(shè)計(jì)。
(1)不要盲目動(dòng)手編程。在動(dòng)手編程之前,一定要有清晰的解題思路,可以先在紙上寫(xiě)出算法或主要的代碼,千萬(wàn)不要沒(méi)有進(jìn)行任何設(shè)計(jì)就開(kāi)始編程。
(2)變量較多時(shí),要使用有意義的命名方式。一個(gè)程序中如果要用到多個(gè)變量,為避免混淆,應(yīng)使用有意義的命名方式,如 intAge,strName 等,比 a,b,c 等更具有可讀性。
(3)采用鋸齒形的書(shū)寫(xiě)方式。像循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)等結(jié)構(gòu)內(nèi)部的代碼相對(duì)于結(jié)構(gòu)本身縮進(jìn)2~4個(gè)字符,能使代碼更具有可讀性,特別是當(dāng)使用多層嵌套時(shí),鋸齒形的書(shū)寫(xiě)方式能使代碼的層次結(jié)構(gòu)更加清晰。
(4)善于使用程序調(diào)試。VB程序的錯(cuò)誤分為編譯錯(cuò)誤、運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤。在編譯和運(yùn)行過(guò)程中,VB能夠檢查出編譯錯(cuò)誤和運(yùn)行錯(cuò)誤,并給出錯(cuò)誤提示,根據(jù)錯(cuò)誤提示信息就能知道錯(cuò)誤原因,不難改正;但邏輯錯(cuò)誤系統(tǒng)不能檢查出來(lái),程序能正確運(yùn)行,只是得到的結(jié)果是錯(cuò)的,這就需要根據(jù)錯(cuò)誤結(jié)果和已有代碼來(lái)分析錯(cuò)誤原因,可以借助VB的調(diào)試工具欄和調(diào)試窗口等進(jìn)行程序調(diào)試,分析錯(cuò)誤原因并修改。
(5)發(fā)現(xiàn)大段代碼有問(wèn)題時(shí),不要急于刪除。編寫(xiě)好的程序代碼在一定程度上可以看出編程者的思維過(guò)程,就算是錯(cuò)誤的代碼,也可以激發(fā)編程者再次思考,從錯(cuò)誤分析中得到啟發(fā),從而設(shè)計(jì)出更好的代碼。因此可以先對(duì)有問(wèn)題的代碼進(jìn)行注釋?zhuān)认鄳?yīng)模塊編程結(jié)束,調(diào)試無(wú)誤后再將其刪除。
良好的開(kāi)端是成功的一半,能否上好第一次課,對(duì)于能否激發(fā)學(xué)生的學(xué)習(xí)興趣,影響學(xué)生的學(xué)習(xí)態(tài)度有著至關(guān)重要的作用。VB程序設(shè)計(jì)課程的第一堂課應(yīng)該做到以下幾點(diǎn)。
(1)強(qiáng)調(diào)課程的重要性。
不少學(xué)生在剛學(xué)習(xí)本課程時(shí)會(huì)有這樣的想法:我不是計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,為什么要去學(xué)習(xí)程序設(shè)計(jì)這樣一門(mén)計(jì)算機(jī)專(zhuān)業(yè)的課程?非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生學(xué)習(xí)程序設(shè)計(jì)有兩個(gè)重要作用:一是能提高學(xué)生使用計(jì)算機(jī)解決本專(zhuān)業(yè)問(wèn)題的能力,遇到復(fù)雜的問(wèn)題,或者計(jì)算量大的問(wèn)題,可以考慮通過(guò)編程告訴計(jì)算機(jī)如何執(zhí)行,交給計(jì)算機(jī)來(lái)實(shí)現(xiàn);二是能夠培養(yǎng)學(xué)生自身的邏輯思維能力,提高分析問(wèn)題、解決問(wèn)題的能力,而且程序設(shè)計(jì)的過(guò)程本身就是一個(gè)不斷分析問(wèn)題、解決問(wèn)題的過(guò)程。
(2)通過(guò)典型例子說(shuō)明VB程序能做哪些設(shè)計(jì)。
掌握了VB能夠設(shè)計(jì)出什么樣的程序?可以向?qū)W生演示一些設(shè)計(jì)好的簡(jiǎn)單有意義的實(shí)例,如簡(jiǎn)易計(jì)算器、星座計(jì)算、調(diào)色板、滾動(dòng)字幕等。并選擇其中一個(gè)例子簡(jiǎn)要說(shuō)明實(shí)現(xiàn)該程序需要進(jìn)行哪些方面的設(shè)計(jì)和操作。
(3)簡(jiǎn)單介紹VB的編程環(huán)境和程序設(shè)計(jì)的基本方法與步驟。
VB的編程環(huán)境集成了設(shè)計(jì)、編輯、編譯、調(diào)試、運(yùn)行等功能。要向?qū)W生演示VB的程序設(shè)計(jì)界面,并講清楚程序設(shè)計(jì)最常用的三個(gè)窗口(窗體、工具箱、代碼)的使用。在此基礎(chǔ)上再說(shuō)明VB程序設(shè)計(jì)的三個(gè)步驟:界面設(shè)計(jì)、算法設(shè)計(jì)和代碼設(shè)計(jì),以及VB程序代碼的執(zhí)行機(jī)制——事件驅(qū)動(dòng)。
(4)通過(guò)小例子激發(fā)學(xué)生思考。
第一次課的最后可以讓學(xué)生自己設(shè)計(jì)一個(gè)簡(jiǎn)單的程序,如編程實(shí)現(xiàn)減法運(yùn)算。通過(guò)已有知識(shí),學(xué)生不難設(shè)計(jì)出如下的程序界面。
圖1
再進(jìn)行代碼設(shè)計(jì),需要學(xué)生考慮兩個(gè)問(wèn)題:一是代碼怎么寫(xiě)?這關(guān)系到程序功能的實(shí)現(xiàn)。二是代碼寫(xiě)在哪里?這取決于我們希望代碼什么時(shí)候執(zhí)行。在了解了VB編程的基本方法和事件驅(qū)動(dòng)的概念后,學(xué)生不難解決這兩個(gè)問(wèn)題。例如希望在用戶(hù)單擊“計(jì)算”按鈕時(shí)執(zhí)行減法運(yùn)算,就應(yīng)該把實(shí)現(xiàn)減法運(yùn)算的代碼寫(xiě)到“計(jì)算”按鈕的“單擊”事件中。因此應(yīng)該為“計(jì)算”按鈕的“單擊”事件編程,代碼如下:
Private Sub Command1_Click()
Text3=Text1-Text2
End Sub
接下來(lái)可以進(jìn)一步提出,如果把減法運(yùn)算改成加法運(yùn)算,該如何修改代碼?學(xué)生很容易就想到把代碼中的減號(hào)改成加號(hào),但改完以后卻發(fā)現(xiàn)運(yùn)行結(jié)果是錯(cuò)誤的,原因在于在VB語(yǔ)法規(guī)則中“+”不僅僅是算術(shù)的加法運(yùn)算符,還是一個(gè)字符串連接運(yùn)算符,當(dāng)然還涉及到文本框中內(nèi)容默認(rèn)的數(shù)據(jù)類(lèi)型。這些錯(cuò)誤原因的細(xì)節(jié)問(wèn)題無(wú)須在第一次課給學(xué)生解釋得很清楚,但需要跟學(xué)生強(qiáng)調(diào)一點(diǎn):程序設(shè)計(jì)有一套嚴(yán)密的語(yǔ)法規(guī)則,在編程時(shí)必須嚴(yán)格按照語(yǔ)法規(guī)則的要求進(jìn)行,而不能想當(dāng)然,否則就不能編寫(xiě)出正確的程序。
非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生學(xué)習(xí)程序設(shè)計(jì)課程的主要目的是提升自身的編程能力和邏輯思維能力,以及分析問(wèn)題、解決問(wèn)題的能力。在多年的教學(xué)實(shí)踐中,我們?nèi)〉昧瞬簧俳?jīng)驗(yàn)和成績(jī)。但是教學(xué)改革永無(wú)止境,在以后的教學(xué)中將繼續(xù)探索和研究,不斷提高程序設(shè)計(jì)課程的教學(xué)效果。
參考文獻(xiàn):
[1]張艷等.新編Visual Basic程序設(shè)計(jì)教程(第二版).北京:清華大學(xué)出版社,2013
[2]陳益軍.計(jì)算機(jī)教學(xué)中提高學(xué)生程序設(shè)計(jì)能力的方法.計(jì)算機(jī)教育,2010(13):36~38
[3]王素芳.關(guān)于提高學(xué)生VB語(yǔ)言編程能力的方法探討.科技視界,2013(04):80,144