• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2014-12-30 20:56:36李偉鄭珊珊牧劍波
      科技創(chuàng)新導(dǎo)報 2014年31期
      關(guān)鍵詞:函數(shù)

      李偉+鄭珊珊+牧劍波

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

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

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

      “C語言程序設(shè)計”課程是信息類專業(yè)的一門非常重要的基礎(chǔ)課程,這門課程的主要目的就是讓學(xué)生以C語言為例了解高級程序設(shè)計語言的結(jié)構(gòu),掌握程序設(shè)計的基本思想,具備初步的分析問題和用計算機(jī)解決問題的能力。函數(shù)是C語言程序設(shè)計課程的重點和難點,它體現(xiàn)了模塊化程序設(shè)計的思想,將一個復(fù)雜的問題分解成一個個小而簡單的問題,通過解決一個個小問題進(jìn)而實現(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)容進(jìn)行教學(xué)。

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

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

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

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

      (5)函數(shù)的調(diào)用:作為單獨語句、作為表達(dá)式和作為函數(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ù)中去講解,筆者認(rèn)為這樣的內(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ù)雜程序或者參加團(tuán)隊合作埋下了隱患。

      該文作者在講授函數(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)用來進(jìn)行程序設(shè)計。

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

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

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

      對程序進(jì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)該具備什么樣的功能,進(jìn)而確定主函數(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ù)。即在進(jìn)行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進(jìn)行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

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

      4 結(jié)語

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

      參考文獻(xiàn)

      [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ù)。即在進(jìn)行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進(jìn)行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

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

      4 結(jié)語

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

      參考文獻(xiàn)

      [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ù)。即在進(jìn)行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進(jìn)行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

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

      4 結(jié)語

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

      參考文獻(xiàn)

      [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ù)”復(fù)習(xí)精講
      二次函數(shù)
      第3講 “函數(shù)”復(fù)習(xí)精講
      涉及Picard例外值的亞純函數(shù)正規(guī)族
      求解一道抽象函數(shù)題
      二次函數(shù)
      函數(shù)備考精講
      第3講“函數(shù)”復(fù)習(xí)精講
      話說函數(shù)
      第3講 “函數(shù)”復(fù)習(xí)精講
      花垣县| 湾仔区| 乐至县| 高台县| 临海市| 建德市| 荔浦县| 温宿县| 锡林浩特市| 青河县| 岢岚县| 洞头县| 宝丰县| 曲水县| 延长县| 墨竹工卡县| 松桃| 定边县| 淳化县| 大理市| 白银市| 南皮县| 乌恰县| 北海市| 文水县| 金塔县| 泰来县| 辽宁省| 商南县| 曲阜市| 富裕县| 布拖县| 修水县| 汤原县| 长葛市| 兰坪| 广州市| 彩票| 义马市| 平远县| 新源县|