c語言程序設計范例6篇

前言:中文期刊網精心挑選了c語言程序設計范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。

c語言程序設計范文1

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

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

關鍵詞 :C語言程序設計;公共基礎課;教學方法

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

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

0 引言

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

1 C語言程序設計教學方法研究

1.1 理論教學

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

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

對于程序語言課程,如果僅僅介紹語法的運用,學生往往對知識點理解不深刻。我們在教學實踐中的體會是:在講解C語言語法的基礎上,適當地剖析編程語言在計算機中的運行機制,會讓學生的理解更加透徹。因此,我們的課堂教學方法分為如下兩部分。

1)課件講解。

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

2)實例演示。

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

3)教學難點與重點——“復合知識點”。

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

1.2 上機實踐教學

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

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

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

1.3 考試形式

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

2 C語言程序設計教學實踐結果分析

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

3 結語

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

參考文獻:

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

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

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

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

c語言程序設計范文2

關鍵詞:C語言程序設計實踐教學;課時統一化;小組競賽;網絡平臺

中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2015)51-0224-02

在21世紀信息技術時代,大學生不能只滿足于會用辦公軟件。為了迎接新世紀的挑戰,無論計算機專業還是非計算機專業的學生,都應當學習C程序設計課程,并且把它當作進一步學習與應用計算機的基礎。C語言作為一種程序設計語言,它功能強大、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高低級語言的許多優點和特點,適用于編寫系統軟件,又能方便地用來編寫應用軟件[1,2]。因此,C語言程序設計作為第一門計算機語言教學顯得尤為重要,且實際上它也日益受到各個高校的重視。然而,當今大學生在學習這門課程的過程中卻出現了各種問題,如學不會、不想學、聽不懂,這些問題逐漸地惡性循環,致使這門課程沒有完全發揮出價值,形同虛設。所以,我們亟需大家探討并發現問題,解決問題。

一、實踐教學現狀

C語言程序設計作為一門計算機基礎教育課程,已經在各高等院校開設,現各高校普遍采用板書或多媒體講解概念、語法、教材,然后讓學生上機操作,這種方式存在弊端,致使大部分學生只能讀懂程序而不會編寫程序,甚至一部分學生變成程序代碼的“搬運工”,與我們的教學目的背道而馳。根據目前的教學狀況,C語言程序設計的教學存在以下一些問題。

1.學生的參與度不夠。在傳統的教學中,教師采用的是全板書形式,如今,多媒體普及,教師又改為全多媒體教學[3]。實際上,多媒體就是節省板書時間,但依然是教師照本宣科地講,學生一頭霧水地聽這種陳舊的模式。一味地采取“填鴨式”教學,從頭講到尾這樣被動的課堂,學生就是一名觀眾,沒有參與到學習與思考中來,正因如此,學生注意力不集中成為一件高頻率事件,等學生再集中注意力回歸課堂,會發現對教師的話已經是不知所云,所以為了保證學生高效率聽課,一定要讓學生參與其中。

2.理論與實踐脫節?,F在,大多數高校普遍存在的一個問題是課時總量不夠,時間安排也不適當,表現在師資力量匱乏,教學班級多,教學任務繁重。以筆者所在的學校為例,一個學期理論課共42個授課課時,26個上機實驗課時,加上各種節假日,上課的時間少之更少。C語言程序設計是長期的、逐步深入的教學過程,依照現在的教學任務設置,教師要想按照考試大綱要求進行講解,就只能加快教學進度,顧不上對實踐內容進行詳細講解,結果導致學生的實際操作能力偏低,但若全部進行機房實踐,又不利于學生掌握基本理論。而且,為了教學課程的安排,通常學生的上機實驗課會比理論課晚兩天左右,甚至周一理論課,周五才安排上機操作,不能將實驗與課堂教學環節很好地進行連貫,導致理論與實踐的嚴重脫節[4]。

3.實踐與應用太少。學以致用是學生學習的最終要求,我們的教學目的是讓學生可以運用所學的知識讀懂程序、編寫程序,然后去解決實際問題,而現在高校的大部分學生做不到這一點。目前,多數高校的學生學習C語言程序設計這門課程的學習方法非常不到位,即在課堂上,學生僅僅翻開教材,盯著講臺聽課;在上機課上,學生也只是按照課本照搬程序。除此之外,在課余時間,學生們不鞏固復習教材,也不看程序,更不會自己編寫代碼。如此下去,他們的實踐能力不僅不會提高,反而極大地降低了他們對C語言程序設計的學習興趣。

4.實踐未得到及時反饋。由于課時緊張,教師不能將學生上交的實踐報告或上機操作的實驗結果及時地反饋給學生本人,以致于學生不能在第一時間對自己的錯誤或疑惑有進一步的了解與解決,造成學生盲目地學習,甚至不學習。但等到課堂上,教師也不能占用大部分時間去點評學生的實踐結果而耽誤課程的進展。另外,新的知識點講完就會有新的練習內容,如此積累,工作量繁雜,學生對之前編程的細節也會慢慢忘記,更重要的是程度較落后的學生會出現知識的缺陷,長此下去,學習困難的打擊會使學生的學習興趣急劇下降。

二、教學方法

要解決上述問題,我們就要緊緊抓住學生的實踐鍛煉,重視實踐教學,明確實踐教學方法,才能使我們的教學目標達到事半功倍的效果。

1.課時統一化,采用多種方式考察。既然由于課時原因,全理論授課與全上機操作導致學生的參與度不夠,理論與實踐脫節,我們可以統一課時,即我們的C語言程序設計課程全部在機房授課。如今,機房設施完備,軟硬件已足夠完善,我們可以選擇在機房授課,利用機房的多媒體與黑板,講解理論知識,遇到需要學生動手的地方,可以讓學生及時地動手操作。教師完全不用擔心在授課時,學生玩電腦游戲影響聽課,我們可以遠程控制桌面,實時控制學生的電腦,進行各種操作,提高學生的聽課效率。同時,系統還可以自動統計出勤率,比點名更加快捷,具有實時的監督作用。另外,教師再也不用擔心學生由于近視問題而看不清多媒體屏幕。其次,這種機房授課以多種方式對學生學習狀況進行考察,例如提出問題法、糾錯獎勵法、學生演示法、小測試法……提出問題法是指教師提出一些重點或難點問題,由學生來回答;糾錯獎勵法指教師給出某個算法或程序讓學生去發現其中的錯誤并糾正,最快找出的學生給予小小的獎勵,如一張精美的書簽、一句鼓勵的話語等;學生演示法指的是找一名學生到教師端編寫一個小程序或某個算法中的易錯點,以此找出學生的通病,引起大家的注意;小測試法是在課堂最后十分鐘左右給學生發放一份提前寫好的試題,兩到三題即可,可以按照計算機二級等級考試模式編寫,學生提交,系統直接核對,省時省力。這樣多種方式進行考察,真實地反映學生對該節課的掌握程度,也讓教師真正了解學生的學習情況,以便進一步開展教學工作。

2.小組競賽法,模擬各種編程競賽。為了激發學生的學習興趣,增強學生的動手實踐能力,可以采用小組競賽的方法來加強學生對C語言課程的學習。整個班級可以自由分組,兩到三個人一組,教師布置相應的編程題目,要求學生在規定的時間內上交,由教師來評分,選出程序最清晰、代碼更簡練的一組。在學期中后期,學生擁有一定的基礎和能力的情況下,可使其參與評選過程,通過評選人員相互交流討論,在提高被評學生編程能力的同時使參評學生也有所提高,即所謂的“教學相長”。除了進行班級內小組競賽,還可以進行班級之間、專業之間集體賽。依然是先在班級中進行初選,再經過層層選拔與淘汰,指出各方的優缺點,最終評出優秀、良好等。獎項不是重點,關鍵在于讓學生都參與到實踐活動中來。通過以上各種形式的競賽,可以提升學生對C語言的學習興趣和編程能力。

3.網絡交流法,建立多種網絡平臺。伴隨網絡化時代的到來,教師可以通過多種網絡平臺與學生交流、互動,及時指出并解決問題。如教師可以給每個班建立一個QQ討論組、微信群,如果學生在課下時間有難題或者對課堂上的知識點有疑問,可以在第一時間通過網絡交流平臺和教師取得聯系,以此使得“教學課堂”在時間和地域上得到無限制的延續。另外,通過網絡平臺,教師還可以給每個年級建立公共郵箱、論壇,用來分配任務、布置作業、共享教學資源等。更重要的是,教師可以把一些實踐或實驗發到網上,對學生的作品進行網上點評,把優秀的程序分享給大家,同時指出學生的不足之處,到網上,學生自行查收,及時地給學生反饋。另外,這些平臺還可以作為學生們的“討論網”,大家自由交流各自的學習經驗與學習心得,成為學生在線學習交流、在線測試的途徑。通過各種網絡平臺,使教師與學生、學生與學生的交流不受時間的限制、地點的約束,由學生自主地選擇學習,從而解決教學時間不充足的問題,消除教師與學生之間在時間和空間上的距離感,進一步方便學生及時解決疑惑,及時得到反饋,取得更有效的學習效果。

本文探索的一些方法和改革創新是優缺點共存的。研究發現,采用以上多種方法相結合,一環扣一環的教學組織與管理,能保證學生學到一定的知識。沒有最棒的方法,只有最適合自己的方法,我們做的就是盡可能給予學生指導,建立良好的學習氛圍。但是,如果學生對自己不負責任,學生之間存在相互包庇、幫忙完成實驗上機報告等問題,將影響整個教學效果。所以,教師要特別關注這些學生,經常鼓勵、輔導他們,督察學習情況,特殊情況特殊處理,引導和幫助他們找到自己的學習目標和學習方法。C語言程序設計成為越來越多高校學生選擇的課程,也是全國計算機等級考試的選擇之一。我們要緊跟時代的步伐,不斷更新教學內容,分析和探討C語言程序設計教學過程中存在的問題,進行教學方法的改革,適應時代需要,做好十足的準備去迎接未來的挑戰。

參考文獻:

[1]譚浩強.C語言程序設計(第四版)[M].北京:清華大學出版社,2010.

[2]薛小鋒.《C語言程序設計》教學方法探析[J].福建電腦,2004,(01):87-88.

c語言程序設計范文3

[關鍵詞]C語言 程序設計 能力培養 教學改革

[中圖分類號]G642 [文獻標識碼]A [文章編號]1009-5349(2015)12-0232-01

一、當今《C語言程序設計》課程的教學現狀

《C語言程序設計》這門學科的教學內容及功能是非常強大的,應用范圍也很廣,數據結構相對比較復雜。該課程的語法檢驗結構相對比較薄弱,相對沒有編程基礎的大學生來講,要很好地學習和理解C語言的知識和程序設計方法,需要熟練各個知識點和語法結構。以往《C語言程序設計》課程教學大多主要以C語言的語法為主要講授知識點,將教學的重點放在語言的語法知識上,因此,很大一方面就忽視了在解決問題和編寫程序語句時如何能更好地應用有效的教學方法。很多學生在掌握語法知識后,不知道如何去編寫程序來解決實際問題。

二、《C語言程序設計》課程改革的幾點想法

(一)對教學內容進行重組

一方面教師要充分考慮到沒有了解程序語言設計和不懂編程經驗的學生,要將教學的重點放到C語言的理論語法知識上,全面講解《C語言程序設計》課程的基本語法知識。面對新的教學內容,要避開以往傳統的細節語法知識講解,引入一套新的教學思路,要以具體的實例編程去營造一個好的教學環境和教學方式,將學生引入要讓自己有能力、有想法去判斷和總結理解掌握C語言的語法知識以及編程方法。通過第一階段的理解學習,很大一部分學生能夠基本掌握C語言的基礎知識,同時也具備編寫C語言編寫程序的能力,并可以獨立編寫較難程序,并能順利通過程序調試與程序的測試。

另一方面要將教學的主要內容放在那些具有掌握一些C語言基礎知識和編寫程序,了解C語言知識的學生上。在這個階段,課程內容要注重培養學生的較專業的程序編寫與實踐。同時,在教學過程中注意設計教學環節,不但要引入項目式驅動教學法,還要將教學內容化分模塊,把每個模塊都建立一套綜合案例,把案例內容覆蓋C語言程序設計課程的所有核心知識點,貫穿整個教學過程。

學生通過開發綜合案例,能夠將知識點融會貫通,達到學以致用的目的。也可以把要處理的問題和知識點做成項目,給學生分配項目任務,并且為學生提供可查閱的學習資料和設備。通過老師的學習指導,讓學生自由發揮,開創思想,并以小組討論的形式進行任務開發,共同完成一個完整的項目。在這一教學階段設計的目的是要在一個完整的項目開發過程中,使學生能夠學習和了解到一些關于C語言中不常使用到的關鍵知識。也使學生學習和掌握這些知識的可行性和要重性,在教師的正確引導下將問題成功解決,使學生收獲到知識。

(二)加強實踐教學

《C語言程序設計》是一門實踐性很強的專業技術課程。實踐教學是《C語言程序設計》課程教學中的主要教學環節。在加大實踐教學內容的同時,也要改變實踐教學內容,這也是提高和培養具有創新能力學生所必經的階段。因此,在實踐教學上,要專門編寫相關的資料,方便教學。在資料中,可以編寫一些具有代表性的上機練習程序設計題目,使學生能更好地理解和學習C語言的知識和編程方法。同時也為學生提供一些比較綜合的編程題目,讓學生能在這些問題中,找到自己知識的缺口,然后補充知識,在這些編程題中發揮自己的優點和創新點。同時,要開發學生的學習思路,培養學生的自主學習能力。

(三)完善網絡教學平臺

當今是網絡遍布的時代,所以C語言課堂教學也少不了網絡。我們要用網絡教學平臺做為輔助教學手段,合理地為學生安排布置學習內容和資料,開展小組式的學習方式,以小組方式討論問題。課堂的教學時間是有限的,對于這一類的教學活動在課堂上是不能完全實現的。所以要以開放式的網絡教學平臺為課堂輔助教學。教學平臺主要包括課程學習、電子教案、網上答疑、實驗指導等,讓學生能更好地自主學習。

(四)創新考試方式

以往的《C語言程序言設計》課程考試大多數是以筆試為主要內容,目的是考查基本的語法知識,該種考核方式使學生偏重于語法學習。為此,改革傳統的考核方式勢在必行,期末考試采用專門的考試系統,將理論題與實踐題相結合統一在上機考試環節完成,在限定時間內考核學生的學習效果。即考即出分,減少人工批卷出錯的漏洞,減少教師的工作量,改變了傳統的批閱方法,通過考試的檢驗以促進學生平時學習掌握知識牢固程度,加強上機實踐,突出學生程序編寫能力過程,將實踐教學的重要性展現出來。

【參考文獻】

c語言程序設計范文4

關鍵詞: C語言程序設計; break語句; switch語句; 循環結構

中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2013)12-48-02

Analysis on “break” in course of C language programming

Li Xinran, Zhao Shanlin

(North University of China, College of Computer and Control Engineering, Taiyuan, Shanxi 030051, China)

Abstract: In the course of C language programming, the break statement has two functions. First, it is used in the switch statement, which can end Select Case. Second, it is applied to a loop structure, which can end this layer circulation. By analyzing the examples, the application conditions and functions of the break statement are revealed as well as things to note, and its application methods are clarified.

Key words: C language programming; break statement; switch statement; loop structure

0 引言

在C語言程序設計課程中,break語句的功能非常容易理解,在switch語句中可以利用break語句結束switch結構;在循環結構中可以利用break語句結束循環。但是,很多人并不清楚在什么條件下使用break語句,本文著重分析break語句的使用條件,以及break語句的常見用法。

1 break語句在switch語句中的應用

switch語句是多分支選擇語句,一般形式[1]:

switch(表達式)

{

case 常量表達式1: 語句1; [break;]

case 常量表達式2: 語句2; [break;]

case 常量表達式n: 語句n; [break;]

default : 語句n+1; [break;]

}

switch語句執行過程是[2]:

⑴ 計算switch語句表達式的值;

⑵ 依次與1-n個常量做比較,當表達式的值與常量相等時,執行case后的語句;

⑶ 當執行break語句時,結束switch語句;

⑷ 如無break,則從匹配的case語句起,一直執行到break或switch語句末尾為止;

⑸ 如無匹配的case值時,則執行default相應語句。

switch語句說明:

⑴ switch后括號內的表達式可以是任意類型,會自動轉化為整型;

⑵ 每個常量表達式的值必須互不相同;

⑶ 執行完一個case后邊的語句后,轉到下一個case繼續執行,可以用break強制程序在執行完一個case后跳出switch結構。如果所有case中的常量表達式都不符合,則執行default后面的語句;

⑷ case后的多條語句不必用{}括起來。

由此可見,對于break語句的使用,當執行完某個case常量表達式后面的語句,想要結束switch語句,此時應該在相應語句的后面執行break語句。例如:

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0: a++; break;

case 1: b++; break;

}

case 2: a++; b++; break;

case 3: a++; b++;

}

printf(“\na=%d,b=%d”,a,b);

}

/*運行結果為:a=2,b=1。*/

分析運行結果,由于case 1:語句中是switch語句的嵌套,而且嵌套的switch語句后面沒有執行break語句。如果在內嵌的switch語句后面執行break語句,則運行結果為:a=1,b=0,此時執行了break語句,就從switch結構中結束了。

2 break語句在循環結構中的應用

在循環結構中使用break語句的形式是“break;”,break語句的功能是強行結束循環,轉向執行循環語句的下一條語句[3]。break執行流程如圖1所示。

[表達式] [表達式] [語句][語句] [break;][yes][no]

圖1 break語句執行流程圖

如圖1所示,當循環中執行了break語句,循環將提前結束。那么在什么樣的條件下,循環結構中需要使用break語句,對此我們通過一個例題,來分析使用break語句的條件。

例題:判斷某一個一位數n是否在一個不高于四位的整數m中出現。判斷n是否在m中出現,需要將n與m中的每一位數進行比較,分離m中的每一位數,可以借助于算數運算符的求余和除,如果n==m%10,說明n在m中出現了,此時需要提前結束循環,這時要使用break語句。如果n!=m%10,那么就需要不斷求新的m,利用m=m/10求得新的m;重復n與m%10的比較過程。通過分析得知,循環結束有兩種可能,一種是n在m中出現了提前結束循環;另一種是n在m中沒出現,當m的值變為0時結束的循環。由于此時不能判斷是什么原因結束的循環,所以我們必須借助于標示變量來區別這兩種情況。先將標示變量flag的值置為1,如果n在m中出現,則標示標量flag的值置為0。如果n沒在m中出現標示變量的值不變,這樣結束循環后,可以通過標示變量的值來判斷n在m中是否出現。

通過上述分析得到循環中使用break語句的條件:當存在著兩個獨立的條件都可以使循環結束時,提前結束循環的條件就是使用break語句的條件;另外一個結束循環的條件作為控制循環的變量。此種用法通常借助標示變量來區別結束循環的原因。使用break語句時候,還需注意break語句只能結束本層循環,不能影響外層循環。

判斷某一個一位數n是否在一個不高于四位的整數m中出現的算法實現如下:

main()

{ int m,n,flag=1;

scanf("%d%d",&m,&n);

while(m!=0)

{ if(n==m%10)

{ flag=0;

break;

}

m=m/10;

}

if(flag) printf("no\n");

else printf("yes\n");

}

3 結束語

本文分析了C語言程序設計課程中break語句的使用方法。在switch語句中,可以結束多分支選擇結構;在循環結構中,可以結束本層循環。同時分析出在兩種結構中使用break語句的條件,并舉例說明break語句的用法和需注意的要點。通過本文對break語句用法的分析,能讓學習C語言程序設計課程的學生更準確地掌握break語句的用法,為學好結構化程序設計語言的選擇結構和循環結構程序設計打好基礎。

參考文獻:

[1] 譚浩強.C程序設計[M].清華大學出版社,2001.

[2] 趙山林.C語言程序設計[M].人民郵電出版社,2012.

[3] 趙山林.C語言程序設計[M].高等教育出版社,2010.

c語言程序設計范文5

摘 要: 教師要提高《C語言程序設計》教學質量,必須依據教學目標,對教學內容進行重新組織梳理;用案例教學、項目驅動教學等手段豐富教學方法;構建多元考核評價體系。從而在實踐中取得良好效果。

關鍵詞: 教學改革 《C語言程序設計》 組織結構 教學方法

1.引言

《C語言程序設計》是高校計算機專業的重要基礎課程,在計算機專業的課程體系中占有極其重要的地位。一方面C語言是學生接觸的第一門專業類課程,是培養學生專業興趣的起點。另一方面,C語言是其他很多核心專業課的先修課程,如數據結構、計算機圖形學等。所以C語言的掌握水平在很大程度上決定了學生專業基礎知識的掌握,直接影響后續課程的學習效果和專業素質的培養。所以如何提升教學質量,讓學生確確實實地學好這門課程,是教學改革的目的和指導方向。

2.改革教學內容組織結構

《C語言程序設計》的主要內容包括語法基礎、控制結構、數據類型、數組、函數、指針、結構體與共用體、文件等。近年來因為學校培養方案的改革,很多專業課程課時都被壓縮。C語言現有學時滿足不了把所有知識點都教授給學生的教學要求。改革內容組織結構就很有必要,首先要明確課程教學目標?!禖語言程序設計》的課程教學目標要求學生掌握C語言的基本概念、語法和程序設計的常用方法;領會結構化、模塊化程序設計的基本思想;通過編程訓練,熟練使用編程工具編寫和調試程序;在課程學習的過程中,形成良好的編程風格和程序設計思維方式,提高分析問題及通過設計程序解決實際問題的能力,為專業課程體系中后續課程的學習打下基礎。依據教學目標,把教學內容分為三個層次。

3.改革教學方法

3.1教學手段的改革

C語言的課堂內容多是抽象的理論,對大多數學生來說枯燥無味。首先,教師可以通過研討和網絡資源,向優秀教師學習,不斷提高自身能力。其次,整合資源制作優秀的教學課件,既要體現新的教學方法,又要現實教學內容的層次性。再次,充分利用現代教育技術,把教學資源放在網絡上,供學生自行調用,也可在網上給學生答疑。最后,以案例教學、分組討論等方式豐富課堂教學方法,不單純依賴多媒體教學。

3.2實驗教學的改革

在實驗教學中,可采用“項目驅動,分層教學”的方法。

項目驅動教學是整個實驗教學圍繞一個工程項目進行,逐步拓展實訓項目和設計,將每一個階段的學習作為項目的一部分完成,最后課程結束時,完成一個小型系統程序的建立。

通過實驗能夠實時了解學生的內容掌握及編程能力。在教學過程中,由于個體差異的存在,學生在內容掌握和編程應用方面會有較大差異。針對這種現狀,就需要應用“分層教學”。對基礎好的學生,可以多給一些深入的實驗題目,而對基礎不好的學生,就要幫助其弄懂、掌握學習內容。

3.3多元的考核評價體系

課程考核評價分為兩部分:過程考核和期終考核。過程考核就是平時成績,依據學生的出勤、日常表現、課后作業、實驗報告、測驗和項目完成情況和完成質量對學生進行考核,占總成績的60%,期終考核是以卷面考試方式檢測學生對于所有知識點的綜合掌握情況,占總成績的40%。

4.結語

通過本學期的教學實踐,課堂教學和實驗教學效果都得到很好的改善,調動學生的學習積極性。學生的編程能力和課程內容掌握水平都有明顯提高,取得長足發展。

參考文獻:

[1]何克抗,鄭永柏,謝幼如.教學系統設計[M].北京師范大學出版社,2002.

[2]戴大蒙.“程序設計類”課程層次型教學模式的研究與實踐[J].中國成人教育,2010.9.

[3]張秋生.C語言程序設計課程教學改革與實踐[J].軟件導刊,2012.11.

[4]何欽銘,顏暉,蘇小紅等.“程序設計基礎”課程教學實施方案[J].中國大學教育,2010.5.

c語言程序設計范文6

關鍵詞:C語言程序設計;計算思維;抽象;自動化

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

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

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

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

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

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

現實生活中,經常需要描述多個相同數據類型的一個系統特征,如所有同學的高等數學課程的成績,可以使用一維數組來進行描述;而描述多個不同數據類型的多個系統特征,如學生的姓名、學生的身高和學生的年齡等,可以使用結構體來進行描述;如果要描述多個相同數據類型的多個系統特征,如全班所有同學的高等數學和大學英語課程的成績,則可以使用二維數組來進行描述。

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

C語言程序中的元素 現實生活中的元素

程序 系統

函數 系統功能

函數調用 功能調用

數據類型 常量 系統特征

變量

一維數組 多個相同類型的一個系統特征

多維數組 多個相同類型的多個系統特征

結構體 多個不同類型的多個系統特征

鏈表或結構體數組 多個不同類型的多個系統特征的集合

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

計算思維的另一個本質是自動化。自動化指的是對符號系統建模的各種元素施加一些操作,并按照某種順序的或非順序的結構自動地執行。對于C語言程序來說,自動化體現為函數內部的語句在EIP寄存器加法操作支持下順序自動地執行以及函數之間的調用在內存堆棧區支持下自動地進行跳轉。EIP是32位機的指令指針寄存器,用來存放下一條要執行的指令的地址。EIP寄存器中增加值的大小需要根據實際存儲指令的大小來確定。

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

既然程序的執行過程是在某個函數之中順序自動地執行以及在多個函數之間來回自動地跳轉,這種自動執行需要有相應的計算機軟件和硬件基礎。支持程序自動執行的軟件基礎是操作系統,支持程序自動執行的硬件基礎是計算機硬件結構,即馮?諾依曼原理的程序存儲思想。當用戶點擊執行按鈕后,程序被提交給操作系統來執行,可以不需要人為干預。此后,程序在操作系統中以進程的方式出現。操作系統協調內存、中央處理器和外存等硬件資源執行該進程。

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

程序控制之所以能夠在函數之間進行跳轉,主要依賴于操作系統管理的內存堆棧區。內存堆棧區是滿足“后進先出”操作約束的存儲區。當操作系統開始執行用戶提交的C語言程序時,首先開始從main函數執行,main函數的相關局部變量被壓入棧中;當執行到被調函數時,被調函數的相關局部變量再次被壓入棧中,程序控制轉移到被調函數,且操作只能對當前棧頂進行,而此時棧頂存儲的就是被調函數的相關局部變量;而當被調函數執行結束時,被調函數的相關局部變量從棧中退出,程序控制轉移到main函數繼續執行,此時棧頂存儲的是main函數的相關局部變量;當main函數執行結束時,main函數的局部變量從棧中退出,整個程序執行結束。下列程序執行時的堆棧變化過程示意如圖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 函數調用過程的堆棧變化

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

三、以計算思維為導向的C語言程序設計課程教學

1.教學內容

針對計算思維的抽象和自動化兩大本質特征,C語言程序設計課程的教學內容需要在原有的基礎上特別強調一些針對性的觀點。例如,C語言中的各種數據類型和數據結構可以完成實際系統中各種不同元素的抽象,一個函數之中的順序語句自動執行的基礎是EIP寄存器的加法操作,多個函數之間的來回自動跳轉的基礎是內存堆棧區的支持等。具體強調的觀點如表2所示。

表2 教學內容中需要強調的觀點

C語言程序設計

課程的內容 強調的觀點

C語言概述 程序是對系統的抽象

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

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

數據類型、表達式和語句 操作對象是對系統特征的抽象

語句是系統自動化執行的基本對象

控制結構 控制結構是問題求解步驟的抽象

函數中順序語句自動執行的基礎是EIP寄存器的加法操作

數組 一維數組是對多個相同類型的一個系統特征的抽象,多維數組是對多個相同類型的多個系統特征的抽象

函數 函數是對系統功能的抽象

函數調用是功能調用的抽象

函數之間的來回自動跳轉的基礎是內存堆棧區的支持

結構體 結構體是對多個不同類型的多個系統特征的抽象

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

2.教學方式

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

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

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

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

表3 C語言程序執行過程中EIP和ESP寄存器內容的變化

斷點 EIP寄存器內容 ESP寄存器內容 當前棧頂函數

r=2.0;語句 00401068 0013FF24 main函數

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

return r*r;語句 00401020 0013FF18 s函數

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

從表3可以看出,隨著EIP寄存器內容的增加,main函數中的語句順序自動執行,即從語句“r=2.0”到語句“area=s(r)”再到語句“printf("area=%f",area)”。ESP寄存器是另一個重要的寄存器,它始終存放棧頂的地址。隨著main函數對s函數的調用開始,棧頂工作函數由main函數變化為s函數;當s函數調用結束后,棧頂工作函數又由s函數回到main函數。

3.考核內容

針對C語言程序設計課程的計算思維培養要求,考核方式上必須從以考查語言的語法知識為主轉變為以考查學生的系統建模能力和算法設計能力為主。

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

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

法設計和函數調用為重點考核內容,突出對函數接口設計和算法流程設計的考核。

參考文獻:

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

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

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

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

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

亚洲精品一二三区-久久