C語言函數教學設計與實踐論文

一、函數在C語言程序設計課程中的地位

C語言函數教學設計與實踐論文

函數部分的學習被安排在三大程序控制結構之後,有利於學生對函數知識點的系統學習,也能夠使學生深刻理解結構化程序設計的全局思想,在大學期間開設《C語言程序設計》課程的主要目的是培養學生充分利用信息時代的優勢,通過編程解決實際問題的能力。實際上C程序的基本組成單位是函數,課程所有知識點的學習最終都將落實到編寫各種函數來進行驗證和實現。因此,學生只有靈活掌握函數的運用,才能爲後續學習奠定堅實基礎。

二、傳統函數教學存在的問題

傳統函數教學流程如下:

其一,函數定義及其形式;

其二,函數形參,return語句,函數返回值;

其三,函數聲明,格式,位置;

其四,函數調用,函數實參等。這種傳統的教學流程過於強調函數語法知識,概念和規則的講解,這樣導致學生似懂非懂,與教學理念相違背,爲了適應教學要求,突出以學生爲主,教員爲輔的教學理念,主要探討函數的教學設計及實踐[1]。

三、新的函數教學設計及方法

函數教學主要以發現問題、分析問題、解決問題爲思路開展教學,以啓發、引導、對比和總結爲輔幫助學生分析問題解決提出的問題。不僅可以讓學生帶着興趣學習,也會加深學生對知識點的深刻理解及靈活應用。本堂課的教學流程是:交代任務;提出問題、發現問題、解決問題;鞏固練習[2]。

第一,提出問題、分析問題、解決問題。學生只學過在main函數中編寫簡單程序,於是向學生拋出問題:複雜程序應如何進行組織和設計?在此,給學生一些時間利用main函數來解決給定任務,解決完畢和同學生一起驗證結果,然後引導學生分析這種解決方式在實際中存在的.問題,並啓發學生思考解決此問題的最佳方法,從而引出學習的內容——函數法。接着再次引導學生用函數法重新解決給定的任務,最後將解決該任務的兩種方法進行對比,讓學生討論、體會並總結出複雜程序的設計方法。

第二,鞏固練習。在這個環節,筆者設計了帶有陷阱的小例子:通過編寫swap函數來實現主函數中兩個整數的交換,給學生一些時間討論、驗證結果,引導學生分析其中的問題,同時引出函數調用流程這一知識點,並通過動畫演示的方式幫助學生分析函數調用流程。

四、函數教學實踐

第一,利用結構化程序設計原則設計複雜程序。在main函數中編程解決問題的基礎上引導學生獨立解決給定任務,發現大部分學生都能很好地編寫出程序,讓學生觀察上述代碼,聯繫實際啓發引導學生討論並總結出如下問題:

其一,代碼冗餘;

其二,不易維護;

其三,可靠性差;

其四,可讀性差。

在此基礎上啓發學生剖析問題並讓學生給出解決方案,即main函數沒有能力獨自解決整個任務,這樣很自然引出複雜C程序組織和設計的原則:自頂向下,逐步細化,模塊化設計,結構化編碼。在這一原則的指導下,人們可以將任意複雜任務分解若干子任務。程序設計時每個子任務看成獨立模塊,每個程序設計人員分別完成一個或多個模塊。人們稱這樣的程序設計方法爲“模塊法”,在編寫代碼時每個模塊對應編寫一個函數。最後選擇一種結構化語言對各個函數進行編碼,然後在機器上反覆調試修改驗證。函數定義形式函數首部函數體含義作用及功能功能具體實現對應知識點函數名,函數形參,返回值如:longfact(intm)聲明語句,執行語句第二,函數定義及調用。

其一,函數定義形式;

其二,函數調用。通過知識遷移將以前學過的使用庫函數的語句引導學生總結出函數調用的形式:①無返回值;②帶返回值。在此,詳細講解實參與形參的區別及聯繫,接着給學生一些時間利用函數調用的方法改寫程序並將兩種解決問題的方法進行對比,讓學生觀察總結出程序模塊化的優點。

第三,進階練習。佈置小任務:編寫swap函數來實現main函數中兩個整數交換。在學生編寫時,教員應根據每位學生的情況進行適當指導提示,並及時糾正學生們共性的錯誤。提示學生思考計算機本身是如何執行程序中的main和swap函數的,引導學生回答並指正。通過畫圖這種直觀的方式,讓學生理解函數調用的執行流程,同時也加深了學生對函數模塊獨立性的深刻理解,將抽象的知識變得通俗易懂。

五、結束語

綜上所述,C語言中函數涉及的知識雜而多樣,在教學中採用啓發、引導、對比等多種教學方法,不拘泥於知識點的講解,而是從程序設計全局角度出發,以分工合作思想爲切入點,探討了現實中複雜程序編寫多個函數來實現的必要性,發現問題,解決問題,讓學生主動學習的思路展開,實踐證明該思路符合學生接受知識的思維習慣,這不僅很好地調動學生學習的積極性,從而培養了學生獨立思考解決問題的能力。

參考文獻:

[1]譚浩強.C程序設計第三版,北京清華大學出版社.

[2]高等教育出版社.c語言程序設計2015版,高等教育出版社.