公務(wù)員期刊網(wǎng) 精選范文 c程序設(shè)計范文

c程序設(shè)計精選(九篇)

前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的c程序設(shè)計主題范文,僅供參考,歡迎閱讀并收藏。

c程序設(shè)計

第1篇:c程序設(shè)計范文

原型開發(fā)是C語言程序設(shè)計學(xué)習(xí)支持系統(tǒng)的使用的主要理論基礎(chǔ),在開發(fā)該系統(tǒng)的初始階段,首先要有針對性的對使用的需要進行調(diào)查,以此為依據(jù)迅速的將一個系統(tǒng)原型制造出來并進行正常的運轉(zhuǎn)。使用者運用這個原型之后,提供使用建議,接下來就是對該原型進行有效的修補和完善,以新的結(jié)構(gòu)、數(shù)據(jù)和使用模型來建立起一個嶄新的原型。之后再交由使用者進行使用并反饋意見,經(jīng)過幾次的使用和反饋、修改,使用者與系統(tǒng)提供者能夠在使用上達到共識,使用過程中的種種誤會得以解除,使系統(tǒng)得到精準的內(nèi)涵,同時能夠到達使用者的滿意。經(jīng)過這一系列的反饋與修改,系統(tǒng)如果能夠達到使用者的要求,就可以被定義為實際生產(chǎn)運行系統(tǒng),如果達不到使用者的要求,則就會被舍棄進行重新開發(fā)。

2C語言程序設(shè)計學(xué)習(xí)支持系統(tǒng)的開發(fā)步驟

在對C語言程序設(shè)計學(xué)習(xí)支持系統(tǒng)進行開發(fā)的過程中,要嚴密結(jié)合《C語言程序設(shè)計》這門課程本身的獨特之處,并將該系統(tǒng)的開發(fā)思想融入其中,實現(xiàn)以下五個開發(fā)步驟:

2.1開發(fā)前分析

在進行系統(tǒng)開發(fā)之前,一定要結(jié)合實際情況做好各方面的調(diào)研,這是系統(tǒng)開發(fā)的必經(jīng)之路,也是基礎(chǔ)所在。首先進行開發(fā)前調(diào)研,能夠使有疑問的地方展現(xiàn)出來,才能給設(shè)計者提供一個確實可行的主題來開發(fā)此系統(tǒng)。

2.2開發(fā)前設(shè)計

經(jīng)過了開發(fā)前有效的分析和主題的確立,將使用者在使用過程中的需求通過調(diào)查了解清楚,將該系統(tǒng)的具體模塊加以確立,將原型設(shè)計出來,同時數(shù)據(jù)庫的基本情況也要得到有效的設(shè)計。

2.3C語言程序編程思路和語料分析

一個科學(xué)的推理路徑的確立需要有效分析C語言程序編程思路和語料,同時要仔細分析復(fù)雜程序中存在的編程思路。

2.4系統(tǒng)的開發(fā)

在開發(fā)系統(tǒng)的過程中,代碼的編寫、信息庫的開發(fā)、先進的技術(shù)的采用一系列程序后,才能使該系統(tǒng)的功能得以實現(xiàn)。

2.5試用與修改

將開發(fā)出來的系統(tǒng)交給使用者進行試用,使用者在使用過程中會發(fā)現(xiàn)各種各樣的不足,及時根據(jù)使用者的意見進行溝通和修改,最終形成一個完善的系統(tǒng)。

3C語言程序設(shè)計學(xué)習(xí)支持系統(tǒng)的功能結(jié)構(gòu)

3.1學(xué)習(xí)支持模塊

在計算機的使用過程中,使用者很多時候會遇到種種困難,例如在對編程或程序進行調(diào)試的過程中遇到的難題,自己無法解決時,學(xué)習(xí)支持模塊就能夠及時幫助使用者將問題進行指示并提供幫助。編程思路分析指導(dǎo)和程序調(diào)試指導(dǎo)是學(xué)習(xí)支持模塊的兩大組成部分。

3.1.1編譯診斷

使用者在使用計算機的過程中,正確的程序無法得到有效的調(diào)試的情況下,編譯診斷就能夠充分發(fā)揮自身作用,為使用者給予及時的幫助,使其了解發(fā)生錯誤的根本原因。它包括了上傳程序和診斷問題兩大部分。該系統(tǒng)是在使用者無法進行正確的編譯C語言源程序時啟用。使用者在啟用該系統(tǒng)是首先要將參數(shù)輸入進去,此時數(shù)據(jù)庫就能夠通過系統(tǒng)的查找提供錯誤的起因及解決方法,系統(tǒng)會逐步為使用者進行提示,再通過使用者輸入的問題作出判斷并給出解決方案。此時問題如果沒有得到解決,則說明不完善的數(shù)據(jù)庫存在于該系統(tǒng)中。

3.1.2編程思路分析

計算機使用者在進行上機編程的過程中,該系統(tǒng)能夠使思路不清晰的復(fù)雜程序編程進行分析,根據(jù)相近的程序編程思路給使用者提供指示。它能夠滿足使用者的即時需求。

3.2信息庫管理模塊

3.2.1用戶信息庫管理

使用者的使用權(quán)限、基本信息和上傳程序信息等的管理都是由該模塊來進行的。在使用計算機的過程中首先信息庫要將使用者的基本信息收入其中,使用者在每次登陸的過程中只有將基本信息輸入進去,通過系統(tǒng)的檢查之后才能夠進行使用。

3.2.2出錯知識信息庫管理

針對這一部分的管理,發(fā)生問題的知識信息,其中包括診斷、設(shè)問和編譯錯信息,C語言使用者可以采取管理維護措施。完善、刪除和添加等操作可以對出錯知識庫加以填充和完善。

3.2.3編程思路分析信息庫管理

C語言使用者可以針對這一部分采取維護管理,即維護管理復(fù)雜程序的編程思路分析信息,主要可以采取的手段有更改、刪除和添加等操作,不斷填充和完善此信息庫。

4結(jié)論

第2篇:c程序設(shè)計范文

(中國礦業(yè)大學(xué)(北京) 機電與信息工程學(xué)院,北京 100083)

摘要:分析C語言教學(xué)中存在的普遍問題,從教學(xué)內(nèi)容組織形式、教學(xué)方法以及考核方式等方面提出一系列有針對性的教學(xué)方法,指出這種教學(xué)方法能有效地提高學(xué)生的學(xué)習(xí)效率和質(zhì)量。

關(guān)鍵詞 :C語言程序設(shè)計;公共基礎(chǔ)課;教學(xué)方法

基金項目:北京高等學(xué)校青年英才計劃項目;煤炭資源與安全開采國家重點實驗室開放課題(SKLCRSM11KFB12)。

作者簡介:王振武,男,副教授,研究方向為數(shù)據(jù)挖掘、圖形圖像處理,wangzhenwu@126.com。

0 引言

為提高大學(xué)生利用計算機解決問題的能力,全國高校普遍為理工科專業(yè)的低年級學(xué)生開設(shè)了C語言程序設(shè)計這門必修的公共基礎(chǔ)課程。一方面,該課程是學(xué)生接觸的第一門程序設(shè)計類課程,其編程思維的養(yǎng)成是一個較長的過程;另一方面,該課程具有內(nèi)容繁多、知識點關(guān)聯(lián)性強、算法抽象、實踐性要求高等特點,學(xué)生在學(xué)習(xí)過程中易產(chǎn)生畏難心理,進而出現(xiàn)學(xué)習(xí)動力不足、積極性不高等問題。C語言程序設(shè)計是一門難學(xué)也難教的課程,目前在教學(xué)上普遍存在很多問題。文獻[1-4]對C語言程序設(shè)計的教學(xué)方法給出了建議,但都不夠系統(tǒng)和全面。

1 C語言程序設(shè)計教學(xué)方法研究

1.1 理論教學(xué)

對于大多數(shù)課程而言,從宏觀上將課程知識點及其關(guān)聯(lián)講授給學(xué)生非常必要,這便于學(xué)生更加系統(tǒng)深刻地理解所學(xué)內(nèi)容。筆者以文獻[5]作為教材講解C語言程序設(shè)計的知識點結(jié)構(gòu)。如圖1所示,知識點之間的關(guān)聯(lián)可以層層細化,教師首先從宏觀上給學(xué)生介紹C語言程序的整體組成結(jié)構(gòu)(如圖1-(a),然后針對圖1-(a)中一個源程序文件的組成成分舉例介紹,如圖1-(b)所示。在圖1-(b)中,教師對涉及的知識點進行歸類,共包含預(yù)處理命令、數(shù)據(jù)類型、運算符、語句和函數(shù)等5部分,然后圖1-(c)至圖1-(i)依次層層展開上述各類知識點的組成,逐步細化。

從宏觀上梳理C語言與程序設(shè)計課程的知識點是非常必要和重要的,這樣可以避免學(xué)生“只見樹木,不見森林”,最后只學(xué)到一堆零散的知識點,只有從宏觀上把握各個知識點在知識體系中的位置和作用,才能學(xué)得深、記得牢。

對于程序語言課程,如果僅僅介紹語法的運用,學(xué)生往往對知識點理解不深刻。我們在教學(xué)實踐中的體會是:在講解C語言語法的基礎(chǔ)上,適當(dāng)?shù)仄饰鼍幊陶Z言在計算機中的運行機制,會讓學(xué)生的理解更加透徹。因此,我們的課堂教學(xué)方法分為如下兩部分。

1)課件講解。

課件講解包括兩部分,即知識點要點總結(jié)和知識點運行機制剖析。知識點要點總結(jié)就是告訴學(xué)生該知識點如何使用;而知識點運行機制剖析則告訴學(xué)生該程序在計算機內(nèi)存中的執(zhí)行過程。由于絕大部分高校在開設(shè)C語言程序設(shè)計之前都會開設(shè)計算機文化基礎(chǔ)等課程,因此學(xué)生有足夠的計算機基礎(chǔ)知識來理解C語言程序的運行機制。

2)實例演示。

作為一門編程語言,C語言需要在實踐中理解和掌握,因此,課堂教學(xué)中,在具體的編程環(huán)境(如VC++6.0)下演示十分必要。通過在具體的軟件環(huán)境下編程,告訴學(xué)生應(yīng)該做什么和不應(yīng)該做什么,并總結(jié)該知識點的注意事項。相比傳統(tǒng)的脫離編程環(huán)境,只在PPT或黑板上進行板書的教學(xué)模式,該方法的教學(xué)效果要好得多。在課堂教學(xué)中,具體的教學(xué)步驟如下:①使用PPT或者板書列出該知識點的注意要點;②在編程環(huán)境(如VC++6.0)下演示該知識點的用法,給出正確的和錯誤的使用方法,并進行對比;③通過幻燈片動畫或flash動畫等形式演示程序在計算機內(nèi)存中的執(zhí)行過程,讓學(xué)生更加深刻地理解程序的運行機制。

3)教學(xué)難點與重點——“復(fù)合知識點”。

從C語言的教學(xué)內(nèi)容來講,數(shù)組、函數(shù)和指針是教學(xué)的重點章節(jié),這些章節(jié)之間相互關(guān)聯(lián)的部分又是重點中的難點,如數(shù)組和函數(shù)結(jié)合,數(shù)組名做函數(shù)參數(shù),數(shù)組和指針結(jié)合,指向數(shù)組的指針變量,函數(shù)和指針結(jié)合,指向函數(shù)的指針變量等。在教學(xué)過程中要反復(fù)強調(diào)各個知識點的注意事項,如果基本知識點能夠理解透徹,上述難點內(nèi)容也就迎刃而解了。

1.2 上機實踐教學(xué)

在實踐教學(xué)中,教師可以通過實際教學(xué)案例循序漸進地強化學(xué)生對C語言知識點的理解。上機實踐的教學(xué)內(nèi)容通常分為兩部分:基本知識點練習(xí)和綜合訓(xùn)練。首先通過基本知識點的練習(xí),讓學(xué)生掌握該知識點的使用,即鞏固課堂所學(xué)內(nèi)容;然后通過一個綜合性的大作業(yè),訓(xùn)練學(xué)生綜合應(yīng)用C語言知識點的能力,例如,通過編寫“學(xué)生課程成績統(tǒng)計系統(tǒng)”考查學(xué)生對數(shù)組、結(jié)構(gòu)體、指針、函數(shù)、文件等知識的綜合掌握情況。

對于初學(xué)編程語言的學(xué)生,往往沒有養(yǎng)成良好的編程習(xí)慣,出錯的可能性較大,而出錯之后進行調(diào)試又將耗費較長的時間,這勢必對學(xué)生的學(xué)習(xí)熱情產(chǎn)生負面影響。因此,一開始就給學(xué)生制定科學(xué)的編程步驟和規(guī)范,使學(xué)生養(yǎng)成良好的編程習(xí)慣,將大大減少程序出錯的可能。在C語言教學(xué)實踐中,我們總結(jié)了“五步編程法”:①定義變量,如“int a;”;②對變量進行初始化,如“a=0;”,對變量進行初始化操作是一種良好的編程習(xí)慣,可防止未對變量賦值而引起的隱性錯誤;③通過scanf語句賦值,如“scanf(“%d”,&a);”;④實現(xiàn)程序的主要算法,該部分是程序的主體;⑤通過printf語句將結(jié)果輸出在顯示器上,將結(jié)果輸出在顯示器上便于比較程序運行結(jié)果是否正確。

下面是按照上述五步編寫的一個完整的C語言程序,用來比較兩個整數(shù)的大小。按照上述五步進行編程,經(jīng)過一段時間的訓(xùn)練之后,學(xué)生出現(xiàn)語法錯誤的可能性大大降低,此時學(xué)生更多的精力將集中在程序算法的設(shè)計和實現(xiàn)上。

1.3 考試形式

對于C語言程序設(shè)計的考核方式,我們采用知識點考核和編程實踐相結(jié)合的方式。知識點考核偏重于C語言基本語法,用于檢驗學(xué)生對知識點的掌握是否全面,此項考核約占總成績的40%;編程實踐考核用于檢驗學(xué)生的實際動手能力,學(xué)生將在規(guī)定的時間內(nèi)根據(jù)題目在機器上編程,此項考核約占總成績的60%。為了實現(xiàn)知識點的考核,我們將考試與計算機二級C語言上機考試緊密結(jié)合,采用題庫平臺進行上機考試,學(xué)生直接在機器上答題并提交,知識點考核多采取客觀題,如填空題、程序修改題以及讀程序題等,編程題在實戰(zhàn)編程中考核。C語言程序設(shè)計課程的重要特點就是實踐性強,學(xué)習(xí)該課程的目的就是為了編寫程序。因此從考試的角度講,進行編程實踐是最合適的方式,通過上機編程來考核學(xué)生的學(xué)習(xí)情況也是最公正和客觀的方式。

2 C語言程序設(shè)計教學(xué)實踐結(jié)果分析

中國礦業(yè)大學(xué)(北京)每年都有40多個班級同時開設(shè)C語言程序設(shè)計課程,因此該課程教學(xué)質(zhì)量的高低將直接影響全校理工科學(xué)生對C語言的理解和掌握。中國礦業(yè)大學(xué)(北京)C語言程序設(shè)計教學(xué)團隊經(jīng)過長期的探索總結(jié)出一套行之有效的C語言教學(xué)方法,我們將上述方法在學(xué)校越崎實驗班中進行了試點。如圖2所示,采用上述教學(xué)法的越崎實驗班的C語言程序設(shè)計課程考試成績要明顯好于其他班級,其中90分以上的學(xué)生占10.7%,80分以上的學(xué)生占總?cè)藬?shù)的53.6%。另外,學(xué)生的學(xué)習(xí)積極性比采用上述方法前得到明顯提高,很多學(xué)生都對計算機編程產(chǎn)生了濃厚興趣,實踐證明我們提出的上述方法是行之有效的。

3 結(jié)語

中國礦業(yè)大學(xué)(北京)C語言程序設(shè)計教學(xué)團隊在長期的教學(xué)實踐中探索出的這套教學(xué)方法被證明是行之有效的,它能夠極大地提高學(xué)生的學(xué)習(xí)興趣,不但讓學(xué)生學(xué)得會、記得牢,而且能夠舉一反三,把該方法應(yīng)用到其他編程語言的學(xué)習(xí)中。長期的教學(xué)實踐使我們深刻地認識到,教學(xué)方法的好壞對提高教學(xué)質(zhì)量有直接和重要的影響。我們團隊提出的這套教學(xué)方法是對C語言程序設(shè)計教學(xué)方法的初步嘗試,希望能夠?qū)Ω叩仍盒語言程序設(shè)計教學(xué)方法的研究起到拋磚引玉的作用。

參考文獻:

[1] 謝中科. C語言程序設(shè)計的教學(xué)改革與實踐[J]. 理工高教研究, 2004,3(23): 96-97.

[2] 簡慧云. 提高C語言程序設(shè)計教學(xué)質(zhì)量的探討[J]. 理工高教研究, 2004, 6(23): 83-85.

[3] 王孝平, 董秀成, 謝維成.提高電器信息類專業(yè)學(xué)生C語言學(xué)習(xí)能力的教學(xué)方法探索[J]. 高等教育研究, 2012, 2(29): 37-40.

[4] 張麗華, 王冬星. 自主學(xué)習(xí)教學(xué)模式在C語言教學(xué)中的運用[J]. 黑龍江教育: 高教研究與評估, 2009(12): 91-92.

第3篇:c程序設(shè)計范文

【關(guān)鍵字】C語言 程序設(shè)計 教學(xué)探討

一、由實驗入手,培養(yǎng)學(xué)生的學(xué)習(xí)興趣

“C語言程序設(shè)計”課程往往是是學(xué)生所接觸的第一門計算機編程方面課程,所以很多老師采用理論教學(xué),學(xué)習(xí)完理論基礎(chǔ)后開始上機實踐,從介紹C語言的語法、算法開始,然后講程序的書寫,最后再學(xué)習(xí)程序的調(diào)試。這樣復(fù)雜且抽象,這就導(dǎo)致部分學(xué)生在上課初期就反映C語言難懂、難學(xué)。在教授C語言之初,教師應(yīng)注意教學(xué)的方式方法,要設(shè)法調(diào)動學(xué)生的學(xué)習(xí)興趣,讓他們先體驗C語言程序設(shè)計的樂趣。第一次上課最好定為實驗課。通過給出幾個簡單且學(xué)生熟悉的數(shù)學(xué)問題以及它們所對應(yīng)的C語言程序源代碼,邊介紹程序運行平臺的操作邊指導(dǎo)學(xué)生自己編輯調(diào)試,觀察運行結(jié)果。當(dāng)程序成功的輸出結(jié)果時,學(xué)生對這門課的學(xué)習(xí)興趣自然產(chǎn)生了。第一堂課通過實驗教學(xué),完成從數(shù)學(xué)邏輯到計算機語言程序的轉(zhuǎn)變,從而逐漸培養(yǎng)學(xué)生對程序設(shè)計的興趣。

二、教學(xué)中應(yīng)避免過分強調(diào)某些容易引起副作用的知識細節(jié)

由于C語言牽涉到的概念比較復(fù)雜,規(guī)則繁多,使用靈活,容易出錯,所以在C語言教學(xué)過程中,要遵循由易到難,抓主要矛盾的原則。介于C語言中有些細節(jié)牽涉到的副作用問題很多,教學(xué)時應(yīng)把教學(xué)精力放在最基本、最常用的那些部分,等學(xué)生有一定基礎(chǔ)后再深入到一些非主要的細節(jié)上。

三、階梯性舉例

為培養(yǎng)學(xué)生的學(xué)習(xí)興趣,大部分教師在C語言教學(xué)過程中,都不一味地按書本去講,而多舉實例來鞏固學(xué)生所學(xué)習(xí)的知識點。筆者在一年來的C語言教學(xué)實踐中采用階梯性舉例方式,取得了不錯的教學(xué)效果。階梯性舉例是指在課堂上把同類型問題歸結(jié)出來,讓學(xué)生從理解最簡單的例子開始,按照由易到難的順序依次理解所學(xué)知識點。

例如,在講述C語言中求若干數(shù)中最大值的知識點時,舉出:第一層問題:2個數(shù)的最大值求法,采用簡單if語句解決;第二層問題:3個數(shù)的最大值求法,采用簡單if-else復(fù)合語句解決;第三層問題:4個數(shù)的最大值求法,采用條件語句加上if語句解決;第四層問題:n個數(shù)(4個數(shù)以上)的最大值求法,采用一維數(shù)組比較方式解決。

這樣通過階梯性舉例教學(xué),學(xué)生對同類問題的解決有了比較深刻的認識。其主要特點是升級適度,符合學(xué)生的心態(tài),使學(xué)生有成就感,形成積極向上的學(xué)習(xí)態(tài)度。

四、強調(diào)程序語法規(guī)則,淡化程序算法設(shè)計思想

C語言語法規(guī)則繁多,且使用靈活,很容易出錯。這樣使得學(xué)生調(diào)試程序過程變得更難。因此,教師在C語言的教學(xué)過程中,一定要強調(diào)C語言中語法細節(jié)問題,把一些經(jīng)常會犯的錯誤總結(jié)出來。例如,在C語言里,賦值運算符是“=”,而“==”是關(guān)系運算符的相等比較,如if (a = 1),因為“=”是賦值操作,括號中的條件則會永遠為真,程序在編譯時不會提示有錯,可以編譯通過,但這明顯不是所要的結(jié)果。教師在授課時一定要強調(diào)語法細節(jié),避免出現(xiàn)不必要的錯誤。

五、傳授編程技巧,養(yǎng)成良好編程習(xí)慣,培養(yǎng)學(xué)生獨立調(diào)試程序能力

C語言是一門實踐性相當(dāng)強的課程。教學(xué)中,教師應(yīng)該傳授學(xué)生一些編程技巧,例如一些典型數(shù)學(xué)問題的運用等,讓學(xué)生學(xué)會如何熟練應(yīng)用C語言編程。由于C語言語句書寫靈活,教師在實驗課上應(yīng)重視學(xué)生書寫程序規(guī)范問題。例如,強調(diào)變量命名應(yīng)顧名思義,一行只書寫一條語句,每一小段程序要有中文注釋等。養(yǎng)成這些良好的編程規(guī)范對學(xué)生今后編程解決問題是很有幫助的。此外還應(yīng)引導(dǎo)學(xué)生多讀程序,多編程序,多上機調(diào)試程序。教師在實驗課中,應(yīng)該把一些常用的程序調(diào)試方法總結(jié)出來,教給學(xué)生。只有通過反復(fù)上機操作,自行找錯糾錯,才能對C語言有更深、更全面的認識和理解,逐步提高實際操作和學(xué)習(xí)的能力。

六、采取多元化的考核方式

為了保證課程的教學(xué)質(zhì)量考核是必不可缺的,可以采用多元化的考核方式,針對C語言中不同的知識類型采取不同的考試形式。如:考查C語言中常識性的知識可以采用閉卷考試形式;考查學(xué)生知識轉(zhuǎn)化能力、應(yīng)用能力等可以采用開卷考試形式;考查學(xué)生的程序調(diào)試、改錯等可以采用上機考試。

七、結(jié)束語

以上是筆者近年來學(xué)習(xí)和講授C語言課程中的一點心得體會,在教學(xué)過程中應(yīng)注意的問題還是有很多的,但是關(guān)鍵在于對 “教什么”和 “如何教”的合理組合,是否能調(diào)動學(xué)生學(xué)習(xí)的積極性。教學(xué)中,只要教師能理解C語言本身的特點并采取相應(yīng)的措施與教學(xué)手段,一定能取得理想的教學(xué)效果。

參考文獻:

[1]譚浩強. C程序設(shè)計(第三版)[M]. 清華大學(xué)出版社.2005

第4篇:c程序設(shè)計范文

關(guān)鍵詞 C語言程序設(shè)計;教學(xué)理念;教學(xué)方法

中圖分類號TP39 文獻標識碼A 文章編號 1674-6708(2010)25-0198-02

C語言程序設(shè)計課程是我校理工類各專業(yè)必修的計算機程序設(shè)計基礎(chǔ)課,是一門實踐性很強的課程,學(xué)習(xí)者必須通過大量的編程練習(xí),在實踐中掌握語言知識,培養(yǎng)程序設(shè)計的基本能力,并逐步理解和掌握程序設(shè)計的思想和方法,培養(yǎng)學(xué)生編程興趣和編程能力是我們教師的責(zé)任,也是該課程的目標。

現(xiàn)行的教學(xué)中存在一些問題:一是按照從基礎(chǔ)知識講起,然后講解語句語法,最后應(yīng)用舉例;二是教材內(nèi)容安排不盡合理,語法規(guī)則編寫過細[1];三是教學(xué)理念、教學(xué)方法和考核方法比較老套,不適應(yīng)當(dāng)今教學(xué)的發(fā)展。為了讓學(xué)生學(xué)好這門課程,提高動手能力,必須進行教學(xué)改革,探索改革的思路和方法。

1 轉(zhuǎn)變教學(xué)理念

傳統(tǒng)的“蓋房子”教學(xué)理念,強調(diào)必須先打好地基再砌墻,即強調(diào)先打好基礎(chǔ),然后再進行實際編程。這種教學(xué)理念教師往往先介紹概念和定義,再舉例進行講解,這種教學(xué)方法死板而枯燥,由于課程的教學(xué)重點往往放在了語言語法知識點上,而語言的語法是相當(dāng)煩瑣而復(fù)雜的,這種教學(xué)方法缺少應(yīng)用型、趣味性的案例,使學(xué)生一步步地陷入到紛多繁雜而索然乏味的語法學(xué)習(xí)當(dāng)中,很難充分調(diào)動學(xué)生的積極性和啟發(fā)學(xué)生思維。

研究自然界中“樹”的生長規(guī)律可以發(fā)現(xiàn),“樹”并不是先長成發(fā)達的根系,再長樹干和枝葉,樹的根系、樹干和枝葉是同步生長的。“樹”的生長過程應(yīng)用到教學(xué)上,就是基礎(chǔ)語法和編程的教學(xué)同步進行,甚至先教編程技能再教理論,在不斷地實踐中掌握技能,在技能學(xué)習(xí)中提高基礎(chǔ)理論。

2 教材編寫思路

從課程的教學(xué)目標出發(fā)制定教材的編寫思路,采用實例引導(dǎo)法、歸納教學(xué)法和任務(wù)教學(xué)法編寫教材,在編寫內(nèi)容上拋棄過多的語法細節(jié)和非通用的或?qū)嶋H用途很少的語言特性,算法描述力求通俗易懂。理論教材以實例引導(dǎo)法思想為主導(dǎo),介紹概念、語句格式、語句用法和算法描述。用歸納教學(xué)法思想編寫多個函數(shù)中相同參數(shù)的使用問題。實驗教材以任務(wù)教學(xué)法思想,確定每一個實驗的任務(wù)、內(nèi)容、要求和思考題。

3 教學(xué)方法探索

3.1實例引導(dǎo)法[2]

一切從實際例子出發(fā),引導(dǎo)學(xué)生理解程序中的概念和算法,例如:在講解變量、運算符和表達式時,先通過一個具體實例程序介紹,如:求圓面積和周長,指出程序中臨時存放數(shù)據(jù)的單元和公式中的運算符號,然后再引出變量、運算符和表達式進一步講解。又如:在講解指針的概念時,變量的“間接訪問”,可以通過“辦公桌抽屜”實例講解:一個辦公桌有A,B兩個抽屜,每個抽屜有一把鑰匙,可以把B抽屜的鑰匙放在A抽屜中,若要打開B抽屜,就需要先打開A抽屜,取出B鑰匙,再打開B抽屜,取出B抽屜中的物品,引出“間接訪問”。這樣學(xué)生很快就能理解變量、運算符、表達式和指針的概念并掌握它們的用法。

3.2歸納教學(xué)法[3]

C語言的定義、概念、語法規(guī)則有許多相似的地方,在講解C語言函數(shù)庫中函數(shù)時,有些函數(shù)參數(shù)的類型格式符是一樣的,在講解一個函數(shù)中類型格式符后,對其它函數(shù)的類型格式符可以進行歸納,不講或簡單的提一下即可,例如:printf()和scanf()函數(shù)中的類型格式符“%d、%f、%c”等,它們的語法規(guī)則是一樣的。通過歸納教學(xué),學(xué)生只要掌握其中一個,另一個自然就會使用了,免去了重復(fù)講授,提高了教學(xué)效率。

3.3任務(wù)教學(xué)法

C語言程序設(shè)計課程必須采用實驗教學(xué)環(huán)節(jié)才能把理論算法加以驗證。采用任務(wù)教學(xué)法思想編寫實驗教材,適度增加實用性和自主性實驗任務(wù)內(nèi)容。每章有具體任務(wù)實例講解,可引導(dǎo)學(xué)生完成每章設(shè)置的實驗任務(wù)題目。讓學(xué)生自主選擇實驗時間,每次實驗課前要布置實驗任務(wù),學(xué)生根據(jù)任務(wù),自學(xué)和實驗任務(wù)有關(guān)的知識,完成實驗任務(wù)的編程。這種教學(xué)方法能夠有效地培養(yǎng)學(xué)生的自學(xué)能力, 激發(fā)學(xué)生學(xué)習(xí)的積極性、主動性和創(chuàng)造性, 鍛煉他們利用所學(xué)的知識解決實際問題的能力。

3.4網(wǎng)絡(luò)教學(xué)法

依托先進完備的校園網(wǎng)絡(luò)環(huán)境,建立C語言程序設(shè)計網(wǎng)絡(luò)教學(xué)平臺??梢园颜n程教學(xué)大綱、教案、多媒體課件、教學(xué)錄像、綜合實例庫、習(xí)題庫、學(xué)習(xí)參考資料、模擬考試系統(tǒng)等教學(xué)資源全部上網(wǎng),通過這個網(wǎng)絡(luò)教學(xué)平臺,學(xué)生可以瀏覽、下載學(xué)習(xí)資料,也可以提交電子作業(yè),在線提問題,老師在線輔導(dǎo)和答疑等,為學(xué)生自主學(xué)習(xí)提供強大的網(wǎng)絡(luò)支持。

4 師資隊伍建設(shè)

成立C語言程序設(shè)計課程組,建立結(jié)構(gòu)合理的教師梯隊。由具有豐富教學(xué)經(jīng)驗和科研能力的教授任組長,激勵教師努力鉆研教學(xué)內(nèi)容和教學(xué)方法,拓寬知識結(jié)構(gòu)。同時,針對組內(nèi)教師的不同特點,課程組制定了切實可行的目標,并定期進行集體備課,相互探討,號召組內(nèi)教師積極參與教學(xué)研究和科研開發(fā),為提高教學(xué)水平打下良好的基礎(chǔ)。建立主講教師之間互相聽課和評課制度,定期召開學(xué)生座談會和課程質(zhì)量分析會,并針對反饋意見提出改進教學(xué)的具體措施,從而規(guī)范教學(xué)的各個環(huán)節(jié),為更好地提高教學(xué)質(zhì)量奠定良好的基礎(chǔ)。

5 考核評價體系

對課程考核評價體系進行改革,突出過程考核和編程能力考核,促進學(xué)生實際動手能力和創(chuàng)新能力的提高。例如:總評成績=理論課出勤成績+作業(yè)成績+實驗出勤成績+實驗完成成績+期末考試成績。期末考試采用《C語言程序設(shè)計機考系統(tǒng)》,機考系統(tǒng)為每個考生隨機出題,體現(xiàn)了公平考試的原則。改革后的考核評價體系主要體現(xiàn)了考核形式多樣化、考核標準合理化以及考核試卷個性化三大特征。

6 結(jié)論

鑒于目前C語言程序設(shè)計課程教學(xué)中存在的一些問題,文章通過改革探索,一切從培養(yǎng)學(xué)生編程能力的角度出發(fā),按著新的教學(xué)理念對教材編寫思路和教學(xué)方法進行了探索,提出了教學(xué)改革的具體措施。希望對C語言程序設(shè)計課程的教學(xué)改革有所借鑒。

參考文獻

[1]譚浩強.C程序設(shè)計[M].3版.北京:清華大學(xué)出版社, 2005.

第5篇:c程序設(shè)計范文

本書作者具有多年C++面向?qū)ο蟪绦蛟O(shè)計課程的教學(xué)經(jīng)驗。根據(jù)教學(xué)過程中反映出的主要問題,作者在參考大量已有教材和相關(guān)資料的基礎(chǔ)上,對書中的內(nèi)容進行合理組合與取舍,力求澄清概念上的誤區(qū),使內(nèi)容反映學(xué)科發(fā)展、涵蓋最新特征,通過具體實例使讀者盡快掌握C++語言的語法知識,把重點放在程序設(shè)計方法上。為使學(xué)生了解C++標準庫、掌握標準模板庫的精華,特別安排一章內(nèi)容,介紹C++標準庫的構(gòu)成。另外通過閱讀本書,讀者還可以對過程化編程、面向?qū)ο缶幊毯头盒途幊痰染幊趟枷胗兴私狻?/p>

與同類教材相比,本書具有如下特色:

1) 雖然在最后一章對C++標準庫進行了較為詳細的介紹,但是在第1章安排一節(jié)對標準庫進行簡單介紹,并通過一個具體例子告訴讀者如何使用標準庫編寫C++程序,以吸引讀者進一步學(xué)習(xí)。

2) 對C++支持的豐富多彩的數(shù)據(jù)類型,進行了比較合理的分類,以方便讀者在閱讀過程中理清思路,盡早掌握類(class)的概念。本書將C++支持的數(shù)據(jù)類型分為三大類:基本數(shù)據(jù)類型、自定義類型(抽象類型)和擴展類型。

其中基本數(shù)據(jù)類型是C++預(yù)定義的數(shù)據(jù)類型,包括布爾型(bool)、字符型(char)、整型(int)、浮點型(float, double)、空類型(void)??梢岳眯揎椃麑绢愋瓦M行擴展。例如,signed、unsigned可用來修飾字符型和整型,long可用來修飾整型和雙精度浮點型,short可以修飾整型。

用戶根據(jù)需要,將數(shù)據(jù)與操作數(shù)據(jù)的算法封裝在一起所建立的類型,稱為用戶自定義類型或者抽象數(shù)據(jù)類型,也就是C++中的類,枚舉、聯(lián)合、結(jié)構(gòu)可以看作類的特殊情況。

在已定義的數(shù)據(jù)類型基礎(chǔ)上,結(jié)合某些修飾符(如[]、*、&、())或者關(guān)鍵字(如const、static),可以得到擴展數(shù)據(jù)類型,如數(shù)組、指針、引用等。

3) 將類和對象(object)的概念提前介紹,從基本數(shù)據(jù)類型到結(jié)構(gòu)再到類,使讀者盡快建立起“類”這種抽象數(shù)據(jù)類型的概念。在介紹對象的概念時,不是用過于抽象的語言,而是具體到C++語言及計算機存儲情況進行介紹。

C++中的對象,強調(diào)的是分配好的、具體的一塊內(nèi)存區(qū)域。每個對象都與一個特定的數(shù)據(jù)類型相關(guān)聯(lián),這個類型決定了內(nèi)存的大小、布局、能夠存儲在該區(qū)域的值的范圍以及可以對該區(qū)域進行哪些操作等。

4)C++在創(chuàng)建對象時,系統(tǒng)要為對象分配一定的存儲區(qū)域,這些存儲區(qū)包括靜態(tài)存儲區(qū)、棧區(qū)和堆區(qū)。本書對不同存儲類型對象的存儲特性進行了較為詳細的介紹,并通過具體實例進行驗證。

靜態(tài)存儲區(qū)(static storage)。全局對象、靜態(tài)對象和函數(shù)一般存儲于該區(qū)域,存儲區(qū)是在程序開始執(zhí)行之前分配的,這些存儲區(qū)在程序的整個運行期間都存在。

棧區(qū)(stack)。程序執(zhí)行期間進行的內(nèi)存分配。在執(zhí)行函數(shù)時,函數(shù)內(nèi)一般局部變量的存儲區(qū)都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲區(qū)被自動釋放。

堆區(qū)(heap),也稱為動態(tài)存儲區(qū)。程序在運行的時候用運算符new申請內(nèi)存,由程序員自己負責(zé)何時用運算符delete釋放內(nèi)存。

5) 內(nèi)容結(jié)構(gòu)安排上,將函數(shù)與函數(shù)模板、類與類模板分別放在同一章介紹,使得內(nèi)容前后銜接密切,便于讀者由簡單到復(fù)雜、逐步掌握標準C++的精髓。

6) 與同類大部分中文教材相比,增加了指向成員的指針、成員函數(shù)地址獲取、動態(tài)綁定機制、函數(shù)對象、模版重載與專門化等內(nèi)容,加強了對C++標準庫特別是對標準模板庫的介紹。

7) 本書的例題和習(xí)題選材大部分面向?qū)嶋H問題,題目具有一定的難度和趣味性,讀者學(xué)完此書從內(nèi)心里會感到有很大收獲。

8) 使用本書不需要有C語言基礎(chǔ)。

第6篇:c程序設(shè)計范文

1.1教學(xué)只注重課程的講解,不注重教學(xué)過程的質(zhì)量控制

傳統(tǒng)的教學(xué)以課程內(nèi)容的講解為主,通過講解變量、循環(huán)、數(shù)組、指針等內(nèi)容,并結(jié)合一定的教學(xué)案例來推進教學(xué)過程的實施。這種傳統(tǒng)的教學(xué)方法沒有考慮到本階段學(xué)生的特點,往往造成教學(xué)效果差,教學(xué)質(zhì)量難以控制。C語言程序設(shè)計課程在大一新生中開設(shè),許多學(xué)生缺乏程序的思維和一定的動手能力,學(xué)生難以跟上教學(xué)進度,造成一定數(shù)量的學(xué)生對學(xué)習(xí)語言失去興趣,從而影響整個專業(yè)課程的學(xué)習(xí)。

1.2教學(xué)過程缺乏有效的互動

C語言程序設(shè)計的教學(xué)過程中主要使用PPT來講解,案例程序也通過PPT展示,甚至包括程序運行結(jié)果也以截圖的形式在PPT中顯示。雖然在PPT中可以添加很多的動作,動態(tài)地標注、顯示程序的運行過程,但這種方法以投影為中心,缺少與學(xué)生交流的環(huán)節(jié),加上程序類課程相對枯燥,以致學(xué)生難以集中精力做到全程聽課。

1.3代碼編寫規(guī)范強調(diào)不夠

編碼規(guī)范是軟件專業(yè)學(xué)生必須要牢記并遵守的,良好的編碼規(guī)范不僅能體現(xiàn)軟件從業(yè)人員的素質(zhì),而且使代碼有更好的可讀性,更容易被別人所理解和交流。該課程的講解主要以編寫簡單邏輯來解決一些日常問題、數(shù)學(xué)問題,編程的環(huán)節(jié)側(cè)重于算法的實現(xiàn),往往忽略了編碼規(guī)范

。1.4考試以筆試為主,難以檢驗學(xué)生的動手能力

傳統(tǒng)的C語言程序設(shè)計課程考試以筆試為主,考查學(xué)生對C語言基本的語法、簡單邏輯編寫的掌握情況。這種考試機制脫離了程序語言的實現(xiàn)介質(zhì),即計算機。雖然在試卷中也可以用編程題目來考查學(xué)生的編程能力,但在紙上寫程序與在計算機上寫程序有本質(zhì)的不同。在紙上寫程序只需要寫出大致的邏輯即可,而在計算機上寫程序不僅要寫出正確的代碼,而且需要調(diào)試和跟蹤代碼,最終保證程序的正確執(zhí)行。因此,筆試并不能很好地檢驗學(xué)生的動手實踐能力。

2教學(xué)改革措施

2.1加強教學(xué)過程的質(zhì)量控制

C語言程序設(shè)計課程是一門實踐性強的課程,僅通過做一些常規(guī)練習(xí)無法達到教學(xué)質(zhì)量監(jiān)控的目的。為了更好地控制教學(xué)質(zhì)量,需要從學(xué)生語法規(guī)則的掌握到動手編程這一系列環(huán)節(jié)進行掌握和跟蹤。為此,我們開發(fā)了一套在線作業(yè)系統(tǒng)用于教學(xué)質(zhì)量的控制。⑴作業(yè)題庫的建設(shè)C語言程序設(shè)計的任課教師根據(jù)自己的經(jīng)驗和理解來搜集和設(shè)計C語言題目,包括基礎(chǔ)知識的題目和編程實踐的題目?;A(chǔ)知識的題目主要用于C語言知識點的訓(xùn)練,包括填空題、選擇題、判斷題和程序閱讀題;編程實踐的題目主要用于編程能力的訓(xùn)練,這類題目需要學(xué)生對問題進行正確分析、設(shè)計算法、編程并運行,最終得到結(jié)果。教師在給出題目時,需要提供測試數(shù)據(jù)和對應(yīng)的結(jié)果。⑵作業(yè)的布置與批改教師可以根據(jù)每次課的教學(xué)大綱、課程內(nèi)容,從作業(yè)題庫中選擇一些填空題、選擇題、程序閱讀題、編程題來建立課程作業(yè)供學(xué)生在課外完成。學(xué)生在規(guī)定的時間之內(nèi)完成作業(yè)后提交作業(yè),系統(tǒng)根據(jù)教師預(yù)先設(shè)定的答案進行自動批改,形成每個學(xué)生的作業(yè)記錄。如果學(xué)生在規(guī)定的時間之內(nèi)沒有完成作業(yè)并提交則失去本次作業(yè)的記錄。教師通過查閱部分學(xué)生的解答來掌握學(xué)生對相關(guān)知識的掌握情況,特別是需要整理學(xué)生所犯的共性問題,并有針對性的開設(shè)習(xí)題課進行解答。⑶配套政策為了使學(xué)生重視平時作業(yè)的完成,課程的期末成績將考查平時作業(yè)的情況。如果學(xué)生沒有提交作業(yè)的次數(shù)在30%以上,則平時成績計0分,其他情況按照提交作業(yè)次數(shù)和作業(yè)得分根據(jù)一定的公式進行計算得到學(xué)生的平時成績。這種策略的主要目的在于督促學(xué)生跟著教學(xué)進度進行學(xué)習(xí)和訓(xùn)練,不至于嚴重滯后于教學(xué)進度而失去學(xué)習(xí)的興趣,可有力地保證教學(xué)質(zhì)量。

2.2加強教學(xué)過程中的互動

課堂教學(xué)應(yīng)該在一定程度上脫離PPT的教學(xué),這樣才可以調(diào)動學(xué)生的積極性。加強師生之間的互動可以結(jié)合本課程特點進行。在講解課程知識點后,配以適合的案例進行教學(xué),這些案例都是需要編寫C語言程序來實現(xiàn)的。此時,編程實現(xiàn)的環(huán)節(jié)不要通過PPT展示,而要在教師的計算機上動手編寫并運行得到結(jié)果,這樣可以改變教學(xué)節(jié)奏,吸引學(xué)生的注意力。C語言課程案例程序的一大特點是代碼量少,一般在20~30行之間,適宜在課堂上完成。教師在編寫程序的過程中,可以向?qū)W生展示編程中需要注意的問題,同時,進一步講解C語言的語法和基本知識點。教師在編寫程序的過程中難免會犯小錯誤,或者是有針對性的故意犯一些學(xué)生經(jīng)常犯的錯誤,在編程后的編譯運行時會有錯誤報出,這時對于提高師生交互是很好的機會。從學(xué)生的角度來說,他們的編程往往會有很多錯誤,編譯時會出現(xiàn)大量的錯誤提示。此時,學(xué)生可能就比較迷茫,不知道如何定位并解決錯誤。因此,當(dāng)老師也出現(xiàn)錯誤,而且是學(xué)生經(jīng)常遇到的錯誤時,學(xué)生往往是比較興奮的,希望能知道老師是如何處理錯誤的。從老師的角度來說,真實地反映程序編寫、編譯的過程,展示程序錯誤的發(fā)現(xiàn)、定位、解決的方法,能夠更快地提高學(xué)生的動手實踐能力。面對錯誤,教師還可以引導(dǎo)學(xué)生參與程序錯誤的解決,消除學(xué)生對程序錯誤的恐懼感。在解決程序錯誤時可以參考以下步驟。首先,教師要把所有錯誤信息讀出來給學(xué)生聽,因為一般編譯出來的錯誤是用英文寫的,而且有些單詞學(xué)生不熟悉,因此,老師需要指出錯誤是變量重定義、變量沒有定義、還是其他錯誤;然后,指出核心錯誤的位置,教師要告訴學(xué)生程序報出很多錯誤信息往往是由一個小錯誤導(dǎo)致的,因此,老師要指導(dǎo)學(xué)生學(xué)會確定引起其他錯誤的核心錯誤;最后,在源程序中找到錯誤的位置,修改錯誤并重新編譯,得出運算結(jié)果。這個錯誤處理過程是針對簡單語法錯誤的處理方法,如果程序中出現(xiàn)了邏輯錯誤,即程序編譯正確,但運行結(jié)果不是預(yù)期結(jié)果,此時,錯誤的處理方法更為復(fù)雜,可能需要重新檢查程序邏輯,并使用編譯環(huán)境進行程序中可疑變量的監(jiān)視,通過觀察變量中的數(shù)值在程序運行過程的變化來確定錯誤。通過實地編寫程序并調(diào)試,發(fā)現(xiàn)和解決程序錯誤,最終得到正確的計算結(jié)果,不僅能使同學(xué)更好地掌握程序編寫的方法,而且還能更好地與學(xué)生進行互動,提高教學(xué)效果。

2.3強調(diào)代碼規(guī)范

有些老師在教學(xué)的過程別是演示程序時,注重于解決問題而忽視代碼規(guī)范,甚至是自己寫程序也是這樣,沒有代碼規(guī)范。雖然遵守代碼規(guī)范并不能改善程序的性能,但遵守代碼規(guī)范能夠使程序具有更好的可讀性、可維護性,是軟件代碼實施過程中軟件從業(yè)人員良好素質(zhì)的重要體現(xiàn)。改善代碼規(guī)范可以從以下幾個方面進行。⑴適當(dāng)?shù)目s進每一行代碼不要頂格書寫,而要根據(jù)情況縮進。具有良好縮進格式的代碼不僅能少犯語法錯誤,還能夠使閱讀者快速掌握程序內(nèi)容。⑵適當(dāng)?shù)目招泻瘮?shù)與函數(shù)之間增加必要的空行,使得程序構(gòu)成一目了然。⑶適當(dāng)增加代碼注釋程序中函數(shù)的開頭最好加上注釋說明該函數(shù)的作用、參數(shù)的意義,在函數(shù)中重要邏輯的部分加入注釋說明該邏輯的主要思路、算法。⑷代碼塊要用花括號界定代碼塊盡量使用花括號來界定代碼范圍,即使代碼塊里只有一行代碼,這樣可以提高代碼的可閱讀性,防止閱讀者誤解程序。⑸變量和函數(shù)的命名盡量使用多個字母來命名變量和函數(shù),使得程序閱讀者通過名稱即可大致了解變量的意義、函數(shù)的作用,提高程序的可讀性。通過編碼規(guī)范的強調(diào)和實施,使學(xué)生認識到軟件開發(fā)的專業(yè)素質(zhì),對于提高學(xué)生的專業(yè)素養(yǎng)具有潛移默化的作用。

2.4上機考試

上機考試采用在線考試的方式進行,考試環(huán)節(jié)包括如下幾個部分。⑴試題庫的建設(shè)C語言程序設(shè)計的任課教師負責(zé)組建上機試題庫,試題庫中的題目都是編程的題目,用于考核學(xué)生的編程能力。教師在組建試題庫時,標明每個試題的知識點和大致難度,并提供測試案例和對應(yīng)的答案。題庫負責(zé)人負責(zé)查看、重新編輯每個題目,從題庫整體的角度更新每個試題的難度。⑵上機考試的實施為單次考試準備7個知識點和1個綜合知識點的題目,教師在考試之前為每個知識點選定難度相當(dāng)?shù)?個題目。每個學(xué)生登錄系統(tǒng)后,系統(tǒng)自動建立考卷,具體策略是從為每個知識點準備的5個題目中隨機選擇1題組成一個考卷,因此,該考卷包含8個題目,這8個考題要求學(xué)生在4小時內(nèi)完成編程??荚嚂r間一般定為上午8:00至中午12:00點。學(xué)生根據(jù)隨機組成的考卷題目進行解答,為每道題目編程求解,并在學(xué)生機上利用示例測試用例檢驗代碼的正確性。如果在本地沒有通過檢測,則進行邏輯檢查,修改程序;如果本地通過測試,學(xué)生需要將代碼提交到服務(wù)器。服務(wù)器接收到代碼后,自動調(diào)用教師提供的更多的測試用例來檢測程序運行結(jié)果是否與預(yù)先設(shè)置的結(jié)果匹配,進行代碼邏輯黑盒測試。如果全部通過,則說明學(xué)生的編程邏輯是正確的,此時將學(xué)生成績記錄中對應(yīng)的題目標為通過,并回顯“通過”給學(xué)生,學(xué)生繼續(xù)做下一道題目;如果其中有的用例運行結(jié)果不正確,則返回“錯誤”給學(xué)生,學(xué)生可以接著做本道題目,也可以選做另外一道題目,同時,在學(xué)生成績記錄中對應(yīng)的題目標為錯誤。教師在考試現(xiàn)場調(diào)取并查看所有學(xué)生成績記錄信息,如果發(fā)現(xiàn)異常信息,如在很短的時間內(nèi)完成了過多的題目,則可能學(xué)生在作弊。此時,根據(jù)異常學(xué)生信息中的IP地址找到該學(xué)生,進行現(xiàn)場查證,如果確認為作弊則立即處理。如果學(xué)生正確完成了8道題中的5道題,則學(xué)生通過上機測試,否則,學(xué)生沒有通過上機測試。為了減輕學(xué)生的壓力,上機考試可以分兩次進行,如果第一次沒有通過上機考試,還可以組織學(xué)生進行第二次考試,取這兩次考試的較高分作為學(xué)生成績。

3結(jié)束語

第7篇:c程序設(shè)計范文

關(guān)鍵詞:C語言程序設(shè)計;計算思維;抽象;自動化

美國卡內(nèi)基?梅隆大學(xué)的周以真教授在2006年系統(tǒng)地提出了計算思維的概念[1]:計算思維指的是運用計算機科學(xué)的基礎(chǔ)概念進行問題求解、系統(tǒng)設(shè)計以及人類行為理解等一系列思維活動。其后,陳國良院士和李廉教授歸納出三種典型的科學(xué)思維,即以觀察和歸納為特征的實證思維,以推理和演繹為特征的邏輯思維,以抽象和自動化為特征的計算思維[2-3]。計算思維是計算機類課程的主要思維方式。

有關(guān)計算思維在程序設(shè)計類課程中的研究,已經(jīng)引起很多學(xué)者的興趣[4-6]。這些研究雖然從案例設(shè)計和項目過程等角度做了有益探索,但卻忽略了對計算思維本質(zhì)的討論。C語言程序設(shè)計課程中,我們采用李廉教授的觀點,即計算思維的本質(zhì)是抽象和自動化。抽象指的是使用符號系統(tǒng)對問題進行精確而嚴格的描述;自動化指的是對這些符號系統(tǒng)施加一定操作并按照某種結(jié)構(gòu)自動地執(zhí)行。

一、C語言程序中的計算思維本質(zhì)之一:抽象

有些C語言程序設(shè)計課程教學(xué)的一開始就提倡使用案例教學(xué)。這雖然能夠使得學(xué)生可以迅速進入實際編程環(huán)節(jié)并建立直觀感性認識,但案例教學(xué)由于往往出現(xiàn)“程序就是編程工具”的工具論現(xiàn)象,導(dǎo)致出現(xiàn)“只知其然,而不知其所以然”的學(xué)習(xí)后果,不利于學(xué)生的后續(xù)發(fā)展。

對于C語言程序來說,抽象指的是使用符號系統(tǒng)對求解問題進行精確而嚴格的描述,抽象的過程就是對實際系統(tǒng)建模的過程。實際上,程序是用來描述現(xiàn)實生活中某個實際存在的或不存在的系統(tǒng)。程序就是對系統(tǒng)的抽象。系統(tǒng)之所以存在,是因為系統(tǒng)具有一些關(guān)鍵特征和核心功能。程序中對系統(tǒng)特征進行抽象的就是操作對象,對系統(tǒng)功能進行抽象的就是函數(shù)。系統(tǒng)功能往往有多個且存在著復(fù)雜的調(diào)用關(guān)系。例如,求一個函數(shù)定積分的功能必然涉及求函數(shù)在某一個點的取值功能,如果該函數(shù)比較復(fù)雜且含有正弦、余弦和正切等三角函數(shù),還需要繼續(xù)調(diào)用求這些三角函數(shù)值的功能,形成多級調(diào)用;有時函數(shù)執(zhí)行過程中還需要調(diào)用本身,形成遞歸調(diào)用。

C語言程序中的操作對象分為變量和常量。常量是對系統(tǒng)中的取值不變的特征進行抽象,如圓的圓周率;而變量是對系統(tǒng)中取值可以改變的特征進行抽象,如圓的半徑。不管是哪類特征,都會有一個取值范圍以及所允許的操作。例如,對于課程成績,其取值范圍一般是從0~100,而允許對該特征進行的操作可以是加法和減法等算術(shù)操作以及大于和小于等比較運算;而對于課程名字這一特征,就不能進行加法和減法這樣的算術(shù)操作。C語言程序中用來對特征的取值范圍及允許的操作進行抽象的概念是數(shù)據(jù)類型。C語言程序中的抽象模塊如表1所示。

現(xiàn)實生活中,經(jīng)常需要描述多個相同數(shù)據(jù)類型的一個系統(tǒng)特征,如所有同學(xué)的高等數(shù)學(xué)課程的成績,可以使用一維數(shù)組來進行描述;而描述多個不同數(shù)據(jù)類型的多個系統(tǒng)特征,如學(xué)生的姓名、學(xué)生的身高和學(xué)生的年齡等,可以使用結(jié)構(gòu)體來進行描述;如果要描述多個相同數(shù)據(jù)類型的多個系統(tǒng)特征,如全班所有同學(xué)的高等數(shù)學(xué)和大學(xué)英語課程的成績,則可以使用二維數(shù)組來進行描述。

表1 C語言程序中的抽象模塊

C語言程序中的元素 現(xiàn)實生活中的元素

程序 系統(tǒng)

函數(shù) 系統(tǒng)功能

函數(shù)調(diào)用 功能調(diào)用

數(shù)據(jù)類型 常量 系統(tǒng)特征

變量

一維數(shù)組 多個相同類型的一個系統(tǒng)特征

多維數(shù)組 多個相同類型的多個系統(tǒng)特征

結(jié)構(gòu)體 多個不同類型的多個系統(tǒng)特征

鏈表或結(jié)構(gòu)體數(shù)組 多個不同類型的多個系統(tǒng)特征的集合

二、C語言程序中的計算思維本質(zhì)之二:自動化

計算思維的另一個本質(zhì)是自動化。自動化指的是對符號系統(tǒng)建模的各種元素施加一些操作,并按照某種順序的或非順序的結(jié)構(gòu)自動地執(zhí)行。對于C語言程序來說,自動化體現(xiàn)為函數(shù)內(nèi)部的語句在EIP寄存器加法操作支持下順序自動地執(zhí)行以及函數(shù)之間的調(diào)用在內(nèi)存堆棧區(qū)支持下自動地進行跳轉(zhuǎn)。EIP是32位機的指令指針寄存器,用來存放下一條要執(zhí)行的指令的地址。EIP寄存器中增加值的大小需要根據(jù)實際存儲指令的大小來確定。

對于C語言程序來說,自動化過程中執(zhí)行的對象是語句。不同類型的語句,執(zhí)行的結(jié)果和效用是不一樣的。例如,一個變量定義語句“int a”的執(zhí)行結(jié)果是在內(nèi)存中分配4個字節(jié)的空間,一個返回語句“return t”的執(zhí)行結(jié)果是將程序的執(zhí)行流程返回到主調(diào)函數(shù)中。這些語句的組合構(gòu)成一個個函數(shù),程序的執(zhí)行就是在某個函數(shù)之中順序自動地執(zhí)行以及在多個函數(shù)之間來回自動地跳轉(zhuǎn)。

既然程序的執(zhí)行過程是在某個函數(shù)之中順序自動地執(zhí)行以及在多個函數(shù)之間來回自動地跳轉(zhuǎn),這種自動執(zhí)行需要有相應(yīng)的計算機軟件和硬件基礎(chǔ)。支持程序自動執(zhí)行的軟件基礎(chǔ)是操作系統(tǒng),支持程序自動執(zhí)行的硬件基礎(chǔ)是計算機硬件結(jié)構(gòu),即馮?諾依曼原理的程序存儲思想。當(dāng)用戶點擊執(zhí)行按鈕后,程序被提交給操作系統(tǒng)來執(zhí)行,可以不需要人為干預(yù)。此后,程序在操作系統(tǒng)中以進程的方式出現(xiàn)。操作系統(tǒng)協(xié)調(diào)內(nèi)存、中央處理器和外存等硬件資源執(zhí)行該進程。

函數(shù)中的語句之所以能夠一個接著一個順序地執(zhí)行,主要依賴于EIP寄存器的加法操作。當(dāng)一條指令執(zhí)行完成之后,EIP寄存器在原有內(nèi)容的基礎(chǔ)上再加上當(dāng)前指令所占存儲空間大小,其內(nèi)容便是下一條指令的地址。如此進行下去,就可以一個一個順序地執(zhí)行函數(shù)中的語句。

程序控制之所以能夠在函數(shù)之間進行跳轉(zhuǎn),主要依賴于操作系統(tǒng)管理的內(nèi)存堆棧區(qū)。內(nèi)存堆棧區(qū)是滿足“后進先出”操作約束的存儲區(qū)。當(dāng)操作系統(tǒng)開始執(zhí)行用戶提交的C語言程序時,首先開始從main函數(shù)執(zhí)行,main函數(shù)的相關(guān)局部變量被壓入棧中;當(dāng)執(zhí)行到被調(diào)函數(shù)時,被調(diào)函數(shù)的相關(guān)局部變量再次被壓入棧中,程序控制轉(zhuǎn)移到被調(diào)函數(shù),且操作只能對當(dāng)前棧頂進行,而此時棧頂存儲的就是被調(diào)函數(shù)的相關(guān)局部變量;而當(dāng)被調(diào)函數(shù)執(zhí)行結(jié)束時,被調(diào)函數(shù)的相關(guān)局部變量從棧中退出,程序控制轉(zhuǎn)移到main函數(shù)繼續(xù)執(zhí)行,此時棧頂存儲的是main函數(shù)的相關(guān)局部變量;當(dāng)main函數(shù)執(zhí)行結(jié)束時,main函數(shù)的局部變量從棧中退出,整個程序執(zhí)行結(jié)束。下列程序執(zhí)行時的堆棧變化過程示意如圖1所示。

#include "stdio.h"

double s(double r)

{ return r*r; }

int main()

{ double r;

double area;

r=2.0;

area= s(r);

printf("area=%f",area);

return 0;

}

圖1 函數(shù)調(diào)用過程的堆棧變化

自動化過程實際反映了C語言程序解決實際問題的算法流程。算法是解決某一問題的執(zhí)行步驟。一般而言,使用C語言進行編程之前,需要進行相應(yīng)的算法設(shè)計,即構(gòu)思解決實際問題的思路和步驟。一旦這些步驟變成C語言程序語句并形成一個完整的程序,就可以提交給操作系統(tǒng)自動地執(zhí)行這些步驟,這正是計算機解決問題的高效率的體現(xiàn)。

三、以計算思維為導(dǎo)向的C語言程序設(shè)計課程教學(xué)

1.教學(xué)內(nèi)容

針對計算思維的抽象和自動化兩大本質(zhì)特征,C語言程序設(shè)計課程的教學(xué)內(nèi)容需要在原有的基礎(chǔ)上特別強調(diào)一些針對性的觀點。例如,C語言中的各種數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)可以完成實際系統(tǒng)中各種不同元素的抽象,一個函數(shù)之中的順序語句自動執(zhí)行的基礎(chǔ)是EIP寄存器的加法操作,多個函數(shù)之間的來回自動跳轉(zhuǎn)的基礎(chǔ)是內(nèi)存堆棧區(qū)的支持等。具體強調(diào)的觀點如表2所示。

表2 教學(xué)內(nèi)容中需要強調(diào)的觀點

C語言程序設(shè)計

課程的內(nèi)容 強調(diào)的觀點

C語言概述 程序是對系統(tǒng)的抽象

抽象過程就是C語言的建模過程

自動化過程反映C語言的算法流程

數(shù)據(jù)類型、表達式和語句 操作對象是對系統(tǒng)特征的抽象

語句是系統(tǒng)自動化執(zhí)行的基本對象

控制結(jié)構(gòu) 控制結(jié)構(gòu)是問題求解步驟的抽象

函數(shù)中順序語句自動執(zhí)行的基礎(chǔ)是EIP寄存器的加法操作

數(shù)組 一維數(shù)組是對多個相同類型的一個系統(tǒng)特征的抽象,多維數(shù)組是對多個相同類型的多個系統(tǒng)特征的抽象

函數(shù) 函數(shù)是對系統(tǒng)功能的抽象

函數(shù)調(diào)用是功能調(diào)用的抽象

函數(shù)之間的來回自動跳轉(zhuǎn)的基礎(chǔ)是內(nèi)存堆棧區(qū)的支持

結(jié)構(gòu)體 結(jié)構(gòu)體是對多個不同類型的多個系統(tǒng)特征的抽象

指針 鏈表是多個不同類型的多個系統(tǒng)特征集合的抽象

2.教學(xué)方式

計算思維的本質(zhì)是抽象和自動化。C語言程

序設(shè)計課程一般都是面向大一新生,理解抽象和自動化進而培養(yǎng)計算思維,對于還處在計算機學(xué)習(xí)起點的學(xué)生來說是比較困難的。

對于C語言程序來說,抽象過程實際就是運用C語言中各種符號對所描述系統(tǒng)的建模過程,培養(yǎng)抽象的計算思維方式就是培養(yǎng)使用C語言描述實際系統(tǒng)的思維過程。因此,可以通過啟發(fā)式教學(xué)方式引導(dǎo)學(xué)生思考如何使用C語言中的符號來描述系統(tǒng)??梢蕴岢鲞@樣的一系列問題:C語言中如何描述一個人的身高?如何綜合描述一個人的姓名、年齡和籍貫等?如何描述一個班中所有學(xué)生的高等數(shù)學(xué)成績?如何描述各路公共汽車站的網(wǎng)狀信息?通過啟發(fā)學(xué)生對這些問題的思考,讓學(xué)生所學(xué)的C語言中的各種符號不再“虛幻”,讓學(xué)生真正理解這些符號實際是一種建模元素,每種符號有著其特別的抽象描述能力。

對于C語言程序來說,理解自動化過程必須借助一些形象化的手段。例如,借助于Visual C++ 6.0平臺的單步調(diào)試功能,可以形象地演示上述C語言程序的自動化過程,如表3所示。

表3 C語言程序執(zhí)行過程中EIP和ESP寄存器內(nèi)容的變化

斷點 EIP寄存器內(nèi)容 ESP寄存器內(nèi)容 當(dāng)前棧頂函數(shù)

r=2.0;語句 00401068 0013FF24 main函數(shù)

area=s(r);語句 00401076 0013FF24 main函數(shù)

return r*r;語句 00401020 0013FF18 s函數(shù)

printf("area=%f",area);語句 00401089 0013FF24 main函數(shù)

從表3可以看出,隨著EIP寄存器內(nèi)容的增加,main函數(shù)中的語句順序自動執(zhí)行,即從語句“r=2.0”到語句“area=s(r)”再到語句“printf("area=%f",area)”。ESP寄存器是另一個重要的寄存器,它始終存放棧頂?shù)牡刂?。隨著main函數(shù)對s函數(shù)的調(diào)用開始,棧頂工作函數(shù)由main函數(shù)變化為s函數(shù);當(dāng)s函數(shù)調(diào)用結(jié)束后,棧頂工作函數(shù)又由s函數(shù)回到main函數(shù)。

3.考核內(nèi)容

針對C語言程序設(shè)計課程的計算思維培養(yǎng)要求,考核方式上必須從以考查語言的語法知識為主轉(zhuǎn)變?yōu)橐钥疾閷W(xué)生的系統(tǒng)建模能力和算法設(shè)計能力為主。

系統(tǒng)建模能力的考查主要針對計算思維的抽象特征。例如,可以給出各種系統(tǒng)特征,考查學(xué)生使用數(shù)據(jù)類型進行描述的能力。

算法設(shè)計能力的考查主要針對計算思維的自動化特征。當(dāng)然,C語言程序設(shè)計課程中涉及的都是一些如迭代、枚舉和排序等簡單算法。可將這些算法封裝成各種函數(shù)來進行調(diào)用,以考查函數(shù)中順序語句的執(zhí)行以及函數(shù)間的伴隨參數(shù)傳遞的跳轉(zhuǎn)來理解自動化過程。因此,必須以簡單算

法設(shè)計和函數(shù)調(diào)用為重點考核內(nèi)容,突出對函數(shù)接口設(shè)計和算法流程設(shè)計的考核。

參考文獻:

[1] Jeannette M. Wing. Computational Thinking[J]. Communications of the ACM, 2006, 49(3):33-35.

[2] 陳國良. 計算思維[J]. 中國計算機學(xué)會通訊,2012,8(1):31-34.

[3] 李廉. 計算思維――概念與挑戰(zhàn)[J]. 中國大學(xué)教學(xué),2012(1):7-12.

[4] 張耀文. 基于計算思維的程序設(shè)計課程案例教學(xué)法研究[J]. 重慶電子工程職業(yè)學(xué)院學(xué)報,2012,21(3):149-150.

[5] 吳紹兵. 計算思維和程序設(shè)計能力的培養(yǎng)[J]. 計算機教育,2011(16):11-14.

第8篇:c程序設(shè)計范文

關(guān)鍵詞:結(jié)構(gòu)化程序設(shè)計;順序結(jié)構(gòu);選擇結(jié)構(gòu);循環(huán)結(jié)構(gòu);算法

當(dāng)前,計算機技術(shù)飛速發(fā)展,程序設(shè)計技術(shù)已從結(jié)構(gòu)化程序設(shè)計技術(shù)向面向?qū)ο蟪绦蛟O(shè)計技術(shù)過渡,對一個規(guī)模較大的應(yīng)用程序,總體框架是由面向?qū)ο蟪绦蛟O(shè)計構(gòu)搭而成,而在局部實現(xiàn)時仍需采用結(jié)構(gòu)化程序設(shè)計技術(shù)。C語言是一種很好的結(jié)構(gòu)化程序設(shè)計語言,因此,筆者論述了C中的的結(jié)構(gòu)化程序設(shè)計的方法。

結(jié)構(gòu)化程序設(shè)計(STRUCTURED PROGRAMING,簡稱SP)的概念是由荷蘭學(xué)者E·W.DUKSTRA等人在20世紀60年代后期提出的,是以模塊化設(shè)計為中心,將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計,也就是將—個大的計算任務(wù)劃分為一個個比較小的任務(wù),這些小任務(wù)均由函數(shù)來完成。而函數(shù)既可以是C的標準庫函數(shù)。也可以是自定義函數(shù)。在C中,一個具備一定規(guī)模的C程序往往是由多個函數(shù)組成,其中必有一個名為main的主函數(shù),由main來調(diào)用其他函數(shù),必要的話,其他函數(shù)還可以調(diào)用另外的函數(shù)。同一函數(shù)可以被一個或多個函數(shù)調(diào)用一次或多次。模塊的獨立性還為擴充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因為我們可以充分利用現(xiàn)有的模塊作積木式的擴展。

結(jié)構(gòu)化程序設(shè)計的思想是一個程序的任何邏輯問題,均可用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這3種基本結(jié)構(gòu)來描述。順序結(jié)構(gòu)的程序流程是按語句的書寫順序依次執(zhí)行;選擇結(jié)構(gòu)是對給定條件進行判斷,根據(jù)判斷結(jié)果決定執(zhí)行兩分支中的一個分支或多分支中的一個分支;循環(huán)結(jié)構(gòu)是在給定條件成立的情況下,反復(fù)執(zhí)行某個程序段。實現(xiàn)這些程序流程的語句都是流程控制語句。流程控制語句在程序設(shè)計中起著重要的作用,通過3種基本控制結(jié)構(gòu)使結(jié)構(gòu)化程序具有唯一的人口和出口,沒有死循環(huán),而且程序的靜態(tài)形式與動態(tài)執(zhí)行形式之間具有良好的對應(yīng)關(guān)系。在C語言中,有4種語句是順序執(zhí)行的:①空語句,光有一個分號“;”作為語句結(jié)束符,它表示什么也不做。②表達式語句,表達式后面加一個分號,表達式語句主要有賦值語句、自加減運算符構(gòu)成的語句和逗號表達式語句。③函數(shù)調(diào)用語句,它是由一個函數(shù)調(diào)用加上一個分號組成的。④復(fù)合語句,由“{”和“}”把一些變量說明和語句組合放在一起,又稱為語句塊。選擇語句有if語句和switch語句。循環(huán)語句有for,while和do-while語句以及一些輔助流程轉(zhuǎn)向語句如continue,break,goto等。順序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元,由這3種結(jié)構(gòu)經(jīng)過反復(fù)嵌套構(gòu)成的程序稱為結(jié)構(gòu)化程序,也就是說,結(jié)構(gòu)化程序是由上述3種基本結(jié)構(gòu)組成的。但如果在編程過程中無限制地使用轉(zhuǎn)移語句(goto),會使程序的控制流程強制性地向前或向后跳轉(zhuǎn)而導(dǎo)致程序的流程無序可循,結(jié)構(gòu)雜亂無章。結(jié)構(gòu)化構(gòu)造減少了程序的復(fù)雜性,提高了可靠性、可測試性和可維護性,使用少數(shù)的基本結(jié)構(gòu),就可使程序邏輯結(jié)構(gòu)清晰,易讀易懂,并且容易驗證程序的正確性。對—個初學(xué)計算機語言的人來說。最重要的就是要有正確的程序流程概念,不僅要懂得而且要靈活應(yīng)用。由此可見,用結(jié)構(gòu)化方法設(shè)計的結(jié)構(gòu)是清晰的,有利于編寫出結(jié)構(gòu)良好的程序。因此。結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用goto語句。將程序設(shè)計針對的問題進行分解,直到分解到對應(yīng)于一個個功能更簡單,又獨立的模塊,每個模塊再分解到上述3種基本程序結(jié)構(gòu)。

第9篇:c程序設(shè)計范文

關(guān)鍵詞:C語言;程序設(shè)計;經(jīng)典教材;計算機教育

中圖分類號:G642 文獻標識碼:B

1引言

只要人們提到學(xué)習(xí)C語言,都會不由自主地和譚浩強三個字聯(lián)系在一起,特別是20世紀80年代以后的學(xué)生,都是在譚老師的《BASIC程序設(shè)計》、《FORTRAN語言》、《C程序設(shè)計》的指引下走過來的。特別是20世紀的90年代中后期,全國非計算機專業(yè)學(xué)生的計算機應(yīng)用能力等級考試,將C語言納入到考試的范疇,C語言便進入大學(xué)計算機公共基礎(chǔ)課的講堂,譚老師的《C程序設(shè)計》因為系統(tǒng)性強、通俗易懂、例題豐富,并且實用性強,很適合初學(xué)者,瞬時風(fēng)靡各大高校,成為許多理工科專業(yè)學(xué)生書包中的必備書籍。多年的一線教學(xué)體會,我始終推薦該書為使用教材或主要參考書。

2適用各類學(xué)習(xí)對象

筆者從20世紀90年代中期開始講授C語言,至今已有15年,授課對象有計算機專業(yè)和非計算機專業(yè)的學(xué)生,也有大專生和社會上成人教育的函授學(xué)員,使用的教材主要是譚老師的《C程序設(shè)計》,從第一版到第二版、第三版,同學(xué)們都覺得這本書好,從沒有學(xué)生對選用這本教材提出異議。事實上,國內(nèi)許多高校的非計算機專業(yè)用譚老師的書作為“C語言程序設(shè)計”課的教材,而且許多高校的計算機專業(yè)同樣也用譚教授的書作為“C語言程序設(shè)計”課的教材,自學(xué)C語言程序設(shè)計的讀者更是不約而同地選擇譚教授的書作為叩開C語言大門的入門書。

最初學(xué)習(xí)C語言的主要是計算機專業(yè)學(xué)生,而且大都是作為第二語言開設(shè)的,后來才逐漸演變成作為第一語言,而部分非計算機專業(yè)的學(xué)生也有這種歷程。當(dāng)C語言作為第一語言開設(shè)后,《C程序設(shè)計》的第二版便增加了“算法”,并安排在第二章(C語言概述之后),使學(xué)生首先掌握常用算法(如求一批數(shù)的累加和、累乘積,判斷某年是否為閏年,判斷一個大于等于3的正整數(shù)是否為素數(shù)等算法)的編程思想,而后再講解具體的語法定義、規(guī)則,以及算法的具體實現(xiàn),將程序語言的講解與算法的分析有機地結(jié)合起來,同時知識的講解有螺旋式上升的趨勢,非常符合初學(xué)者的認知規(guī)律,受到各種學(xué)習(xí)對象的歡迎。記得有一年上成教的課,當(dāng)時成教教材管理部門選用了其他教材并發(fā)給了學(xué)生,筆者在第一次上課時便將譚老師的《C程序設(shè)計》作為主要的參考書推薦給了學(xué)生。上了兩次課后,許多同學(xué)反映:“老師,我們這本教材沒有譚浩強那本講得清楚”,筆者后來向成教學(xué)院的有關(guān)人員提出下一屆更換教材的建議,以后使用的教材都是譚老師的《C程序設(shè)計》這本教材。

3內(nèi)容全面、結(jié)構(gòu)清晰

《C程序設(shè)計》一書涵蓋了程序設(shè)計基礎(chǔ)知識和C語言程序設(shè)計的全部內(nèi)容,并介紹了大量常用算法。在C語言中,數(shù)據(jù)類型豐富,運算符也比較多,程序設(shè)計自由度大,這些都給初學(xué)者帶來了較大的學(xué)習(xí)難度。本書從C語言的結(jié)構(gòu)開始,從最簡單的輸出“This is a C program.”、“求兩數(shù)之和”、“求兩個數(shù)中最大者”實例出發(fā),將基本的程序結(jié)構(gòu)中應(yīng)至少有一個輸出、最簡單的變量定義和使用、C程序是由函數(shù)構(gòu)成的知識點講解得非常清晰,只要懂點英文,就能讀懂程序。進而介紹具體的數(shù)據(jù)類型、運算符、表達式、基本的輸入輸出函數(shù),使初學(xué)者很快就能編寫出比較簡單的程序,看到自己的學(xué)習(xí)效果,很有成就感。而后開始介紹稍復(fù)雜的程序結(jié)構(gòu)(選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))和數(shù)據(jù)類型(數(shù)組),并結(jié)合圖例講解和實現(xiàn)常用的算法。在函數(shù)一章通過利用前面的講過的實例復(fù)習(xí)已學(xué)的知識點,同時也降低了學(xué)習(xí)函數(shù)的難度。在讀者會編寫基本的C程序后,才開始介紹C語言的特色部分,如編譯預(yù)處理、指針、結(jié)構(gòu)體、共同體、位運算文件等,將C語言程序設(shè)計的知識點全部展開,難度逐漸地增加,而沒有采取在講解函數(shù)之前先講解指針的做法。這種循序漸進、螺旋式的教學(xué)內(nèi)容安排非常符合認知規(guī)律。

4深入淺出、講解透徹

大學(xué)教材是供人們使用的,它既用于老師教,又供學(xué)生自學(xué),也可作為有關(guān)人員的參考用書。它不但要強調(diào)基礎(chǔ)知識和系統(tǒng)的完整性,而且也能使人通過自學(xué)就可能進入一個新的發(fā)展領(lǐng)域。這就要求一本好的教材既要內(nèi)容完整,同時又必須能夠做到深入淺出,講解透徹?!禖程序設(shè)計》一書各個章節(jié)的編寫通過提出問題、分析問題、解決問題,然后再歸納總結(jié)的方法,將復(fù)雜難懂的抽象概念與實際應(yīng)用實例結(jié)合,與形象的比喻科學(xué)地結(jié)合,使其變得容易理解,并與計算機的基礎(chǔ)知識相結(jié)合。如在講解遞歸算法時先用求人的年齡問題來講解遞推和回歸的過程,而后才講解經(jīng)典的漢諾塔問題,同時給出了詳盡的數(shù)學(xué)公式推導(dǎo)過程,并配以圖例說明。又如在介紹指針概念中“間接訪問”一詞時,使用了生動的比喻:“為安全起見,將A鑰匙放到另一抽屜B中鎖起來,若果需要打開A抽屜,就需要先找出B鑰匙,打開B抽屜,取出A鑰匙,再打開A抽屜,取出A抽屜中之物,這就是‘間接訪問’?!边@使讀者不僅理解了“間接訪問”概念,也加深了對指針概念的理解。再如在介紹變量的存儲類型時、介紹指針時都對計算機的存儲管理作了清楚的論述。

該書的內(nèi)容重點突出,難點分散,對C語言中最基本和常用的部分進行了詳細的分析和講解,凡是涉及的內(nèi)容,都講得非常透徹、詳盡。

5例題難易適度、習(xí)題豐富、教學(xué)資料齊全

多年的課堂教學(xué)過程中,總能體會到本書中例題和習(xí)題選擇的難度非常適宜,如講解循環(huán)結(jié)構(gòu)時選用計算“1+2+…+100”作為入門的例題,習(xí)題中便有計算“1!+2!+…+ 20!”之和,既有相似之處又有新舊知識(循環(huán)結(jié)構(gòu)的使用和前面介紹的數(shù)據(jù)類型及其表示范圍)的結(jié)合。另外本書通過豐富的習(xí)題來豐富常用的實用算法。如在循環(huán)一章的習(xí)題中將迭代法和二分法引入,通過求方程的根來理解其算法含義和實現(xiàn)過程,在數(shù)組一章的習(xí)題中引入了“篩選法”、“選擇排序法”、“楊輝三角形”等。

計算機程序設(shè)計是一門實踐性很強的課程,學(xué)習(xí)時不僅僅需要選擇合適的例題,還需要編寫足夠代碼量的程序,僅靠閱讀教教材或聽課是不可能掌握編程技能的??傆腥吮г拐f:“課堂上聽得很明白,就是課下編程困難”,而學(xué)習(xí)程序設(shè)計最重要的環(huán)節(jié)就是實踐?!禖程序設(shè)計》一書中每章都附有大量的各種類型習(xí)題,并且有配套的習(xí)題解答,這不僅有利于學(xué)生開闊視野,豐富知識,而且有益于復(fù)習(xí)、鞏固、加深理解和掌握課上所學(xué)的知識,提高他們的學(xué)習(xí)興趣,培養(yǎng)自學(xué)能力,也便于教師設(shè)計實驗課的教學(xué)內(nèi)容。近年來譚老師講授《C程序設(shè)計》的教學(xué)錄像也已成為很多教師講課前的觀摩學(xué)習(xí)課程。

6強調(diào)應(yīng)用意識和應(yīng)用技能

教材要起一種引導(dǎo)作用,要強調(diào)應(yīng)用意識和應(yīng)用技巧,應(yīng)特別注意學(xué)科間的聯(lián)系?!禖程序設(shè)計》一書將實際生活中數(shù)學(xué)問題的解決算法、工程應(yīng)用的常用數(shù)值分析方法均作為本書的實例和習(xí)題,這不僅有助于培養(yǎng)學(xué)生的邏輯思維,而且也有助于學(xué)生分析問題和解決問題的應(yīng)用能力。正因如此,初學(xué)程序設(shè)計的學(xué)生可以達到熟練運用C語言進行小規(guī)模應(yīng)用開發(fā)的能力,許多非計算機專業(yè)的人士通過自學(xué)這本教材,打下了程序設(shè)計的基礎(chǔ),后來便使用C語言開發(fā)出本專業(yè)的應(yīng)用軟件。

7結(jié)論

大學(xué)教材非常重要。譚老師為人們寫下了諸如《BASIC語言》、《FORTRAN語言》、《C程序設(shè)計》等深受廣大教師和學(xué)生歡迎的經(jīng)典之作。譚老師的《C程序設(shè)計》一書對我國普及C語言程序設(shè)計起了很大的推動作用,他為計算機教育的普及不懈地努力,取得了巨大的成就,功不可沒,真正做到了“桃李滿天下”。

參考文獻: