張標漢

摘要:程序設(shè)計課程的教學過程中要向?qū)W生講授程序調(diào)試技術(shù),學生掌握了程序調(diào)試技術(shù)后就能夠更好地理解程序設(shè)計的有關(guān)概念、自己解決程序運行時出現(xiàn)中的問題。程序調(diào)試技術(shù)有助于幫助學生保持對程序設(shè)計課程的興趣,進而促進程序設(shè)計課程的教學,提升教學效果。
關(guān)鍵詞:程序設(shè)計;調(diào)試技術(shù);課程教學
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)29-0196-02
一、引言
程序設(shè)計課程是計算機相關(guān)專業(yè)的專業(yè)基礎(chǔ)課,學生對該課程的學習掌握情況將直接影響其對后續(xù)諸多課程的學習。因此,各高校對該課程的教學都相當重視,選配了教學經(jīng)驗豐富、工作認真負責的教師承擔該類課程的教學。同時,各高校都不同程度地支持授課教師開展針對程序設(shè)計課程的教學改革,探索適應(yīng)本校學生特點的教學模式,試圖通過教學改革、探索出更為有效的教學方法來幫助學生激發(fā)學習興趣、提高學習成績、為后續(xù)課程的學習打下堅實基礎(chǔ)。我們?nèi)鲗W院信息工程學院對C語言程序設(shè)計課程的教學改革也在探索之中,該項教學改革探索從2011年開始已經(jīng)堅持了6年,一定程度上提高了學生的程序設(shè)計水平,但也發(fā)現(xiàn)一些問題。我們在教學過程中發(fā)現(xiàn),學生的程序調(diào)試能力亟待提高,我們需要對學生進行程序調(diào)試技術(shù)的針對性訓(xùn)練,以進一步提高教學效果。
二、講授和學習調(diào)試技術(shù)的必要性
有調(diào)查表明,教師在程序設(shè)計課中主要講授問題分析的有10.62%,主要講授算法分析的有23.01%,主要講語法結(jié)構(gòu)的占61.95%,強調(diào)程序調(diào)試技巧的只占4.42%。我們學院在《C語言程序設(shè)計》課程上的教學也有相似的情況,在教學中教師和學生都強調(diào)對問題的分析、算法的設(shè)計以及程序設(shè)計語法知識的講授和學習,而忽視了對程序設(shè)計中的調(diào)試技術(shù)的講授和學習。這就造成學生在學習程序設(shè)計過程中當程序運行出現(xiàn)問題時往往不知錯誤在哪里、也就不知道應(yīng)該如何解決程序運行時出現(xiàn)的問題。我們在教學過程中發(fā)現(xiàn),學生在完成程序設(shè)計練習過程中的錯誤主要是編譯錯誤和邏輯錯誤。對于編譯錯誤,編譯器能夠給出提示,這樣的錯誤學生都能夠很好地自己解決。而對于邏輯錯誤,我們的學生因為不懂程序調(diào)試技術(shù)對很多的邏輯錯誤問題都不知如何尋找錯誤位置,往往對該類錯誤一籌莫展,坐等教師來幫忙解決問題,從而形成了依賴教師來解決邏輯錯誤。這對于學生的程序設(shè)計能力的提高相當不利,進而影響教學效果。我們知道,程序設(shè)計課程是一門實踐性很強的課程,需要投入大量的時間進行練習,但如果在練習過程中遇到問題不會解決,會導(dǎo)致學生自信心喪失,以至于對程序設(shè)計課程的學習失去興趣。因此,在程序設(shè)計課程中有意識地、系統(tǒng)地教會學生程序調(diào)試技術(shù)、讓學生學會自己解決問題是很有必要的。
三、通過調(diào)試技術(shù)學習程序設(shè)計
調(diào)試技術(shù)有助于我們的教學,不僅能夠幫助學生找到邏輯錯誤,而且能夠幫助我們向?qū)W生更為直觀地講授相關(guān)的概念,幫助學生理解這些概念。在程序設(shè)計課程的學習中,有一些概念的理解對于初學程序設(shè)計的學生來說是抽象和困難的,比如變量、數(shù)組、函數(shù)、作用域、指針等概念。在學習程序設(shè)計過程中,學生通過調(diào)試其所編寫的程序能夠看到程序的執(zhí)行過程,從而理解程序的3種基本結(jié)構(gòu)是如何執(zhí)行的、函數(shù)是如何調(diào)用的、指針是如何指向另一個變量等,使得學生真正從數(shù)據(jù)在內(nèi)存中的表現(xiàn)的層次來理解程序,進而幫助學生理解程序的本質(zhì),引導(dǎo)學生在出現(xiàn)問題時從內(nèi)存的角度來分析問題的原因,更快地找到問題的源頭,進而解決程序出現(xiàn)的問題。
1.常用的調(diào)試技術(shù)。在程序設(shè)計過程中,通過調(diào)試程序?qū)W生可以了解程序執(zhí)行的過程。常用的調(diào)試技術(shù)主要有設(shè)置斷點、單步執(zhí)行、觀察變量的內(nèi)存地址和值的變化、進入函數(shù)內(nèi)部執(zhí)行以觀察函數(shù)的調(diào)用過程等。其中斷點的設(shè)置又有多種,分為條件斷點、地址斷點等。在教學過程中,教師提供對調(diào)試技術(shù)的講授要使學生能夠使用最簡單的方法查看關(guān)鍵語法,在調(diào)試時設(shè)置斷點進行調(diào)試,指導(dǎo)學生在調(diào)試中運用單步執(zhí)行進行調(diào)試,能夠在調(diào)試中運用輸出關(guān)鍵信息進行檢查錯誤。
2.調(diào)試技術(shù)幫助理解數(shù)組的概念。剛接觸程序設(shè)計課程的學生對數(shù)組的理解是存在一定困難的,學生對數(shù)組是一段連續(xù)的空間、數(shù)組的初始化、數(shù)組的訪問、數(shù)組的下標越界等,尤其是對數(shù)組名是個地址的理解都或多或少地存在困難。所有這些知識的理解如果不借助調(diào)試技術(shù)想把它們都解釋清楚都會有一定的困難,而通過調(diào)試程序、讓學生看看內(nèi)存里面是個什么樣則能夠很好地幫助學生理解它們。
3.調(diào)試技術(shù)幫助理解函數(shù)參數(shù)的傳遞。函數(shù)是程序設(shè)計中另一個難以理解的概念,在函數(shù)中涉及的參數(shù)傳遞方式、函數(shù)的調(diào)用、遞歸函數(shù)的調(diào)用等也是一個教學難點。通過程序調(diào)試技術(shù)直觀地查看函數(shù)的調(diào)用過程,了解函數(shù)參數(shù)傳遞過程和局部變量的概念。借助程序調(diào)試技術(shù)可以讓學生更加深入地理解參數(shù)傳遞時的傳值、傳引用和傳地址的區(qū)別,以及函數(shù)的調(diào)用包括遞歸函數(shù)的調(diào)用。
比如,對于如下一段程序:
int main()
{
int i,j;
i = 1;j = 2;
swap(i,j);
return 0;
}
對于函數(shù)的傳值調(diào)用程序:
void swap(int a,int b)
{
int c;
c = a;a = b;b = c;
}
從watch窗口我們可以發(fā)現(xiàn)實參和形參的地址是不同的,從而能夠解釋傳值調(diào)用時的特點:數(shù)據(jù)傳遞時是復(fù)制了一份副本的。如圖1、2所示,在main函數(shù)中調(diào)用swap(i,j)時傳遞過去的變量i,j的地址是0X0012ff7c和0X0012ff78,而在實際執(zhí)行swap(a,b)時,參數(shù)a,b的地址是0X0012ff24和0X0012ff28,這就說明傳值調(diào)用時是復(fù)制副本來進行的,因此該swap函數(shù)并不能實現(xiàn)將i,j的值交換過來。
而對于函數(shù)的傳引用程序:
void swap(int &a,int &b)
{
int c;
c = a;a = b;b = c;
}
從watch窗口可以發(fā)現(xiàn),傳引用調(diào)用時形參和實參的地址是相同的,因此在函數(shù)調(diào)用完成后兩個變量的值也就能夠交換過來。
四、結(jié)束語
調(diào)試技術(shù)是學習程序設(shè)計課程必須要向?qū)W生講授的基本技能,學生掌握了程序的調(diào)試技術(shù)后就能夠在遇到問題時通過調(diào)試程序來尋找其中的錯誤,從而找到解決問題的辦法,這有助于學生保持對程序設(shè)計的興趣,進而促進我們的教學。
參考文獻:
[1]劉應(yīng)成.新升本科院校學生程序調(diào)試能力的調(diào)查研究[J].現(xiàn)代計算機(專業(yè)版),2010,(05):120-122.
[2]張秀美,趙旭霞.程序調(diào)試技術(shù)在C語言函數(shù)教學中的應(yīng)用[J].教育教學論壇,2014,(11):85-86.
Abstract:In the course of programming,we should tell the students how to debug the program. Using the program debugging technique,the students can understand the concept of programming better,and they can solve the running problems of the program better. Debugging technique can help students to maintain interest of programming,and promote the teaching of programming courses,improve teaching effect.
Key words:Programming;Debugging Technique;Course Teaching