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