摘要:該文結(jié)合教學(xué)實(shí)踐,分析了目前應(yīng)用型本科院校C語言程序設(shè)計(jì)教與學(xué)中存在的問題,通過從改革教學(xué)內(nèi)容、教學(xué)方法、優(yōu)化教學(xué)手段和考核手段等方面對C語言課程進(jìn)行了教學(xué)改革。在教改實(shí)踐中實(shí)現(xiàn)了引導(dǎo)學(xué)生正確認(rèn)識課程、培養(yǎng)學(xué)生的學(xué)習(xí)興趣、提高學(xué)生分析問題與解決問題能力以及增強(qiáng)學(xué)生動手能力的教學(xué)目標(biāo)。
關(guān)鍵詞:C語言,程序設(shè)計(jì),教學(xué)改革
中圖分類號:G424文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)32-1166-03
Exploration on Transform in C Language Teaching
XIANG Xiang-qin1,2
(1.Laboratory of Network and Intelligent Information Management, Hefei University, 230601,China;2.Dept. of Computer Science Engineering, Anhui University, 230039, China)
Abstract: Unifing teaching practice, the article has analyzed the question, it’s hard to teach and hard to learn, which exists in teaching and learning of C language programming in applied universities. In order to solve the problem, through reforming teaching content and teaching methods and means, teaching reform in C language have been explored. It is very useful to lead the students to understand course correctly, cultivate the interest of students, increase the ability of analysing and resolving questions and increase the students’ ability of using hands. And good teaching results have been achieved.
Key words: C language; programming; teaching reform
1 引言
程序設(shè)計(jì)是人們開發(fā)和利用計(jì)算機(jī)各種功能最直接的工具,對于理工科的高校學(xué)生而言,掌握一門高級語言是非常必要的。C語言是在國內(nèi)外得到迅速推廣應(yīng)用的一種計(jì)算機(jī)程序設(shè)計(jì)語言,它既具有低級語言的特點(diǎn),又具有高級語言的優(yōu)點(diǎn)。并且《C程序設(shè)計(jì)》也是《C++語言程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)》等計(jì)算機(jī)專業(yè)課程的前導(dǎo)課程。現(xiàn)在許多高等院校將C語言作為理工科學(xué)生的第一門程序設(shè)計(jì)語言課程開設(shè)。
2 教學(xué)改革的必要性
傳統(tǒng)教學(xué)法,過于注重C語言的詞法、語法等理論知識的傳授,而對如何分析問題、解決問題講得不夠,如何設(shè)計(jì)算法介紹不多;對學(xué)生自學(xué)能力、編程的能力和調(diào)試程序的能力培養(yǎng)不夠,不夠重視學(xué)生實(shí)際動手能力的培養(yǎng),沒有真正挖掘?qū)W生應(yīng)有的潛力。學(xué)生經(jīng)過一學(xué)期學(xué)習(xí)的效果往往是,了解了C語言的簡單構(gòu)成,掌握了一些程序設(shè)計(jì)的語法基礎(chǔ),能讀懂別人寫好的程序,或者會背程序,自己卻不能針對一個具體的問題,設(shè)計(jì)出簡單、合理的算法,不能獨(dú)立編寫一個完整的小程序。作為程序設(shè)計(jì)語言,教學(xué)的最終目的,就是讓學(xué)生能自己分析、設(shè)計(jì)、編程和最終調(diào)試通過。所以說,C語言的教學(xué)改革需要已經(jīng)迫在眉睫。
3 教改的主要內(nèi)容
C語言牽涉到的概念比較繁多,規(guī)則復(fù)雜,記憶較難,編寫程序時容易出錯,再加上C語言教學(xué)一般以TurboC為主,TurboC的調(diào)試環(huán)境不是可視化的過程,這對于先接觸Windows操作環(huán)境的學(xué)生來說,在客觀上造成了掌握C語言程序設(shè)計(jì)知識的難度。而且,C語言一般是在高校低年級開設(shè),學(xué)生剛?cè)雽W(xué),部分學(xué)生數(shù)學(xué)基礎(chǔ)差,沒有經(jīng)歷過程序設(shè)計(jì)能力的訓(xùn)練,這在某種程度上加大了講授和學(xué)習(xí)C語言程序設(shè)計(jì)的難度。如何提高此課程的教學(xué)效果呢?筆者在C語言的教學(xué)活動中進(jìn)行了一些改革與探索,取得了較好的效果。現(xiàn)將本人的教學(xué)心得加以總結(jié),拋磚引玉。
3.1 引導(dǎo)學(xué)生正確認(rèn)識本課程
C語言對大多數(shù)高校學(xué)生來說,在入校前或入校后,都曾聽說過,有個概念上的了解。也就是因此,學(xué)生對C語言這門課的理解存在不足,主要表現(xiàn)在:一是C語言已經(jīng)過時;二是今后不從事軟件開發(fā)工作,學(xué)習(xí)沒用;三是C語言太簡單,可以輕松應(yīng)付。
針對上述這些錯誤的看法,筆者在教學(xué)過程中,有意識地引導(dǎo)學(xué)生正確認(rèn)識C語言。第一、介紹C語言的重要性:它是計(jì)算機(jī)專業(yè)基礎(chǔ)課,說明C語言的學(xué)習(xí)對本專業(yè)后繼課程學(xué)習(xí)的重要影響;第二、向?qū)W生解釋高校開設(shè)的課程并不過時,所開設(shè)的大部分課程是基礎(chǔ)理論課,就說程序設(shè)計(jì)語言吧,從面向過程到面向?qū)ο蟮龋羰情_設(shè)當(dāng)前最流行的程序設(shè)計(jì)語言,這樣等學(xué)生四年畢業(yè)時,當(dāng)年最流行的語言就真的“過時”了,事實(shí)上,只要我們掌握程序設(shè)計(jì)的本質(zhì)及核心,重點(diǎn)掌握分析和解決問題的方法,學(xué)習(xí)任意一種程序設(shè)計(jì)語言都可以,等真正需要運(yùn)用時,可以說是一通百通;第三、不讓學(xué)生死記硬背一些語法,背程序;經(jīng)驗(yàn)豐富的軟件設(shè)計(jì)者都知道程序設(shè)計(jì)的關(guān)鍵在于找到解決問題的步驟,即算法。
筆者對C語言教學(xué)進(jìn)行改革,把授課重點(diǎn)放在講授程序設(shè)計(jì)思想、方法和算法上,整個教學(xué)過程注重學(xué)生程序設(shè)計(jì)能力的培養(yǎng)和訓(xùn)練。從具體問題入手,努力把枯燥無味的“語言”講得生動、活潑。理論與實(shí)踐相結(jié)合,運(yùn)用一些數(shù)學(xué)中學(xué)生很熟悉的實(shí)例,讓學(xué)生能夠認(rèn)識到C程序設(shè)計(jì)在解決實(shí)際問題中所發(fā)揮的作用,從而讓學(xué)生認(rèn)識到,學(xué)習(xí)C語言可以解決多方面問題,也讓學(xué)生意識到,要想學(xué)好C語言,必須具備多方面的知識,不是一朝一夕的事。
3.2 教學(xué)內(nèi)容的確定
C語言知識點(diǎn)繁多,教師一般受傳統(tǒng)應(yīng)試教育的影響,將授課重點(diǎn)放在C語言的基本語法的講授上,將教材中的所有知識點(diǎn),都作為授課內(nèi)容。這樣,讓學(xué)生覺得知識性太強(qiáng),內(nèi)容太多,聽得枯燥無味,抑制了學(xué)生的能動性。筆者在教學(xué)改革中,首先從教學(xué)內(nèi)容確定上下功夫,C語言作為第一門程序設(shè)計(jì)語言開設(shè),一學(xué)期下來,所期望的最終目標(biāo),是能自己著手編寫課本中的一些簡單的小程序。因此,在授課中,講解應(yīng)放在的重要知識點(diǎn),并讓學(xué)生能舉一反三,讓學(xué)生在實(shí)踐中自學(xué),這樣,將一部分知識點(diǎn)要求學(xué)生自學(xué),充分發(fā)揮了學(xué)生的能動性。
3.2.1 知識點(diǎn)的確定
現(xiàn)在有關(guān)C語言的教學(xué)材料很多,合理的選用教材,很是關(guān)鍵。針對多本教材,筆者根據(jù)自己的教學(xué)工作,從中確定C語言的教學(xué)知識點(diǎn),自編教材。為了充分發(fā)揮學(xué)生的學(xué)習(xí)能動性,筆者將有關(guān)C的知識點(diǎn)分為講授類與自學(xué)類。
講授類的知識點(diǎn)是重點(diǎn)和難點(diǎn),其中內(nèi)容包括:合法標(biāo)識符、基本數(shù)據(jù)類型中的常量(十進(jìn)制整型常量、符點(diǎn)型小數(shù)、字符常量與字符串常量)與變量(int、float、double、char)、常用的運(yùn)算符、選擇結(jié)構(gòu)(單分支、雙分支和多分支)、循環(huán)結(jié)構(gòu)、數(shù)組(一維、二維)、函數(shù)、結(jié)構(gòu)體、鏈表的創(chuàng)建與輸出、指針等。
自學(xué)類的知識點(diǎn),主要是在我們本學(xué)期學(xué)習(xí)基礎(chǔ)知識或編寫簡單小程序時,用得較少的、很容易或較難的知識(后繼課程有所加強(qiáng)的)。其中包括:關(guān)鍵字與保留字、常量的其它形式、變量的其它類型(short、long、unsigned、longdouble)、位運(yùn)算符、if語句的嵌套、二維數(shù)組的復(fù)雜應(yīng)用、共用體與枚舉類型、鏈表的插入與刪除、磁盤文件的操作等等。
例如:C語言的三種基本數(shù)據(jù)類型中的整型數(shù)據(jù)。在很多教材中,介紹的知識點(diǎn)很多,在授課時,筆者僅講解整型常量的十進(jìn)制表示形式。如:12,-345,0。對于整型變量,只講解有符號基本整型(int)。如:inta,b;。這樣,對于初學(xué)者來說,一來輕松上手,二來能處理要掌握的小程序,至于更多的有關(guān)整型數(shù)據(jù)的知識,布置學(xué)生課后自學(xué),為了檢驗(yàn)自學(xué)效果,筆者運(yùn)用小練習(xí),讓學(xué)生從中發(fā)現(xiàn)問題,并通過上機(jī)操作,進(jìn)行測試。
3.2.2 教學(xué)大綱的制定
為了做好C語言教學(xué)中的每一個環(huán)節(jié),結(jié)合教改要求,筆者認(rèn)真編寫課程教學(xué)大綱,其中包括理論教學(xué)大綱、實(shí)驗(yàn)教學(xué)大綱和課程設(shè)計(jì)教學(xué)大綱。
在大綱制定過程中,根據(jù)知識點(diǎn)的確定,首先修改了C語言教學(xué)的各類課時,將總80學(xué)時,由原來的理論60學(xué)時、實(shí)驗(yàn)20學(xué)時改為理論40學(xué)時、實(shí)驗(yàn)40學(xué)時,并另加入兩周的課程設(shè)計(jì)。對于學(xué)時的重新劃分,是要重點(diǎn)培養(yǎng)學(xué)生的動手和實(shí)踐能力。本課程教學(xué)的主要目的,就是要求學(xué)生一學(xué)期學(xué)習(xí)結(jié)束,能真正做到自己著手編寫程序并能調(diào)試通過。
課程教學(xué)大綱的制定,緊緊圍繞教學(xué)重點(diǎn),以培養(yǎng)學(xué)生的動手能力為導(dǎo)向。筆者根據(jù)已確定的理論課教學(xué)點(diǎn)及針對學(xué)生自學(xué)知識的考查,認(rèn)真編寫大綱中的每一環(huán)節(jié),尤其是實(shí)驗(yàn)教學(xué)大綱,循序漸進(jìn),給出10個實(shí)驗(yàn)實(shí)驗(yàn)要求,并要求學(xué)生獨(dú)立完成。
3.3 教學(xué)方法的改革
在教學(xué)過程中,課堂教學(xué)尤其重要,課堂教學(xué)忌用傳統(tǒng)的\"填鴨式\",也不能是照本宣科式;我們應(yīng)該采用啟發(fā)式、引導(dǎo)式和互動式等教學(xué)方法,在C語言程序設(shè)計(jì)課程的教學(xué)中引入了過程啟發(fā)式教學(xué)法,其目的是使學(xué)生學(xué)會學(xué)習(xí)、學(xué)會思考,學(xué)會自我啟發(fā)。
3.3.1 課堂理論教學(xué)
在有限的課程教學(xué)時間內(nèi),按照筆者所確定的知識點(diǎn),采用啟發(fā)式、引導(dǎo)式和互動式等教學(xué)方法,避開理論知識的一味傳授,而是先通過實(shí)例分析,在解決實(shí)際問題過程中,發(fā)現(xiàn)難題時,再介紹處理實(shí)際問題的方法。
例如:基本數(shù)據(jù)類型的介紹,以前一開始就給學(xué)生依次介紹,C語言中提供的三種基本數(shù)據(jù)類型:整型、浮點(diǎn)型和字符型。在介紹整型時,分別介紹整型常量和整型變量,整型常量中有十進(jìn)制、八進(jìn)制和十六進(jìn)制;整型變量中有short、int、long、signed、unsigned等組合的六種類型。在介紹浮點(diǎn)型時,分別介紹浮點(diǎn)型常量和浮點(diǎn)型變量,浮點(diǎn)型常量中有十進(jìn)制小數(shù)表示形式、十進(jìn)制指數(shù)表示形式;浮點(diǎn)型變量中有float、double、longdouble三種類型等等。這樣,從概念上來說,學(xué)生掌握起來就是很困難,容易混淆。
筆者在教學(xué)中不是只為講數(shù)據(jù)類型而介紹三種基本數(shù)據(jù)類型,而是先引入一個實(shí)例。如:要求三位同學(xué)C語言考試成績的總分。首先分析算法,程序設(shè)計(jì)的思想和方法;其次在不清楚三位同學(xué)的具體分?jǐn)?shù)之前,我們只能定義三個變量s1,s2,s3來存儲三個成績,為了清楚表示總分,故又要定義一個來存儲總分變量sum;再次,引入變量定義的方法,從而引入變量的類型說明。
這樣,讓學(xué)生在實(shí)踐運(yùn)用過程中,來掌握知識點(diǎn),學(xué)生對類型的定義的作用及方法有了全新的認(rèn)識與掌握,教學(xué)效果良好。
筆者在課堂理論教學(xué)中,將課程內(nèi)容分為若干個主題,如:基本數(shù)據(jù)類型、自定義數(shù)據(jù)類型、程序設(shè)計(jì)結(jié)構(gòu)、函數(shù)和磁盤文件,以程序設(shè)計(jì)做為貫穿各主題的主線。每個主題的教學(xué)過程由“要點(diǎn)講解”、“練習(xí)/上機(jī)實(shí)踐”和“疑難解答”三個階段組成。
上課時提出問題,以學(xué)生獨(dú)立完成為主,教師只提供必要的輔導(dǎo)和重點(diǎn)知識的介紹,培養(yǎng)學(xué)生探索問題和解決問題的能力,更有利于創(chuàng)新能力的培養(yǎng)。
3.3.2 實(shí)驗(yàn)教學(xué)
為了培養(yǎng)學(xué)生的學(xué)習(xí)興趣,在實(shí)驗(yàn)內(nèi)容的安排上,筆者堅(jiān)持由易到難,并且難易度由學(xué)生根據(jù)自己個人的實(shí)際情況,并結(jié)合授課內(nèi)容,自行選擇。學(xué)期開始,只要求學(xué)生們學(xué)習(xí)和演練教材上的知識點(diǎn),通過編輯并調(diào)試輸出正確的結(jié)果,并運(yùn)用它們設(shè)計(jì)一些數(shù)學(xué)中的簡單問題。
經(jīng)過兩三次實(shí)驗(yàn),以后的實(shí)驗(yàn)課,一般分前、中、后三個階段的要求。每次實(shí)驗(yàn)課之前,要求學(xué)生認(rèn)真準(zhǔn)備實(shí)驗(yàn)課的內(nèi)容,重點(diǎn)是要標(biāo)明要解決的疑難問題,所有內(nèi)容應(yīng)在稿紙上寫清楚。實(shí)驗(yàn)過程中,應(yīng)快速進(jìn)行編輯,并在調(diào)試中發(fā)現(xiàn)問題,同時解決問題,從而不斷提高自己。實(shí)驗(yàn)課結(jié)束之后,學(xué)生應(yīng)認(rèn)真編寫實(shí)驗(yàn)報(bào)告,記錄實(shí)驗(yàn)過程中的詳細(xì)信息,并說明學(xué)生可以在實(shí)驗(yàn)備注欄,標(biāo)出對本課程的教學(xué)看法及對教師的建議等等。
課堂實(shí)驗(yàn)教學(xué)的最終目標(biāo),一學(xué)期下來,每位學(xué)生上機(jī)編程總數(shù)應(yīng)達(dá)到10000條語句。在實(shí)驗(yàn)考核階段,教師是采用不定期不定時的進(jìn)行抽查,同時給出難度相近的不同題目,一次性對8到10位同學(xué)進(jìn)行現(xiàn)場測試,現(xiàn)場打分,避免以往的“copy”現(xiàn)象。
3.4 形式多樣的考核方式
對于學(xué)生來說,學(xué)習(xí)成績是“命根”,對學(xué)期結(jié)束的考核方式,直接影響到學(xué)生的平時學(xué)習(xí)。而舊的考核方式,只是一試(期末考試)定結(jié)果,并且是筆試。這樣,直接影響學(xué)生重視基礎(chǔ)理論知識的背誦,而與我們程序設(shè)計(jì)語言教學(xué)目的有所偏差。
筆者對學(xué)生的考核,由一試定結(jié)果改為重在過程的考核,結(jié)合學(xué)院“N+2”的考核方式,重點(diǎn)放在“N”上,其中包括實(shí)驗(yàn)過程、課堂表現(xiàn)、實(shí)驗(yàn)報(bào)告等多方面的考核,并且對于程序設(shè)計(jì)語言課程,將實(shí)驗(yàn)部分的權(quán)值設(shè)置較高。
形式多樣的考核方式,教師就可以對學(xué)生有個全面的了解,讓學(xué)生能根據(jù)自己特點(diǎn),充分體現(xiàn)出各自的長處,同時,也能讓學(xué)生的潛力得以充分的發(fā)揮。
學(xué)生考核,重點(diǎn)放在過程,尤其是實(shí)驗(yàn)教學(xué)考核這一環(huán)節(jié),每次實(shí)驗(yàn)課,在完成本次實(shí)驗(yàn)任務(wù)后,對學(xué)生進(jìn)行隨機(jī)抽查。讓學(xué)生在有限的時間內(nèi),完成一個程序的編寫與調(diào)試。一學(xué)期下來,學(xué)生的動手能力得到大幅度的提高。大部分學(xué)生,都能獨(dú)立完成課后練習(xí),并能進(jìn)行一定程度的創(chuàng)新,設(shè)計(jì)出自己的風(fēng)格。
在教改中,我們正在考慮對于語言課,期末的筆試是否可以取消,而是以上機(jī)考試來替代,這樣更能考查學(xué)生的動手能力和在調(diào)試過程中處理問題的能力。
4 結(jié)束語
針對當(dāng)前應(yīng)用型本科院校C語言教學(xué)中存在的問題,本文談到教學(xué)內(nèi)容、教學(xué)方法和考核方法上進(jìn)行了教學(xué)改革。就本文提出的“實(shí)驗(yàn)教學(xué)”的新教學(xué)思路和與之相應(yīng)的學(xué)生成績評價方法,實(shí)踐表明,取得了良好的教學(xué)效果。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.
[2] 徐金梧.TURBOC實(shí)用大全[M].機(jī)械工業(yè)出版社,2000.
[3] 陳奮.提高C語言教學(xué)質(zhì)量初探[J].廈門教學(xué)學(xué)院學(xué)報(bào),2005,8(2):71-72.
[4] 韋純福,耿三靖.C程序設(shè)計(jì)課程教學(xué)效果探索[J].期福建電腦,2007(3):213-214.
[5] 劉琪.高職C語言課程的教學(xué)改革與實(shí)踐[J].遼寧高職學(xué)報(bào),2007,(2):55-56.
[6] 畢萬新,景福文.C語言程序設(shè)計(jì)[M].4版.大連:大連理工大學(xué)出版社,2007.