何美
摘要:C語言是面向過程的程序設計語言,學生在學習過程中不容易提起學習興趣。采用項目教學讓學生通過完成一個個項目來激發學生的學習興趣,同時達到知識點的學習和鞏固,并且提高了學生的動手能力和分析問題的能力。
關鍵詞:項目;教學;C語言;應用
中圖分類號:G424 文獻標識碼:A 文章編號:1009-3044(2018)01-0134-02
Abstract: C is a process oriented programming language, and it is not easy for students to arouse their interest in learning. Using project teaching, students can stimulate their interest in learning by completing a project. At the same time, they can achieve the learning and consolidation of knowledge points, and improve the students' practical ability and ability to analyze problems.
Key words: Project; teaching; C language; application
《C語言程序設計》課程是計算機類學生專業必修基礎課,對學生后續課程的學習有至關重要的作用。我認為在教學過程中,老師怎么講、講什么是重要的,而學生學到什么、收獲什么是更重要的,為了讓學生學習的積極性、主動性得到充分發提高和調動,在講授該課程時不斷把現實生活中的問題引入課堂用程序解決。把理論和實踐很好的結合起來,注重培養學生分析問題、解決問題的能力。
由于C語言程序設計是面向過程的,學生在學習過程中容易提不起學習興趣,為了提高學生的學習興趣,在本課程的教學中,我采用項目教學的方法,讓學生通過完成一個個項目來達到知識點的學習和鞏固,經過幾年是實踐,發現這樣的方法很有成效。
在該課程的第一次課上,我首先展示一個用C語言編寫的學生成績管理的系統,告之學生學完這門課,這個小系統他們就可以編寫完成。這樣讓學生明確學習的目標,知道學了這門課可以做些什么。在學習的過程中,把項目進行分解,通過設計與知識點有關的子項目一個一個循序漸進來實現。具體如下:
項目一:實現學生成績管理系統的界面的輸出,如圖1。這是在介紹了C語言的上機調試步驟后讓學生實現。教師講解上機調試步驟并演示讓屏幕輸出“我的名字是***”等案例,學生在練習上機調試簡單C程序后,就要完成項目一。這個階段主要是掌握C的上機運行步驟、編寫C程序注意事項,并且對簡單C程序的組成有了認識,同時對輸出函數printf()有了初步理解。通過講解C語言中的數據類型、常量、變量、各種表達式、輸入、輸出、順序結構等知識后,讓學生用4個同學的成績做案例,實現成績的輸入、輸出、求平均成績等。
項目二:由于項目一僅僅實現的是界面的輸出,如何實現界面中菜單的選擇和菜單功能? 引入分支結構的學習,學生掌握了分支結構后。結合學生的實際情況,先讓學生實現菜單的選擇如圖2,此時學生可使用多分支的if...elseif …else ,也可以使用switch case實現。實現菜單的選擇后,如何實現菜單的功能,把完成的4個同學成績管理案例的程序代碼放入分支菜單1中,就可實現該菜單的功能。這一過程加深學生對分支的理解。菜單2、3功能的實現引入分支的嵌套知識,教師講解分支嵌套相關知識和案例后,學生使用分支嵌套就可以實現菜單2、3的功能。
項目三:目前由于該程序菜單選擇僅僅只能選一項,通過實現選擇多項如圖3來引入循環的講解,學生可以通過使用循環語句如:while、do while、for 、goto等實現如圖3的功能。
項目四:通過前面的項目的編寫,學生到現階段已經掌握了C語言中的基本知識和三個結構(順序、分支、循環),學生由于自己寫出的程序能實現該系統小部分功能,此時學生會收獲到一些成就感,學習興趣得到提高。但是他們寫的學生成績管理系統僅僅實現的是4個同學的管理,并且在管理時非常的不方便,一個班級至少有50個以上的同學,我們不可能定義50個變量,通過觀察這些變量,發現這些變量具有相同的數據類型,并且數據需要多次使用。由此引入了數組的講解,講解完數組定義、引用等知識點后,學生使用數組改寫該程序,此時便可以根據實際需求數靈活定義人數,如50個學生的3門課程的成績可定義為:
#define M 50
char stuname[M][20];stunumb[M][20];float c[M],jave[M],ps[M]。
項目五:隨著程序功能的不斷完善,程序變得龐大與臃腫,有可能是一個小小的語法錯誤,但查找與改正起來需要花很多時間與精力。程序可讀性降低,維護也變得困難,通過分析可以發現,該系統中的菜單選項都是一個個具有獨立功能的,能不能把這些具有獨立功能的代碼分離出來呢?引入函數的講解。通過講解函數的定義、調用等知識后,讓學生把菜單功能中的代碼使用函數實現。這樣既可以鞏固之前的知識,又把函數加以練習。同時提高了程序的可讀性、可維護性。
項目六:學生在使用數組后,發現姓名、學號、各科成績都是用不同類型的數組來實現,由于這些數組之間沒有直接的聯系,要保證姓名、學號、成績的一致,在操作上必須要非常謹慎。但在實際中一個學生的姓名、學號、成績是息息相關的,能不能存儲在一個變量里呢?此時引入結構體的知識,在講解了結構體定義、引用和有關案例后,學生使用結構體改寫程序。如50個學生的3門課程的成績可定義為:#define M 50
struct student{ char stuname [20];char stunumb [20];float c;float jave;float ps}renshu[M]。
項目七:程序在使用結構體后更便于處理,但是由于該變量較“胖”,在進行學生信息處理時會浪費資源,由此引入指針的講解。讓學生使用指針操作改善該程序。
項目八:學生做到項目七后,該系統的功能全部可以實現,同時程序也得到完善,但目前還存在一個問題,程序每次的運行都要重新錄入數據,數據記錄不能保存。如何保存數據記錄,由此引入文件的講解。講解完文件的有關知識后,讓學生用文件來優化該程序。
通過這樣一個大項目下的若干子項目,循序漸進的讓學生掌握了C語言中的常量、變量、表達式、輸入、輸出、順序結構、分支結構、循環結構、結構體、指針、文件等知識。同時也提高了學生的動手能力和分析問題的能力。
參考文獻:
[1] 高維春.C語言程序設計項目教程[M].北京:人民郵電出版社,2013.
[2] 譚浩強.C程序設計[M].4版.清華大學出版社,2012.
[3] 劉枧,張宜坤.C語言程序設[M].北京:人民郵電出版社,2011.endprint