国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

程序調(diào)試技術(shù)在C語言函數(shù)教學(xué)中的應(yīng)用

2014-07-02 01:31:44張秀美趙旭霞
教育教學(xué)論壇 2014年11期
關(guān)鍵詞:函數(shù)調(diào)用C語言對話框

張秀美,趙旭霞

(中國石油大學(xué),北京 102249)

程序調(diào)試技術(shù)在C語言函數(shù)教學(xué)中的應(yīng)用

張秀美,趙旭霞

(中國石油大學(xué),北京 102249)

函數(shù)是C語言程序的基本組成單位,在C語言教學(xué)中必須使學(xué)生很好地掌握函數(shù)的概念、定義和調(diào)用等內(nèi)容。本文針對學(xué)生在學(xué)習(xí)函數(shù)過程中出現(xiàn)的一系列問題,提出在函數(shù)教學(xué)過程中使用程序調(diào)試技術(shù)加強對函數(shù)調(diào)用過程的演示,從而使學(xué)生更好地掌握函數(shù)的內(nèi)容,達(dá)到了較好的教學(xué)效果。

C語言;函數(shù);調(diào)試技術(shù)

C語言是一門函數(shù)式語言。學(xué)習(xí)C語言編程必須學(xué)好函數(shù)的使用。筆者在多年的教學(xué)過程中,發(fā)現(xiàn)學(xué)生在學(xué)習(xí)函數(shù)的過程存在一些問題。雖然這些內(nèi)容教師在課堂上都十分認(rèn)真地講解,但有些學(xué)生還是覺得內(nèi)容很抽象,不容易理解。程序調(diào)試技術(shù)一般用在程序查錯上。在程序調(diào)試的過程中,可以看到程序的執(zhí)行過程,包括函數(shù)的調(diào)用過程、形參實參的傳遞,變量的內(nèi)存地址等內(nèi)容,這樣可以很直觀地給學(xué)生講解函數(shù)的相關(guān)內(nèi)容,因此筆者在函數(shù)的教學(xué)中使用了程序調(diào)試技術(shù),使教學(xué)內(nèi)容不再抽象,而是具體化,使學(xué)生能夠更好地掌握相關(guān)知識,達(dá)到了較好的結(jié)果。

程序調(diào)試技術(shù)在函數(shù)教學(xué)中的具體使用:

1.通過調(diào)試技術(shù)直觀地查看函數(shù)的調(diào)用過程。首先設(shè)計一個簡單的使用函數(shù)的實例,jc函數(shù)實現(xiàn)計算n的階乘。在main函數(shù)中通過函數(shù)調(diào)用來求任意一個整數(shù)的階乘。double jc(int n),{double mul=1;//……2,int i;for(i=1;i<=n;i++)mul*=i;return mul;}//……..3;int main(),{int num=5;double r;r=jc(n);//…….1,printf("jiecheng is:%. 0f",jc(num));return 0;}。為了給學(xué)生演示函數(shù)調(diào)用的過程,在標(biāo)號1語句處設(shè)置斷點,然后選擇go(F5)菜單調(diào)試執(zhí)行該程序,則程序執(zhí)行到斷點處停下,然后進(jìn)行單步調(diào)試,在debug工具欄中選擇Step into(F11)項,跟蹤進(jìn)到j(luò)c函數(shù)內(nèi)部查看,系統(tǒng)的執(zhí)行箭頭就會從原先1的位置跳轉(zhuǎn)到標(biāo)號2的位置去,可以通過單擊debug工具欄中CallStack項打開CallStack對話框查看調(diào)用細(xì)節(jié),如圖1所示。圖中顯示了main函數(shù)調(diào)用了jc函數(shù),實參的值是10。繼續(xù)單步調(diào)試,系統(tǒng)執(zhí)行jc函數(shù)的代碼,執(zhí)行到3處后,系統(tǒng)的執(zhí)行箭頭就會從標(biāo)號3的位置跳回到標(biāo)號1的位置去,表示函數(shù)調(diào)用完成,此時CallStack對話框也發(fā)生了變化,如圖2所示。這樣學(xué)生就很清晰地看到了程序運行過程中函數(shù)的調(diào)用過程,加深了記憶和理解。

圖1 jc函數(shù)被調(diào)用后

圖2 jc函數(shù)返回后

2.通過程序調(diào)試技術(shù)了解函數(shù)參數(shù)傳遞過程和局部變量的概念。在函數(shù)教學(xué)中,形參和實參的關(guān)系往往是學(xué)生容易出錯的地方。形參和實參是兩個不同的變量,實參的作用就是給形參傳值。而函數(shù)的形參以及函數(shù)內(nèi)定義的變量都是函數(shù)的局部變量,只能在該函數(shù)中使用。而在調(diào)試中通過查看變量的值可以很清晰地看到這些知識的作用,則比較生動具體。在上例中,程序在斷點停下后,選擇debug工具欄中的watch項,打開watch對話框,在對話框中輸入num和n,如圖3所示,此時num的值是5,而由于jc函數(shù)還沒有被調(diào)用,形參n還不存在。然后選擇Step into(F11)項,跟蹤進(jìn)到j(luò)c函數(shù)內(nèi)部查看,注意觀察watch對話框的變化,發(fā)現(xiàn)n的值變?yōu)?,而num失效了,如圖4所示。這說明程序的執(zhí)行進(jìn)入到j(luò)c函數(shù),形參變量n被創(chuàng)建并從實參獲得了值5。而num是main函數(shù)的局部變量,在其他函數(shù)中如jc函數(shù)中是無法訪問的,從而失效。

圖3 jc函數(shù)調(diào)用前的實參和形參

圖4 jc函數(shù)調(diào)用后的實參和形參

3.通過調(diào)試技術(shù)加強對指針做函數(shù)參數(shù)的內(nèi)容的理解。在講解函數(shù)的過程中,指針做參數(shù)是重點和難點之一。教師在教學(xué)過程中強調(diào)指針做形參,可以突破局部變量的限制而訪問到其他函數(shù)的局部變量,這在以后的函數(shù)使用中經(jīng)常用到。但學(xué)生覺得很難理解。筆者通過調(diào)試技術(shù)運行一個實例,查看實際的運行過程,來加深學(xué)生對內(nèi)容的理解。首先設(shè)計一個簡單的指針做參數(shù)的實例。void fun(int * q){*q=10;//…….2}int main(){int n=89;int * p=&n;fun(p);//…….1printf("n=%d\n",n);return 0;},在標(biāo)號1處設(shè)置斷點。調(diào)試運行該程序,在斷點處停下,p是fun函數(shù)的實參。此時選擇debug工具欄中的watch項,打開watch對話框,分別輸入p和&n,如圖5所示,它們值相同,都是0x0012ff44,表示n的內(nèi)存地址。然后選擇Step into項跟蹤進(jìn)入fun函數(shù)內(nèi)部執(zhí)行,由于p和n是main函數(shù)的局部變量,在fun函數(shù)內(nèi)部無法訪問,它們的值失效。然后,在watch對話框中再輸入q和*q,則可以看到如圖6的內(nèi)容。說明形參q從實參p獲得了值0x0012ff44,即q也保存了main函數(shù)中n的地址,而*q的意思是通過q保存的地址訪問該地址所表示的變量。繼續(xù)單步執(zhí)行,返回到main函數(shù)執(zhí)行,此時查看n的值,果真變?yōu)榱?0。即在fun函數(shù)內(nèi)部通過指針變量改變了main函數(shù)中局部變量的值。

圖5 fun函數(shù)調(diào)用前

圖6 fun函數(shù)調(diào)用后

筆者在實際的函數(shù)教學(xué)中采用了程序調(diào)試技術(shù),讓學(xué)生直觀地看到了程序的運行過程,從而加深了學(xué)生對函數(shù)調(diào)用過程、參數(shù)傳遞、指針做參數(shù)等內(nèi)容的理解。學(xué)生反應(yīng)良好。計算機技術(shù)總是在不斷的發(fā)展,教師還要不斷地探索更好的教學(xué)方法,使C語言課程的教學(xué)質(zhì)量進(jìn)一步提高。

[1]譚浩強.C程序設(shè)計(第四版)[M].清華大學(xué)出版社,2010.7.

[2]王濤偉,楊秀金.C++函數(shù)的參數(shù)傳遞和返回值問題的教學(xué)研討[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2005,(23):70-74.

[3]徐曉.一種C語言函數(shù)部分的新教學(xué)方案 [J].計算機教育,2007,(9):56-58,13.

G642.4

A

1674-9324(2014)11-0085-02

猜你喜歡
函數(shù)調(diào)用C語言對話框
基于C語言的數(shù)學(xué)菜單的設(shè)計與實現(xiàn)
基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
計算機教育(2020年5期)2020-07-24 08:52:56
正常恢復(fù)虛擬機
Bootlace Worms’Secret etc.
基于C語言的計算機軟件編程
電子制作(2018年16期)2018-09-26 03:27:08
基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測方法*
探討C++編程中避免代碼冗余的技巧
Unity3D項目腳本優(yōu)化分析與研究
中國新通信(2017年1期)2017-03-08 03:12:21
高職高專院校C語言程序設(shè)計教學(xué)改革探索
論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
阜平县| 岳普湖县| 灵山县| 元谋县| 永康市| 土默特右旗| 隆子县| 登封市| 陇南市| 罗源县| 泸定县| 武强县| 密山市| 茶陵县| 宁陕县| 宜兰市| 霍林郭勒市| 绵阳市| 济阳县| 石狮市| 蒙城县| 双鸭山市| 沂水县| 大庆市| 工布江达县| 南木林县| 日土县| 嘉兴市| 隆德县| 汕尾市| 安图县| 天峨县| 道真| 扎兰屯市| 类乌齐县| 惠州市| 娄烦县| 上犹县| 南通市| 竹北市| 盐津县|