涂立 賈麗媛
摘 要:對本科院校學(xué)生程序設(shè)計教學(xué)的模式進行了研究,指出了該課程的重要地位,并歸納了教學(xué)中出現(xiàn)的問題,研究了該門課程教學(xué)方法的改進,提出了引入興趣教學(xué)、自信心培養(yǎng)教學(xué)、編程能力和編程習(xí)慣的培養(yǎng)、樹立以算法為中心的教學(xué)理念,注重理論與實踐相結(jié)合等教學(xué)思維。
關(guān)鍵詞:程序設(shè)計語言 算法 編程能力
中圖分類號:G642.0 文獻標識碼:A 文章編號:1672-3791(2014)03(a)-0192-02
程序設(shè)計是高校本科生的一門重要基礎(chǔ)課,計算機專業(yè)和非計算機專業(yè)都開設(shè)了這門課程,例如:《C程序設(shè)計》《Pascal》等高級語言程序設(shè)計,其目的是培養(yǎng)學(xué)生學(xué)會使用計算機語言編寫適合自己專業(yè)特色的應(yīng)用程序。這些課程與后續(xù)專業(yè)課程都有緊密的聯(lián)系。例如:C語言程序設(shè)計課程不但是計算機學(xué)科的必修課程,而且更是《數(shù)據(jù)結(jié)構(gòu)》《算法設(shè)計與分析》等其專業(yè)核心課程的先修課程。程序設(shè)計的水平在很大程度上決定了學(xué)生專業(yè)基礎(chǔ)知識是否扎實,并直接影響到后續(xù)課程的學(xué)習(xí)和專業(yè)興趣的培養(yǎng)。
程序設(shè)計語言可以培養(yǎng)學(xué)生運用算法來解決實際問題的能力,這種解決問題的方式是計算機所獨有的。學(xué)生通過程序設(shè)計課程,可以掌握程序設(shè)計的基本方法并逐步形成正確的程序設(shè)計思想,能夠熟練地使用某種程序語言進行程序設(shè)計并具備一定調(diào)試程序的能力,從而為后續(xù)課程打下堅實的基礎(chǔ),同時也為工程技術(shù)人員用計算機解決實際問題提供了方法。
1 程序設(shè)計課程教學(xué)中的問題
1.1 學(xué)生缺乏學(xué)習(xí)熱情
程序設(shè)計語言課程的學(xué)習(xí)需要較強的邏輯思維能力和一定的數(shù)學(xué)、英語基礎(chǔ),因此一些基礎(chǔ)較差的學(xué)生會顯得力不從心,更有大部分學(xué)生在學(xué)習(xí)的過程中會感到枯燥、乏味,加上教師教學(xué)方法的單一,更使得一些學(xué)生對缺乏學(xué)習(xí)的熱情,甚至對程序設(shè)計產(chǎn)生恐懼感。這種學(xué)習(xí)狀態(tài)下,學(xué)生不可能很好地掌握程序設(shè)計的基本方法,當(dāng)然也就談不上學(xué)習(xí)效果了。
1.2 忽視實踐課
計算機語言教學(xué)通常先講概念,講語法,講例子,然后上機做練習(xí),教學(xué)死板不利于將知識轉(zhuǎn)化為能力。教師在理論課上常常是唱“獨角戲”,學(xué)生被動地學(xué)習(xí),缺乏主動思維。而上機實驗課許多學(xué)生只對書本上現(xiàn)有的一些實例進行編輯調(diào)試。這種教學(xué)方法使得學(xué)生缺乏解決實際問題能力。
2 教學(xué)方法探討
為了提高教學(xué)效果,我們提出了一下幾點建議。
2.1 興趣教學(xué)
學(xué)生在學(xué)習(xí)程序設(shè)計語言之前,大多存在對計算機語言的認識誤區(qū),剛開始的時候知道這是一門計算機軟件的關(guān)鍵課程,還有部分學(xué)生以為學(xué)習(xí)了C語言等課程就可以設(shè)計開發(fā)整個企業(yè)的軟件,可以開發(fā)游戲軟件,甚至還可以像黑客一樣隨意侵入他人的電腦,因而興致勃勃,然而在學(xué)習(xí)的過程中,接觸了大量難以理解和抽象的新概念、新名詞、新術(shù)語、新規(guī)則的介紹,枯燥乏味的例題分析后,逐漸失去學(xué)習(xí)的興趣。語法的單調(diào)枯燥容易使學(xué)生陷入到冗繁的語法規(guī)則之中。還有大部分學(xué)生在學(xué)習(xí)程序設(shè)計語言時覺得學(xué)習(xí)程序設(shè)計語言很枯燥,上機只會照著書本上的例子進行驗證,這樣的上機操作僅僅只是對書本上現(xiàn)成的程序例子做簡單的驗證,而程序設(shè)計這門課程的精彩之處恰恰是要求學(xué)生開發(fā)思維,進行有創(chuàng)造性的學(xué)習(xí),驗證性的上機操作極大地限制了學(xué)生的思維,于是很多學(xué)生對獨立編寫程序常常感到無從下手,也有部分學(xué)生眼高手低,別人編寫的程序能夠看懂,但是自己卻不能編寫程序,這樣更使學(xué)生喪失了對程序設(shè)計語言的興趣。傳統(tǒng)的教學(xué)模式長時間使用會使學(xué)生的思維惰性化,不利于學(xué)生對知識的鞏固和深化。通過培養(yǎng)學(xué)生學(xué)習(xí)的興趣,可以使學(xué)生改變對程序語言的認識——從神秘到認為通過努力可以掌握,從索然無味到充滿興趣,從而完成學(xué)生心理從外部驅(qū)動到內(nèi)在自愿。因此,要想教好程序設(shè)計語言課,在加大教學(xué)與研究力度的同時,還要先給學(xué)生進行興趣教育。
在方法上,可以采用自然語言的思維建構(gòu)程序設(shè)計語言的基礎(chǔ)知識,例如,在C語言變量的教學(xué)中,要學(xué)生理解變量的實質(zhì)是“被命名的存儲單元”??梢詫⒆兞勘扔鞒梢粋€容器,這些“容器”依據(jù)其中的內(nèi)容不同而不同。在講解交換兩個變量的值時,先讓學(xué)生寫出程序語句,但是學(xué)生很容易造成A=B;B=A的錯誤,這時可以舉一個生活中的例子:一杯牛奶,一杯水果珍,如何互換?問題一提出,學(xué)生馬上得出結(jié)論:引入第三杯子(變量),C=A;A=B;B=C,這樣兩個變量的值順利互換。
例如:在C語言的教學(xué)中,C語言的關(guān)鍵字一般是英文單詞或其縮寫形式。例如:整型變量的關(guān)鍵字是int,可以向?qū)W生介紹int是英文單詞integer(整數(shù))的縮寫,這樣學(xué)生也就自然而然掌握了int這個關(guān)鍵字,并能夠用int定義C語言的一個整型內(nèi)存變量。如果按照這樣的方法,首先將某種程序設(shè)計語言關(guān)鍵字的功能講授清楚,再提示相應(yīng)的英文單詞,學(xué)生便將自然語言與程序設(shè)計語言的詞匯表之間建立某種對應(yīng)關(guān)系,這樣有助于理解,也有助于記憶,進而在學(xué)習(xí)伊始就揭開了程序設(shè)計語言的神秘面紗,并建立起學(xué)習(xí)程序設(shè)計語言的興趣。
2.2 自信心培養(yǎng)
學(xué)習(xí)了編程語言的語法,并不代表能開發(fā)良好的應(yīng)用程序,正如學(xué)好了漢字,并不代表能寫出好的文章。這就要求學(xué)生在學(xué)習(xí)編程語言的同時,需要加強編程練習(xí)。開始練習(xí)寫程序、調(diào)試程序時,學(xué)生很容易犯各種低級錯誤,這也是他們的信心最容易受挫的時候,如何正確地引導(dǎo)他們從失敗的困境中走出來是非常關(guān)鍵的。
在教學(xué)方法上,可以采用錯例教學(xué)法來提高學(xué)生的自信心。
一般情況下,在課堂教學(xué)中,教學(xué)大綱要求把正確的知識傳授給學(xué)生。為了加強學(xué)生對知識的理解,以及針對學(xué)生一錯再錯的問題,我們可以利用相應(yīng)錯例,如設(shè)計一段程序,在該程序中故意設(shè)計語法錯誤、語句錯誤、算法錯誤及在調(diào)試出現(xiàn)的錯誤,然后組織學(xué)生分組討論,找出程序出錯的位置和錯誤的原因,這樣可以使錯誤率下降,還可以激發(fā)學(xué)生的求知欲,更好掌握學(xué)習(xí)內(nèi)容。
2.3 算法為中心
程序設(shè)計不是僅僅要求學(xué)生學(xué)習(xí)語法規(guī)則,而是引導(dǎo)學(xué)生如何針對問題找出解題方法,這個結(jié)題方法就是算法。從某種意義上說,用算法解決問題的能力甚至比數(shù)值計算的能力更為重要。程序語言的傳統(tǒng)教學(xué)以是以語法為主線,而不是以算法語法為主線,不論實驗課還是理論課,教學(xué)多數(shù)是強調(diào)語法語句練習(xí)。學(xué)生從掌握程序設(shè)計語言到真正實現(xiàn)程序,是從量變到質(zhì)變的一個飛躍。在解決問題的過程中,算法是最重要的。只有樹立這樣的教學(xué)目的,才不會讓學(xué)生陷入程序設(shè)計語言學(xué)習(xí)的誤區(qū),避免他們學(xué)習(xí)了程序設(shè)計語言,仍然解決不了實際的問題;目前的程序設(shè)計語言課程教學(xué)方法中,大多不能突出“算法為中心”,從而使得程序設(shè)計語言課程偏離教學(xué)重點。因此,在培養(yǎng)和形成學(xué)生的綜合程序設(shè)計能力時,必須注重算法分析,突出算法設(shè)計,強化算法注釋,點撥算法疑難。
在教學(xué)方法上,可以采用算法歸類的方法來進行程序設(shè)計教學(xué)。
在程序設(shè)計中,某些算法是存在共性的,對于這類問題,教師應(yīng)在授課過程中引導(dǎo)學(xué)生有意識的進行歸類,以及對問題進行延伸,達到舉一反三的效果。如累加、累乘,以及之類的問題都是重復(fù)進行某種基本操作,不同的是參加運算的數(shù)和操作方式。解決這類問題只要根據(jù)問題本身找到相應(yīng)的變量以及其相應(yīng)的運算規(guī)律就可以了。
2.4 編程能力的培養(yǎng)
學(xué)生只有掌握了算法和程序設(shè)計方法的技能,才會很好的進行學(xué)習(xí)遷移。在教學(xué)中,我們可以依照精講多練的方式來進行講授內(nèi)容,根據(jù)相應(yīng)章節(jié)的知識點多舉例子,讓學(xué)生讀程序模擬運行的結(jié)果、多做習(xí)題等方法來逐步培養(yǎng)學(xué)生算法和程序設(shè)計的能力。
實踐教學(xué)活動的設(shè)計思想是以分層次培養(yǎng)為基礎(chǔ),以掌握課堂教學(xué)內(nèi)容為目標,系統(tǒng)設(shè)計實踐教學(xué)內(nèi)容。采用實踐教學(xué)與傳統(tǒng)的課堂教學(xué)相結(jié)合的方式,可以增強授課教師與學(xué)生的互動。以講解程序為主線,使學(xué)生能真正學(xué)到好的編程思想、編程習(xí)慣、編程算法和程序組織方法。這樣做,一方面可以加深學(xué)生對所講課程的理解;另一方面激發(fā)學(xué)生的學(xué)習(xí)興趣、學(xué)習(xí)積極性,活躍課堂氣氛。
采取以“案例”驅(qū)動的方法組織教學(xué),讓程序設(shè)計始終貫穿于整個教學(xué)過程之中。
在實踐教學(xué)中采用課堂實踐、實驗課、課程設(shè)計、科技活動小組的多層次教學(xué)模式。課堂上在講授例題和習(xí)題;實驗課學(xué)生自己動手完成布置的實驗題,在傳統(tǒng)程序設(shè)計教學(xué)的教學(xué)大綱上減少基礎(chǔ)型、驗證型實驗,增加設(shè)計型、綜合型、創(chuàng)新型實驗項目的比例,并采用獨立編制設(shè)計型和綜合設(shè)計型實驗指導(dǎo)書;課程設(shè)計以3人的小組方式進行,使用較大型的程序讓學(xué)生深刻體會程序開發(fā)的全過程,讓學(xué)生設(shè)計具有一定難度的小型系統(tǒng),在實驗報告中提供系統(tǒng)分析、數(shù)據(jù)模型、系統(tǒng)流程和程序的完整內(nèi)容,以此促進學(xué)生全面掌握本課程的內(nèi)容,并初步體驗軟件工程方法,并培養(yǎng)學(xué)生的團隊精神。為了防止學(xué)生互相抄襲,在學(xué)生提交大作業(yè)時,可以通過當(dāng)面提問、解釋代碼含義等方法;科技活動小組由學(xué)生自愿組成,參與教師的科研項目或由教師指導(dǎo)選題,在傳統(tǒng)的實踐教學(xué)體系之外,增設(shè)創(chuàng)新實踐學(xué)分學(xué)生可以通過科技競賽以及各類創(chuàng)新活動計劃,培養(yǎng)學(xué)生的初級科研能力和創(chuàng)新能力。
2.5 編程習(xí)慣的培養(yǎng)
在現(xiàn)代軟件工程中,培養(yǎng)學(xué)生良好的程序設(shè)計風(fēng)格也是一個很重要的目標。編程習(xí)慣需要從初學(xué)程序設(shè)計語言就開始培養(yǎng)。教師在實驗教學(xué)中,應(yīng)該強調(diào)和貫徹專業(yè)的編程規(guī)范,通過這種方式,不僅可以減少程序設(shè)計中錯誤,更重要的是幫助學(xué)生樹立良好的程序設(shè)計風(fēng)格,培養(yǎng)學(xué)生的技術(shù)素養(yǎng),為今后的軟件工程實踐項目打下堅實的基礎(chǔ)。
3 結(jié)語
程序設(shè)計語言是高校素質(zhì)教育的一個重要組成部分,對培養(yǎng)學(xué)生的綜合能力起著重要的作用,探索程序設(shè)計課程教學(xué)方法,提高教學(xué)質(zhì)量是計算機教育的工作者必須重視的問題,也是一個值得探討的課題。教師應(yīng)在自己的教學(xué)實踐中認真觀察、積極反思,將任務(wù)的設(shè)計原則與實際教學(xué)內(nèi)容、教學(xué)對象相結(jié)合,設(shè)計出有效、實用的任務(wù),從而幫助學(xué)生真正提高其程序設(shè)計語言運用能力,進而培養(yǎng)出對國家有用的人才。
參考文獻
[1] 譚浩強.C語言程序設(shè)計[M].2版.北京:清華大學(xué)出版社,2003.
[2] 于清,吐爾根·依布拉音,阿里甫·庫爾班.算法為先的C語言教學(xué)模式探討[J].計算機教育,2009(20):96,106-108.
[3] 方紅萍,陳和平.C語言課程改革與實踐[J].電氣電子學(xué)報,2007,27(5):11-13.
[4] 唐永紅,龔安.程序設(shè)計實驗教學(xué)探討[J].電氣電子教學(xué)學(xué)報,2006,28(3):85-86.
[5] 廖文江,董南萍,郭文榮.以開源軟件為平臺改進C語言教學(xué)[J].計算機時代,2009(10):61-62.