杜治漢 肖長玲
摘要:中職學校現在普遍開設VB程序設計課程,但其教學內容卻因學校不同差別很大,原因就在于教師認為中職生的接受能力有限,希望設計的學習內容盡可能地為學生所理解、所喜歡。以一次偶然的VB教學實驗為背景,給出了該次教學較為詳細的過程,說明中職生的學生能力其實超乎教師想象,只要教師組織得當,操作得法,中職生一樣可以學好VB程序設計。
關鍵詞:VB教學;項目實踐;教師引導;學習能力
作者簡介:杜治漢(),男,江漢大學教育學院教育技術系講師,碩士,研究方向為教育技術的教學與研究。肖長玲,女,湖北省廣播電視學校教師,主要從事計算機科學的教學與科研。
中圖分類號:G712文獻標識碼:A文章編號:1001-7518(2009)02-0040-02
中等職業學校是否應開設VB程序設計課程,一直以來廣受爭議。支持者認為,VB程序設計是一門基礎語言課程。學習VB,不僅具有實用價值,而且對于鍛煉學生的思維能力也大有裨益。反對者的主要理由是,對于中職學生而言,其思維能力、智能水平遠未達到學習該課程的要求,強行開設VB課程,會挫傷學生的學習積極性。
筆者以前對中職學校開設VB課程也持反對意見,因此,在中職學校初次講授本課程時顯得非常小心:講授部分盡量簡化,不敢涉及稍復雜的知識和程序實例,實驗部分盡量給出詳細的設計步驟和源程序,學生只需按照實驗指導書操作即可。
但一次偶然的教學實踐完全改變了筆者的看法。
那本是一次實驗課,但實驗室臨時改作他用,沒有其他選擇,只能在教室上課。在教室上VB課?怎么上?同學們一臉的茫然與不滿,筆者心里也沒底。但筆者心想,不管怎么說,程序設計最為關鍵的還是思維能力,上機只是提供了一個驗證設計意圖的手段。何不利用這次課做一個試驗,考察一下學生的思維能力,并借以改變教學模式呢?
于是,在課堂上筆者說明了這節課的上課目的和方式,以求得學生的配合。然后,給出了一個項目:
同學們有過到大型超市購物的經歷嗎?我們購物時是怎么結帳的?收銀員將我們所購物品逐一在電腦上登記,然后打印出一張購物小票,小票上有我們所購商品的品名、價格以及總金額等。今天,我們的任務就是要用VB設計一個程序,模擬這一結帳過程。首先請大家思考一下,我們這個程序要完成什么功能?
同學們經過討論后認為,程序應具有:第一,輸入功能。收銀員能夠將顧客所購商品的價格、數量等信息輸入進來。第二,輸出功能。程序自動將顧客所購商品的信息輸出。
教師及時給予提示:輸出時,并不使用打印機,只是將信息輸出在窗體上。
接著教師引導學生進行具體的設計。
1.界面設計
在進行界面設計時,教師并不需要包辦代替,只是以提問的方式引導學生。如:我們怎樣給收銀員提供一個輸入信息的方式呢?收銀員怎樣才能結帳呢?同學們馬上就會翻書、查筆記,聯想到以前的知識,通過比較,得出結論:輸入信息應該用文本框,結帳應該用按鈕,代碼應該寫在“結帳”按鈕的點擊事件中。
教師將同學們討論的結果在黑板上畫出來,大家又進行了一些補充,如增加一些用于提示信息的標簽等。
2.代碼設計
過去學生一看到代碼就頭疼,這次讓學生自己設計代碼,難度當然不小。為此,教師采用小步走的教學方式,一步一步引導學生。
{1}輸入數據的獲得。教師提問:要計算最后的總金額,就必須獲得輸入的數據。收銀員是在文本框中輸入數據的,那么怎樣才能把這些數據取出來呢?學生討論后仍然沒有正確的結果,這時教師提示:假如有一文本框,名稱為“text1”,那么我們寫一條語句“p1=text1.text”是什么意思呢?有的同學記起來了,就是要取得文本框里面的字符串。教師肯定其回答,接著又提示:如果寫一條語句“p1=val(text1.text)”,那又是什么意思呢?同學們似曾相識,教師告訴學生查一下筆記,結果學生發現,這樣就表示要取得文本框里面的數字。學生如法炮制,設計類似的代碼將其他幾個輸入文本框中的數據提取出來。這個問題解決了。
{2}匯總金額。該問題相對較簡單,但學生一開始也不知道如何處理,無法將實際生活中的問題與計算機語言聯系起來。教師提示:撇開具體數據,我們要計算兩種商品的總金額,應該怎么做?同學們馬上回答:分別將兩種商品的金額求出來,然后相加。教師再提示:我們已經能夠取出每種商品的單價和數量,那么用程序怎么表示呢?同學們趕緊討論,最后認為,應該設計4個單精度變量,分別存放4個輸入文本框中的數據,然后再設計一個單精度變量,用來存放總金額。
至此,課堂討論基本結束,教師指導學生將上述討論結果(界面設計和代碼設計)寫在筆記本上,作為上機的依據。
上機時,同學們興趣高漲,都想盡快看看自己設計出來的結果,教師不斷巡回檢查。很快,有的同學開始了調試,并找老師詢問調試中出現的問題。如很多同學發現調試的結果是輸出清單覆蓋了最初的輸入文本框和標簽,很不美觀。
顯然,這并不是我們想要的結果。那么問題出在哪里了呢?教師問學生:你希望得到一種什么樣的結果?學生回答:應該只有購物清單出現,屏幕上的文本和標簽都應該消失。教師肯定其思路,接著問:所謂消失就是使其不可見,你認為如何才能使其不可見呢?學生搖頭。教師打開其程序的屬性窗口,告訴他visible屬性就是使對象可見或不可見的,但如何使用該屬性,請學生自己看書看筆記。不一會,學生就有了結果,第一項功能實現了。
待到多數同學都實現了第一項功能時,教師進一步提問:正常情況下,收銀員給第一位客戶結帳完畢后,應該接著給下一位客戶結帳,那么怎么實現這一功能呢?結束程序,重新開始運行程序嗎?
反應較靈敏的學生馬上想到,就是讓剛才不可見的對象變為可見。教師很高興地給予肯定,并提問:收銀員怎么才能進入到給下一位客戶結帳的程序中呢?大多數同學想到要在界面上設計一個“重新開始”的按鈕。于是,學生又開始“重新開始”按鈕的代碼設計。
不一會問題又出現了,學生發現,第一次“結帳”完畢,點擊“重新開始”按鈕后,第一次結帳的清單還留在屏幕上,根本沒法為第二次結帳輸入數據。
如何解決這一問題?有些學生想到了上面解決類似問題的辦法,試圖控制對象的visible屬性。但購物清單沒有該屬性,因為它不是一個對象,怎么辦?教師引導學生看教材上的一個繪圖程序實例,要求學生搞清楚窗體上的圖形、文字是如何清除的。學生很高興地發現,只用一個“cls”命令就可以了。
到此為止,程序的主要功能已經實現。教師引導學生:大家再把自己的程序運行一遍,看看有什么不太滿意的地方嗎?學生一時似乎發現不了什么問題。教師再提示:大家認為我們輸出的清單美觀嗎?是不是太靠近窗體左邊了?而且字體也沒有用好,能否把這部分再做得更好一些呢?教師提示相關的語法要點,學生看筆記。很快,有的學生程序修改好了,教師提倡同學們采取不同的辦法試一試,看看能否達到相同的效果。果然,有的同學采用的是定位符,有的采用的是輸出空格的辦法。
最后,在本次課結束前,教師拋給學生一個問題:假如匯總金額不止兩位小數,而我們只需要保留兩位小數,那么應怎樣修改程序呢?
應該說,這次課給筆者的印象是非常深刻的。作為教師,筆者明白了“授人以魚,不如授人以漁”的道理,學生的潛能其實是巨大的,關鍵是看教師采取什么樣的教學方法。如果教師一味地遷就學生,先入為主地認為學生難以學好VB程序設計,只讓學生簡單地模仿,那么學生就有可能真的對于該課程產生畏難情緒;但如果教師敢于讓學生攻堅,充分調動學生的積極性,那么看起來很難學的程序設計也變得簡單了。
這次教學改革實驗的效果在以后的教學中也充分體現出來。大部分學生不愿再回到以前照抄照搬教師所給程序的老路上去,要求上機前,老師給出一個比較合適的題目,通過教師與學生、學生與學生之間的相互探討理清思路,然后在計算機上調試。通過調試,不斷地修改、完善并最終解決問題,這樣學起來感到有趣、有收獲。而且以后上課的課堂紀律比以前好多了,學生的注意力也明顯增強。實踐表明,在中職學校的VB教學中,采用合適項目的任務驅動教學法的確大有用武之地。
參考文獻:
[1]劉圣才等編.VB程序設計導學[M].北京:清華大學出版社.
[2]趙晨陽等編.Visual Basic語言程序設計基礎[M].北京:電子工業出版社.