鄢穎
摘 要:C語言是編程語言中較為流行的一種計算機高級語言。隨著計算機的發(fā)展及普及,C語言在各行各業(yè)的應用越來越廣泛。許多學校把C語言作為編程的入門語言,C語言程序設計課程已成為計算機教育的一門必修專業(yè)基礎課。本文結合筆者多年從教該課程的經(jīng)驗,從教學手段、教學方法等方面進行探討、研究和改革,在實踐中取得了顯著的教學效果。
關鍵詞:C語言 教學方法 教學改革 上機實驗
一、背景
C語言是國內外應用廣泛的計算機語言,它不僅具備高級語言可移植性好、易用性強等優(yōu)點,又兼顧了低級語言高效、可直接對硬件操作等大部分功能,是計算機編程人員應掌握的一種程序設計工具。C語言程序設計是各高等院校、技工院校計算機及相關專業(yè)重要的專業(yè)基礎課,該課程既能體現(xiàn)學生的邏輯思維能力和推導能力,又能培養(yǎng)學生的創(chuàng)新精神。但由于C語言功能強大,使用靈活,內容抽象、枯燥,特別是對于數(shù)學和英語基礎比較差的學生來說,普遍存在著閱讀程序困難、編寫程序無從下手等問題,并產(chǎn)生不同程度的抵觸心理。因此對于擔任該課程的老師來說,如何教好這門課程,使學生逐步掌握程序設計的思路及方法,并能靈活運用高級語言進行程序設計,是這一門課程的目的和宗旨。
二、C語言程序設計課程教學現(xiàn)狀分析
C語言程序設計課程的掌握情況對后續(xù)課程有著至關重要的影響,通常將其作為學生的第一門程序設計語言課程。許多學生此前并未接觸過程序設計語言,對算法、數(shù)據(jù)結構和程序設計一無所知,一開始對C語言很好奇,但隨著教學內容的深入,大量抽象概念、術語、語法規(guī)則的記憶及枯燥無味的例題分析,使學生產(chǎn)生畏難情緒,逐漸失去學習熱情;還有一部分學生雖然課堂上聽得懂,但自己編程時卻無從下手,或者編寫的程序錯誤多,無法分析出錯原因,所以對學習失去了信心;甚至還有個別學生認為C語言已過時、實用性不強,不如面向對象的C++語言或JAVA語言,導致在學習過程中積極性不高。
目前,大多數(shù)教師的C語言課程的教學仍然停留在傳統(tǒng)的教學模式上,過度注重語法、算法等細節(jié),以教師“教”為中心,滿堂灌。學生在教師的指導下被動地接受。教師只能保證所授知識的系統(tǒng)性,卻不能充分發(fā)揮學生的學習自主性,無法培養(yǎng)學生的創(chuàng)新能力和邏輯思維能力。
三、C語言程序設計課堂教學改革探索
根據(jù)C語言自身的特性,我們從教學手段、教學方法等方面進行了一系列的探索及改革,啟發(fā)并訓練學生的編程思維,以期能進一步提高該課程的教學效果。
1.以激發(fā)學生的學習興趣為先導
興趣是最好的老師,是學生主動學習的主要動力。教師將學生引入C語言課堂時,首先要強調C語言的重要性。第一節(jié)課的教學可為學生介紹C語言在日常工作中的應用,如各種大型管理軟件(人事管理、圖書館管理等)、系統(tǒng)軟件(如Windows)都可用C語言實現(xiàn),讓學生了解該課程與社會的關系;通過實例展示一個用C語言編寫的動畫程序(如滿屏雪花飛舞),抓住學生的眼球,改變學生只有Flash等軟件才能制作動畫的觀念;選擇簡單的數(shù)學題目,在計算機上用C語言真正實現(xiàn)數(shù)學計算過程。通過演示實用性強的案例能提高學生的學習興趣,使他們體會到C語言的奇妙。隨著課程的深入,可引入趣味性強的算例,如楊輝三角、百元百雞、猴子吃桃、水仙花數(shù)等,逐漸培養(yǎng)學生的分析及推導能力,激發(fā)學習熱情。
新課內容講授完畢,要及時布置相應的課堂練習,這樣既能加深學生對該知識點的理解,又不會使學生感到課堂枯燥無味。可讓個別學生直接在講臺上的計算機中編寫、運行及調試程序,其余學生獨自書寫程序后相互進行討論、點評,以便教師能夠及時發(fā)現(xiàn)學生每節(jié)課的掌握情況,從而對癥下藥。教師不可拘泥于一種算法,若發(fā)現(xiàn)學生有獨特新穎的算法,應鼓勵學生積極展示個人的編程思路。鼓勵與肯定可使學生增強自信,也可加強學生不斷創(chuàng)新的意識。
2.開發(fā)智力,引導學生自主學習
在教學過程中,應以開發(fā)學生的能力為主,充分利用程序設計及算法自身的思維方法進行教學。教師要引導學生將知識加以引申,使學生能夠觸類旁通,識一山而知千峰。如在講解同一類問題時不要逐題講解,而應該積極拓展學生思維,在講解一兩個典型例題的基礎上,啟發(fā)學生總結歸納出求解這一類問題的基本算法。例如求1+2+3+4+……+98+99+100是循環(huán)結構必講的經(jīng)典例題,經(jīng)過算法分析,程序思路為:引入三個變量,s變量存放累加和,在未累加求和前其初值為0,i表示已累加的項數(shù),其初值為1,t表示求和多項式中的某一項,其初值也為1。當累加的項數(shù)小于等于100時,每當i自增1得到求和多項式中的某一項t后將其累加到s中。講授完該例后,可讓學生分析下面例題的解題思路:2/1,3/2,5/3,8/5,13/8,21/13,……求這個數(shù)列的前20項之和。經(jīng)過分析,學生得知兩個例題解題思路相同,只是循環(huán)結束的條件以及t的增值方法不同而已。通過以上兩個典型例題的講解,教師還可以要求學生重新設定范例中各單項式的值而演變成其他的累加問題,如求100個數(shù)的偶數(shù)和、奇數(shù)和、各數(shù)的立方和等,引導學生歸納求若干項和的這類問題的通用算法。針對以上問題在選用循環(huán)語句的過程中,教師可以點撥學生分別用WHILE循環(huán)、DO-WHILE循環(huán)及FOR循環(huán)編寫同一個題目。這樣,教師雖然只講解了一個例題,學生卻學會了同類問題的解決方法,舉一反三,從而開發(fā)了學生的智力,培養(yǎng)了學生自己學習、自己研究的習慣和能力。
3.靈活運用多種教學方法
(1)傳統(tǒng)教學手段與現(xiàn)代化教學手段相結合。傳統(tǒng)的黑板板書不利于教師書寫程序,既浪費時間又達不到預期的效果,必須將板書與多媒體技術有機結合起來。在課堂教學中,課件的使用能大大優(yōu)化教學過程,豐富課堂內容,使教學過程更形象、直觀、生動。課件的制作要符合學生的年齡及心理要求,以吸引學生的注意力;課前將概念、程序代碼制作成課件,課堂上即時進行調試和運行程序。我們要充分利用多媒體課件,但不能過度依賴課件,教師在使用課件的同時,應將部分重點、難點內容通過板書展示,板書與課件的結合有利于學生抽象思維和編程能力的提高。
(2)任務驅動教學方法。任務驅動教學方法是一種建立在建構主義學習理論基礎上的教學法,教師根據(jù)課程內容布置具體的任務活動,學生在教師的幫助下完成既定任務,以此掌握課程內容,達到教學目的。教學中應基于“以教師為主導,以學生為主體”的教學模式,通過案例和問題引入主題,重點講解程序設計的思想和方法,并穿插介紹相關的語法知識。比如講Switch分支語句時,先向學生提問:如何把百分制成績轉換成等級,即90分以上為“優(yōu)秀”、80~90分為“良好”,70~80分為“中等”,60~70分為“及格”,60分以下為“不及格”?回顧if語句,用if-else的嵌套可以實現(xiàn),但學生會發(fā)現(xiàn)程序比較復雜,且容易出錯,這時引入新的課題Switch分支語句,先將Switch語句的一般形式板書出來,然后對Switch語句的執(zhí)行過程進行課件動畫分解講解,進而分析上述例題的解題思路,給出源程序代碼,在講解代碼的過程中對Switch語句的注意事項加以強調。這種教學有助于激發(fā)學生的求知欲望,培養(yǎng)學生分析問題、解決問題的能力,縮短了學習周期。
(3)對比式教學方法。C語言的概念比較復雜,教學過程中教師通過對比的方式對相似的程序代碼或相關的概念進行分析比較,進而明確差異,而后歸納總結,將會收到事半功倍的效果。例如函數(shù)這一章涉及的概念較多,主調函數(shù)、被調函數(shù)、實際參數(shù)、形式參數(shù)、局部變量、全局變量等。這些概念容易混淆,若對比講解,學生就很容易理解了。
4.重視上機實驗教學
C語言程序設計是一門實踐性較強的課程,既要求學生掌握程序編寫的基礎知識,更強調學生能夠獨自上機調試運行程序,因此培養(yǎng)學生的實踐動手能力尤為重要。上機實操課時應不少于該課程總學時的50%,在上機實驗課中必須做到循序漸進,對所學的每一部分內容都應要求學生完成一定數(shù)量的上機實驗。不能盲目地將課本上的例題作為上機實驗,學生無法理論聯(lián)系實際。上機習題既要有基礎題目,又要有趣味性與實用性的題目。實驗時,教師對學生的問題給予提示,啟發(fā)學生自己思考并解決問題。自行編寫的程序在上機調試運行中,會有很多意想不到的錯誤,通過改正這些錯誤,可使學生逐步提高對C語言語法的理解能力。學期末應安排綜合性強、知識點涵蓋范圍廣的實驗,學生根據(jù)要求查閱相關書籍資料,完成實驗原理、實驗步驟后交由教師批閱,師生討論后學生分組完成實驗。每節(jié)實驗課教師均應做好上機成績登記,課后學生需完成實驗報告。上機實驗還應作為期末課程考試的考核內容,重點測試學生程序改錯、編寫程序、調試程序等綜合能力,上機考試的分值不應低于總分的30%。
四、小結
教學方法多種多樣,因人而異,教學過程是一個需要不斷精益求精的過程,只有因材施教,使學生建立程序設計及軟件工程的整體框架,提高學生分析問題與解決問題的能力,才能達到教學的真正目的。
參考文獻:
[1]譚浩強.C程序設計(第二版)[M].北京:清華大學出版社, 2011.
[2]樓俊君.C語言程序設計的教學研究[J].黑龍江科技信息,2008(27).
[3]徐大華.《程序設計C語言》教學思考與探討[J].信息技術,2010(12).
[4]馬新.C語言程序設計課程教學方法與手段的改革與實踐[J].科技信息,2010(33).
[5]葉健華,黎峰.“項目驅動+案例教學”模式在C語言教學中的應用[J].濟南職業(yè)學院學報,2009(3).
(作者單位:廣東省粵東高級技工學校)