999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關(guān)于C語言程序設(shè)計課程中函數(shù)的教學(xué)探討

2014-12-30 20:56:36李偉鄭珊珊牧劍波
科技創(chuàng)新導(dǎo)報 2014年31期

李偉+鄭珊珊+牧劍波

摘 要:“C語言程序設(shè)計”課程是信息類專業(yè)的一門非常重要的基礎(chǔ)課程,其中函數(shù)是該課程的重點和難點之一,該文作者結(jié)合實際教學(xué)情況,對函數(shù)的內(nèi)容安排、函數(shù)的設(shè)計和函數(shù)的參數(shù)傳遞等方面進行了探討,實踐證明,該方法取得了良好的效果,學(xué)生通過函數(shù)進一步理解了模塊化程序設(shè)計的思想。

關(guān)鍵詞:C語言 ?函數(shù) ?參數(shù)傳遞

中圖分類號:TP312 文獻標(biāo)識碼:A 文章編號:1674-098X(2014)11(a)-0135-02

“C語言程序設(shè)計”課程是信息類專業(yè)的一門非常重要的基礎(chǔ)課程,這門課程的主要目的就是讓學(xué)生以C語言為例了解高級程序設(shè)計語言的結(jié)構(gòu),掌握程序設(shè)計的基本思想,具備初步的分析問題和用計算機解決問題的能力。函數(shù)是C語言程序設(shè)計課程的重點和難點,它體現(xiàn)了模塊化程序設(shè)計的思想,將一個復(fù)雜的問題分解成一個個小而簡單的問題,通過解決一個個小問題進而實現(xiàn)大的復(fù)雜問題的求解。在函數(shù)的教學(xué)中,經(jīng)常會有教師不好教學(xué)生學(xué)不懂的現(xiàn)象,學(xué)生學(xué)完函數(shù)后,基本概念和結(jié)構(gòu)語法都清楚,但是針對具體的問題就無從下手,教學(xué)效果一直不是太好。筆者在多年C語言教學(xué)的實踐基礎(chǔ)上,結(jié)合我校學(xué)生的具體情況,對函數(shù)部分的內(nèi)容組織和教學(xué)方法做了一些探討。

1 教學(xué)內(nèi)容和安排

函數(shù)部分一般按以下內(nèi)容進行教學(xué)。

(1)函數(shù)的作用和分類:標(biāo)準(zhǔn)庫函數(shù)和自定義函數(shù)。

(2)函數(shù)定義的基本格式:無參函數(shù)、有參函數(shù)和空函數(shù)。

(3)函數(shù)的參數(shù)傳遞:值傳遞和地址傳遞。

(4)函數(shù)的返回值:無返回值、一個返回值和多個返回值。

(5)函數(shù)的調(diào)用:作為單獨語句、作為表達式和作為函數(shù)參數(shù)。

(6)函數(shù)的遞歸調(diào)用和嵌套調(diào)用。

(7)函數(shù)的聲明:聲明的位置、格式和省略情況。

(8)變量的作用域:全局變量和局部變量。

(9)變量的存儲類型及生存期:自動變量、靜態(tài)變量、外部變量和寄存器變量。

可以看出,函數(shù)部分的內(nèi)容非常多,而且會有許多新的概念突然介入,有相當(dāng)一部分教材,以譚浩強教授的《C程序設(shè)計》(第四版)為代表,將函數(shù)作為單獨一章放在選擇控制結(jié)構(gòu)和數(shù)組之后,把函數(shù)相關(guān)的上述所有內(nèi)容都放在這一章中介紹,然后在后續(xù)的指針、結(jié)構(gòu)體和文件等章節(jié)中又幾乎沒有函數(shù)的蹤影,程序的主體仍然放到main()函數(shù)中去講解,筆者認為這樣的內(nèi)容編排結(jié)構(gòu)不利于學(xué)生對函數(shù)的把握,它會導(dǎo)致函數(shù)和其他內(nèi)容脫節(jié),給學(xué)生造成這是專門的一章,不學(xué)或?qū)W不好對其它內(nèi)容不會產(chǎn)生多大影響的印象,結(jié)果到課程結(jié)束時仍然對函數(shù)知之甚少,平時也幾乎沒用函數(shù)來編寫過程序,導(dǎo)致到了學(xué)期末學(xué)生在編程時仍然習(xí)慣把所有程序都放到一個main()函數(shù)中去編寫,很少有模塊化程序設(shè)計的思想,為以后編寫復(fù)雜程序或者參加團隊合作埋下了隱患。

該文作者在講授函數(shù)這一部分時,參考了哈爾濱工業(yè)大學(xué)蘇小紅教授的高教版《C語言程序設(shè)計》(第二版)的內(nèi)容編排,把函數(shù)提到了數(shù)組之前介紹,而且從函數(shù)這一章開始,后面幾乎所有的程序都是按模塊化思想將程序分成一個個小函數(shù),再通過main()函數(shù)調(diào)用這些函數(shù)來實現(xiàn)主體功能,并且在后續(xù)內(nèi)容的講解中,不斷強化學(xué)生對函數(shù)的把握,強化學(xué)生模塊化程序設(shè)計的思想,學(xué)生在學(xué)習(xí)的過程當(dāng)中,不斷地復(fù)習(xí)鞏固著函數(shù)的知識,不斷地感受著模塊化程序設(shè)計的思想,也逐漸養(yǎng)成了用函數(shù)設(shè)計程序的習(xí)慣,實踐表明,到學(xué)期末的時候,大多數(shù)學(xué)生都可以寫一些簡單的函數(shù)并通過main()函數(shù)調(diào)用來進行程序設(shè)計。

2 函數(shù)的設(shè)計思想和設(shè)計方法

在進行程序設(shè)計時,很多學(xué)生感到困惑、難以理解和掌握的是什么時候需要設(shè)計函數(shù)和該設(shè)計什么樣的函數(shù),形參和返回值該如何設(shè)置。對這個問題,筆者認為在講解的時候要著重把握幾點。

首先,在確定什么時候該設(shè)計函數(shù)時,需要先對整個程序的過程有個把握,確定程序的主體功能,這樣,對需不需要設(shè)計函數(shù)及對哪些部分可以設(shè)計函數(shù)就有了較為明確的答案。例如:從鍵盤上輸入一個整數(shù)n(n>1且n<10),輸出1!+2!+3!+...+n!的值。

對程序進行分析后,可以得出程序主體可以分成兩個步驟:

輸入一個整數(shù)n;

輸出1!+2!+3!+...+n!的值。

在第2) 步驟中,由于重復(fù)用到了求階乘的功能,所以如果把求階乘這部分設(shè)計成一個函數(shù),將會對第2) 步的編程起到簡化的作用。這樣,經(jīng)過初步分析,可以確定需要設(shè)計一個函數(shù),此函數(shù)的功能是對給定的一個整數(shù)m,求出其階乘。

函數(shù)的功能確定后,接著就可以著手設(shè)計函數(shù)了。具體到函數(shù)設(shè)計時,很多學(xué)生的疑惑是怎么設(shè)計函數(shù)的參數(shù)和返回值,在這里,筆者建議學(xué)生采用“黑匣子”的方法設(shè)計函數(shù),即不需要管函數(shù)的內(nèi)部結(jié)構(gòu),把它看做一個“黑匣子”,只從外部的功能要求來確定函數(shù)應(yīng)該具備什么樣的功能,進而確定主函數(shù)在調(diào)用該函數(shù)時需要傳遞給它什么參數(shù),它在返回主調(diào)函數(shù)時又需不需要返回值或需要返回幾個值。在上個例子中,函數(shù)的功能確定是求階乘,在主函數(shù)調(diào)用它時需要告訴它對誰求階乘,即傳遞給該函數(shù)階乘的階數(shù)m,函數(shù)調(diào)用結(jié)束后,需要m的階乘返回主調(diào)函數(shù),即只需要返回一個值,如圖1所示。

由此,我們得出此函數(shù)的相關(guān)內(nèi)容:

函數(shù)功能:求出整數(shù)m的階乘m!

函數(shù)入口參數(shù):一個形參,整形變量m表示階乘的階數(shù)

函數(shù)返回值:一個返回值,返回m!的值

這段信息可以作為注釋放在函數(shù)的開頭以便讓其他程序員有足夠的信息了解如何使用該函數(shù)。然后根據(jù)C語言中函數(shù)的定義格式可以寫出求階乘函數(shù)定義:int fact(int m);考慮到m!的范圍,我們可以將其修改定義為:long fact(int m);endprint

至此,函數(shù)的第一個難點就解決了。

3 函數(shù)的參數(shù)傳遞

在函數(shù)需要有多個返回值時,僅僅一個return就很難滿足要求了,這里就需要利用指針或全局變量將函數(shù)中的多個值傳遞到主調(diào)函數(shù)中,這屬于函數(shù)的參數(shù)傳遞問題。函數(shù)的參數(shù)傳遞是函數(shù)部分的又一個難點,可以分為值傳遞和地址傳遞,因為還關(guān)系到指針的應(yīng)用,學(xué)生一時間很難理解和掌握。鑒于這一點,筆者采用形象類比法結(jié)合內(nèi)存空間講解了值傳遞和地址傳遞的區(qū)別。

函數(shù)在被調(diào)用時新開辟了一段內(nèi)存空間,所有形參和函數(shù)內(nèi)部變量都在這個內(nèi)存空間中被訪問或修改,一旦返回主調(diào)函數(shù)這段內(nèi)存空間也就被釋放掉,形參的值不會傳遞給實參,影響到主調(diào)函數(shù)。即在進行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

上述講法需要學(xué)生建立內(nèi)存空間的概念,要對程序的存儲空間有所認識,相當(dāng)一部分同學(xué)表示難以理解。筆者結(jié)合大一學(xué)生都學(xué)過計算機引論的實際情況,將值傳遞比喻為將計算機中的某一文件file1.doc拷貝給別人,別人拷走后可以隨便修改這個文件的內(nèi)容,這些修改都不會影響到原來的文件file1.doc。當(dāng)傳遞的是地址的時候,即使用指針變量作函數(shù)參數(shù)時,相當(dāng)于把機器密碼、要修改的文件路徑及文件名(如d:\project\file1.doc)告訴了別人,別人在修改時直接針對file1.doc,進行修改后,file1.doc的內(nèi)容肯定也會發(fā)生改變,這就是地址傳遞。經(jīng)過這樣形象的比喻后,學(xué)生多表示容易理解,在寫程序時會有意識地考慮需要進行的是值傳遞還是地址傳遞,形參該設(shè)置成普通變量還是指針變量,教學(xué)效果有所改善。

4 結(jié)語

實踐證明,在筆者進行的函數(shù)教學(xué)中,相當(dāng)一部分同學(xué)對函數(shù)有了形象的認識,更深地理解了模塊化程序設(shè)計的思想,取得了良好的學(xué)習(xí)效果。學(xué)無止境,教亦無止境。除了以上幾點,只函數(shù)部分就還有很多可以繼續(xù)深入挖掘的東西,比如從函數(shù)有無參數(shù)方面,函數(shù)有無返回值或是否有多個返回值方面,變量的存儲類型和生存期方面等等,這些都值得我們教師不斷地研究不斷地探討。但歸根結(jié)底,如何讓學(xué)生容易掌握要點,如何讓學(xué)生發(fā)自內(nèi)心地喜歡學(xué)習(xí)、愛上學(xué)習(xí)并善于主動學(xué)習(xí),筆者認為才是教師的最終目的。

參考文獻

[1] 蘇小紅.C語言程序設(shè)計[M].2版.高等教育出版社,2013.

[2] 譚浩強.C程序設(shè)計[M].4版.清華大學(xué)出版社,2011.

[3] 何欽銘.“程序設(shè)計基礎(chǔ)”課程教學(xué)實施方案[J].中國大學(xué)教學(xué),2010(5).

[4] 董鑫正.C語言教學(xué)中函數(shù)參數(shù)傳遞問題探討[J].電腦知識與技術(shù),2012(3).endprint

至此,函數(shù)的第一個難點就解決了。

3 函數(shù)的參數(shù)傳遞

在函數(shù)需要有多個返回值時,僅僅一個return就很難滿足要求了,這里就需要利用指針或全局變量將函數(shù)中的多個值傳遞到主調(diào)函數(shù)中,這屬于函數(shù)的參數(shù)傳遞問題。函數(shù)的參數(shù)傳遞是函數(shù)部分的又一個難點,可以分為值傳遞和地址傳遞,因為還關(guān)系到指針的應(yīng)用,學(xué)生一時間很難理解和掌握。鑒于這一點,筆者采用形象類比法結(jié)合內(nèi)存空間講解了值傳遞和地址傳遞的區(qū)別。

函數(shù)在被調(diào)用時新開辟了一段內(nèi)存空間,所有形參和函數(shù)內(nèi)部變量都在這個內(nèi)存空間中被訪問或修改,一旦返回主調(diào)函數(shù)這段內(nèi)存空間也就被釋放掉,形參的值不會傳遞給實參,影響到主調(diào)函數(shù)。即在進行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

上述講法需要學(xué)生建立內(nèi)存空間的概念,要對程序的存儲空間有所認識,相當(dāng)一部分同學(xué)表示難以理解。筆者結(jié)合大一學(xué)生都學(xué)過計算機引論的實際情況,將值傳遞比喻為將計算機中的某一文件file1.doc拷貝給別人,別人拷走后可以隨便修改這個文件的內(nèi)容,這些修改都不會影響到原來的文件file1.doc。當(dāng)傳遞的是地址的時候,即使用指針變量作函數(shù)參數(shù)時,相當(dāng)于把機器密碼、要修改的文件路徑及文件名(如d:\project\file1.doc)告訴了別人,別人在修改時直接針對file1.doc,進行修改后,file1.doc的內(nèi)容肯定也會發(fā)生改變,這就是地址傳遞。經(jīng)過這樣形象的比喻后,學(xué)生多表示容易理解,在寫程序時會有意識地考慮需要進行的是值傳遞還是地址傳遞,形參該設(shè)置成普通變量還是指針變量,教學(xué)效果有所改善。

4 結(jié)語

實踐證明,在筆者進行的函數(shù)教學(xué)中,相當(dāng)一部分同學(xué)對函數(shù)有了形象的認識,更深地理解了模塊化程序設(shè)計的思想,取得了良好的學(xué)習(xí)效果。學(xué)無止境,教亦無止境。除了以上幾點,只函數(shù)部分就還有很多可以繼續(xù)深入挖掘的東西,比如從函數(shù)有無參數(shù)方面,函數(shù)有無返回值或是否有多個返回值方面,變量的存儲類型和生存期方面等等,這些都值得我們教師不斷地研究不斷地探討。但歸根結(jié)底,如何讓學(xué)生容易掌握要點,如何讓學(xué)生發(fā)自內(nèi)心地喜歡學(xué)習(xí)、愛上學(xué)習(xí)并善于主動學(xué)習(xí),筆者認為才是教師的最終目的。

參考文獻

[1] 蘇小紅.C語言程序設(shè)計[M].2版.高等教育出版社,2013.

[2] 譚浩強.C程序設(shè)計[M].4版.清華大學(xué)出版社,2011.

[3] 何欽銘.“程序設(shè)計基礎(chǔ)”課程教學(xué)實施方案[J].中國大學(xué)教學(xué),2010(5).

[4] 董鑫正.C語言教學(xué)中函數(shù)參數(shù)傳遞問題探討[J].電腦知識與技術(shù),2012(3).endprint

至此,函數(shù)的第一個難點就解決了。

3 函數(shù)的參數(shù)傳遞

在函數(shù)需要有多個返回值時,僅僅一個return就很難滿足要求了,這里就需要利用指針或全局變量將函數(shù)中的多個值傳遞到主調(diào)函數(shù)中,這屬于函數(shù)的參數(shù)傳遞問題。函數(shù)的參數(shù)傳遞是函數(shù)部分的又一個難點,可以分為值傳遞和地址傳遞,因為還關(guān)系到指針的應(yīng)用,學(xué)生一時間很難理解和掌握。鑒于這一點,筆者采用形象類比法結(jié)合內(nèi)存空間講解了值傳遞和地址傳遞的區(qū)別。

函數(shù)在被調(diào)用時新開辟了一段內(nèi)存空間,所有形參和函數(shù)內(nèi)部變量都在這個內(nèi)存空間中被訪問或修改,一旦返回主調(diào)函數(shù)這段內(nèi)存空間也就被釋放掉,形參的值不會傳遞給實參,影響到主調(diào)函數(shù)。即在進行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

上述講法需要學(xué)生建立內(nèi)存空間的概念,要對程序的存儲空間有所認識,相當(dāng)一部分同學(xué)表示難以理解。筆者結(jié)合大一學(xué)生都學(xué)過計算機引論的實際情況,將值傳遞比喻為將計算機中的某一文件file1.doc拷貝給別人,別人拷走后可以隨便修改這個文件的內(nèi)容,這些修改都不會影響到原來的文件file1.doc。當(dāng)傳遞的是地址的時候,即使用指針變量作函數(shù)參數(shù)時,相當(dāng)于把機器密碼、要修改的文件路徑及文件名(如d:\project\file1.doc)告訴了別人,別人在修改時直接針對file1.doc,進行修改后,file1.doc的內(nèi)容肯定也會發(fā)生改變,這就是地址傳遞。經(jīng)過這樣形象的比喻后,學(xué)生多表示容易理解,在寫程序時會有意識地考慮需要進行的是值傳遞還是地址傳遞,形參該設(shè)置成普通變量還是指針變量,教學(xué)效果有所改善。

4 結(jié)語

實踐證明,在筆者進行的函數(shù)教學(xué)中,相當(dāng)一部分同學(xué)對函數(shù)有了形象的認識,更深地理解了模塊化程序設(shè)計的思想,取得了良好的學(xué)習(xí)效果。學(xué)無止境,教亦無止境。除了以上幾點,只函數(shù)部分就還有很多可以繼續(xù)深入挖掘的東西,比如從函數(shù)有無參數(shù)方面,函數(shù)有無返回值或是否有多個返回值方面,變量的存儲類型和生存期方面等等,這些都值得我們教師不斷地研究不斷地探討。但歸根結(jié)底,如何讓學(xué)生容易掌握要點,如何讓學(xué)生發(fā)自內(nèi)心地喜歡學(xué)習(xí)、愛上學(xué)習(xí)并善于主動學(xué)習(xí),筆者認為才是教師的最終目的。

參考文獻

[1] 蘇小紅.C語言程序設(shè)計[M].2版.高等教育出版社,2013.

[2] 譚浩強.C程序設(shè)計[M].4版.清華大學(xué)出版社,2011.

[3] 何欽銘.“程序設(shè)計基礎(chǔ)”課程教學(xué)實施方案[J].中國大學(xué)教學(xué),2010(5).

[4] 董鑫正.C語言教學(xué)中函數(shù)參數(shù)傳遞問題探討[J].電腦知識與技術(shù),2012(3).endprint

主站蜘蛛池模板: 日本三区视频| 91黄视频在线观看| 国产精品林美惠子在线播放| 精品剧情v国产在线观看| 日韩欧美高清视频| 亚洲第一国产综合| 国产色伊人| 亚洲第一成年免费网站| 91国内外精品自在线播放| 欧美午夜视频| 亚洲最大福利网站| 色综合久久久久8天国| 亚洲欧美不卡| 国产伦精品一区二区三区视频优播 | 第一页亚洲| 91探花国产综合在线精品| 中文国产成人精品久久一| 国产精品所毛片视频| 国产视频一区二区在线观看| 白浆免费视频国产精品视频| 成人噜噜噜视频在线观看| 精品无码日韩国产不卡av| 黄色在线不卡| 国产美女自慰在线观看| 中文字幕资源站| 蜜芽国产尤物av尤物在线看| 欧美黄色网站在线看| 国产精品午夜电影| 激情无码视频在线看| 国产偷倩视频| 国产亚洲精品91| 69av免费视频| 亚洲男人的天堂在线观看| 国产亚洲成AⅤ人片在线观看| 97久久超碰极品视觉盛宴| 国产激情在线视频| 精品免费在线视频| 伊人查蕉在线观看国产精品| 99久久精品国产精品亚洲| 欧美区一区| 香蕉久久国产超碰青草| 亚洲二区视频| 91精品国产丝袜| 国产日产欧美精品| 国产精品视频999| 日韩一二三区视频精品| 丝袜无码一区二区三区| 国产成人无码AV在线播放动漫 | 2021国产乱人伦在线播放| 亚洲婷婷六月| 日韩色图区| 高清视频一区| 亚洲欧美激情小说另类| 亚洲国产日韩一区| 中文字幕在线观看日本| 亚洲丝袜第一页| 国产精品亚洲αv天堂无码| 午夜限制老子影院888| 亚洲自偷自拍另类小说| 亚洲欧美一区二区三区图片| 国产三级韩国三级理| 午夜毛片免费看| 四虎影视库国产精品一区| 亚洲视频免费播放| 美女国内精品自产拍在线播放| a级毛片免费看| 欧美色综合久久| 国产乱人伦精品一区二区| 在线视频亚洲色图| 亚洲 欧美 偷自乱 图片| 久久国产高清视频| 丝袜国产一区| 丁香六月综合网| 国产手机在线小视频免费观看| 国产精品久久自在自2021| 91网在线| 538国产在线| 日本尹人综合香蕉在线观看| 国产精品男人的天堂| 凹凸国产分类在线观看| 丝袜久久剧情精品国产| 日韩视频免费|