魏書堤 趙輝煌 鄧紅衛 王櫻
摘?要:本文針對普通高校理工類C語言教學的現狀,提出了理論教學、案例分析、項目實訓三位一體教學模式新思路,加強培養學生發現問題、提出問題和解決問題的能力;把論文介紹的方法用于實踐,可培養學生的思維能力,有效地提高學生的動手能力、激發學生的創新意識。很多高校把C語言作為計算機語言的入門教學課程,而C語言程序設計課程又具有較強的理論性和實踐性,課程教學要求理論與實踐能夠很好結合,通過對該課程的學習,學生應具有較強的動手能力。而傳統的C語言程序設計教學方法一直是以介紹語法為主,配上一些作為語法示例的應用程序,缺少培養學生編程思維,忽視了知識的應用,學生即使掌握了基本的語法知識,但是自己卻寫不出程序。而傳統的填灌教學方法對剛剛進入大學課程學習的學生來說,接受起來更是比較困難,這會讓學生覺得枯燥,在多變的語法面前失去信心和興趣。如何激發學生創新意識,加強培養學生發掘問題和解決問題的能力、培養學生的思維能力和動手能力?我們就此進行了長時間的總結和探索,提出了理論教學、案例分析、項目實訓三位一體C語言教學模式,并用于實踐,取得了較好的效果。
一、理論教學
我們將C語言課程理論教學內容分成三大部分,在教學中將“數組”前的知識歸為第一部分,將“函數、指針”知識歸為第二部分,將“結構體、文件”知識歸為第三部分。
第一部分主要講解C語言的基本概念,基本的數據類型,基本運籌方法,基本語句和基本的程序結構,對于第一部分的內容中的變量要重點講解變量的存儲方式,變量的存儲空間及存儲范圍,表達式部分應重點講解運算符的優先級程序控制,結構重點放在同一結構的嵌套與不同結構的相互嵌套。第二部分主要講解指針、函數,重點應放在函數的參數、函數的調用、函數的遞歸調用、指針函數、函數指針、指向數組的指針。使學生掌握編程的模塊化思想及通過指針實現多種結構類型的引用、內存的動態分配。第三部分主要講解結構體,基本的文件操作、程序設計方法和設計技巧。第三部分重點應放在結構體和文件指針上,要詳細講解通過文件指針對文件進行訪問,使學生掌握復雜結構類型的數據組織與處理、數據與文件的關系及文件數據的處理[1]。
二、案例分析
由于課時減少,我們精簡了教學內容,精心設計教學環節和教學過程,通過實例講解、上機練習、課外作業,使學生掌握編程的最基本的結構語句,提高學生的程序閱讀能力,通過程序改錯,程序補充來訓練學生的程序理解和分析能力。
1. 案例教學
案例教學法本身就是一種綜合性的教學方法[2],教學內容采用是以算法分析、程序設計為主, 語言知識為輔的組織方式;教學方法是引入案例的主題式教學;教學內容以算法設計作為貫穿各主題的主線;案例分析是教學的核心。為了培養學生的綜合程序設計能力,我們注重算法分析,突出算法設計,強化學生的計算思維,通過案例分析來培養學生的思維能力。另外,案例分析可以更好地適應不同層次的學生,在傳統的C語言程序設計教學中,在講過語法規則之后,給出一些只含有課本上已學過的簡單語句的簡單實例,僅僅是說明其語法及功能,程序本身沒有多大的實用性及吸引性,而在案例教學中,為了程序實現更有趣,教師往往會聯系一些實際問題,學習能力較強的并且對此感興趣的同學可以學到更多的知識。
2. 案例設計
在進行案例教學中,我們結合教材,精心設計教學案例,重點培養學生的計算機思維和創新能力。在課堂教學過程中,要求老師要在激發學生創新意識的基礎上,加強培養學生發掘問題和解決問題的能力。在教學中利用C語言知識點緊密聯系的特點,設計一系列具有啟發性的教學案例。
我們設計的案例滿足了如下要求:一是難度適當;二是在教和學方面富有探索性;三是能培養學生的計算思維和創新能力。在案例分析過程中引導學生自己發現問題,自己解決問題,通過對實際問題的解決來啟發學生的思維,通過問題——算法——程序這一系列的過渡來解決實際問題,從而達到對理論知識的掌握和運用,使學生逐步養成獨立思維和創造性地運用知識的習慣。在C語言教學過程中,始終將算法分析和設計作為教學重點,在教學內容組織上以算法設計為主,語言知識為輔。從分析問題入手,引導學生找出解決問題的方法,再給出設計的算法,同時還應將算法用流程圖表示出來,使學生能夠清晰地了解程序的功能和結構,這樣就容易將其換成程序代碼。案例分析能夠使學生主動參與學習活動,教師和學生之間以及學生和學生之間能夠相互交流和溝通,形成良性互動。作為案例討論的組織者和引導者,對同一個案例,老師允許不同學生提出不同分析結果和實現方法,讓學生能夠自主思維。
3. 教學案例實例
百元紙幣兌換:一張一百元的紙幣換成等值的10元、5元、2元和1元一張的小鈔票。每次換成50張每種至少一張,共有多少種換法?
案例分析:首先每種一張,余下100-18=82元。已經換了4張,還要46張,就是46張10元或者5元或者2元或者1元組成82元。依次設10元、5元、2元、1元的張數為x、y、z、m則:
10x+5y+2z+m=82;
x+y+z+m=46;
以上x,y,z,m的取值要求是不小于0。
因為有四種紙幣,要對每一種紙幣數進行遍歷,就要用四重循環嵌套,算法如下:
intx,y,z,m,k=0;//k為兌換方法數量
for(x=0;x<9;x++)
for(y=0;y<17;y++)
for(z=0;x<42;z++)
for(m=0;m<83;m++)
if(10x+5y+2z+m==82&&x+y+z+
m==46)then
k=k+1
三、 項目實訓
在C語言理論課結束后,我們安排三周時間讓學生集中進行課程設計,課程設計采用項目實訓的方式,項目的工作量要適度,要有一定的難度,以該項目設計和改進中的問題為動力,盡可能涉及更多的C語言知識點,全面貫穿整個課程內容,以達到訓練學生綜合運用所學知識解決問題的能力,提高學生的動手能力。
1. 項目標準
教師要明確項目拓展所涉及的C語言知識點和項目的基本目標。項目應能貫穿整個課程的各個環節:格式化的輸入輸出;各種程序控制結構;各種變量、表達式的使用;函數的調用,尤其是遞歸調用;指針使用;指針函數與函數指針;文件的建立、打開、讀、寫、保存等操作,要求實現項目要求的功能。項目難度適中,使學生不必進行復雜的項目背景分析就可以進行不同程度的功能擴展。同時項目的實施能夠突出以算法為中心來進行程序設計。
2.項目分組與評分
項目實訓要按照軟件工程的方法進行,讓學生具備初步的軟件設計思想。我們要求教師首先制定項目任務書,明確實訓的目的及內容,讓學生懂得為什么要進行項目制作,目的是什么?目標是什么?教師可擬定多個項目,并將學生分成對應的項目小組。分組采用由老師指定與自由組合等形式,指定主要是由指導教師來分配項目小組,主要是結合學生在學習語言過程中,對學習內容掌握的情況以及上機實踐的情況來確定,這些項目組的組長一般要有較強的組織能力及綜合設計能力;自由組合一般由學生自行結合,指導老師把關。一個組一般3人為宜,項目選題由指導教師根據教學內容和教學案例,擬定學生比較熟悉的一些項目,一般指導教師擬定的選題比學生的組數多,可按照1比1.2比例進行,讓學生自由選擇,學生也可以自己擬定題目,但必須由指導教師審核,為了保證每個組的項目實訓效果,要求每個組的選題不能相同。考核方式可以采用指導教師打分與學生互評相結合,指導教師根據每個項目小組的項目結果,給各個小組進行評分,然后每個小組答辯,答辯要求學生先制作好PPT進行匯報,匯報的內容要簡明表述項目實施所用的知識點,項目實施中所遇到的困難和解決方法,最后演示所完成的程序。報告完成以后,其他小組提問并進行評議,指導老師完成對項目點評。
3.項目實例
項目名稱:用C語言制作班級通訊錄。
要求實現如下功能:記錄插入、記錄查詢、記錄刪除、記錄按學號進行排序、記錄打印。
項目涵蓋的內容:文件操作、函數或過程調用、搜索算法設計、排序算法設計、數組操作、結構類型使用、自定義數據類型、打印機操作等內容。
時間要求:三個星期內完成。
上交資料:項目設計書(含設計心得)、源代碼、匯報PPT。
四、結束語
雖然目前C語言教學計劃上減少了課時量,但是我們通過對教材進行分階段劃分,使學生在階段性的目標下學習,同時在備課環節中組織教師精心地設計教學案例;教師在理論課上,通過教學案例,對相關理論進行仔細講解與分析。在理論結束后,安排三周時間集中進行項目實訓,通過“理論教學、案例分析、項目實訓三位一體C語言教學模式”的周密實施,學生的思維能力,動手能力得到很大的提高,學生的程序設計能力在程序設計大賽中得到了很好的體現。
參考文獻:
[1]譚浩強.C程序設計[M].北京:清華大學出版社,2001.
[2]胡?楓.C語言程序設計教學方法探析[J].計算機光盤軟件與應用,2012(12):278—279.
[3]黃錦祝.高職語言項目實訓的設計與實施[J].電腦學習,2010 (5):
80—84.
[4]邱建林,王?波,等.計算機程序設計語言教學的探索[J].牡丹江大學學報,2001(4).
[5]耿國華.程序設計能力培養模式的探索與實踐[J].中國大學教學,2009 (3):30—32.
(作者單位:衡陽師范學院)
endprint