文章編號(hào):1672-5913(2009)10-0116-04
摘要:本文針對(duì)“程序設(shè)計(jì)基礎(chǔ)”課程介紹了以在線實(shí)踐為導(dǎo)向的教學(xué)思路,并對(duì)其中的函數(shù)設(shè)計(jì)教學(xué),提出了新穎的教學(xué)過程:承上啟下、因勢(shì)利導(dǎo)地引入函數(shù)的概念和作用;循序漸進(jìn)地講解函數(shù)的設(shè)計(jì)方法;以及通過遞歸函數(shù)設(shè)計(jì)來提高學(xué)生對(duì)函數(shù)功能的理解和對(duì)函數(shù)設(shè)計(jì)技巧的掌握。
關(guān)鍵詞:程序設(shè)計(jì)基礎(chǔ);在線實(shí)踐導(dǎo)向;函數(shù)設(shè)計(jì);遞歸函數(shù);教學(xué)
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
1引言
在文獻(xiàn)[1]中,作者針對(duì)“程序設(shè)計(jì)基礎(chǔ)”課程提出了以在線實(shí)踐為導(dǎo)向的教學(xué)思路,其主要思想為:以學(xué)科競(jìng)賽為驅(qū)動(dòng)、以在線實(shí)踐為導(dǎo)向、以課程設(shè)計(jì)進(jìn)行強(qiáng)化。這種教學(xué)思路以程序設(shè)計(jì)思想和方法的培養(yǎng)為主,以程序設(shè)計(jì)語言教學(xué)為輔。
我們?cè)诮虒W(xué)中以ACM/ICPC程序設(shè)計(jì)競(jìng)賽為驅(qū)動(dòng),激發(fā)學(xué)生的學(xué)習(xí)興趣和競(jìng)爭(zhēng)意識(shí),培養(yǎng)學(xué)生的主動(dòng)思維能力。另外,我們?cè)谡n程的教學(xué)中根據(jù)教學(xué)的需要選取國內(nèi)外著名OJ(Online Judge,在線評(píng)判)網(wǎng)站上的試題作為例題和練習(xí)題,以培養(yǎng)學(xué)生獨(dú)立分析問題、解決問題的能力,以及分組討論、團(tuán)隊(duì)協(xié)作、文檔組織等能力。在課程的最后階段,我們通過課程設(shè)計(jì)強(qiáng)化學(xué)生的學(xué)習(xí)效果。
為了適應(yīng)以在線實(shí)踐為導(dǎo)向的教學(xué)思路,在文獻(xiàn)[1]中,我們重新設(shè)計(jì)了“程序設(shè)計(jì)基礎(chǔ)”課程的理論教學(xué)內(nèi)容和實(shí)踐教學(xué)內(nèi)容。其中理論教學(xué)內(nèi)容的設(shè)置和課時(shí)安排如表1所示。
從表1可以看出,理論教學(xué)內(nèi)容安排的思路是:先用盡可能少的時(shí)間講解編寫一個(gè)C/C++程序所需的最小語法知識(shí)集,然后講解常用的程序設(shè)計(jì)思想和方法;最后是課程設(shè)計(jì)。
函數(shù)設(shè)計(jì)的教學(xué)是“程序設(shè)計(jì)基礎(chǔ)”課程的一個(gè)重點(diǎn)內(nèi)容。本文針對(duì)這部分內(nèi)容的教學(xué),提出了新穎的教學(xué)過程。在以往的教學(xué)中,函數(shù)設(shè)計(jì)一般是放在程序控制結(jié)構(gòu)、數(shù)組等內(nèi)容之后,前后教學(xué)內(nèi)容的設(shè)置并沒有直接聯(lián)系,使得學(xué)生難以理解函數(shù)的概念、功能和設(shè)計(jì)方法。
我們?cè)诮虒W(xué)中采取新穎的方法和過程自然地引入數(shù)
學(xué)函數(shù)的使用、循序漸進(jìn)地介紹函數(shù)的設(shè)計(jì)方法、以及通過遞歸函數(shù)設(shè)計(jì)來提高學(xué)生對(duì)函數(shù)功能的理解和對(duì)函數(shù)設(shè)計(jì)技巧的掌握。
教改課題項(xiàng)目:浙江財(cái)經(jīng)學(xué)院2008年教學(xué)科研重大課題《以學(xué)科競(jìng)賽為驅(qū)動(dòng)和以在線實(shí)踐為導(dǎo)向的程序設(shè)計(jì)課程教學(xué)改革》(課題編號(hào):JK200812)。
作者簡(jiǎn)介:王桂平(1979-),男,江西省安??h人,講師,在讀博士,浙江財(cái)經(jīng)學(xué)院信息學(xué)院教師。主要研究方向:算法分析與設(shè)計(jì),圖像處理與模式識(shí)別。
2承上啟下、因勢(shì)利導(dǎo)地引入函數(shù)
學(xué)生對(duì)知識(shí)點(diǎn)的理解需要一個(gè)過程,而且這個(gè)過程越自然越利于學(xué)生接受知識(shí)點(diǎn)。所以我們?cè)诮虒W(xué)過程中盡早地引入函數(shù)的概念,自然地過渡到函數(shù)設(shè)計(jì)。
2.1從數(shù)學(xué)函數(shù)的使用入手
我們所設(shè)計(jì)的第1部分教學(xué)內(nèi)容是以數(shù)值型數(shù)據(jù)的處理為線索,以簡(jiǎn)單數(shù)學(xué)計(jì)算或數(shù)學(xué)應(yīng)用題目為例子來講解C/C++語言語法知識(shí),如報(bào)數(shù)游戲、閏年的判斷、求三角形面積、素?cái)?shù)和完數(shù)的判斷、Fibonacci數(shù)列各項(xiàng)遞推、迭代法求平方根等等。以這些數(shù)學(xué)應(yīng)用為例講解語言語法,學(xué)生更容易接受,因?yàn)檫@些數(shù)學(xué)應(yīng)用問題學(xué)生已經(jīng)在高等數(shù)學(xué)甚至初等數(shù)學(xué)中就已經(jīng)學(xué)過了,現(xiàn)在只是用編寫程序的方法去求解。
在進(jìn)行數(shù)據(jù)處理時(shí),經(jīng)常要進(jìn)行一定的運(yùn)算,才能得到結(jié)果,運(yùn)算是通過運(yùn)算符和表達(dá)式來實(shí)現(xiàn)的。所以我們?cè)诮榻B完C/C++語言中的數(shù)據(jù)(變量和常量)后,就自然地過渡到運(yùn)算符和表達(dá)式了。
在進(jìn)行數(shù)據(jù)處理時(shí),僅有運(yùn)算符和表達(dá)式往往是不夠的,經(jīng)常還需要使用到數(shù)學(xué)函數(shù)。因此,我們?cè)诮榻B完運(yùn)算符和表達(dá)式后,緊接著就向?qū)W生介紹數(shù)學(xué)函數(shù)的使用。
盡管這時(shí)學(xué)生對(duì)函數(shù)的概念和功能還一知半解,一開始也不能正確地使用數(shù)學(xué)函數(shù),但我們認(rèn)為從數(shù)學(xué)函數(shù)的使用入手,能較早地讓學(xué)生接觸到函數(shù)的使用,也能讓學(xué)生更自然地接受函數(shù)的概念。特別是學(xué)生在學(xué)初等數(shù)學(xué)時(shí),已經(jīng)具備了數(shù)學(xué)上函數(shù)、函數(shù)的自變量、函數(shù)值等概念,這些概念有助于學(xué)生初步理解程序設(shè)計(jì)語言中的函數(shù)、函數(shù)參數(shù)、函數(shù)返回值等概念。
例如,要對(duì)2.5開3次方根,即要求2.51/3。老師向?qū)W生介紹了數(shù)學(xué)函數(shù)pow的原型后,學(xué)生一開始可能將pow函數(shù)的調(diào)用錯(cuò)誤地寫成如下的形式:
double x = 2.5, y = 1.0/3, z;
z = double pow( x, y );
z = double pow( double x, double y );
等等。導(dǎo)致這些錯(cuò)誤的原因是學(xué)生還沒有函數(shù)原型的概念,老師只要將這些錯(cuò)誤的調(diào)用形式糾正過一兩次,學(xué)生就能舉一反三,正確地使用數(shù)學(xué)函數(shù)。
2.2從二重循環(huán)過渡到函數(shù)設(shè)計(jì)
我們?cè)凇八惴翱刂平Y(jié)構(gòu)”這一節(jié)內(nèi)容的教學(xué)中,是以二重循環(huán)的使用作為結(jié)尾的,如輸出100~200之內(nèi)的所有素?cái)?shù)、輸出6~10000之間的完數(shù)等等。這些程序的main函數(shù)代碼比較長(zhǎng),這樣,當(dāng)我們?cè)谥v解函數(shù)時(shí),就很自然地引入函數(shù)對(duì)main函數(shù)的功能進(jìn)行分解。
例如,要輸出100~200之內(nèi)的素?cái)?shù),可以用一個(gè)2重循環(huán)實(shí)現(xiàn)。但如果有一個(gè)函數(shù)prime,能夠?qū)崿F(xiàn)判斷一個(gè)正整數(shù)m是否為素?cái)?shù)。其調(diào)用形式是:prime(m)。調(diào)用該函數(shù)后返回值如果為1,則m為素?cái)?shù);如果為0,則m為合數(shù)。因此我們只需要用如下的代碼就可以輸出100~200之內(nèi)的所有素?cái)?shù):
for( int m =100; m<=200; m++ )
{
if( prime(m) )
printf( "%d ", m );
}
在這個(gè)例子中,我們把“輸出100~200之內(nèi)所有素?cái)?shù)”的功能需求進(jìn)行分解,把“判斷一個(gè)整數(shù)是否為素?cái)?shù)”的功能用prime函數(shù)去實(shí)現(xiàn)。這就是函數(shù)的功能所在。
通過這樣的講解,學(xué)生能較自然地理解函數(shù)的功能,也更容易接受函數(shù)的概念。
3循序漸進(jìn)地講解函數(shù)設(shè)計(jì)(基礎(chǔ)篇)
從二重循環(huán)過渡到函數(shù)的功能和概念后,我們采取以下教學(xué)方法,使得學(xué)生能在較短的時(shí)間里掌握函數(shù)的設(shè)計(jì)方法。
3.1循序漸進(jìn),步步深入
在講解函數(shù)的定義和調(diào)用時(shí),對(duì)其中的知識(shí)點(diǎn),我們采取以下順序進(jìn)行講解:函數(shù)的定義、函數(shù)的參數(shù)、函數(shù)的返回值、函數(shù)的調(diào)用。
我們認(rèn)為,按照這樣的順序進(jìn)行講解是合理的,因?yàn)閷W(xué)生已經(jīng)掌握了數(shù)學(xué)函數(shù)的使用,已經(jīng)能初步理解函數(shù)的相關(guān)概念了,我們按照這樣的順序講解可以循序漸進(jìn)地進(jìn)入到自定義函數(shù)的定義和調(diào)用上。在這個(gè)過程中,我們將教學(xué)的重點(diǎn)放在函數(shù)形參、實(shí)參和函數(shù)返回值上。
3.2切中要害,見招拆招
很多初學(xué)者對(duì)函數(shù)比較頭疼,不知道該如何設(shè)計(jì)函數(shù)。具體體現(xiàn)在:
(1) 不知道函數(shù)是否有參數(shù),有幾個(gè)參數(shù),是否有返回值,隨意地設(shè)置函數(shù)的參數(shù)和返回值。
(2) 不明確函數(shù)要處理的數(shù)據(jù)是哪些,不明白函數(shù)形參的作用是什么,形參的值是在什么時(shí)候被“賦予”的。初學(xué)者經(jīng)常在函數(shù)里通過輸入語句給形參輸入數(shù)據(jù)。例如,初學(xué)者可能在定義上述prime函數(shù)時(shí)輸入數(shù)據(jù)到形參x中:
int prime( int x )
{
printf( "%d", &x );
…
}
對(duì)于第1個(gè)問題,我們的解釋是:程序設(shè)計(jì)者希望采用怎樣的形式去調(diào)用函數(shù),這種函數(shù)調(diào)用形式里有幾個(gè)參數(shù),分別是什么類型,是以此來確定函數(shù)的形參個(gè)數(shù)和類型;程序設(shè)計(jì)者希望函數(shù)執(zhí)行以后是否得到一個(gè)結(jié)果,這個(gè)結(jié)果是什么類型的,是什么含義,是否需要返回到主調(diào)函數(shù)中,以此來確定函數(shù)的返回值及其類型、含義等。
對(duì)于第2個(gè)問題,我們的解釋是:函數(shù)形參是在函數(shù)調(diào)用時(shí),通過實(shí)參與形參之間的數(shù)據(jù)傳遞,從而“被賦予”了值。只要沒有函數(shù)調(diào)用發(fā)生,就不會(huì)給形參分配存儲(chǔ)空間;當(dāng)函數(shù)調(diào)用發(fā)生時(shí),為形參分配存儲(chǔ)空間,并把實(shí)參的值賦值給形參。
對(duì)于上述解釋,我們以前面講過的二重循環(huán)例子來進(jìn)一步闡述。即輸出100~200之內(nèi)所有素?cái)?shù),要求:1)定義一個(gè)函數(shù)prime,用于判斷x是否為素?cái)?shù),如果為素?cái)?shù),返回1,否則返回0;2)在主函數(shù)中調(diào)用prime函數(shù),用于判斷100~200之間的每個(gè)數(shù)是否為素?cái)?shù)。
根據(jù)題目的意思,主調(diào)函數(shù)中調(diào)用prime函數(shù)的形式是prime(199),即判斷199是否為素?cái)?shù),如果為素?cái)?shù)則返回1,否則返回0。因此,prime函數(shù)的原型為:
int prime( int x );
另外,在prime函數(shù)里,是要判斷形參x是否為素?cái)?shù),這個(gè)x的值不是在prime函數(shù)里通過輸入語句輸進(jìn)去的,也不是采用賦值的方式“賦予”給它的,而是在主調(diào)函數(shù)中調(diào)用prime函數(shù)時(shí),如prime(199),把實(shí)參199的值傳遞給形參x的,因此這時(shí)執(zhí)行prime函數(shù),形參x的值就是199,調(diào)用prime函數(shù)就是要判斷199是否為素?cái)?shù)。
講解并演示這些過程后,我們?cè)谡n堂上可以通過一些練習(xí)題進(jìn)一步考查學(xué)生對(duì)利用函數(shù)進(jìn)行功能分解、函數(shù)設(shè)計(jì)、函數(shù)調(diào)用的理解。
3.3精選例題,事半功倍
我們所設(shè)計(jì)的第1部分教學(xué)內(nèi)容是以數(shù)值型數(shù)據(jù)的處理為線索,以簡(jiǎn)單數(shù)學(xué)計(jì)算或數(shù)學(xué)應(yīng)用題為例子來講解的,函數(shù)的設(shè)計(jì)也不例外。例如,我們通過以下例子來講解函數(shù)的嵌套調(diào)用。
拋物線y = x2/(2*p)繞它的對(duì)稱軸x = 0旋轉(zhuǎn)所成的曲面就是旋轉(zhuǎn)拋物面。放在焦點(diǎn)F(0, p/2)處的光源所發(fā)出的光,經(jīng)過拋物面各點(diǎn)反射之后就成為平行光束,如圖1??梢岳眠@一性質(zhì)制造需要發(fā)射平行光的燈具,例如:探照燈,汽車的車前燈等。請(qǐng)編寫程序驗(yàn)證這個(gè)性質(zhì)。
題目的意思是,如圖1所示,從焦點(diǎn)F發(fā)射的任意光線,比如圖中的兩條光線L和L',經(jīng)過拋物面反射后,反射光線R和R'都平行y軸。
要證明反射光線R平行y軸,只要證明∠1 = ∠3,而∠1和∠2是相等的,所以只要證明∠2=∠3即可,即只要證明FC = FT,這里點(diǎn)C是光線L與拋物線的交點(diǎn),點(diǎn)T是拋物線在C點(diǎn)的切線與y軸的交點(diǎn)。
以下編寫程序,實(shí)現(xiàn):任意給定拋物線參數(shù)p和發(fā)射光線斜率k,輸出線段FC和FT的長(zhǎng)度。
在本題中,我們?cè)O(shè)計(jì)以下3個(gè)函數(shù)來實(shí)現(xiàn)程序的全部功能:
(1) main函數(shù):在main函數(shù)中輸入拋物線參數(shù)p和直線參數(shù)k,接下來所有工作都是通過調(diào)用solve函數(shù)實(shí)現(xiàn)的。
(2) solve函數(shù):求交點(diǎn)C和交點(diǎn)F的坐標(biāo),并調(diào)用length函數(shù)求線段FC和FT的長(zhǎng)度并輸出。solve函數(shù)有兩個(gè)形參,即拋物線參數(shù)p和直線參數(shù)k,沒有返回值。solve函數(shù)的原型為:
void solve(double p, double k);
(3) length函數(shù):求平面上兩點(diǎn)(x1,y1)和(x2,y2)的距離,即連接這兩點(diǎn)的線段的長(zhǎng)度。該函數(shù)有4個(gè)形參,為這兩個(gè)點(diǎn)的坐標(biāo);返回值為求的線段長(zhǎng)度。length函數(shù)的原型為:
double length( double x1, double y1,
double x2, double y2 );
通過這道題目的講解,學(xué)生在求解比較復(fù)雜的數(shù)學(xué)應(yīng)用題時(shí),能根據(jù)需要對(duì)程序的功能進(jìn)行分解并用不同的函數(shù)實(shí)現(xiàn)。
4遞歸函數(shù)設(shè)計(jì)(提高篇)
在以前的教學(xué)中,函數(shù)設(shè)計(jì)通常需要2~3周才能講完。而在目前的教學(xué)中,我們將函數(shù)重載、有默認(rèn)參數(shù)的函數(shù)等內(nèi)容剔除掉后,學(xué)生能夠在1周(3個(gè)理論課時(shí)+2個(gè)實(shí)驗(yàn)課時(shí))的教學(xué)中初步掌握函數(shù)的設(shè)計(jì)方法。在后續(xù)章節(jié)的教學(xué)中,我們列舉的很多例題也需要通過設(shè)計(jì)函數(shù)來實(shí)現(xiàn),所以在后續(xù)的教學(xué)中一直在進(jìn)一步加強(qiáng)學(xué)生對(duì)函數(shù)設(shè)計(jì)方法的掌握。另外,我們將遞歸函數(shù)的設(shè)計(jì)放在“遞歸與搜索”這一章當(dāng)中來講解,作為函數(shù)設(shè)計(jì)的提高階段。
遞歸是很多算法的基礎(chǔ),如搜索、分治等,也是課程的一個(gè)難點(diǎn)。學(xué)生在掌握了一般函數(shù)的設(shè)計(jì)方法后,在利用遞歸思想進(jìn)行搜索求解時(shí)需要注意以下兩個(gè)問題:
(1) 如何設(shè)計(jì)遞歸函數(shù)遞歸函數(shù)的設(shè)計(jì)主要面臨以下幾個(gè)問題:
① 需要將什么信息傳遞給下一層遞歸調(diào)用?——由此確定遞歸函數(shù)有幾個(gè)參數(shù),各參數(shù)含義是什么。
② 每一層遞歸函數(shù)調(diào)用后會(huì)得到一個(gè)怎樣的結(jié)果?這個(gè)結(jié)果是否需要返回到上一層?——由此確定遞歸函數(shù)的返回值,及返回值的含義。
③ 在每一層遞歸函數(shù)的執(zhí)行過程中,在什么情形下需要遞歸調(diào)用下一層?以及遞歸前該做什么準(zhǔn)備工作?遞歸返回后該做什么恢復(fù)工作?——由此確定遞歸函數(shù)中遞歸調(diào)用的細(xì)節(jié)。
④ 遞歸函數(shù)執(zhí)行到什么程度就可以不再需要遞歸調(diào)用下去了?——應(yīng)該在適當(dāng)?shù)臅r(shí)候終止遞歸函數(shù)的繼續(xù)遞歸調(diào)用,也就是要確定遞歸的終止條件。
(2) 如何調(diào)用遞歸函數(shù)進(jìn)行求解
調(diào)用遞歸函數(shù)進(jìn)行求解:在main函數(shù)(或其他函數(shù))中應(yīng)該采取怎樣的形式調(diào)用遞歸函數(shù)?也就是從怎樣的初始狀態(tài)出發(fā)進(jìn)行搜索,通常也就是確定實(shí)參的值。
我們?cè)诮虒W(xué)中以一些經(jīng)典的競(jìng)賽題目為例來闡述上述方法,如有這樣一道例題:有17種硬幣,硬幣的面值是平方數(shù)12, 22, 32, …, 172,即1, 4, 9, …, 289。問要支付一定額的貨幣,有多少種支付方法。
例如,若要支付總額為10的貨幣,則有四種方法:10個(gè)面值為1的貨幣;1個(gè)面值為4的貨幣和6個(gè)面值為1的貨幣;2個(gè)面值為4的貨幣和2個(gè)面值為1的貨幣;1個(gè)面值為9的貨幣和1個(gè)面值為1的貨幣。
在本題中,為避免求得重復(fù)的支付方案,我們需要按硬幣面值從小到大的順序依次選用合適的硬幣,如果當(dāng)前選用的硬幣面值總額小于需要支付的貨幣總額n,則繼續(xù)選用;如果等于,則我們找到一種方案,不再考慮其他貨幣,而是繼續(xù)下一個(gè)方案的選擇;如果大于,則放棄該方案,繼續(xù)下一個(gè)方案的選擇。
我們?cè)O(shè)計(jì)一個(gè)遞歸函數(shù)build來求貨幣總額n的支付方案數(shù),build函數(shù)的設(shè)計(jì)思路是:
●確定build函數(shù)的參數(shù):需要支付的貨幣金額、現(xiàn)已求得的支付方案數(shù)、當(dāng)前選用的硬幣面值總額、當(dāng)前最后選用的硬幣是第幾種硬幣這些信息需要傳遞到下一層遞歸調(diào)用。因此確定build函數(shù)有4個(gè)參數(shù):n、count、sum、j,分別對(duì)應(yīng)上述4種信息。
●確定build函數(shù)的返回值:每次build遞歸調(diào)用結(jié)束后,求得的是當(dāng)前找到的方案數(shù),最上層的build函數(shù)執(zhí)行完后,得到的結(jié)果是最終找到的方案數(shù),因此build有返回值,為int型。
●確定在什么情況下要遞歸調(diào)用下一層build函數(shù):分別考慮第i種貨幣(i取值為j、j+1、…、17),如果選用該種貨幣(sum的值增加i*i)后,sum仍小于n,則遞歸調(diào)用build函數(shù):build( n, count, sum, i);從該遞歸調(diào)用返回后,sum的值要減去i*i,
表示棄用第i種貨幣,繼續(xù)考察下一種貨幣。
●確定build函數(shù)的終止條件:如果當(dāng)前選用硬幣面值總額sum等于或大于n時(shí),不再遞歸調(diào)用下去,其中前一種情形還需將count的值加1,表示找到一種支付方案。
根據(jù)上述分析,設(shè)計(jì)的build函數(shù)如下:
int build(int n, int count, int sum,int j)
{
int i; //循環(huán)變量
for( i=1; i<=17; i++ )//搜索所有面值的硬幣
{
if( i sum += i*i; //選用面值為i*i的硬幣 //找到一種支付方案 if( sum==n )return ++count; //超出了支付總額,不再搜索 if( sum>n )return count; //沒超出則遞歸調(diào)用build函數(shù)繼續(xù)搜索 count = build( n, count, sum, i ); sum -= i*i; //棄用面值為i*i的硬幣 } return count; } build函數(shù)設(shè)計(jì)好以后,在主函數(shù)中,只要采取以下語句調(diào)用build函數(shù)就可以求得貨幣總額n的支付方案數(shù)count: count = build( n, 0, 0, 0 ); 4個(gè)實(shí)參的值代表問題的初始狀態(tài):需支付的貨幣總額為n、現(xiàn)已求得的支付方案數(shù)為0、當(dāng)前選用的硬幣面值總額為0、當(dāng)前最后選用的硬幣是第0種硬幣。 通過這些搜索題目的講解,學(xué)生能在理解搜索思想的同時(shí)掌握遞歸函數(shù)的設(shè)計(jì)技巧,從而進(jìn)一步提高函數(shù)設(shè)計(jì)能力。 5結(jié)束語 函數(shù)設(shè)計(jì)是“程序設(shè)計(jì)基礎(chǔ)”課程的一個(gè)重點(diǎn),也是學(xué)生普遍感到難以掌握的一個(gè)知識(shí)點(diǎn)。本文在以在線實(shí)踐為導(dǎo)向的教學(xué)思路基礎(chǔ)上,詳細(xì)的介紹了我們?cè)诤瘮?shù)設(shè)計(jì)教學(xué)中采取的教學(xué)方法和過程,這些方法和過程都是以在線實(shí)踐為導(dǎo)向的教學(xué)思路的具體體現(xiàn)。 參考文獻(xiàn): [1] 王桂平,馮睿. 以在線實(shí)踐為導(dǎo)向的程序設(shè)計(jì)課程教學(xué)新思路[J]. 計(jì)算機(jī)教育,2008(22):100-102. [2] 方紅琴. 點(diǎn)面結(jié)合突破C程序設(shè)計(jì)函數(shù)教學(xué)中的重難點(diǎn)[J]. 計(jì)算機(jī)教育,2008(22):130-131. [3] 謝偉增,李瑾. C語言程序設(shè)計(jì)中的重點(diǎn):函數(shù)與指針[J]. 河南廣播電視大學(xué)學(xué)報(bào),2003,16(4):65-66. [4] 羅碧波. C/C++語言程序中函數(shù)調(diào)用解決辦法[J]. 計(jì)算機(jī)時(shí)代,2007(5):66-67.