最近中文字幕2018免费版2019,久久国产劲暴∨内射新川,久久久午夜精品福利内容,日韩视频 中文字幕 视频一区

首頁 > 文章中心 > c程序設計

c程序設計

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c程序設計范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

c程序設計范文第1篇

關鍵詞:實驗教學; 教學方法; 程序設計

1 引言

C程序設計是計算機專業學習中的一門非常重要的基礎課程, 是學生學習C++、VC、數據結構、操作系統等專業課的先導課程。C 程序設計主要培養學生正確的算法設計以及編程能力,培養學生結合所學知識解決實際問題的能力和正確的編程思維方式。因此, 提高C 程序設計的教學質量對計算機專業學生的學習至關重要。本文提出以下幾個建議, 以供大家參考與探討。

2 加強實驗教學, 激發學生學習的興趣

興趣是激發學生主動學習C 語言的關鍵, 而加強實驗教學是激發學生學習的興趣一種重要方式。計算機專業是一個實踐性非常強的專業, 上機實驗是學好C 語言程序設計的一條捷徑。在實驗教學中, 通過上機運行具體的實例程序,學生便會立刻感覺到C 語言的神奇, 有了好奇心, 學生才能使領略C語言的魅力,從而激發了學生的學習興趣。如果再結合一些趣味性的實例,讓學生從中體會到編程的快樂, 從而達到學生主動學習的目的。

3 先整體后局部的教學模式

C 語言程序設計的初學者在學習的過程中, 經常會因為學習繁多的知識要點而陷入一種誤區“鉆牛角尖”。C 語言本身具有非常靈活、知識點非常繁多的特點, 一開始很多學生什么都看、都學, 什么都研究的過細, 這導致這些學生不知道學的什么, 不知道如何閱讀程序和組織程序, 學生很難抓住C 語言程序設計學習的重點和構建程序設計的思想。為了減少學生的誤區, 本人在教學中, 先給學生搭建整體的程序結構與程序思想, 然后在學生領會程序的設計思想后再局部細化每一個知識點, 使學生逐步積累,在應用去理解和體會。這樣會避免學生因C 語言靈活性大, 難度大, 難理解, 難記憶的特點, 而失去學習C 程序設計的信心和興趣。在教學過程中, 把細節的、難于記憶的、枯燥的知識融入到日常的學習中, 避免學生出現死記硬背的現象, 使學生學會“學習”和查閱資料, 使學生明白學習知識要活學活用, 從而培養學生的學習能力。

4 培養學生正確的思維方式

C 語言是一門計算機語言。因此, 它有語言的特點, 如C語言有其自身的詞匯( 標識符、關鍵字、運算符、分隔符、常量、注釋符等) 、語法規則、語句等。計算機語言又不同于人的自然語言,它有比自然語言更嚴格的要求, 否則計算機無法編譯、識別、執行。針對其特點, 我認為可將C 程序設計的知識點分為記憶型和靈活應用型兩類: 記憶型的如關鍵字、運算符、優先級等; 靈活應用型的如數學模型、數據結構、算法、程序設計方法等。這里關鍵注意兩點, 一點是以算法的表達形式描述出解決問題的方法、步驟; 另一點是使學生明確計算機如何執行一個C 程序。這需要培養學生正確的編程思想和思維方式, 以“計算機意識”去思考問題。首先將你要用自然語言描述的解決問題的方法步驟( 即算法) 轉換成算法表形式( 如N- S 流程圖) , 然后再將其轉換成C 程序, 這種轉換的思想、規則十分重要, 使學生逐漸縮小這種自然語言與計算機語言的鴻溝。

算法設計是程序設計課程的教學重點, 而將實際問題抽象為數學模型是解決問題的重點, 解決了這兩方面的問題就達到了培養和提高學生分析和解決問題的能力的目標, 但對于C 語言的初學者來說, 如求一元二次方程的解, 排序、查找等典型算法, 漢諾塔、百錢百雞、鏈表等典型問題, 這些算法對于計算機專業的學生來說,其分析與設計的過程基本能夠理解。如果將這些算法編寫為程序似乎更難一些, 抽象一些, 甚至感覺無從下手。這就是自然語言與計算機語言之間的鴻溝。如何才能將實際問題的解決辦法轉換為計算機能夠識別、運行的程序呢? 因此, 本人在教學中, 采用對算法精講多練, 采用流程圖等形式, 使學生逐步加深對算法與程序之間的抽象轉換的理解, 從而培養學生正確的編程思維模式, 達到了良好的效果。

5 采用多媒體教學和傳統教學相結合的啟發式教學

教師應當轉變教學理念, 改變填鴨式的課堂教學方式。應該采取啟發式、互動式的教學方法來活躍課堂氣氛, 以引導學生積極思考, 主動學習。啟發式教學是在教師全面掌握講授內容的前提下,在講解新的講授內容前,通過對以前學習的相關內容的復習,引出新的講授內容。例如在講解分支程序設計章節時,應首先啟發學生使回憶一下順序結構的執行過程,進而引出分支結構在C 程序設計中的實現原理和編程思路。而互動式教學是教師駕馭講臺能力的具體體現。一個教師站在講臺上, 要不斷地掃視學生,觀察學生的表情,了解學生的接受程度,并能及時地調整教學的進度和步驟,允許學生在不懂的時候隨時提問,真正實現課堂上的互動, 構造自然、和諧、歡快的課堂氣氛, 使學生主動思考, 自然接受, 其教學的效果必然會顯著地提高。對于難度大、有顯著的特點的教學內容, 可采用對比的教學方法, 以加深學生的理解。

6 結束語

通過這樣教學方式, 本人在實踐教學中取得了良好的教學果。C 程序設計的學習對學生后續專業課程的學習非常重要, 因此C 程序設計的教學至關重要。只要我們不斷加強理論與實踐的探索, 在實際的教學過程中根據不同對象摸索適應不同群體的教學方法, 就能不斷提高教序質量, 為學生的專業學習夯實基礎。

參考文獻:

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

c程序設計范文第2篇

為什么學習C++這門程序設計語言呢?學習程序設計是不可能不借助一門程序設計語言的,而C++直接支持現實世界中的軟件所使用的那些關鍵概念和技術。C++是使用最為廣泛的程序設計語言之一,其應用領域幾乎沒有局限。從大洋深處到火星表面,到處都能發現C++程序的身影。C++是由一個開放的國際標準組織全面考量、精心設計的。在任何一種計算機平臺上都能找到高質量的和/或免費的C++實現。而且,你用C++所學到的程序設計思想,大多數都可直接用于其他程序設計語言,如C、C#、Fortran以及Jave。最后一個原因,我喜歡C++適合編寫優美、高效的代碼這一特點。

本書不是初學程序設計的簡單入門教材,我寫此書的用意也不在此。我為本書設定的目標是――能讓你學到基本的實用編程技術的最簡單的書籍。這是一個非常雄心勃勃的目標,因為很多現代軟件所依賴的技術,不過才出現短短幾年時間而已。

我的基本假設是,你希望編寫供他人使用的程序,并愿意認真負責地,以較高質量完成這個工作;也就是說,我假定你希望達到專業水準。因此,我為本書選擇的主題覆蓋了開始學習實用編程技術所需要的內容,而不只是那些容易講授和容易學習的內容。如果某種技術是你做好基本編程工作所需要的,那么本書就會介紹它,同時展示用以支持這種技術的編程思想和語言工具。并提供相應的練習,期望你通過做這些練習來熟悉這種技術。但如果你只想了解“玩具程序”,那么你能學到的將遠比我所提供的少得多。另一方面,我不會用一些實用性很低的內容來浪費你的時間,本書介紹的內容都是你在實踐中幾乎肯定會用到的。

如果你只是希望直接使用別人編寫的程序,而不想了解其內部原理,也不想親自向代碼中加入重要的內容,那么本書不適合你。請考慮是否采用另一本書或另一種程序設計語言會更好些。如果這大概就是你對程序設計的看法,那么請同時考慮一下你從何得來的這種觀點,它真的滿足你的需求嗎。本書面向的是那些確實希望編寫和理解復雜計算機程序的人。

考慮到本書的結構和注重實踐的特點,它也可以作為程序設計方面的第二本書,適合那些已經了解一點C++的人,和那些會用其他語言編程,現在想學習C++的人。如果你屬于其中一類,我不好估計你學習這本書要花費多長時間。但我可以給你的建議是,多做練習。因為你在學習中常見的一個問題是習慣用熟悉的、舊的方式編寫程序,而不是在適當的地方采用新技術,多做練習會幫助你克服這個問題。如果你曾經按某種更為傳統的方式學習過C++,那么在進行到第7章之前,你會發現一些令你驚奇的和有用的內容。

學習程序設計要靠編程實踐。在這一點上,程序設計與其他需要實踐學習的技藝是相似的。你不可能僅僅通過讀書就學會游泳、演奏樂器或者開車,你必須進行實踐。同樣,你也不可能不讀程序和寫程序就學會程序設計。另一方面,程序設計遠非只是遵循一些語法規則和閱讀手冊那么簡單。本書的重點不在于C++的語法,而在于理解基礎思想、原理和技術,這是一名好程序員所必備的。只有設計良好的代碼才有機會成為一個正確、可靠和易維護的系統的一部分。而且,“基礎”意味著延續性:當現在的程序設計語言和工具演變甚至被取代后,這些基礎知識仍會保持其重要性。

c程序設計范文第3篇

關鍵詞:C語言;程序設計;學習方法;學習興趣

中圖分類號:TP312.1-4

《C語言程序設計》是計算機專業的一門核心專業基礎課程,是專升本、考研和等級水平考試的必考科目,也是學生學習中感到比較吃力的一門課。那么,如何學習《C語言程序設計》這門課程呢?現根據自己多年在教學中的體會,談一些粗淺的認識。

1 為什么要學習《C語言程序設計》

《C語言程序設計》是用C語言來編寫程序的,每個程序員在他們的編程生涯中都應該學習C語言,因為它有太多難以忽視的好處了。除了它會給你提供更多的工作機會之外,C語言還會教給你更多的關于計算機的知識。它的好處如下:

1.1 C語言是一種計算機程序設計語言

它既具有高級語言的特點,又具有匯編語言的特點,既可以用來編寫系統軟件,又可以用來編寫應用軟件。它不僅具有繪圖能力強,還具備很強的數據處理能力,因此也適于編寫三維,二維圖形和動畫。

1.2 C語言具有功能強大、使用靈活、豐富的數據類型和運算符、結構化的控制語句、目標代碼運行效率高、適用范圍大、可移植性好等優點。

1.3 C語言是各大操作系統的基礎,Unix、Linux、Windows其內核都清一色是C語言開發的,(某些地方是和匯編語言混合開發的),還有各種語言的編譯器,包括java虛擬機,各種嵌入式設備,如手機、PDA等都是C語言開發的。

1.4 C語言是基礎,如果你學習過C語言,你就能學習現在任何的高級編程語言

因為所有的高級語言都是以C語言為基礎的(像JAVA,C++,C#等等)。C語言學好了,將來想學其他的語言,就比較好入門了。

2 如何學習《C語言程序設計》

2.1 克服畏難心理,充滿自信的學習《C語言程序設計》

大多數學生一看到《C語言程序設計》課程的教材,就有畏難的情緒,覺得C語言難學,學不會,因為他們對計算機語言不了解,另外有些英語差的同學,看到計算機編程是用英語編寫的,就未學先棄了。其實學習語言并沒有他們想象的那么難,英語差也對學習計算機語言影響不大,比如學C語言,真正要記的關鍵字不多,語法也不復雜,只要大家不帶著畏難的心理,充滿自信,一定能學好的。

2.2 要明確《C語言程序設計》的學習目的

通過《C語言程序設計》課程的學習,掌握C語言基本知識,掌握程序設計的基本方法并逐步形成正確的程序設計思想,能夠熟練運用基本程序結構解決簡單問題,理解模塊化程序設計原則并能熟練使用C語言進行程序設計,具備調試程序的能力,為后繼課程及其他程序設計課程的學習和應用打下基礎。

2.3 要明白《C語言程序設計》與一般的計算機操作課程有所不同

《C語言程序設計》是計算機的一門軟件編程課程,是用C語言來編寫程序的,它具有難度性、抽象性、連續性和邏輯嚴密性。如果你第一次課來聽了,第二次課沒來,第三次課很可能就聽不懂了。比如,第一次課講的是數字1,2,3,4……,第二次課講的是運算符號+,-,*,/,第三次課老師讓你算1+2=?,如果你前兩次課都來聽了,那么你就能算出它的結果,否則你就算不出它的結果。因此,如果要想學好《C語言程序設計》,必須堅持每次課都來,如果那天確實不能來,就應在家自學,不懂的地方應及時向老師請教,一定不能落課。

2.4 要整體把握《C語言程序設計》

C語言是一種通用的程序設計語言,在開發系統軟件和應用軟件中得到廣泛的應用,已成為當今計算機世界最流行的語言之一。C語言是一個整體,各個方面是有機聯系的,要從總體上把握它,不要把它割裂成互不關聯的部件。它包括C語言概述、數據類型(整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等)、運算符和表達式、流程控制語句、函數、數組、字符與字符串、指針、結構體、文件等。通過《C語言程序設計》的學習,掌握程序設計的基本概念、基本思想、基本方法和基本技能,進而學會利用C語言解決實際問題,培養計算機程序設計的能力和素質,以及思維方法,為以后學習其它計算機程序語言和后續的專業課程打下基礎。

簡單的C程序是由主函數和函數體兩大部分組成。它的基本框架如下:

main()

{

}

其中main表示“主函數”。每一個C程序都必須有一個main函數,而且只能有一個main函數,它表示程序從這里開始執行。由花括號“{ }”括起的部分是函數體。其中函數體又包括定義變量、變量賦值、函數調用、輸出打印等。

例:一個簡單的求和程序

main() /*主函數*/

{

int a,b,sum; /*定義變量*/

a=123;b=456; /*變量賦值*/

sum=a+b; /*求兩數之和*/

printf(“sum is %d\n”,sum); /*輸出和值*/

}

這是一個簡單的求和程序。/*...*/表示注釋部分,只給人看的,對編譯和運行不起作用。第3行是聲明部分,定義變量a、b、sum,指定a、b、sum為整型(int)變量。第4行是兩個賦值語句,使a和b的值分別為123和456。第5行使sum的值為a+b,第6行中“%d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數據類型和格式,“%d”表示“以十進制整數形式輸出”。Printf函數中括弧內最右端sum是要輸出的變量,現在它的值為579(即123+456之值)。因此輸出一行信息為:

sum is 579

從這個例子可以看出,想要把《C語言程序設計》這門課學好,不僅要知道《C語言程序設計》的基本框架,還要學好函數體中的內容(變量類型、定義變量、變量賦值、輸入輸出格式字符串、輸入輸出函數格式、調用函數等)。另外還要學好C語言的運算符、運算順序 、四種程序結構(順序結構、分支結構、循環結構、模塊化程序結構 )、掌握一些簡單的算法等。

2.5 熟練C程序的上機步驟

在編好一個C源程序后,如何上機運行呢?要經過編輯、編譯、連接和運行四個步驟。

(1)編輯源文件。在編輯(Edit)狀態下輸入或修改源程序。

(2)編譯源程序。選擇“C編譯”菜單并選擇“編譯到OBJ”,進行編譯,得到一個后綴為.obj的目標程序。

(3)然后再選擇菜單“L連接EXE文件”,進行連接操作,可得到一個后綴為.exe的可執行文件。

(4) 運行程序。在“RUN”菜單中選擇“R運行程序”項,或直接按Ctr+F9鍵,系統就會運行已編譯好的可執行目標文件。此時,TC集成環境窗口消失,屏幕上顯示出程序運行的結果。如果程序需要輸入數據,則應在此時,從鍵盤輸入所需數據,然后程序會接著執行,輸出結果。

2.6 要加強編程訓練

《C語言程序設計》是實踐性非常強的課程,要求學員要理論聯系實際,在掌握C語言的基本語法和基本知識后,重點應放在提高編程能力的訓練上。根據學生學習的認知特點,我認為主要應從以下幾個方面進行強化訓練:

(1)吃透課本例子。每學完一次新課,讓學生對課本例子先分析任務、再仔細閱讀程序,然后按書上的源代碼敲出來,編譯執行輸出結果,如果結果跟書上一致就算完成,如果不一致,就要仔細找原因。再后不看書自己編寫代碼與課本對照,找出自己的不足,然后改進。最后在此例的基礎上自己加以改造,舉一反三,變為其它的例子,如此反復練習,不僅培養了學生動腦思考的習慣,而且養成了遇事三思、認真、周密的作風。

(2)精選上機題目,要求調試通過。每章找出一個或兩個綜合性的具有代表性的應用題目,如編寫一個程序,計算一個整數的名位數字之和;用選擇法對數組中10個整數,按由小到大的順序進行排序等,要求用C語言編寫可執行的源程序,上機調試。這樣不僅鍛煉了學生解決實際問題的能力,更重要的是激發了學生學習課程的興趣,抽象變具體 ,理論變實踐,對這門課有了更深的認識。

(3)閱讀填空法。找一些經典程序,配上必要的說明,適當去掉語句或表達式,讓學生通過閱讀填補空白,訓練學生的程序設計能力。例編寫一個程序,輸入月份號,輸出月的英文月名,還有求和、排序、報號等。

(4)準備一個經驗本,記下C語言重要的語法和知識點,還有自己出錯的解決方法及老師講解的其他同學出現的常見錯誤,抽空常翻看,逐步積累經驗,加深印象,使以后避免。

(5)帶著作業去上機。每次理論課結束后,老師都會給學生布置一些作業(如習題)讓學生做,那么學生一定要認認真真的把作業完成好,先把程序編寫在作業本上,上機時再把這些程序敲到計算機上,進行修改、調試、運行,最后輸出結果。如果學生不帶作業去上機,第一次老師警告下次一定帶作業上機,如果第二次還沒帶作業,不準學生進機房,讓學生到教室把作業做完后再到機房上機調試。有人說學生可以直接在機器上編寫程序,固然沒錯,但對于初學者來說,如果在機器上邊思考邊編寫,也就是說想一句編一句,再想一句再編一句,這樣太浪費時間,一節課說不定連一個程序都編不好,所以老師一定要求學生在課下把程序編好,上機只需把程序敲出來進行修改、調試、運行,這樣能節約大量的時間,學生上機時間本身都是有限的。

上述方法在教學實踐中證明是行之有效的,學生對問題分析、程序設計的自覺性和能動性得到提高,動手能力加強,對后繼課如《C++》、《面向對象程序設計》等,學習起來倍感輕松,較好地完成了該門課程的學習目標。總之,實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。

參考文獻:

[1]嚴桂蘭.C語言程序設計與應用教程[M].福建:廈門大學出版社,2001.

[2]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005.

[3]陳東.計算機多媒體教學改革的一些嘗試[J].福建師范大學學報(自然版),2004,20(3):98.

[4]王蘭.學好《C程序設計》的幾點建議[J].科技信息,2007(9).

c程序設計范文第4篇

關鍵詞:教學內容;教學手段;教學方法;考核方式

C語言是早期最經典、最強大的面向過程的程序設計語言之一。雖然現在面向過程已經全面轉向面向對象,但是C本身的中級語言的設計理念以及對現有VC/C#等語言的深刻影響,使其至今仍是程序設計入門的首選語言,也是工科院校計算機專業學生接觸的第一門程序設計語言。對于計算機類專業學生來說,一旦掌握了C語言,就可以較為輕松地學習其他任何一種程序設計語言,為后續的面向對象程序設計以及Java程序設計等語言的學習打下基礎;對于其他非計算機專業的工科學生來說,比如電子、機電專業來說,該課程為學生用計算機編程解決實際問題提供了方法,是學習單片機技術教學的基礎和重要工具。

一、C語言教學中面臨的問題

C語言程序設計是一門基于dos操作系統下的面向過程的程序設計語言,隨著面向對象語言的開發,C語言在界面交互性上遜色不少,作品上也不如Flash、三維動畫效果吸引眼球,難學、難懂、難以應用的課程,對學生越來越缺乏吸引力。針對這種狀況筆者認為,更新教育觀念、探索新的教學模式才是根本出路。筆者根據多年的教學經驗,對C語言程序設計課程從教學內容、教學手段、教學方法、考核方法方面進行了一系列的創新改革。教學內容主要解決如何調動學生積極性,激發學生創新能力,如何提高學生的創新能力、實踐能力、研究能力、發現問題和解決問題能力等綜合素質;教學方法主要解決如何實現“以人為本”,分層次教育,如何通過引導、啟發等方法,激發學生的發散性思維。同時要利用目前課堂和實驗教學在培養學生創新能力和實踐能力方面的優點,利用大學生實訓基地,為學生的創新和實踐能力的鍛煉和培養提供一個良好的平臺。

二、教學內容的創新

課程內容的選取與組織是課程教學改革的基礎。人才培養方案對C語言程序設計教學內容進行重新整合,把課程學習劃分成培養學生的基本程序設計能力和培養學生的專業程序設計能力兩個階段。

第一階段安排在大一第一學期,主要針對沒有程序設計經驗的大一新生,重點講授C語言的基本知識,包括三種基本結構、數組、函數的概念。在第一階段教學中,筆者采用案例教學方法結合具體的程序實例,創設情境,引導學生自己總結掌握C語言的基本語法和程序設計的基本方法。第一階段的學習結束的時候,學生可以具備基本的程序設計能力,獨立編寫具有初等難度、幾十行的程序,并且能夠較順利地完成程序調試與測試。第二階段教學放在大一第二學期初,針對具備基礎程序設計能力的學生,重點培養學生的專業程序設計能力。在第二階段的教學中,以學生為主體、以教師為引導,采用國家火炬計劃河北省軟件人才工程實訓課程,使學生融會貫通所學知識,完成一個具體的項目,以達到提高學生程序開發能力的目的。迄今為止,學生完成的項目包括“銀行儲蓄管理系統”“彩票信息查詢系統”。教學實踐證明,這種理論和實踐技能并行的教學模式,更加有助于學生的創新能力的提高,使學生在不斷實踐中掌握技能,在技能學習中提高基礎理論。

三、教學手段的創新

在學習過程中除了發揮教師的引導作用,還需要充分調動學生的參與主動性。在授課期間靈活采用多種教學手段,如:自學、演示、對比、課堂提問、學生演練和討論等,通過不同方法,尋找創意思維“契機”,安排創意鋪墊內容,培育學生的創意萌芽,營造創意環境,引發學生爭鳴,為學生提供更多的思維空間,誘發學生的思維靈感。例如,在教學中講解“循環結構的循環嵌套”的時候,提出馬克思手稿中的數學題的案例:偉大的思想家馬克思的手稿中有這樣一道有趣的數學題:有30個人,其中有男人、女人和小孩。他們在一家飯館中吃飯,共花費50先令。如果每個男人吃飯要花3先令,女人要花2先令,每個小孩要花1先令,問男人、女人、小孩各多少人?先提出問題,引導學生分析、討論案例,提問學生運用數學知識完成案例提出的問題需要進行哪些操作,這樣學生就會比較有興趣,課堂氣氛就活躍起來。然后幫助學生從案例分析中理解并掌握什么是多重循環,并且如何使用雙重循環解決問題,最終完成程序的編寫。

在學習的第二階段采用開放式訓練教育方式,利用專題設計和課外指導方式,鼓勵學生課外自主進行訓練。如:完成的項目“彩票信息查詢系統”,教師提出設計方案,學生完成基本功能以后,自己可以對其他功能進行完善。

四、教學方法的創新

課程每個章節內容結構主要由三部分組成:

知識點:介紹本章需要掌握的知識或技術。

應用案例:介紹本章知識應用的案例。

創新訓練:針對具體的問題,應用本章技術來完成知識點的應用。

在整個教學過程中,教師采用框架式教學,像建筑工程師修建筑一樣,先采用精講的方式,讓學生建立整門課程的知識框架;接著通過案例教學、項目式教學等多種教學方式,讓學生逐步去進行細節知識點的填充;最后通過綜合訓練方式,完成整門課程的學習。

例如,在講解C語言程序設計中的函數時,搭建出例如綜合排序等程序的框架,給學生留出函數,讓學生自由開拓思想,獨立完成一些小型實例的編程,經過具體知識點的訓練后,還要重點進行綜合知識的應用訓練,開展一系列的創新應用,以達到知識綜合運用和培養創新能力的目的。

五、考核方式的創新

傳統的C語言程序設計考核模式一般以標準化的筆試題為主,這種考核方式側重語法知識的考核,忽視編程實踐能力的培養。為此,筆者改革傳統的考核方式,將考核分為平時實驗和期末考核兩部分。平時實驗成績考核的是學生每一章知識,實訓作業就是在每一章節結束的時候,布置相關的習題,學生利用業余時間編程,并且在實訓期間進行調試,調試成功后上傳到服務器上。期末考核成績采用的是教研室開發的上機考試系統。上機考試系統模擬C語言二級考試建立了知識面齊全、題量充足、難易度合理的試題庫,采取隨機抽題的形式重點考查學生的程序設計能力和程序調試能力。這種考核方式督促學生在平時學習中加強對編程舉一反三的實踐環節。實踐證明,這樣不僅能有效培養學生的實踐編程能力,還激發了學生動手實踐解決問題的興趣。

總之,經過不斷的摸索與實踐,通過以上的教學方法與教學手段的改革和實踐,不僅提高了學生的學習興趣,讓學生從枯燥無味的語言學習中解放出來,從被動學習走向主動學習,同時也培養了學生分析問題、解決實際問題的能力,充分發掘了學生的創造潛能,鍛煉了創新和協作精神。

參考文獻:

[1]郭芹.對高職高專計算機專業程序設計教學的思考[J].中國科技信息,2008(1).

c程序設計范文第5篇

關鍵詞:MCU;結構特征;程序設計;技巧

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)32-8943-03

Efficient C Language Programming Skills

CHAI Shou-li1, GAO Liang2

(1.Shandong Yingcai University of Computer Science, Ji'nan 250104, China; 2.Anhui University of Computer Science, Hefei 230039, China)

Abstract: This paper from the 8051 core MCU based on structural features, combined features of C language itself is given a number of highly efficient C programming skills. Practice has proved that, in the C program design features based on 8051 to optimize the source code, can greatly improve the efficiency of the final implementation of the procedures.

Key words: MCU; structural features; programming; skills

C語言憑借自身的結構化設計思想和對底層的數據的強大處理能力逐漸成為嵌入式開發的主流語言。雖然目前大部分C集成開發工具都具有優化能力,而且優化的結果有時比使用匯編語言編寫的程序效果還好,然而,這些優化工作大部分是針對程序和算法本身的優化,而針對MCU體系結構的進行的優化很少或者幾乎沒有,本文就是針對這個問題,給出幾種解決方法。

1 巧妙地利用寄存器變量

使用寄存器變量可以提升程序運行的速度,節約程序運行的時間,因為CPU對寄存器的尋址時間是最短的,可以在一個機器周期內完成。

假設有語句for(i=0;i

在keil c中作如下定義

unsigned char i;編譯產生的匯編語言如下:

CLR A

MOV R7,A

LOOP: INC R7

CJNE R7,#0x0A,LOOP

unsigned char idata i;編譯產生的匯編語言如下:

CLR A

MOV R0,#0x08

MOV @R0,A

LOOP: MOV RO,#0x08

INC @R0

MOV A,@RO

CJNE A,#0x0A,LOOP

unsigned char xdata i;編譯產生的匯編語言如下:

CLR A

MOV DPTR,#0x0000

MOVX @DPTR,A

LOOP: MOV DPTR,#0x0000

MOVXA,@DPTR

INC A

MOVX @DPTR,A

MOVX A,@DPTR

CJNE A,#0x0A,LOOP

通用寄存器可用于傳送和暫存數據,也可參與算術邏輯運算,并保存運算結果。通過上述分析,可以看見,當編譯器將變量i作為寄存器(R7)變量處理的時候,產生的目標代碼最小,且可以在一個機器周期內尋址。程序員必須熟悉每個寄存器的一般用途和特殊用途,只有這樣,才能在程序中做到正確、合理地使用它們。

但是,由于基于8051核的MCU資源有限,寄存器顯得極其寶貴,所以,寄存器變量通常被定義為局部頻繁使用的操作,如上例,在一個子函數中操作完了即可被銷毀,或者系統頻繁使用的全局變量,對其他情況要盡量避免使用。讀者在使用的時候可以仔細查閱編譯器說明手冊。

2 利用移位實現快速乘除操作

大部分MCU都選配一個輔助處理器,該處理器主要完成對數據進行邏輯與、或、非、循環、移位等基本操作,人們將之稱為布爾處理功能。巧妙的利用移位寄存器可以實現快速的乘除運算。設有如下代碼:

unsigned char mul,div,x,y; //申明變量

mul = x*3; //x乘以3賦值給mul

div = y/3; //y除以3賦值給div

匯編產生的目標代碼為:

MOV A,0x0A

MOV B,#0x03

MUL AB

MOV 0x80,A

MOV A,0x0B

MOV B,#0x03

DIV AB

MOV 0x09,A

如果將上述程序語句改成等價效果的語句:

mul = x

div = y>>1; //y除以2賦值給div

MOV A,0x0A

ADD A,ACC

MOV 0x08,A

MOV A,0x0B

CLR C

RRC A

MOV 0x09,A

可以看出,使用移位操作產生的目標代碼明顯優于使用乘除產生的目標代碼,而且MUL和DIV指令的周期比ADD指令周期長。

如果將上述方法變通一下,對于日常生活中的十進制計算方法遷移到二進制計算方法,利用計算百分比的閥值,利用假設需要計算統計的結果百分比大于80%,可以計算出新的統計閥值為80×128/100≈102。這樣就可以用移位元算代替乘除運算。

3 巧妙利用51核的位尋址功能

嵌入式系統是嵌入在一個大系統中執行著特殊任務的專用計算機系統,所以大部分MCU都具有特殊的指令處理能力,8051CPU可以對部分特殊功能寄存器和字節地址20H~2FH進行位尋址。

如有下述代碼,程序中需要經常對變量x的最低位和次低位的值進行01判斷,可以寫代碼如下:

unsignedchar bdata x,y;

y = x &&0x01; //獲知最低位情況

x = x>>1;

y = x &&0x01; //獲知次低位情況

匯編產生的結果如下:

MOV A,0x20

JZ J1

MOV R7,#0x01

SJMP J2

J1: MOV R7,#0x00

J2: MOV 0x21,R7

MOV A,0x20

CLR C

RRC A

MOV 0x20,A

JZ J3

MOV R7,0x01

SJMP J4

J3: MOV R7,#0x00

J4: MOV 0x21,R7

如果采用位操作則上述代碼只要寫成,該段代碼由于采用了位尋址,所以在程序中任何其他位置,如果在變量x發生改變的情況下,再次獲知最低位和次低位01情況,就不需要再次執行上述程序的計算工作,直接使用即可。

unsigned char bdata x;

bit y0,y1;

sbitr0 = x^0;

sbitr1 = x^1;

y0 = r0;

y1 = r1;

匯編產生的目標代碼:

MOV C,0x20.0

MOV 0x21.0,C

MOV C,0x20.1

MOV 0X21.1,C

4 結束語

本文結合基于8051核的MCU的內部結構特征,給出了若干C高效編程的技巧,本文的思想也可以應用到其他類型的MCU中去。筆者利用上述方法對一個1000多行C源代碼進行優化,編程產生的結果將原5K多的目標代碼降低為不足3K的目標代碼,幾乎減低了一半。

參考文獻:

主站蜘蛛池模板: 阳春市| 桃江县| 紫金县| 吉林市| 万荣县| 平舆县| 东乌珠穆沁旗| 桦甸市| 常山县| 临猗县| 个旧市| 武冈市| 天等县| 遵化市| 牡丹江市| 兰西县| 内黄县| 上杭县| 静安区| 柏乡县| 吴忠市| 集安市| 天峻县| 甘德县| 玛沁县| 石门县| 孟州市| 石河子市| 临夏市| 道孚县| 茂名市| 横峰县| 土默特左旗| 肇庆市| 鄂尔多斯市| 贵阳市| 鹤峰县| 北宁市| 丘北县| 松江区| 花垣县|