成 耀 鄭國(guó)平 魯 松
(1.南通大學(xué) 杏林學(xué)院,江蘇 南通 226007;2.南通大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南通 226019)
1)上機(jī)調(diào)試是最好的VB老師,一旦學(xué)會(huì)了就相當(dāng)于有了一個(gè)在身邊隨時(shí)可以答疑解惑的老師[1]。
2)上機(jī)調(diào)試太重要了,上機(jī)考試通不過(guò),整個(gè)等級(jí)考試都通不過(guò)。
3)上機(jī)調(diào)試可以幫助掌握理論。上機(jī)調(diào)試可以對(duì)書(shū)上的例題進(jìn)行驗(yàn)證,可以完成上機(jī)指導(dǎo)書(shū)上的實(shí)驗(yàn),可以調(diào)試作業(yè)題,可以做試卷匯編等參考書(shū)籍上的其它題目。
VB程序設(shè)計(jì)中的錯(cuò)誤通常有三種:語(yǔ)法錯(cuò)誤、運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤。語(yǔ)法錯(cuò)誤、運(yùn)行錯(cuò)誤系統(tǒng)能自動(dòng)發(fā)現(xiàn),因此比較容易改正。系統(tǒng)無(wú)法自動(dòng)發(fā)現(xiàn)邏輯錯(cuò)誤,所以邏輯錯(cuò)誤的發(fā)現(xiàn)和改正只能由用戶來(lái)完成。只有依靠平時(shí)的勤學(xué)苦練,才能熟練掌握調(diào)試工具,這樣解題時(shí)才能做到熟能生巧,手到擒來(lái)。
1)學(xué)生剛開(kāi)始練習(xí)VB上機(jī)調(diào)試的時(shí)候一般是驗(yàn)證教科書(shū)上的例題。此時(shí)遇到的主要是語(yǔ)法錯(cuò)誤、運(yùn)行錯(cuò)誤,以下是常犯的錯(cuò)誤:
(1)字母輸錯(cuò)、單詞拼錯(cuò)。字母il1IJ(依次為小寫(xiě)字母i、小寫(xiě)字母l、數(shù)字 1、大寫(xiě)字母 I、大寫(xiě)字母 J)、0oO(依次為數(shù)字 0、小寫(xiě)字母 o、大寫(xiě)字母O)容易搞錯(cuò)。 例:Labell,Elself;單詞Label拼錯(cuò)成 Lable。 此類(lèi)錯(cuò)誤的解決辦法:請(qǐng)務(wù)必逐字母、逐單詞校對(duì)三遍以上。
(2)分隔符.前后出現(xiàn)空格,引號(hào)使用中文引號(hào)。此類(lèi)錯(cuò)誤的解決辦法:分隔符.前后不要有空格,引號(hào)為英文引號(hào)。例如:Label1.font.Name=“幼圓”,這里如用中文“”會(huì)出錯(cuò),分隔符.前后有空格也會(huì)出錯(cuò)。
(3)一下子建了幾個(gè)工程。這種對(duì)初學(xué)者來(lái)說(shuō)不太規(guī)范做法的解決辦法:剛開(kāi)始學(xué)習(xí)時(shí)一次只做一個(gè)工程,不要再新建第二個(gè)工程。一個(gè)工程內(nèi)一般也只有一個(gè)窗體(極少數(shù)有多個(gè)窗體)。任務(wù)欄上只出現(xiàn)一個(gè)VB應(yīng)用程序。
(4)&與其它字母、單詞連在一塊。此類(lèi)錯(cuò)誤的解決辦法:在&前后都加上空格(出現(xiàn)在字符串中時(shí)可以例外)。
(5)對(duì)象名稱(chēng)(Name)和代碼里的名稱(chēng)不一致。此類(lèi)錯(cuò)誤的解決辦法:改成一樣的。
(6)在剛開(kāi)始學(xué)習(xí)VB上機(jī)調(diào)試的一段時(shí)間內(nèi),由于對(duì)各項(xiàng)操作還不是很熟練,所以最好能先在草稿紙上編好程序,然后再上機(jī)調(diào)試。否則,編程時(shí)會(huì)受到上機(jī)操作的鍵盤(pán)、鼠標(biāo)、顯示器等多種因素的干擾,反而會(huì)影響編程。
2)在學(xué)習(xí)了循環(huán)以后,要善于發(fā)現(xiàn)并解決邏輯錯(cuò)誤,此時(shí)要注意以下問(wèn)題:
(1)按組合鍵【Ctrl】+【Break】可以中斷當(dāng)前正在運(yùn)行的程序。 要牢記的是一旦程序進(jìn)入死循環(huán),也是按這兩個(gè)鍵退出。
(2)針對(duì)部分程序?yàn)榱吮阌诎l(fā)現(xiàn)問(wèn)題之所在,在調(diào)試時(shí)可減少循環(huán)次數(shù),待錯(cuò)誤排除后再恢復(fù)成題目要求的循環(huán)次數(shù)。例如,在調(diào)試時(shí)可將循環(huán)10000次臨時(shí)改成10次。
(3)在程序調(diào)試時(shí),要特別注重邊界值的調(diào)試和檢查。例如,要生成兩位正整數(shù),則要注意生成的數(shù)里應(yīng)該包含10和99,不應(yīng)該包含9和100。
(4)為了調(diào)試程序,可以在調(diào)試的時(shí)候在程序中加入一些print語(yǔ)句,用于在窗體上顯示一些變量的值,通過(guò)這些變量值的變化來(lái)發(fā)現(xiàn)問(wèn)題之所在。
3)使用調(diào)試窗口與單步調(diào)試。
程序在執(zhí)行的中途被停止,稱(chēng)為“中斷”。在中斷狀態(tài),用戶可以查看各個(gè)變量及屬性的當(dāng)前值,從而了解程序執(zhí)行是否正常。進(jìn)入中斷狀態(tài)一般有以下四種方式:第一種,程序在運(yùn)行中,由于發(fā)生運(yùn)行錯(cuò)誤而進(jìn)入中斷狀態(tài)。第二種,程序在運(yùn)行中,因?yàn)橛脩舭唇M合鍵【Ctrl】+【Break】或使用“Run”(運(yùn)行)菜單中的“中斷”命令而進(jìn)入中斷狀態(tài)。 第三種,由于用戶使用創(chuàng)建斷點(diǎn)命令在程序代碼中設(shè)置了斷點(diǎn),當(dāng)程序執(zhí)行到斷點(diǎn)處時(shí)而進(jìn)入中斷狀態(tài)。第四種,在采用單步調(diào)試方法每運(yùn)行一個(gè)可執(zhí)行代碼行后,即進(jìn)入中斷狀態(tài)[2]。
(1)在程序調(diào)試的中斷狀態(tài),移動(dòng)鼠標(biāo)到變量上就可以顯示其當(dāng)前的值。
(2)在VB的調(diào)試工具欄上有本地窗口、立即窗口、監(jiān)視窗口,用鼠標(biāo)單擊可打開(kāi)這些窗口,在本地窗口可以看到當(dāng)前對(duì)象的屬性和變量的值,在立即窗口中可以用Print顯示變量或表達(dá)式的值,在監(jiān)視窗口可以看到事先設(shè)定的監(jiān)視表達(dá)式的當(dāng)前值。
(3)學(xué)會(huì)使用單步調(diào)試。首先點(diǎn)擊“調(diào)試”菜單中的“逐語(yǔ)句”命令(也可按【F8】),然后啟動(dòng)程序,如有必要的話單擊窗體或命令按鈕,按下來(lái)不斷地按【F8】一條語(yǔ)句一條語(yǔ)句地執(zhí)行程序,在單步執(zhí)行過(guò)程中,可以觀察本地窗口中變量的變化情況,直到發(fā)現(xiàn)錯(cuò)誤為止。這種調(diào)試方法對(duì)循環(huán)次數(shù)較少的程序非常管用。
4)VB上機(jī)調(diào)試時(shí)其它一些常見(jiàn)的錯(cuò)誤及解決辦法。
<應(yīng)為<=或>,ReDim 后面少 Preserve,=True 應(yīng)為=False, 漏掉ByVal,Exit Do應(yīng)為 Exit Function或反之,Exit Sub應(yīng)為 Exit For或反之,+1 應(yīng)為-1 或反之,Str()應(yīng)為 CStr()或反之,缺少 sum=0 或 s=””,a(i)應(yīng)為 a(j)或反之,除號(hào)/應(yīng)為 或反之,Else 應(yīng)為 Else If,As Integer應(yīng)為As Long,F(xiàn)or循環(huán)的終值應(yīng)+1或-1,等等。
特別要注意的是,為了提高效率,平時(shí)上機(jī)調(diào)試時(shí)(考試時(shí)除外)一個(gè)錯(cuò)誤如檢查或思考幾分鐘(比如5分鐘)后還沒(méi)有進(jìn)展的,請(qǐng)不要再浪費(fèi)更多的時(shí)間,及時(shí)把錯(cuò)誤記錄或保存下來(lái),馬上開(kāi)始做下一題。把遇到的問(wèn)題留到下次上晚自習(xí)時(shí)安安靜靜地仔仔細(xì)細(xì)地思考解決。晚自習(xí)教室不像機(jī)房里有那么多的干擾動(dòng)作、干擾聲響,便于集中注意力。調(diào)試后思考,思考后再調(diào)試,如此循環(huán)往復(fù),學(xué)生的VB上機(jī)調(diào)試水平就會(huì)進(jìn)入一個(gè)螺旋式上升通道,學(xué)習(xí)成績(jī)肯定也會(huì)跟著穩(wěn)步提高。
[1]成耀,魯松.對(duì)如何提高VB教學(xué)質(zhì)量的思考[J].福建電腦,2008(2):199-200.
[2]牛又奇,孫建國(guó).新編Visual Basic程序設(shè)計(jì)教程[M].蘇州:蘇州大學(xué)出版社,2002:205-205.