于清龍
(大連大學 信息工程學院, 遼寧 大連 116622)
Visual Basic(簡稱VB)[1]程序設計是高校非計算機專業(yè)學生的必修課。作為語言程序設計領域的前沿軟件,VB的發(fā)展歷史已經(jīng)很久,相關的技術也比較成熟,由于其簡單易學、功能強大、應用廣泛,因此在很多院校都開設了這門課程。我校也在計算機信息與管理、計算機網(wǎng)絡技術以及電子商務等相關專業(yè)開設了這門課程。筆者認為教師的主要教學目標,不僅是要使學生熟悉VB的基本概念,而且還要使學生能夠熟練地掌握一些程序設計的相關技巧和方法,具有一定的程序編寫思維能力。
VB語言比較枯燥、難以理解,學生沒有相應的知識背景,導致學生對這門課有恐懼心理,缺乏興趣。這就要求授課教師在教學中分析、摸索出一些行之有效的教學方法,才有可能培養(yǎng)學生程序設計能力,掌握技能,激發(fā)學生對程序設計的興趣。在近幾年的教學實踐中筆者進行了如下改革探索,取得了良好的教學效果。
對于一項操作性很強的工作,我們是不能只講理論的,正如當我們學習游泳的時候,如果教練只是告訴我們每個動作的名稱,但不告訴我們這些動作怎么完成,我們是不可能學會游泳的。那么,我們在學習VB的過程中也必須結合大量的實例演示,讓同學們真正體會到VB的可視化設計和它的實用性。目前有很多關于VB的實例教材及各種參考書,但是都比較散而且內(nèi)容也不是很詳細,所以,在講解的時候,必須對實例進行慎重的選取和必要的修改。
現(xiàn)在的大部分教材,都是對VB語言[2]的基本語法進行講述,然后再講VB中對象的使用。筆者認為在講授時不宜將語法和對象分開來講,要把VB面向?qū)ο蟮某绦蛟O計方法,事件驅(qū)動的編程機制貫穿于整個教學過程中。VB中的對象主要用于構建界面,而具體程序功能的實現(xiàn)則要編寫代碼行,因此任何一個完整的應用程序都不可能只用對象或只用語法。這兩塊內(nèi)容必須進行穿插講解,這樣就避免了讓學生在毫無知識背景的情況下去理解抽象難懂的概念,挫傷他們編程的積極性。在教學過程中,要堅持以學生已有的知識程度為基礎,打破原有的以課本知識的邏輯結構為順序組織課堂教學的模式,也就是說先不講基本概念,從簡單的實例人手,通過讓學生觀看、模仿,在實際操作中去探究和領悟這些概念,并適時地加以歸納總結,讓學生在輕松愉快的氣氛中接受新知識。比如,在講到循環(huán)結構中DO…LOOP語句和FOR…NEXT語句的用法時,用DO…LOOP語句[3]的4種形式和FOR…NEXT語句實現(xiàn)求解N!的過程,讓學生去觀察、領悟它們的異同。
筆者所收集的程序除了強調(diào)程序的可靠性以外,還要特別強調(diào)程序的結構性,即使是一個簡單的實例,也需要做到程序結構的嚴謹化,使之符合大眾的思維,但也要突出自己的特點。如在講FOR…NEXT等循環(huán)語句的時候,一般的都是利用從1累加到另一個固定的數(shù)值,來完成我們的循環(huán)講解,這樣的語句由于方法是完全一樣的,所以最后的效果也沒有什么吸引力可說。因此,筆者采用另外一種方式,結合利用文本框輸入,即在兩個文本框中可以輸入任何兩個數(shù),使之從小的數(shù)值累加到另一個較大的數(shù)值,這樣程序的效果更具結構嚴謹?shù)镊攘Γ瑢W生的感受也就會完全不同。
在講解的過程中,力求采用最簡單、最容易的方法完成每一個實例,盡量采用常規(guī)化的語句,避開一些不容易理解的概念、方法。比如,在利用文件操作對數(shù)據(jù)錄入以及把錄入的所有數(shù)據(jù)輸出時,我們可以避開利用Type語句定義自己的數(shù)據(jù)類型的使用,因為采用Type語句定義[4],有多少個字段,就會產(chǎn)生多少個相關的成員,在這種情況下同學們就很難想得到這個成員代表的是什么,它的作用是什么,這樣就把程序復雜化了,其實我們完全可以采用簡單的文本框來進行輸入,然后用Input函數(shù)輸出就輕松完成了。在具體的教學實踐中,除了采用傳統(tǒng)的教學方法如小組討論法、提問法外,還要采用以下教學方法。
1.2.1錯例分析法
學生對變量、類型、運算符、表達式這些基本概念和語言規(guī)則的掌握需要一個過程,對算法和數(shù)據(jù)結構的知識需要不斷積累。學習過程中,學生能聽懂老師授課的內(nèi)容,但自己編制的程序往往錯誤百出。課堂上,我經(jīng)常將容易出錯的概念以反例形式展示給學生,讓他們找錯誤,使程序運行。比如錯誤使用邏輯運算符的例子。
假設a、b和c是三個變量。如果已知a 例 Option Explicit Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer a = -3: b = -2: c = -1 Print a < b And b < c’顯示True Print a < b < c ’顯示False End Sub 為什么 a < b < c會False?因為,VB在計算這個表達式時,先計算“a < b”部分,得True;再計算“True 1.2.2 零散實例和核心實例結合 零散實例教學法,對每個知識點的運用和理解是非常行之有效的,但對前后知識的貫穿缺乏說服力。筆者在教學改革實踐中體會到,除經(jīng)典的零散實例外,將一個規(guī)模較大的、典型的、有實用價值的、學生感興趣的核心實例貫穿于教學全過程,對提高學生的編程能力非常有幫助。所謂核心實例是指,實例從小到大、隨章節(jié)的展開而逐步成長,呈現(xiàn)為逐步進化的多個版本。比如引入一個貫穿全書的問題:設計一個“圖書管理系統(tǒng)”。首先,用最基本的概念和最簡單的結構,給出該系統(tǒng)的第一個(也是最簡單的)版本,以后的每一次課,都對該系統(tǒng)提出新的功能和結構上的要求,并用本次課介紹的新概念和新方法對它進行功能上的擴充和結構上的改進。每次得到該系統(tǒng)的一個增強的新版本。為達到設計目標,學生隨著教學的進程,可以積極投入到對實例系統(tǒng)的調(diào)試、改進的實踐中,逐漸掌握所學的基本知識,同時也可以提高編程能力。 VB是一門實踐性很強的課程,如果紙上談兵,不上機練習,是不可能真正掌握VB程序開發(fā)的[5]。實踐教學要注意以下階段: 1.3.1模仿階段 對課堂核心實例系統(tǒng)的調(diào)試、改進。核心實例的每次增強版是全面反映教學內(nèi)容的,學生通過模仿、知識再現(xiàn)達到在實踐中領悟知識,開拓編程思路。 1.3.2分層次階段 在教學過程實施的開始,和核心實例同步,選出幾個類似核心實例的課程設計內(nèi)容,供學生選擇。對核心實例的調(diào)試比較成功的,可以同步實施自己所學的課程設計內(nèi)容,達到培養(yǎng)學生分析問題和解決問題的能力。對掌握核心實例有困難的學生,針對教學內(nèi)容重新布置實驗,強化知識鞏固。課程設計[6]內(nèi)容課后上機完成。 要掌握上面兩個階段的具體情況,教師應親自指導,與學生一起上機實驗,隨時監(jiān)控學生實驗過程。對學生提出的問題及時予以指導,而發(fā)現(xiàn)學生常出現(xiàn)的共性錯誤,可在理論課上進行點評。 在VB程序設計[7]過程中,使用標準編碼可以避免一些不必要的錯誤。在授課過程中使用標準編碼的實例,在講解實例過程中對學生進行適當?shù)匾龑?、啟發(fā),可以讓學生養(yǎng)成一個良好的編程習慣。 程序書寫規(guī)范是非常重要的,不僅書寫格式應該結構層次分明,而且程序里面應添加必要的注釋。不按照標準書寫程序會增加別人查看程序的難度,同時也不利于再次上機調(diào)試修改。強調(diào)學生避免使用VB中的隱式操作,養(yǎng)成顯式編碼的習慣。比如使用Option Explicit[8],嚴格執(zhí)行變量先定義后使用的原則,避免使用缺省屬性,明確指出是在引用對象還是在引用對象屬性。 總之,教學有法,教無定法,只要教學得法。程序設計教學的主要目標是為了使學生了解編程的基本思想,培養(yǎng)分析問題、解決問題的基本能力。圍繞著這個目標,在保證學習積極性高的前提下,按照他們的認知規(guī)律組織教學,一切有效的教學方法都可以在我們的教學過程中加以運用,進而使學生綜合素質(zhì)得到整體提高,這是VB程序設計課程教學的最終目標。 [參考文獻] [1] 王棟.Visual Basic程序設計實用教程[M].3版.北京:清華大學出版社,2007, 24(11):231-245. [2] 袁鋒談.《VB程序設計》教學方法改革的五個轉(zhuǎn)變[J].中國成人教育,2005,35(2):131-135. [3] 劉衛(wèi)國.Visual Basic程序設計教程[M].北京:北京郵電大學出版社,2003:145-150. [4] 高培志.Fortran77程序設計[M].南京:南京理工大學出版社,1996:78-80. [5] 劉瑞新.Visual Basic程序設計教程[M].北京:電子工業(yè)出版社,2000:134-141. [6] 陳華生.Visual Basic程序設計教程[M].蘇州:蘇州大學出版社,1999:90-94. [7] 崔彥峰,徐小榮.VB網(wǎng)絡與遠程控制編程實例教程[M].北京:北京希望電子出版社,2002:254-263. [8] 袁帥,郭月強,焦祝軍.Visual Basic編程實例教程[M].北京:北京希望電子出版社,2002:276-281.1.3 重視實踐教學和學生綜合應用程序開發(fā)能力的培養(yǎng)
1.4 培養(yǎng)學生養(yǎng)成良好編程習慣
2 結束語