[摘 要]C語言既具有高級語言的優點,又具有低級語言的許多特點。在c語言的教學中,主要存在著沒有充分調動學生學習的積極性、課堂教學中語言本身特色不突出、對實踐教學環節重視不夠等問題。針對這些問題,要充分利用c語言教學中的理論教學、實驗教學這兩個環節,增加課堂教學的信息量,杜絕滿堂灌的單項式教學法,給學生提供一個充分進行創造思維的廣闊空間。
[關鍵詞]C語言教學 課堂教學 實踐教學
[中圖分類號]G64 [文獻標識碼]A [文章編號]1009-5489(2009)12-0014-02
C語言在國際上流行廣泛、有廣泛發展前途,適合作為系統描述的語言。由于它是一種理想的結構化語言,其語言結構清晰,便于學習,編譯、運行效率高,數據類型豐富,靈活性強,有助于初學者學習模塊設計思想和認識數據結構,對培養學生的抽象思維能力有很大幫助,因而成為計算機高級語言教學的首選語言。
作為計算機及其他應用專業的必修計算機語言課,C語言是大學生學習程序設計技術的入門課程。該課程是高校計算機專業新生接觸的第一門重要的專業基礎課,其學習效果直接影響學生其他專業課程的學習。因此,對初學者來說有一定的難度,教學中也存在一些問題。這就要求老師在教學中,注重選擇教學內容和教學方法的研究。
一、存在的問題
多年的教學實踐發現目前C語言教學中存在主要有以下幾個方面的問題。
1.沒有充分調動學生學習的積極性
選擇計算機專業的學生,一方面通過學習和游戲多少都接觸過計算機,對計算機有濃厚的興趣,另一方面認為計算機專業畢業就業門路寬,待遇相對較高,前景好。但是進入計算機專業學習后發現,計算機專業知識概念性強、理論內容抽象,具有嚴密的邏輯性,學習難度比較大。而目前的課堂教學以教師講授為主,缺乏對學生心理的了解,不能很好地找到學生學習的困難與問題所在,啟發式教學沒有得到充分運用,沒有充分發揮學生的主動性,降低了學習興趣。
2.課堂教學C語言特色不突出
作為一門高級計算機語言,C語言和其他計算機語言有著很多相似甚至相同的地方,這些知識對于那些掌握計算機基礎知識和其他語言的人來說不必再次重復。而現在的教學中存在著重復性教學的現象,而對于C語言本身的特有的概念尤其指針、鏈表的應用卻強調不夠。因此既浪費了課堂寶貴的時間,又分散了學生的注意力,導致對新知識理解不深。
3.對于實踐教學環節重視不夠
目前的實驗課教學存在上機目的不明確,內容不完整,要求不清楚等問題,考核中又缺乏上機的比例分值,這樣使得C語言由一門實踐性很強的計算機語言課程變成了單純為了考試而設的課程,甚至有的學生連最基本的實踐操作也不會。
二、課程教學改革的原則和方法
針對以上問題,我們在教學改革過程中大膽地轉變了過去的指導思想和教學方法,堅持以提高能力、增強素質為核心的指導思想,側重在理論教學、實驗教學兩個環節增加課堂教學的信息量,杜絕滿堂灌的單項式教學法,制定出以下的原則和方法激發學生的學習興趣和學習熱情,努力給學生提供一個充分進行創造思維的廣闊空間,并且取得較好的成效。
1.課堂教學作為傳授知識和培養學生能力的主渠道
C語言程序設計課程理論教學內容分成兩部分:第一部分主要講授C語言的核心部分,即基本概念、基本數據類型、基本運算方法、基本語句和基本程序控制結構;第二部分講授函數、結構數據類型、程序設計方法和設計技巧。要針對這兩部分內容特點,采用不同的方法組織教學。
(1)注重基礎訓練
對于第一部分內容,不同階段進行不同的能力訓練。講授時把握少而精的原則,講解思路,精選例題,使學生能夠做到舉一反三。要求學生掌握c語言的基礎知識,通過針對性的練習建立編程思想,培養程序閱讀能力,為以后編寫程序打下基礎。由于涉及的概念多、規則廣、使用靈活,初學者難以掌握、易出錯,因此宜從最簡潔的例子入手進行概念解釋與規則闡述。對最基本、最常用的內容應加強編程基礎語言符號的強化,反復訓練。例如:數據輸入scanf/輸出printf格式的使用以%d與%f最為常用。在規定輸入/輸出數據寬度是使用如%4d或%7.2f,%7.2f不能用于scanf格式。在字符輸入e=getchar()與輸出putchar(e)中,c=getchar()通常用于等待鍵盤按任意鍵。同樣,對程序設計控制結構要求學生熟練掌握結構的表達,培養學生良好的“結構描述,語言表達”的編程習慣。例如循環控制的兩種結構三種表達:while{};do{}while;for{}語句,必須嚴格按照兩種結構進行理解三種表達語句中各表達式的含義。對先判斷后執行使用while{}格式,而先執行后判斷使用do{}while格式,以上兩種格式通常在無法確定循環控制次數情況下使用。在已知循環控制次數或控制步長情況下通常使用for{}語句。
c語言和數學都是由抽象數據和建立在其上的各種運算構成的封閉體系,在概念方面,處理的問題類型、解決問題時的思維和運用的方法、求解問題的過程等方面均有極強的可比性。因此教學中充分利用這種可比性使學生對計算機產生深刻清晰地認識。
如學習算法時進行與數學的比較使學生深刻認識到:計算機語言只是一種工具,用來表示處理問題的方法和步驟,只學會語言而沒有解題思路(算法),仍不能解決問題。算法才是程序設計的靈魂,而語言只是形式,有了正確的算法,可以用任何一種語言編寫程序,使計算機進行工作并得到正確的結果。在進行求同比較時,強調數學解題和計算機算法各自的特點。數學追求簡潔、巧妙的解法,計算機卻偏好“呆笨”的窮舉法和累加法。因為循環過程很容易用循環語句來表示,所以要學會把窮舉過程和累加過程轉化為循環過程的技巧。用數值計算問題使學生對算法有了認識,然后再講授非數值計算問題的算法就容易了許多。此外,還有諸如學習數據類型和運算符時與數學的比較,以及在循環結構的教學中運用數學歸納法和函數概念等等。
(2)注意運用形象思維
第二部分相對于第一部分來講綜合性較強、難度較大。講授時要注意運用形象思維,由淺人深,循序漸進。增加綜合性練習,培養學生獨立分析問題、解決問題的能力和創新能力。把“函數、指針”內容作為學習的重點和難點,既要求學生刻苦認真,又要防止學生產生畏懼心理。要讓學生了解只有真正掌握了“函數”,才能真正進行大型(綜合)的程序設計,只有真正掌握指針四方面的內容(指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內存區、指針本身所占據的內存區),才能說明學會了c語言指針。教學中配合嚴格的概念盡量用一些通俗的比喻來說明一些抽象的概念,例如,在c語言中關于指針的學習,很多學生感到頭疼,無從下手。那么,在講指針時,首先應讓學生了解地址和指針的概念。對于“地址”,它就相當于房間的門牌號,每個房間都有自己的號碼,在每個房間都住著人。這就像內存中的數據,它們都存放在內存單元中,內存單元就相當于房間,每個地址就相當于門牌號,里面所存放的數據就像是住的人。實際上在c語言中,就將地址形象化地稱為“指針”,意思是通過它能找到以它為地址的內存單元。就像是門牌號,每個門牌號“指向”某個房間,只有找到了門牌號,就找到了該房間。通過這些形象通俗的比喻,學生理解起來就容易了許多。
2.堅持課堂教學與實踐教學并重
上機實驗是學生掌握c語言語法、語義和語用、程序結構的重要途徑,是學生加深對基礎知識和算法的理解,提高程序設計能力的重要一環,要和理論教學同步進行。教師可利用多媒體設備的優勢在課堂上講解c語言編譯環境的使用規則、程序編譯中可能出現的問題及解決方法,使學生能夠正確使用c語言的編譯環境中的各種調試工具。同時示范程序的輸入格式,培養學生良好的程序設計風格,用示范操作的方式調試程序,培養他們程序設計能力和程序調試能力。上機實驗中,按入門階段、基本編程方法訓練階段、編程能力提高階段和綜合編程能力提高階段等五個不同階段,根據學生對計算機語言的認識和掌握程度制訂不同的實驗方案和標準要求學生,并提供相應的指導,逐步提高學生運用計算機語言編程的能力。在機器允許的條件下盡可能增加上機時間,上機時數越多,學生對所學知識的掌握就越牢固,設計和調試程序的能力就越強。鼓勵學生設計應用程序,從而提高學生學習計算機程序設計的興趣,做到學以致用。改革語言課學習成績的計分方法,增加實際操作能力和綜合運用所學語言能力的考查比例(占期末考試成績的30%)。為適應不同層次學生的學習需要,我們在編寫上機習題的過程中,既提出c語言上機實踐的基本要求,又為學習好的學生編寫較高要求的題目,增強他們的學習興趣。
3.培養學生閱讀理解能力
閱讀理解程序一般可以達到以下兩個目的:一是通過訓練理解語法規則,達到鞏固課堂教學的目的;二是對精心設計的范文程序的閱讀,達到學習良好程序規范的目的,養成良好程序設計的風格。教學中強調多參閱一些c語言程序例題,特別要仔細閱讀一些優秀經典的源程序,并模仿編寫自己的程序。我們設計出以下三類閱讀理解訓練題:1.要求通過閱讀程序寫出運行的結果。2.是給出源程序,要求通過閱讀程序寫出程序的功能。3.是在學生具有一定的閱讀理解能力的基礎上設計一類完型填空題,這類題已知程序要完成的基本功能,要求學生根據上下文完善程序,達到正確實現程序功能的目的。通過以上訓練使學生基本上能夠掌握c語言的基礎知識,從整體上掌握c語言程序的邏輯結構、理解c語言程序完成的基本功能。
4.堅持學與用相結合
在教學改革中教學指導思想的轉變是教學改革的中心。過去語言課教學的指導思想是學語言,缺乏對學生應用語言能力的培養,造成的后果是學生學過語言,但不會使用。針對這種情況,我們改變原有的教學方式,堅持以用為中心,強調學用結合。使學生在“懂”語言的基礎上進一步學會“用語言”。教學中盡可能安排與學生所學專業相關的實例,讓學生在學的過程中更多的得到應用語言的鍛煉,真正掌握這門語言課。加強語言與專業的結合,用計算機解決的實際問題往往都是綜合性很強的問題,培養學生運用“軟件工程”的思想,有層次、有步驟、有次序地解決設計中的各種問題,并學會處理各種問題之間的聯系,逐步培養綜合設計能力。
5.組織課程設計
c語言課程設計不同于上機實驗,具有很強的自主性,以培養學生創新思維和創新意識為目的。在這個教學環節中,主要幫助學生理解和運用理論知識,利用計算機解決實際問題,激發學生的學習興趣,培養學生的成就感。因此課程設計題目必須具有較強的實用性、綜合性和一定的創新性,使學生通過綜合性的設計練習,提高他們的軟件設計能力和創新能力。因為綜合性設計需要花費很多時間,所以選題是個很重要的環節。實行教師出題和學生自己選題相結合的方式,發揮他們的創新意識和想像力,自主地選擇課程設計課題,教師幫助他們確定合適的綜合性課程設計題目。
課程設計時,可將學生分成若干小組,每組布置一個稍大的有實際應用背景的程序設計題目,學生將根據各自的任務去完成需求分析、算法設計、編寫程序、上機調試等過程,再由其中一個人負責完成聯合調試任務。在這一過程中,教師要做好學生的參謀,針對不同學生的設計方案和不同問題做一些關鍵性的指導,形成一個以學生自己動手為主,教師引導為輔,點評相結合的啟發式教學模式。遇到問題時教師可以提供解決問題的思路或方法,更多地鼓勵學生們自己想辦法解決,在同學間形成一種輕松活躍、團結協作、相互交流的氛圍。只有這樣,才能更加活躍學生的思維,才能真正培養學生獨立分析問題和解決問題的能力。
三、結束語
本文針對計算機專業C語言課的特點,從教學原則、教學內容和教學方法等方面進行了具體分析。實踐結果顯示,改革后的教學方法,在保證教學大綱要求的同時極大地增強了學生學習的熱情,擴展了學生的視野,使學生從枯燥無味的語言學習中解放出來,達到了靈活運用c語言的目的。我們認為這種教學改革的實踐,對于其他計算機語言的教學也具有一定的指導意義。
[參考文獻]
[1]譚浩強:《C程序設計》,清華大學出版社2001年版。
[2]鄭人杰:《軟件工程》,清華大學出版社1999年版。
[3]高紅:《開設自主性實驗,培養學生的創新意識和創新能力》,《實驗技術與管理》2001年第12期。
[4]邱建林、王波等:《計算機程序設計語言教學的探索》,《牡丹江大學學報》2001年第4期。