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