
摘要:本文基于NCRE和C語言的部分特點,嘗試了一種全新的模板式教學方式,使學生能快速掌握C語言,提高編程能力,順利通過NCRE考試。
關鍵詞:C語言;NCRE;模板式教學;編程能力
C語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點,它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。因此,它的應用范圍廣泛。
同時C語言也是高等院校的重點課程之一,是工科專業學生的基礎課程,是計算機、軟件、電信、自動化等專業接觸的第一門重要專業基礎課,學好C語言對培養學生的編程能力有著非常重要的作用[1]。
1C語言在NCRE中的作用
全國計算機等級考試(National Computer Rank Examination,簡稱NCRE),是由教育部考試中心主辦,面向社會用于考查計算機應用知識與能力的全國性計算機水平考試體系。NCRE證書是具有基本計算機使用能力的社會通用標準,是職務晉升、職稱評定、崗位競聘的重要依據[2]。
目前NCRE考試中C語言主要用在二級C語言和三級信息管理、網絡、數據庫的上機考試中。二級C語言分填空(30分)、改錯(30分)和編程(40分)三個大題。三級中只有一個編程大題(100分)。由分值的分布情況來看,C語言編程能力對考試的通過與否有著極其重要的作用,特別是三級考試顯得更為重要。
2007年上半年的統計數據顯示,二級C語言的考試人數在二級考試的所有語種中占38.24%,VFP占37.33%[3]。但C語言的通過率卻只有VFP的一半左右。因為C語言是一門實踐性非常強的課程,不僅要在課堂上理解每個知識點,還必須通過大量的上機實驗進行融會貫通,這才能真正的掌握它,而目前大學的教學計劃普遍設置為70~80課時左右,按理論和上機1︰1的配置來說課時量顯然是不夠的,加之課堂上的內容無法當堂全部消化,所以必須要求學生在課外花大量時間去實踐,但由于種種原因,大量學生并不能達到這個目的。同學普通對C語言產生了畏難心理,信心受到一定打擊,當學到指針時,許多學生都很難一次性聽懂,這導致部分同學放棄了后面的學習。有的考生在二級C語言上機考試中甚至都只做填空題和改錯題,放棄了編程題。100分試卷變成了60分,由此可以想象通過的可能性肯定會降低很多。
基于此,在現有的教學模式下,筆者在一個NCRE二級C語言考試培訓班中進行了一次模板式教學的嘗試,以期待一個更好的教學效果。
2模板式教學的實踐
2.1什么是模板式教學
其實模板對學生來說并不陌生,經歷過高考的學生大部分都背過英語作文模板;PowerPoint也提供很多現成的幻燈片模板;特別是在網頁制作上,模板更是異常流行。
“模板”在新華字典中的解釋為:澆灌混凝土用的模型板,一般用木料制成。現在“模板”的概念已經廣泛應用于分子生物學、遺傳學、網站、Microsoft Office辦公軟件、面向對象程序設計等領域,如在Microsoft Office辦公軟件領域,模板是指一個或多個文件所包含的結構和工具構成的已完成的文件樣式和頁面布局等元素。如Word 模板能夠生成單個文檔,而FrontPage 模板可以形成整個網站;在面向對象程序設計領域,模板是建立通用的與數據類型無關的算法的重要手段。如C++國際標準ISO14882將模板正式引入標準庫,要求用模板類取代傳統C++中定義的類。由此可見,模板在現代社會中是非常重要的。
模板式教學就是讓學生在一定的基礎上利用一些固定的套路來解題,可以把它理解為足球中的長傳沖吊、下底傳中等戰術。現在有的觀點認為教學模板是應試考試的產物,沒有什么實際意義,甚至于約束了學生的思維,不利于學生的發展。但筆者的觀點恰恰相反,教學模板是教師多年教學經驗的總結,學生不僅可以利用模板迅速解題,甚至自己也可以在實踐的過程中創立適合于自己的新的模板,這樣的話可以使學生融會貫通各個知識點,快速的掌握C語言。
在NCRE二級C語言上機考試時,可以先讀懂題目含義、理清思路、分析考點,判定本題具體應該應用哪個模板,然后先把模板寫出來,再去填空。這樣的話,編程題實際上就已經變成了一個填空題,那么它的難度相對來說就小了許多,不至于一見到題目就有一種茫然的感覺。經過對目前二級C語言上機考試中出現的編程題的分析,發現所有的編程題均可以大致分為以下六個種類:字符串、數組、結構體、鏈表、自然數取位數、數學公式等。這六個種類也基本上涵蓋了所有C語言的考點,只有掌握所有知識點,并進行靈活應用,這樣才能輕松解答所有考題。
下面就用三個模板實例來講解模板式教學是如何進行的[4]。
2.2部分模板實例和解題思路
實例一:二維數組模板。
for(i=0;i for(j=0;j { …… } 這個模板的作用是依次遍歷二維數組中的所有元素,模板中M和N是可以動態變化的。它可以應用在求解二維數組最大值、最小值、平均值,二維數組轉存一維數組等多種題目上。具體二級考題如題1所示。 題1:請編寫一個函數fun,它的功能是:求出2×M整型二維數組中最大元素的值,并將此值返回調用函數。 解題思路:簡單分析題目后不難發現,這是一個需要遍歷兩行M列二維數組的題目,在定義完初始變量后,可以馬上輸入二維數組模板,再在模板中用IF判斷語句篩選出最大值,即可輕松解完此題。完整參考代碼如下。 fun (int a[][M]) { int i,j, max=a[0][0]; for(i=0;i<2;i++)