張一曼
C語言因為工具性與技能性在計算機教育中占據(jù)重要的地位而被列為計算機專業(yè)的必修課。在技工院校的計算機專業(yè)中,C語言也是學(xué)生學(xué)習(xí)其他計算機課程的先行課,是一門最基礎(chǔ)的計算機編程語言。但是由于技工院校的學(xué)生大部分是由初中畢業(yè)升學(xué)而來,自身基礎(chǔ)比較薄弱,加之C語言自身的特點,大部分學(xué)生反映在上C語言課時就像在聽教師講“天書”,完全聽不懂,作業(yè)做不出,更不要談靈活應(yīng)用解決相關(guān)的實際問題了。如長此以往,教學(xué)效果就會很不理想。那么怎么解決學(xué)生的“聽天書”問題呢?怎么使學(xué)生上C語言聽得懂,作業(yè)做得出,既能自主練習(xí)又能解決實際問題呢?這就要從兩方面入手,首先是教師要重視改進(jìn)教學(xué)方法,其次是學(xué)生要調(diào)整學(xué)習(xí)思路,學(xué)會自主學(xué)習(xí)。
1.學(xué)生自身基礎(chǔ)差
學(xué)生學(xué)習(xí)C語言需要有一定的計算機基礎(chǔ)、數(shù)學(xué)基礎(chǔ)、英語基礎(chǔ)和邏輯思維能力。其中受環(huán)境和條件的限制,部分技工院校學(xué)生計算機基礎(chǔ)較差,而技工院校學(xué)生的生源問題導(dǎo)致部分學(xué)生數(shù)學(xué)基礎(chǔ)、英語基礎(chǔ)較差,這些學(xué)生的邏輯思維能力也大大影響了他們學(xué)習(xí)機器語言中分析、設(shè)計、調(diào)試程序的能力。
2.C語言自身的特點
C語言是計算機語言,是人與計算機交流的語言之一。對于從來沒有接觸過機器語言的學(xué)生來說,如何實現(xiàn)自然語言到程序自動化語言的轉(zhuǎn)化,怎么樣讓C語言描述出用自然語言描述的問題,怎么理解C語言等,都是學(xué)生在學(xué)習(xí)中的障礙。
另外C語言較其他機器語言有很明顯的優(yōu)點,如運算符豐富、語法限制不嚴(yán)格、用戶能夠自定義數(shù)據(jù)類型、程序設(shè)計自由度大等,但這也是C語言學(xué)習(xí)的難點。
實踐證明,任何課程的學(xué)習(xí)都是由淺入深、由易到難、循序漸進(jìn)的,而教師的善于引導(dǎo)能讓學(xué)生自主進(jìn)行學(xué)習(xí),這樣教學(xué)的效果自然是讓教師學(xué)生雙方都滿意的。這也是實施C語言教學(xué)的一條有效途徑,所以要解決C語言的“聽天書”問題,必須分別從師生兩方面下手。
1.教師要重視改進(jìn)教學(xué)方法
(1)運用新型教育技術(shù),施展多種教學(xué)手段。傳統(tǒng)的教學(xué)方法并不適合C語言,枯燥的傳統(tǒng)教學(xué)課堂是沒有效率的。所以教師要靈活地安排教學(xué)內(nèi)容和上機時間,在講授基本結(jié)構(gòu)、變量、運算符與表達(dá)式等比較簡單的章節(jié)時,可以邊講課邊讓學(xué)生操作,而對于比較難的章節(jié),如數(shù)組、結(jié)構(gòu)體、指針等內(nèi)容時,教師要從學(xué)生的學(xué)習(xí)進(jìn)度出發(fā)安排課程,并要注重學(xué)生學(xué)習(xí)后的反饋。教師自始至終只采用一種教學(xué)方法是不可取的,因此,教師需要在教學(xué)過程中不斷探討、總結(jié)經(jīng)驗,合理運用多種教學(xué)方法。教師要引入現(xiàn)代教育技術(shù),在教學(xué)過程中應(yīng)使用多媒體、投影儀結(jié)合的動畫、課件、程序軟件等進(jìn)行課堂演示教學(xué)和案例教學(xué)。案例教學(xué)是一種新型的教學(xué)手段,目的在于培養(yǎng)學(xué)生綜合運用所學(xué)知識解決實際問題的能力。例如:在案例教學(xué)中,課前教師可以列出需要掌握的知識點,讓學(xué)生進(jìn)行課外自學(xué)。課堂上教師則以實際案例出發(fā),從問題的提出和分析、方案的設(shè)計與實施、問題的解決等環(huán)節(jié)進(jìn)行教學(xué)并穿插少量知識點,真正做到學(xué)以致用,以學(xué)生為主體,從而激發(fā)學(xué)習(xí)興趣。
在案例教學(xué)中,要給每個學(xué)生一個任務(wù),那就是從案例中發(fā)現(xiàn)問題或得到啟示,確定自己的研究課題并加以解決。教師應(yīng)對學(xué)生選定的題目進(jìn)行批閱,在可行性、工作量大小及題目的意義等方面進(jìn)行把關(guān)和評估,及時將意見反饋給學(xué)生。比如在講指針的概念里比較復(fù)雜難懂的直接訪問和間接訪問,教師可以選擇案例教學(xué)法,再與現(xiàn)實生活中具有趣味性的問題相結(jié)合:指針就是個地址;你的鑰匙放在抽屜里,你要通過抽屜才能找到鑰匙,這個抽屜就是指針,指引你去找到你想要東西的針,也就是存放數(shù)據(jù)的地方。再如教師在解釋兩個變量交換值時為什么會有一個中間變量時,可以提問學(xué)生有兩只水瓶A和B,A裝醋,B裝油,如果想將兩瓶東西相互交換,應(yīng)該怎么做呢?學(xué)生自然都會想到,再拿一個空瓶子就可以解決了,這時候告訴學(xué)生空瓶子就是對應(yīng)中間變量。教師這樣多舉一些和生活息息相關(guān)的例子,學(xué)生更容易聽得懂,自然能順利地完成學(xué)習(xí)內(nèi)容。
(2)結(jié)合實踐,培養(yǎng)學(xué)生的邏輯及創(chuàng)造性思維能力。語言學(xué)習(xí)必須理論與實踐相結(jié)合,這就要求教師要精講多練。精講就是精煉、準(zhǔn)確,教師要講的精煉、準(zhǔn)確就必須要有清晰的編程思路,并能把思路展現(xiàn)在學(xué)生面前,從而培養(yǎng)學(xué)生能夠正確分析例題。多練是學(xué)習(xí)編程的關(guān)鍵,實踐出真理,上機實踐才能讓學(xué)生在掌握理論知識的同時更好地學(xué)會如何編寫和調(diào)試程序。C語言操作性很強,形形色色的命令及屬性設(shè)置在教師講解的時候,學(xué)生一般都聽得懂,但綜合起來卻感覺無從下手,這就是理論與實踐的脫節(jié)。為此教師可以把題目分解成一個個的小目標(biāo),讓學(xué)生做新的實驗,為實驗的改進(jìn)作探索。在這過程中,教師也需在C語言實驗教學(xué)中安排合理的實驗時間,注重理論聯(lián)系實際,選擇例題時要有針對性、典型性,注意培養(yǎng)學(xué)生的思考能力和解題時的靈活性。
比方,在求n!時,可以用程序調(diào)用自身的方法。再如在運行標(biāo)準(zhǔn)輸出函數(shù)printf()時,由一個學(xué)生來演示分析程序運行時的工作原理,另一個學(xué)生來驗證解題思路的正確性。在這個過程中,學(xué)生的想象力和思維得到了發(fā)揮和鍛煉,并通過互動和比較,更能找出自己在某一方面的不足并加以改正。
學(xué)生的上機實踐也應(yīng)該與實際相結(jié)合,否則多數(shù)學(xué)生在上機時只是驗證程序,沒有思考,感覺上機很無聊。教師可以使用項目分組法,每組有強有弱,可以分配相同的任務(wù)來進(jìn)行比賽,也可以按學(xué)生的興趣自行組隊分配不同的任務(wù),還可以編寫一些具有靈活性和伸縮性題目或簡單一些的游戲項目如掃雷、貪吃蛇、五子棋等,既能大大提高學(xué)生的學(xué)習(xí)興趣又能讓學(xué)生體會到實際編程的重要性,從而達(dá)到提高學(xué)生實際編程能力的目的。
2.學(xué)生要學(xué)會自主學(xué)習(xí)。
學(xué)生是學(xué)習(xí)的主體,所以學(xué)會如何學(xué)習(xí)很重要。然而大部分技工院校的學(xué)生因本身條件所致,并不會學(xué)習(xí)或者說不會自主學(xué)習(xí),學(xué)習(xí)中往往過多地依賴于教師、課本和練習(xí)。學(xué)生在C語言的學(xué)習(xí)中要改變這種狀況,使自己在學(xué)習(xí)中的主體位置不斷提升,就要做到以下幾點。
(1)正確認(rèn)識C語言,樹立信心。大多數(shù)技工院校學(xué)生先入為主地認(rèn)為C語言學(xué)習(xí)相對較為困難,以至于缺乏學(xué)習(xí)的信心以及勇氣。所以認(rèn)識C語言的重要性,樹立“既學(xué)之,則學(xué)好”的信心就顯得非常重要。C語言是計算機學(xué)習(xí)的基礎(chǔ)課程,其本身具有良好的專業(yè)性以及實用性。C語言學(xué)習(xí)的好壞,直接關(guān)系到計算機編程思維能力能否建立。不論哪種計算機語言,計算機編程思維是相通的,只要學(xué)好C語言,就可以很好地學(xué)習(xí)任何一種編程工具。想要學(xué)好C語言就得樹立信心,克服困難,循序漸進(jìn),腳踏實地學(xué)習(xí)。
(2)夯實基礎(chǔ),多讀、多寫,“熟讀百遍”。古話說“熟讀唐詩三百首,不會作詩也會吟”。C語言雖然是機器語言,但它和自然語言的學(xué)習(xí)方法有很多的相似之處,要想打好基礎(chǔ),就得熟讀課本,多讀、多寫。C語言程序最好的入門方式便是閱讀,上課時間跟著教師的思路,培養(yǎng)自己讀程序的能力,讀的程序多了,見到的符號體系和編程思想、方法和技巧也就多了,在以后自己獨立編程的過程中便可以借鑒別人的東西,再加以運用變成自己的東西。所以學(xué)習(xí)的時候必須熟練地掌握基礎(chǔ)知識,弄懂、弄透重點知識,及時做相關(guān)習(xí)題加以鞏固。讀得多了,寫得多了,掌握的基礎(chǔ)知識夠牢固,才能為自己編程打好良好的基礎(chǔ)。
(3)注重實踐,多學(xué)、多練,“其義自現(xiàn)”。C語言的實踐性很強,學(xué)生只有通過上機實踐才能更好地掌握C語言的理論知識及其應(yīng)用。在實踐學(xué)習(xí)中,必須注重實踐,提高自己的編程思路和程序測試的能力,才能分析和解決問題,如C語言中的語法規(guī)定、程序設(shè)計方法、程序開發(fā)能力等,這些都必須通過充分的上機實踐才能得到提高。
舉個例子:C語言中的運算符的語法規(guī)則,學(xué)習(xí)起來枯燥無味,死記硬背費精力費時間,還可能不會靈活運用,那么這個就可以通過上機實踐,在調(diào)試程序過程中,自然而然地掌握了它的語法規(guī)定。程序最終也是在計算機上實現(xiàn)的,程序正確與否、存在什么問題上機調(diào)試并運行正確后就可以知道,編程能力也正是在不斷發(fā)現(xiàn)錯誤、改正錯誤中提高的。再者,從“簡”入“難”,從簡單開始,選取一些小程序進(jìn)行編寫。多練習(xí),在編寫一些簡單程序的基礎(chǔ)上,可以研讀C語言經(jīng)典程序,這能使我們大開眼界、耳目一新,不但能增長自己的知識、激發(fā)自己的靈感,還能夠借鑒別人好的編程思想、編程技巧,學(xué)習(xí)分析問題、解決問題的方法,使自己的程序設(shè)計能力大大提高。
教和學(xué)是教學(xué)過程中的兩個重要方面,一門課程如果大部分學(xué)生反映聽不懂,那么說明教和學(xué)雙方都存在一定的問題。教師先檢討一下自己,是不是課堂太單調(diào)、太枯燥了?是不是教學(xué)方法和教學(xué)模式太落后了?學(xué)生也要檢查一下自己,是學(xué)習(xí)方法不對呢?還是沒有信心學(xué)好?或者是覺得沒什么用不愿意學(xué)?要防止這種情況的發(fā)生,首先教師要行動起來,精心準(zhǔn)備教案、更加直觀的教學(xué)內(nèi)容、適當(dāng)可行的教學(xué)方法,找到學(xué)生聽不懂的原因,對癥下藥來引導(dǎo)學(xué)生學(xué)習(xí),給予他們正確的學(xué)習(xí)方法,相信學(xué)生學(xué)起C語言來不再是“聽天書”了,而是好學(xué)不倦了。
(作者單位:廣東省工商高級技工學(xué)校)