石躍祥 朱東輝
摘要:本文針對大學本科非計算機專業(yè)理工科C語言教學中,如何培養(yǎng)學生的程序設計能力,掌握好程序設計工具,為所學專業(yè)的計算機應用創(chuàng)造訓練與鍛煉的條件等問題進行了論述;討論了通過程序設計的演示法、嘗試法和實訓法三個環(huán)節(jié),采取課堂教學互動和三維立體教學法改進教學效果,培養(yǎng)學生學習程序設計的興趣。經(jīng)對比分析,通過教學方法的改革,學生程序設計的能力有明顯的改善與提高。
關(guān)鍵詞:C語言;程序設計;教學方法
中圖分類號:G642文獻標識碼:B
1前言
筆者從事高級語言程序設計教學與實習,結(jié)合國內(nèi)外優(yōu)秀編程語言的教學方法和模式,不斷地總結(jié)和積累經(jīng)驗并運用于教學實踐之中,取得了較好的教學效果。這種教學方法有助于學生在有限的教學時間內(nèi),以最快最簡單易懂的方式,扎實地掌握C語言的內(nèi)容,并能運用自如。
2培養(yǎng)學習計算機興趣
學生進入大學校園后,對大學充滿了好奇與幻想,而在學習方法上,這是最需要老師正確引導與影響的時刻。大學的學習與中學的學習有顯著的區(qū)別,大學需要培養(yǎng)有學習方法和學習思維的人才,通過在大學校園競爭、創(chuàng)新、個性培養(yǎng)和發(fā)展的平臺上,展示學生最華彩的人生。
把學生從興奮、激動的心情中引入到學習中來,高校老師有著義不容辭的責任。恩格斯說:“興趣與愛好是最好的老師”。在C語言教學中,為了使初學者能盡快地掌握計算機知識,進入計算機課程的學習,在課程講授過程中,要特別注意培養(yǎng)學生的學習興趣。我采取的方法是,一開始就加入計算機應用對社會帶來影響的具體例子,如網(wǎng)絡、銀行和游戲等,把學生的注意力吸引到計算機應用的變革上。
上課的初始階段,我會介紹一些國外高校計算機學科發(fā)展的形勢與狀態(tài),讓學生充分認識到學習計算機課程和C語言的必要性,同時,也找一些“高等數(shù)學”、“線性代數(shù)”等課程中的問題,如:“菲波納契兔子問題”、“水仙花數(shù)”、“競賽記分”等例題,培養(yǎng)學生的學習興趣,讓大家積極主動、自覺獨立地獲取知識,打好學習程序設計語言的基礎。整個教學過程中把問題的分析,解題思路、方法和步驟(即“算法”),該題目的關(guān)鍵與亮點當作授課的重點,從而讓學生明白如何分析并解決實際問題,逐漸培養(yǎng)學生進行程序設計的正確思維模式。
隨著課程的不斷深入,大量的規(guī)則、定義、要求和格式等內(nèi)容的出現(xiàn),很容易使一部分(甚至是大部分)學生產(chǎn)生枯燥無味的感覺。這時,在講述這部分內(nèi)容的時候,我會把這些規(guī)則和格式在實際應用中的地位與作用結(jié)合起來,并將它們在應用中的體現(xiàn)描繪出來,讓學生知道所以然,把好奇轉(zhuǎn)化為學習興趣,努力把枯燥無味的“語言”講得生動、活潑。
3教學過程的循序漸進
雖然有的學生在大學之前就已經(jīng)接觸過計算機,但絕大部分學生是第一次接受計算機語言,“通俗性、可接受性”的教學原則是一直要把握的。在課程講授過程中,我們沒有把重點放在語法規(guī)則的敘述上,而是放在算法和程序設計方法上,放在培養(yǎng)學生思考與分析的過程中,把形式化的規(guī)則放到具體的問題中來講解。通常由幾個例題引出一種語法規(guī)則,通過一些求解具體問題的程序來分析算法,介紹程序設計的基本方法和技巧,既注重程序設計的系統(tǒng)性、科學性,又注意易讀性和啟發(fā)性。從最簡單的問題入手,一開始就介紹程序,要求學生編寫程序,通過反復編寫、運行程序來掌握語言的規(guī)定和程序設計的方法。同一個語法規(guī)則、同一種算法,在選擇例題時也是由簡到難,逐步呈現(xiàn)給學生。在學習上不要求學生死記語法規(guī)則,而是要求學生能把各個孤立的語句組織成一個有機的、好的程序。注意培養(yǎng)學生良好的編程風格,讓學生在編制程序過程中不斷總結(jié)、鞏固,達到學會方法、記住語法規(guī)則,提高設計技巧的目的。
以“菲波納契兔子問題”為例,在基本程序設計部分,可以啟發(fā)學生使用循環(huán)語句,利用變量的交替賦值實現(xiàn)。
第一個問題,讓學生思考變量的定義,提議變量的定義,應有利于運算和與菲波納的表示接近。
第二個問題,提出四十個菲波納兔子如何用循環(huán)語句實現(xiàn)。
第三個問題,四十個菲波納兔子需要循環(huán)的次數(shù)。
最后總結(jié),通過變量的變位和在每次循環(huán)中可以得到的菲波納兔子數(shù)而有效輸出的結(jié)果,通過這種模式,逐步訓練學生程序設計的思維方式和想象的空間。
如果在學習了數(shù)組后,讓學生思考如何利用數(shù)組及下標來輸出該結(jié)果。這樣,通過對兩種解法的比較和分析,幫助學生更好地掌握循環(huán)語句和數(shù)組的概念。
4課堂實現(xiàn)教學的互動模式
教學中,我們要求學生課前做好預習,實際上是要求他們通過自學,發(fā)現(xiàn)學習中的問題和難點,講課前先了解一下將要講述內(nèi)容的難點;講解中,將這些問題重點剖析,只講難點、重點、有變化之處,一般性的內(nèi)容則輕點而過,這樣既給了學生思維分析的余地,又節(jié)省了課時。這就要求老師在以往教學中,通過積累與分析,掌握學生對這部分內(nèi)容學習的輕、重、難和關(guān)聯(lián)點,必須精選教學內(nèi)容,注意詳略安排的合理性,在章節(jié)間的授課安排也注意要注意詳略得當。
在知識點和問題的講解中,并不是一開始就講述解決問題的過程,而是先提出問題,給出學生思考的時間,在思考的基礎上,安排學生回答或在黑板上做題,這一環(huán)節(jié),就可以掌握學生對這知識掌握的程度和分析問題的能力,這有利于上課時集中學生的注意力和提高學習的興趣。
對于學生的回答或解題的結(jié)果,先對這些內(nèi)容作分析,給出學生思維的過程和方法,在些基礎上,對回答作一個結(jié)論,然后再給出回答或解題的新思考,如方法上、策略上和形式上的改進。引導學生在問題思考過程中的多元化,開拓學生的思路,達到舉一反三的效果。另外,還應經(jīng)常找一些設計技巧比較好、解題思路比較精的例題讓學生自己“讀程序”、“寫程序”和“分析程序”,找出精妙之處或不理解之處,對普遍性的問題共同講解,個別問題課后解答,并提出某些精辟的東西在其他地方、其他學科中的應用。
此外,對有些問題,課堂上組織一定時間內(nèi)的討論。例如:給出一種程序設計方法后,讓學生討論,看看還有沒有其他的程序設計方法和思路,讓他們發(fā)表意見,提出自己的解題思路編程方法,給學生以表達已見、陳述思路、交流觀點的機會。這就要求老師既有引導又能放開,既有事先的精心備課,又有課堂上的因勢利導,隨機應變的能力,同時也可以從學生討論中提出的問題來豐富教學內(nèi)容,不斷地改進教學效果。
5三位一體的立體訓練法
做作業(yè)是復習、練習的過程,也是繼續(xù)和深入學習的過程。每次課后,給學生布置與教學內(nèi)容緊密聯(lián)系的一些習題,以鞏固課堂上所學的內(nèi)容,另外還可以通過學生所做作業(yè)的好壞來了解學生對課程內(nèi)容的掌握程度以及教師的教學效果。對作業(yè)中比較普遍出現(xiàn)的錯誤,我們都要有適當?shù)臅r間進行講解,更進一步地幫助學生鞏固所學知識。作業(yè)中表現(xiàn)出與眾不同的、新穎的程序設計方法和思路,也要對該學生進行表揚與講解,鼓勵學生在思維上、方法上尋找不同的特色,培養(yǎng)另辟新徑的有創(chuàng)意的學風。
每次上機前,老師都應該根據(jù)教學計劃,有系統(tǒng)地布置上機實習作業(yè),讓學生明確上機任務,編寫好上機調(diào)試的程序,使學生在每次上機實習中有所收獲。上機要求按所學內(nèi)容劃分層次:知識運用,創(chuàng)新設計和合作分析等。在上機過程中,對好的、有創(chuàng)新思維的程序,通過投影設備,讓大家分享這獨特的方法與內(nèi)容,不斷提升學生的競爭意識;對有代表性的問題,則通過講解與分析,讓學生避免上機調(diào)試過程的一般性錯誤。這種在實習過程中,老師對一些操作難點,分組集中演示的方法,也能起到事半功倍的效果。
一般在學習一章后,安排時間進行討論,老師提出一個主題或一些問題,學生分組進行商量后,擬定一個對策與方案,然后與其他組的同學進行討論,各方可提出解決問題的思路,也可以提出不同的方法,并且對提出新穎的策略一方給予肯定與表揚。通過討論,學生可以提高口頭表達和分析問題的能力,并在這過程中學到不同的解決問題的方法,取長補短,培養(yǎng)協(xié)作精神和團隊理念。
6網(wǎng)絡學習與自評系統(tǒng)的開放
在提高學習能力方面,可以網(wǎng)絡加強習題練習與程序設計的學習,我們聯(lián)絡了國外C語言網(wǎng)絡學習的網(wǎng)站:http://codelab.discoverips.com/codelab,提供網(wǎng)上開放環(huán)境及相關(guān)視頻鏈接:http://codelab.discoverips.com/codelab/intro,以此幫助學生進行網(wǎng)上練習與學習,同學們也可以共享國際最先進的教學資源,達到與國際接軌的教學水平。
同時,通過對我院的程序設計網(wǎng)站和教學網(wǎng)站,包括課程資料,實驗指導,網(wǎng)上答疑,知識自測等子系統(tǒng)的應用,學生在師生教與學的過程中,充分發(fā)揮了主觀能動性和創(chuàng)造性,在認知生成過程中融入了自己的創(chuàng)造性見解。
2007年,我校將“C語言程序設計”課程確定為校級精品課程建設項目,并取得了豐碩的成果。我們開創(chuàng)了網(wǎng)絡教學的多層次課程教學新模式,詳細修訂了教學大綱,細化了教學內(nèi)容;設計編寫了課堂教學樣本教案、實驗教案、課程設計樣本和試卷庫,建立了非計算機專業(yè)的C語言網(wǎng)上考試系統(tǒng)和模擬系統(tǒng),使教學與考試分離,教學手段和考核機制更加規(guī)范;制作了電子教案和輔助教學課件,提高了學生的學習興趣和教師的授課效果;提高了任課教師的整體素質(zhì),建立了青年教師培養(yǎng)機制和提高辦法;為其他課程起到了示范和積累教學經(jīng)驗的作用;全校非計算機專業(yè)學生的計算機等級考試通過率不斷提高。
7結(jié)論
通過對非計算機專業(yè)理工科“C語言程序設計”的教學改革,學生對如何運用計算機工具更好地解決本專業(yè)應用中所面臨的問題,在思維方式上、分析問題上、設計和編程上都有了充分的認識和積累。實踐證明,注重思維方式的訓練,講究動手能力的提高,充分調(diào)動學生的主動性,加強網(wǎng)絡上的訓練與考核,就可以培養(yǎng)出有扎實基礎,能靈活運用知識編程調(diào)試、解決實際問題的創(chuàng)新性學生。
參考文獻:
[1] 何岸. 論《C語言程序設計》課程的趣味教學[J]. 高等函授學報:自然科學版,2008(05):24-25.
[2] 蘇丹丹,孟祥銳,褚麗娟. 高校非計算機專業(yè)C語言程序設計課程四位一體教學模式研究[J]. 長春師范學院學報:人文社會科學版,2008(10):129-132.