韋曉虎
【摘 要】C語言是高等院校普遍使用的高級語言程序設計課程的入門教學語言,通過該課程的學習,其對學生編程思想的形成和后續(xù)課程的學習起著重要的作用。文中從普通高校非計算機專業(yè)學生實際情況出發(fā),根據(jù)課程定位、課程體系、教學對象、教學重點、教改實踐與創(chuàng)新等幾個方面,對該課程進行教改創(chuàng)新,形成針對性的教學方法,采用的方法在教學中取得良好效果。
【關鍵詞】C語言;非計算機專業(yè);教改創(chuàng)新
0 引言
《C語言程序設計》課程是現(xiàn)在許多工科院校非計算機專業(yè)普遍開設的高級語言程序設計入門課程,都會投入大量教師進行授課。作為入門課程,基礎打下是否牢固以及所形成的編程思想對學生將來學習其它編程語言時有重大的影響,為更好的提高教學質(zhì)量,多年來大量教師在不斷的嘗試教學改革[1-2]。對于不同院校,由于學生來源情況復雜,不能采用一攬子的方法予以解決,需要從學校的具體教學實際出發(fā),力求制訂科學的教學培養(yǎng)方案。筆者地處西部地區(qū)地方院校,所招收學生大部分為本地生源,學生對信息技術知識了解的程度及深度不及發(fā)達地區(qū),本文根據(jù)作者所處地區(qū)高校生源特點,分別對課程定位、課程體系、教學對象、教學重點等方面對《C語言程序設計》課程進行了教學改革實踐與創(chuàng)新。
1 課程體系與定位
筆者所處院校是以工科為主的地方性綜合院校,即使是非計算機專業(yè),許多學生都需要學習編程知識,并且至少要掌握一門高級程序設計語言,當前除了外語學院以及設計學院等幾個院系外,都開設《C語言程序設計》課程,在大一第一學期或者第二學期開設,前導課程基本為《大學計算機文化基礎》,后續(xù)課程根據(jù)不同專業(yè)會有《數(shù)據(jù)結(jié)構》、《C#程序設計》、《Java程序設計》及《面向?qū)ο蟪绦蛟O計》等課程。如果是第一學期開設,那么會與前導課程同時開設?,F(xiàn)有學生基本都是四年制本科學生,非計算機專業(yè)開設的本課程與計算機專業(yè)開設的課程通過課時的不同以及要求深度不同進行區(qū)別。該課程是面向除了文科專業(yè)外本科生開設的一門必修課,通過課程的學習,可為后續(xù)專業(yè)課程的學習乃至今后承擔軟件開發(fā)工作,打下良好的程序設計思路與編程技能的基礎。
《C語言程序設計》主要講授面向過程程序設計知識。通過本課程的學習,要求學生掌握C語言的基本概念,語法規(guī)則,更重要的是培養(yǎng)學生面向過程程序設計的編程思想,編程技巧,學會至少一種IDE開發(fā)環(huán)境,可以熟練使用該開發(fā)環(huán)境編寫程序并進行調(diào)試;最重要的是培養(yǎng)學生從分析問題到解決問題到編程實現(xiàn)的能力,也就是要掌握用程序解決問題的編程思想,為后續(xù)課程的學習打下堅實基礎。為了降低學習的難度,學生上機時使用的IDE為微軟的Visual C++ 6.0,在控制臺模式下開發(fā),但是當前的軟件基本都是Windows程序,學生所學習的內(nèi)容與現(xiàn)在所用的東西還有一定距離,在以后還需要學習Windows程序設計,需要學習《面向?qū)ο蟪绦蛟O計》等課程,而學好C語言是學習可視化語言的基礎,可為掌握可視化的面向?qū)ο蟪绦蛟O計語言奠定良好的基礎。
2 教學對象
我校屬于地方二本院校,定位為服務地方,學校面向全國招生,但是招生的學生大部分為本省學生,外省生源只占小部分。通過對近幾年學生調(diào)查情況來看,部分學生在中學時期就接觸過編程,但是都沒有深入學習,學生對知識的掌握并不牢固,對進一步的編程方法和思想也沒有接觸過多。大部分同學沒有接觸過編程,對計算機的基本知識也沒有了解,對基本的計算機操作都不熟練。
根據(jù)學生來源構成復雜、計算機基礎知識高低不同的特點,教學中,首先教師要不斷修改和完善教學目標、教學方法、教學內(nèi)容,優(yōu)化教學環(huán)節(jié),從而提高教學效果。教師在教學中應該充分發(fā)揮引導入門的功效,兼顧各種水平的學生,同時還要加強對學生學習的指導、幫助和督促。使學生了解自身專業(yè)特點,了解高級語言學科的學習特點及對于所學專業(yè)的重要性,掌握一門高級語言,對于今后的學習有巨大的幫助,向?qū)W生講明,高級語言有很多種,但是基本構成卻是相同的,只要認真學好一門,以后學習別的高級語言時會事半功倍。不要認為是非計算機專業(yè),就沒有必要學習編程知識,要引導學生掌握科學的學習和研究方法,樹立理想,擬定未來的發(fā)展目標;其次,在教學中,應該及時為學生答疑解惑,解決學生學習上遇到的實際困難,在開始入門的時候會遇到很多問題,如果問題得到及時解決會增強學生的信心,從而激發(fā)不斷學習的興趣;最后,要適當布置難度適中的課后作業(yè),要求學生要獨立完成,要不斷地督促學生高效的完成學習任務。
3 教學重點
對于第一次接觸程序設計的學生,感覺C語言概念多、內(nèi)容多、知識點多。覺得很難學,難懂,特別是如何用編程思想來解決一個問題,也就是面對一個問題,根本不知道如何下手,需要不斷培養(yǎng)學生編程思想。為了使學生掌握C 語言的精髓部分,同時又避免學生由于需要理解記憶的內(nèi)容過多而產(chǎn)生厭學抵觸心理,本著學以致用的原則,需要對教材進行仔細分析,對教學內(nèi)容進行取舍。
在概述部分重點介紹為什么要編寫程序,介紹機器語言、低級語言及高級語言的概念,它們之間的關系;知道編輯、編譯以及鏈接的概念。C程序的基本構成,知道程序、程序文件和函數(shù)的關系,知道如何編寫最簡單的C程序;知道算法的概念,算法與程序的關系,知道算法的基本要素,以及如何評價一個算法好壞的標準,知道兩個最常用的評價算法好壞的指標——時間復雜度與空間復雜度的定義。最后,要學會如何在IDE環(huán)境上如何實現(xiàn)完整的編輯、編譯、鏈接以及調(diào)試,知道識別源文件、目標文件以及可執(zhí)行文件,最后運行程序得到正確結(jié)果。
在程序結(jié)構部分重點介紹三種基本結(jié)構,每種結(jié)構的典型應用,理解用三種基本結(jié)構的不斷迭代組合可以解決各種復雜問題,介紹結(jié)構化程序設計的概念以及模塊化設計的思想。記住標準輸入輸出函數(shù)名稱及用法,實現(xiàn)三種基本結(jié)構的關鍵字。在數(shù)組部分要重點介紹一維、二維數(shù)組的定義和使用;編譯預處理部分講明宏的定義與使用,為什么要使用宏,typedef定義。函數(shù)部分重點介紹函數(shù)的作用、函數(shù)的定義、函數(shù)的調(diào)用和返回,更需要闡明函數(shù)就是C語言中模塊化程序設計思想的體現(xiàn)。指針部分是C語言學習重點中的重點,剛接觸時比較難理解,重點介紹指針的概念、變量的指針、數(shù)組的指針、指向一維數(shù)組的指針,指針作為函數(shù)參數(shù)的使用,同時強調(diào),指針是C語言的精華部分,對指針運用的水平會決定程序的好壞。在結(jié)構與共用體部分重點介紹結(jié)構體,知道如何使用基本數(shù)據(jù)類型來實現(xiàn)構造類型,知道共用體的概念。在文件部分,知道文件指針,說明為什么要使用文件,使用文件是為了將各種程序與數(shù)據(jù)在外存上長久保存,記住并會使用幾個基本的文件操作函數(shù)。
4 教改實踐與創(chuàng)新
要想保證教學質(zhì)量,提高教學效果,教學方法和手段的改進是必不可少的。傳統(tǒng)的灌輸教學已不再適合當前學生特點。要求教師在教學中,既要注重教師在教學上的主導作用,更要發(fā)揮學生在學習上的主動性和創(chuàng)造性。教師在講授語言的基本語法規(guī)則、基本程序結(jié)構、基本編程思想的過程中,既要給學生講解程序設計的術語,又要采用生活中形象的實際例子對相對枯燥的程序設計術語進行描述,最好能夠使學生能夠通過形象的生活案例去理解相關的理論知識。同時,要不斷調(diào)動學生的積極性,引導學生在理解的基礎上牢記C語言的語言元素、語法規(guī)則、基本概念和基本理論,同時還要鼓勵學生不斷地進行思考和創(chuàng)新。教學中要及時發(fā)現(xiàn)學生中出現(xiàn)的好的學習方法、學習思想和對學科思想的理解,調(diào)動整體學生的學習熱情,這樣會得到較好的教學效果。適時將啟發(fā)式教學、討論式教學、理論與實踐相結(jié)合等方法運用于教學之中,調(diào)動學生的興趣和學習的主動性,強化學科思想的理解和知識的鞏固掌握,最終提高教學效果和教學質(zhì)量。
4.1 將高級語言與自然語言類比進行教學
通過類比說明無論是什么語言都由兩大基本部分組成:單詞(詞匯)和語法,要想很好的掌握一種語言,提醒學生必須熟記語言的兩大部分。但是C語言只有32個單詞(關鍵字)、9種語法(控制結(jié)構)需要記憶,比自然語言學習簡單的多,這樣可以減少學生的畏難心理,激發(fā)學習的興趣。對于結(jié)構程序設計的三種基本結(jié)構,可以用生活中的例子來進行類比解釋,每種結(jié)構都是對應現(xiàn)實中的一種情況。在教學中,盡量用學生熟悉的生活語言引入計算機高級語言的知識,可以幫助促進學生的理解,在教學中起到了較好的效果。
4.2 理論知識實例化
C語言中關于變量的作用域問題,學生在使用上經(jīng)常出錯,例如在函數(shù)fun1()里面定義的變量temp為什么和函數(shù)fun2()里面定義的變量temp不同。教學中將函數(shù)fun1()、函數(shù)fun2()類比為兩個不同的班級,將函數(shù)fun1()里面定義的變量temp和函數(shù)fun2()里面定義的變量temp理解為兩個不同班級中姓名相同的兩個同學。雖然兩人姓名相同,但分屬于不同的兩個班級,兩人的行為、活動范圍必然是不同的,所以是兩個作用范圍不同的變量。教學中多采用此類通俗實例化教學方法,可以起到較好的教學效果。
5 結(jié)語
本文對非計算機專業(yè)學生在C 語言課程的學習過程中出現(xiàn)的問題作了思考和分析,針對現(xiàn)狀,結(jié)合教學實際以及自身的體會,進行了初步的探索,針對教學方法提出了一些措施和建議。教學改革與創(chuàng)新的目的是不斷提高教學水平和教學質(zhì)量?!禖語言程序設計》課程對培養(yǎng)學生的邏輯思維能力、計算思維能力和以計算機分析并解決問題的能力都有著重要意義,以上教學內(nèi)容、教學手段和方法是根據(jù)多年實際教學經(jīng)驗總結(jié)得出的,教學實踐中,從授課對象的實際出發(fā),本著以學生為本、以教學為中心的原則,在實際教學過程中,取得了良好的效果。
【參考文獻】
[1]周長英,董翠英,陳穎.非計算機專業(yè)“C語言程序設計”教學方法探析[J].教育與職業(yè),2010(23):148-149.
[2]何萬國,漆新貴.大學生實踐能力的形成及其培養(yǎng)機制[J].高等教育研究, 2010(10):62-66.
[責任編輯:楊玉潔]