李富蕓 符謀松 林紅燕
摘要:《VB程序設(shè)計(jì)》是非計(jì)算機(jī)專業(yè)的計(jì)算機(jī)公共基礎(chǔ)課程,筆者在多年的教學(xué)實(shí)踐中發(fā)現(xiàn)很多教師對(duì)調(diào)試技術(shù)沒(méi)有足夠的重視和強(qiáng)化訓(xùn)練,導(dǎo)致學(xué)生不知道怎樣找錯(cuò)和糾錯(cuò),影響到應(yīng)用程序設(shè)計(jì)與編程能力的提高。因此,該文在介紹VB中常用的調(diào)試技術(shù)后,探討了調(diào)試技術(shù)如何在課程教學(xué)中應(yīng)用及發(fā)揮作用。授人以魚不如授人以漁,意在真正促進(jìn)學(xué)生獨(dú)立調(diào)試程序能力的提高。
關(guān)鍵詞:調(diào)試技術(shù);程序設(shè)計(jì);VB
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)22-0116-03
1 背景
《Visual Basic程序設(shè)計(jì)》(簡(jiǎn)稱VB)課程是許多高校非計(jì)算機(jī)專業(yè)理工類學(xué)生開設(shè)的計(jì)算機(jī)公共基礎(chǔ)課程之一,此課程著重面向?qū)ο蟮目梢暬幊袒A(chǔ)和軟件設(shè)計(jì)技術(shù)與思想,培養(yǎng)學(xué)生初步的應(yīng)用程序設(shè)計(jì)與編程能力,為學(xué)生畢業(yè)后從事相關(guān)專業(yè)工作所應(yīng)具備的基本計(jì)算機(jī)應(yīng)用能力打下堅(jiān)實(shí)的基礎(chǔ)。此課程實(shí)踐性強(qiáng),需要經(jīng)過(guò)大量的上機(jī)實(shí)踐才能真正學(xué)好。上機(jī)的目的,不僅是為了驗(yàn)證編寫的程序的正確性,還要通過(guò)上機(jī)調(diào)試,學(xué)會(huì)查找和糾正錯(cuò)誤的方法。
然而,筆者在多年的教學(xué)實(shí)踐中發(fā)現(xiàn),在教學(xué)中教師側(cè)重對(duì)問(wèn)題的分析、算法的設(shè)計(jì)、程序設(shè)計(jì)語(yǔ)法知識(shí)的講授,對(duì)程序設(shè)計(jì)中的調(diào)試技術(shù)卻沒(méi)有足夠的重視和強(qiáng)化訓(xùn)練,造成學(xué)生在上機(jī)實(shí)驗(yàn)、編程實(shí)踐時(shí)當(dāng)程序運(yùn)行出現(xiàn)問(wèn)題時(shí)往往不知道錯(cuò)誤在哪里,不知道怎樣改正程序中的錯(cuò)誤,往往無(wú)從下手、一籌莫展,坐等教師來(lái)解決。如若問(wèn)題得不到及時(shí)解決,編寫的程序不能正確運(yùn)行,部分學(xué)生往往會(huì)在苦惱和迷茫中喪失學(xué)習(xí)該課程的興趣,放棄該課程的學(xué)習(xí),最終嚴(yán)重影響到該課程的教學(xué)質(zhì)量。
2 VB中常用的調(diào)試技術(shù)
VB中有三類錯(cuò)誤:語(yǔ)法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤、調(diào)試錯(cuò)誤,語(yǔ)法錯(cuò)誤比較容易發(fā)現(xiàn)和更正,邏輯錯(cuò)誤因?yàn)椴粫?huì)產(chǎn)生錯(cuò)誤提示信息,一般較難排除。對(duì)初學(xué)者而言,錯(cuò)誤和程序調(diào)試是每個(gè)初學(xué)者必定會(huì)遇到的。VB為調(diào)試程序提供了一組交互的、有效的調(diào)試工具,如圖1所示。主要有設(shè)置斷點(diǎn)、添加監(jiān)視觀察變量的值、逐語(yǔ)句、逐過(guò)程等手段。其中,逐語(yǔ)句是使用最多的手段,可以一步步查看程序執(zhí)行的流程,亦可以觀察變量的當(dāng)前值。
3 調(diào)試技術(shù)在VB程序設(shè)計(jì)教學(xué)中的應(yīng)用
調(diào)試技術(shù)不僅是溝通理論課和實(shí)驗(yàn)課的橋梁,亦是重要的教學(xué)手段。在輔導(dǎo)學(xué)生上機(jī)實(shí)驗(yàn)、幫助學(xué)生查找程序中的錯(cuò)誤時(shí)不僅可以有效使用調(diào)試技術(shù),在教學(xué)內(nèi)容的講授和演示過(guò)程中利用調(diào)試技術(shù)可以更為直觀地幫助學(xué)生理解程序設(shè)計(jì)中抽象的、重點(diǎn)的和難點(diǎn)的內(nèi)容,比如變量及其作用域,過(guò)程的概念、調(diào)用及參數(shù)傳遞,程序流程控制等等。
3.1 調(diào)試幫助理解事件驅(qū)動(dòng)
VB采用的是事件驅(qū)動(dòng)的編程機(jī)制,在圖形用戶界面的應(yīng)用程序中,用戶的動(dòng)作(即事件)控制著程序的執(zhí)行流程,用戶對(duì)事件驅(qū)動(dòng)的順序決定了代碼執(zhí)行的順序。通過(guò)直接單擊“逐語(yǔ)句”命令(如圖1所示)而不是“啟動(dòng)”命令,學(xué)習(xí)者可以知道執(zhí)行了哪些事件過(guò)程以及執(zhí)行的順序。如圖2所示的“字體大小變化”程序,可以將“變”字變大、變小或還原為初始字體大小。直接單擊“逐語(yǔ)句”命令,從Form_Load()事件過(guò)程開始執(zhí)行,如圖3所示;繼續(xù)單擊“逐語(yǔ)句”命令,F(xiàn)orm_Load()事件過(guò)程執(zhí)行完后程序?qū)⑼A粝聛?lái)等待用戶單擊按鈕,如圖2所示;如單擊了“變大”按鈕,將執(zhí)行Command1_Click()事件過(guò)程,如圖4所示。
3.2 調(diào)試幫助理解程序基本結(jié)構(gòu)
程序基本結(jié)構(gòu)包括順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),其中后兩者是學(xué)習(xí)者容易出錯(cuò)的,尤其是后兩者結(jié)合在一起的時(shí)候,學(xué)習(xí)者更不容易理清程序的執(zhí)行流程。因而需要學(xué)習(xí)者透徹理解每種結(jié)構(gòu)的執(zhí)行流程,才不至于在復(fù)雜的程序結(jié)構(gòu)中出錯(cuò)。那么,怎樣理解這三種結(jié)構(gòu)呢?“逐語(yǔ)句”執(zhí)行為我們提供了查看程序執(zhí)行過(guò)程的方式。如圖5所示的“判斷等級(jí)”程序,根據(jù)學(xué)生的成績(jī),判斷出“優(yōu)秀、良好、中等、及格、不及格”5個(gè)等級(jí),利用“逐語(yǔ)句”命令,學(xué)習(xí)者可以察看到都滿足了哪個(gè)分支的條件(如圖6所示)及執(zhí)行哪條分支(如圖7所示),這對(duì)于學(xué)習(xí)者理解語(yǔ)句邏輯是很有幫助的。
又如對(duì)于素?cái)?shù)問(wèn)題,它綜合了順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種結(jié)構(gòu),素?cái)?shù)問(wèn)題中對(duì)循環(huán)終止的判定尤為必要。代碼如圖8所示,判斷7是否為素?cái)?shù)時(shí),使用“逐語(yǔ)句”命令,i從2到6時(shí)循環(huán)體中的If都不成立,因此當(dāng)i=7時(shí)循環(huán)終止,循環(huán)后面的If條件成立,輸出“7是素?cái)?shù)”;判斷9是否為素?cái)?shù)時(shí),使用“逐語(yǔ)句”命令,i=3時(shí)執(zhí)行Exit For,退出循環(huán),循環(huán)后面的If條件不成立,輸出“9不是素?cái)?shù)”。
3.3 調(diào)試幫助理解過(guò)程的調(diào)用及參數(shù)傳遞
VB中過(guò)程體現(xiàn)了模塊化程序設(shè)計(jì)思想,通過(guò)過(guò)程定義,可以封裝某一特定的功能,在需要使用這個(gè)功能時(shí)調(diào)用即可。在實(shí)際教學(xué)中,學(xué)生往往容易混淆實(shí)際參數(shù)和形式參數(shù),難以理解過(guò)程的建立及調(diào)用、參數(shù)傳遞方式。如圖9、圖10所示,通過(guò)“逐語(yǔ)句”命令,在Command1_Click()過(guò)程中調(diào)用F1過(guò)程,將實(shí)際參數(shù)x和y的值傳給形式參數(shù)n和m,其中n是傳址方式,相當(dāng)于傳原件;m是傳值方式,相當(dāng)于傳復(fù)印本;配合添加監(jiān)視觀察變量的值(如圖11所示),學(xué)生可以深入地理解主調(diào)過(guò)程和被調(diào)過(guò)程,調(diào)用的流程是如何的,參數(shù)是如何傳遞的,傳址和傳值又有什么不同。
4 結(jié)束語(yǔ)
授人以魚不如授人以漁。調(diào)試技術(shù)是學(xué)生學(xué)習(xí)編程應(yīng)該掌握的重要技能,學(xué)生需要在調(diào)試過(guò)程中積累經(jīng)驗(yàn)和技巧,在實(shí)踐中逐漸提高。當(dāng)學(xué)生擁有了調(diào)試程序的能力之后,遇到問(wèn)題獨(dú)立自行解決或?qū)W生間協(xié)助解決,這將有助于提高編程的興趣,極大促進(jìn)學(xué)生應(yīng)用程序設(shè)計(jì)與編程能力的提高。因此,教師需要讓學(xué)生了解到調(diào)試的重要性,并在教學(xué)中訓(xùn)練學(xué)生養(yǎng)成良好的調(diào)試習(xí)慣。
參考文獻(xiàn):
[1] 張標(biāo)漢. 以調(diào)試技術(shù)促程序設(shè)計(jì)課程教學(xué)[J]. 教育教學(xué)論壇, 2017,7(29):196-197.
[2] 王楠, 趙占芳. 調(diào)試技術(shù)在程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)中的應(yīng)用探討[J]. 教育現(xiàn)代化, 2017,2(7):46-47, 53.
[3] 陳圣磊, 劉林源. 調(diào)試技術(shù)在C語(yǔ)言程序設(shè)計(jì)教學(xué)中的作用探討[J]. 電腦知識(shí)與技術(shù),2015,11(24): 80-82.
【通聯(lián)編輯:謝媛媛】