李建俊,段繼光,仇 賓
(河北師范大學附屬民族學院 數(shù)信系,河北 石家莊 050091)
提高調試程序效率的方法
李建俊,段繼光,仇 賓
(河北師范大學附屬民族學院 數(shù)信系,河北 石家莊 050091)
調試程序對學習計算機類語言的學生和搞軟件開發(fā)的程序員而言是非常重要的,但如何提高調試程序的效率,本文詳細地介紹了幾個方面,希望能給讀者提供幫助.
調試;習慣;報告;錯誤
對學生來說,不僅要會編寫程序,還要上機進行調試.對一個有經驗的程序員來說,在調試程序時也常會出現(xiàn)一些錯誤.所以,學生一開始,在調試程序時,肯定會出現(xiàn)多處錯誤.這時,就需要學生把出現(xiàn)的錯誤記下來;然后,對這些錯誤進行分類匯總,讓學生記住.有些學生對這項任務可以很好的完成.這樣,時間一長,學生在調試程序上就積累了一些經驗.當程序中出現(xiàn)錯誤提示很快就能發(fā)現(xiàn)錯誤并解決.這樣可以提高調試程序的效率.而有的學生對這項任務卻不能很好的完成,這樣,為調試程序沒有積累任何的經驗.一旦,程序中顯示出錯誤信息并告訴他哪一行有錯還不能解決.這時,就要借鑒他人的經驗來解決問題.但是,借鑒他人的經驗只能解決一時的問題.真正要提高調試程序的效率,還需要靠自己通過實踐來積累經驗.所以,積累經驗對提高調試程序的效率是非常重要的.
在調試程序時,掌握好的調試方法,可以提高調試程序的效率,最終達到事倍功半的效果.下面介紹幾種常見的方法.
(1)單步跟蹤執(zhí)行(Traceinto):一步一步執(zhí)行,遇到函數(shù)調用,跟蹤到函數(shù)內部,一步一步去執(zhí)行.通過Run→Traceinto來使用單步跟蹤,或者通過快捷鍵F7來使用.
(2)單步方式執(zhí)行(Stepover):一步一步執(zhí)行,遇到函數(shù)調用,不跟蹤到函數(shù)的內部去執(zhí)行.通過Run→Stepover來使用,或者通過快捷鍵F8來使用.
(3)設置斷點(Togglebreakpoint):當程序執(zhí)行到斷點時,程序暫停執(zhí)行.通過Break/Watch→Togglebreakpoint來設置,或者通過快捷鍵Ctrl+F 8來設置.
(4)執(zhí)行到光標所在處(Gotocursor):相當于一個斷點.通過Run→Gotocursor來使用,或者通過快捷鍵F 4來使用.
(5)監(jiān)視表達式(Addwatche):隨時監(jiān)視某些變量或對象值的變化情況.通過Break/Watch→AddWatch來設置監(jiān)視表達式,或者通過快捷鍵Ctrl+F7來設置.
(1)—(4)四種執(zhí)行方式與監(jiān)視表達式配合使用,能準確定位錯誤所在,可以具體到是哪一行出現(xiàn)錯誤.它們適合于編譯時沒有語法錯誤,而執(zhí)行后結果不正確的程序.
但是,在上機時,有一部分學生一有問題,就想讓老師幫忙解決.自己不愿意動腦去思考.針對這種情況,可以采取如下方法來對學生進行指導,以Ctrl+F7和F7相配合為例來進行說明:
首先,讓學生體驗一下F7和Ctrl+F7兩個快捷鍵相配合的妙處.看以下例題.
例:求10!.
先讓學生計算一下10?。?628800,然后編寫以下程序求10!.程序如下:
該程序編譯時沒有語法錯誤,然后執(zhí)行該程序,讓學生親眼看一下該程序的結果和他們計算的結果不一致.這樣就給學生造成一種懸念,然后用F7和Ctrl+F7相配合一步一步查找錯誤原因.這樣可以提高大家學習的積極性,起到事倍功半的效果.
其次,對學生提出要求.上機時,整個過程應自己獨立完成.不要有一點小問題就找老師幫忙.應學會獨立思考,勤于分析,如果遇到的程序編譯沒有錯誤,而執(zhí)行后結果不正確.應該用Ctrl+F7和F7相配合查找一下在哪一條語句出現(xiàn)錯誤.因為只有通過自己實踐得到的經驗用起來會更加得心應手.
最后,在上機時,如果學生的程序有問題,需要老師的幫忙.老師首先應該提醒學生讓他們用F7和Ctrl+F7兩個快捷鍵相配合來查找錯誤的原因,如果學生使用后,還不能找到錯誤原因,老師再幫助查找.但在查找時,也要注意指導學生查找的方法,不要只顧結果.其實,結果的正確與否,并不重要,重要的是整個查找過程,通過查找錯誤的這個過程,學生就可以慢慢的掌握這種方法.只有掌握了這種方法他們才可以提高調試程序的效率.
實驗結束后,對實驗要認真分析和總結,根據(jù)老師的要求寫出實驗報告.書寫實驗報告是整個實驗過程的一個重要環(huán)節(jié).通過寫實驗報告,可以對整個實驗做一個總結,不斷積累經驗,提高程序設計和調試的能力,同時還可以提高寫作能力.實驗報告主要包含以下內容:
3.1 實驗目的
實驗的目的就是深入理解和掌握課程教學中的有關基本概念,應用基本技術解決實際問題.從而進一步提高分析問題和解決問題的能力.
3.2 實驗內容
在布置實驗項目時,應該分出層次并且適量.實驗項目層次是基礎性項目加提高性項目.基礎性項目主要作用是鞏固所學的知識,這樣可以讓每位學生都學有所獲.提高性項目,主要是鍛煉學生知識的綜合應用能力.這樣,可以讓每位學生都有一個更好的發(fā)展.
3.3 實驗程序
要提供上機調試正確的完整、清晰的程序.
3.4 實驗小結
實驗小結分兩部分:
第一部分是遇到的問題.該部分有三點:①錯誤提示;②原因;③解決方法.通過該部分可以了解學生上機調試程序的認真程度,也可以幫助學生積累經驗.
第二部分是心得與收獲.通過該部分可以了解學生所想.可以和學生很好的進行交流.
4.1 編程格式的重要性
養(yǎng)成良好的習慣對于人的成長是非常重要的.養(yǎng)成良好的編程習慣對于提高學生們的編程能力也是非常重要的.一開始,學生們并不注意編寫程序的格式,而是一味注意程序的結果是否正確.不管老師怎么強調編程格式的重要性,但有好多學生根本不聽;甚至有的學生還反問,老師編程的格式不影響程序的結果,程序正確就可以了,為什么非要注意格式.主要是學生們剛開始編寫的程序代碼比較短,沒有意識到編程格式的重要性.以后,問題的難度增加了,程序的代碼量也會隨著增加.有的程序甚至會達到上百條語句.如果不注意編寫程序的格式,代碼多而亂,程序便不易被閱讀與修改.所以,學生編程時要有良好的習慣,源代碼的邏輯簡明清晰,易讀易懂是好程序的重要標準.
4.2 格式的要求
4.2.1 標識符的定義應該遵循“見名知意”的原則,這對于幫助閱讀者理解程序是非常重要的.
變量的命名:如果用單個英語單詞命名變量名,全部小寫,如index;如果用多個單詞命名變量,第一個單詞全部小寫,其它單詞的首字母用大寫,如current Image.
函數(shù)的命名:如果用單個英語單詞命名函數(shù)名,全部小寫,如voidrun();如果用多個單詞命名函數(shù),第一個單詞全部小寫,其它單詞的首字母用大寫,如voidgetBalance().
常量的命名:所有的字母都大寫.并能表示完整的含義.如PI,PASSWORD.
參數(shù)的命名和變量的命名規(guī)則一致.
4.2.2 適當?shù)淖⑨?/p>
通過“/**/”給程序加注釋,注釋是寫程序者和讀程序者重要的交流手段.正確的注釋有助于對程序的理解.對于函數(shù)只加簡明的功能注釋.對于該函數(shù)的細節(jié),最好不加在注釋中,因為日后可能要修改程序.這樣,還得對注釋進行維護.如果不修改注釋,將提供誤導信息,可能成為錯誤的注釋.如修改注釋,則增加了工作量.因為代碼本身和程序中的注釋是相關聯(lián)的.
4.2.3 語句的構造
語句構造的原則:每條語句應該簡單.不要為了節(jié)省空間把多行語句寫在一行,避免大量使用循環(huán)嵌套和條件嵌套,利用括號使邏輯表達式或算術表達式的運算次序清晰直觀.不要混合使用不同的數(shù)據(jù)類型.
〔1〕徐金梧,楊德斌,徐科.Turbo C實用大全[M].北京:機械工業(yè)出版社,1999.
〔2〕譚浩強.C程序設計[M].北京:清華大學出版社,2009.
TP312
A
1673-260X(2010)04-0021-02