C語言是一種計算機程序設計語言,它既有高級語言的特點,又具有低級匯編語言的特點。它可以作為系統設計語言來編寫工作系統應用程序,也可以作為應用程序設計語言來編寫不依賴計算機硬件的應用程序。因此,它的應用范圍非常廣泛。
C語言的誕生及發展歷程如圖所示。


第1階段:A語言
C語言的發展頗為有趣,它的原型是ALGOL 60語言,也稱A語言。ALGOL 60是一種面向問題的高級話言,它離硬件比較遠,不適合編寫系統程序。AIGOL60 (也就是算法語言60)是程序設計語言由技藝轉向科學的重要標志,其特點是具有局部性、動態性、遞歸性和嚴謹性。
第2階段: CPL語言
1963年,劍橋大學將AIGOL 60語言發展成為CPL (Combined Programming Language) , CPL在AIGOL 60的基礎上與硬件接近了一些,但規模仍然比較宏大,難于實現。
第3階段: BCPL語言
1967年,劍橋大學馬丁·理察斯(Martin Richards)對CPL進行了簡化,推出了BCPL (Basic CombinedProgramming Language) , BCPL是計算機軟件人員在開發系統軟件時作為記述語言使用的一種結構化程序設計語言,它能夠直接處理與機器本身數據類型相近的數據,具有與內存地址對應的指針處理方式。
第4階段: B語言
在20世紀70年代初期,時任美國貝爾實驗室的肯·湯普遜對BCPL進行了修改,設計出比較簡單而且很接近硬件的語言,取名為B語言。B語言還包括了湯普遜的一些個人偏好,比如在一些特定的程序中減少非空格字符的數量。和BCPL以及FORTH類似, B語言只有一種數據類型,計算機字。大部分的操作將其作為整數對待,例如,進行+、-、*、/操作,但進行其余的操作時,則將其作為一個復引用的內存地址。在許多方面,B語言更像是一種早期版本的C語言,它還包括了一些庫函數,其作用類似于C語言中的標準輸入/輸出函數庫。
第5階段: C語言
由于B語言過于簡單,數據沒有類型,功能也有限,所以美國貝爾實驗室的丹尼斯·里奇在B語言的基礎上最終設計出了一種新的語言,取名為C語言,并試著以C語言編寫UNIX, 1972年,丹尼斯·里奇完成了C語言的設計,并成功地利用C語言編寫出了操作系統,從而降低了作業系統的修改難度。
1978年, C語言先后移植到大、中、小、微型計算機上,風靡世界,成為最廣泛的幾種計算機語言之一。
1983年,美國國家標準學會(ANSI)對C語言進行了標準化,當年頒布了第一個C語言標準草案(83 ANSI C) , 1987年又頒布了另一個C語言標準草案(87 ANSIC) 。 1994年, ISO修訂了C語言的標準。最新的C語言標準是在1999年頒布的,并在2000年3月被ANSI采用的C99,正式名稱是ISO/IEC9899:1999。
0.2 C語言的特點
每一種話言都有自己的優缺點, C語言也不例外,所以才有了語言的更替,有了不同語言的使用范圍。下面列舉C語言的一些優點。
1.功能強大、適用范圍廣、可移植性好
許多著名的系統軟件都是由C語言編寫的,而且C語言可以像匯編語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。
C語言適合于多種操作系統,如DOS, UNIX等。對于操作系統、系統使用程序以及需要對硬件進行操作的場合,使用C語言明顯優于其他解釋型高級語言,一些大型應用軟件也是用C語言編寫的。
2.運算符豐富
C語言的運算符包含的范圍廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉換等都作為運算符處理,從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活地使用各種運算符可以實現在其他高級語言中難以實現的運算。運算符的介紹見第4章中的相關內容。
3.數據結構豐富
C語言的數據類型有整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等,能用來實現各種復雜的數據結構的運算。C語言還引入了指針的概念,從而使程序的效率更高。
4.C語言是結構化語言
結構化語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。C語言是以函數形式提供給用戶的,因此用戶可以方便地調用這些函數,并具有多種循環和條件語句來控制程序的流向,從而使程序完全結構化。
5.C語言可以進行底層開發
C語言允許直接訪問物理地址,可以直接對硬件進行操作,因此可以使用C語言來進行計算機軟件的底層開發。
6.其他特性
C語言對語法的限制不太嚴格,其語法比較靈活,允許程序編寫者有較大的自由度。另外,C語言生成目標代碼的質量高,程序執行效率高。
0.3 c語言無處不在
C語言應用范圍極為廣泛,不僅僅是在軟件開發上,各類科研項目也都要用到C語言。下面列舉了C語言一些常見的領域。
(1) 應用軟件。Linux操作系統中的應用軟件都是使用C語言編寫的,因此這樣的應用軟件安全性非常高。
(2)對性能要求嚴格的領域。一般對性能有嚴格要求的地方都是用C語言編寫的,比如網絡程序的底層和網絡服務器端的底層、地圖查詢等。
(3)系統軟件和圖形處理。C語言具有很強的繪圖能力和可移植性,并且具備很強的數據處理能力,可以用來編寫系統軟件、制作動畫、繪制二維圖形和三維圖形等。
(4)數字計算。相對于其他編程語言, C語言是數字計算能力很強的高級語言。
(5)嵌入式設備開發。手機、PDA等時尚消費類電子產品相信大家都不陌生,其內部的應用軟件、游戲等很多都是采用C語言進行嵌入式開發的。
(6)游戲軟件開發。對于游戲大家更不陌生,很多人就是因為玩游戲而熟悉了計算機。利用C語言可以開發很多游戲,比如推箱子、貪吃蛇等。
0.4 C語言的學習經驗
CC語言是在國內外廣泛使用的一種計算機語言。其語言功能豐富、表達能力強、使用靈活方便,既具有高級語言的優點,又具有低級語言的許多特點,適合編寫系統軟件。很多新型的語言,如C++, Java, C#,J#, perl等都是衍生自C語言。掌握了C語言,可以說就掌握了很多門語言。
C語言是計算機的基礎,大多數軟件都需要用C語言來編寫,例如,我們在編寫一個較大的程序時,應該把它分成幾個小程序來看,這樣會容易得多。同時, C語言應該是操作和理論相結合的課程,兩者是不可分割的。
要了解C語言,就要從語法學起,首先要了解它的結構,比如變量,要了解變量的定義方式(格式) ,其意義是什么(定義變量有什么用) ;其次就是要怎么去運用它(用什么形式去應用它) 。這些都是語法基礎,也是C語言的基礎,如果把它們都了解了,那么編起程序來就很得心應手了。比如, IF ELSE和SWITCHCASE這兩種條件語句都是用來判斷執行功能的,那要什么時候用IF,什么時候用SWITCH呢?如果能夠很好地了解它們的結構和作用,那么就知道,若它的條件分文有多個,而且條件的值是整數或一個字符值,就會選SWITCH,因為如果條件分文太多時用IF語句,一定會出現IF的嵌套, IF的嵌套越多,程序的開銷就會隨著增大,這樣整個程序的運行效率就會大大降低。而sWITCH則不同,它只要比較一次,就可以找出條件的結果。不過SWITCH也有它的約束條件,就是它的條件值一定要為一個整型數或一個字符值,所以碰到它不能解決的問題時通常也會使用IF語句,畢竟I語句使用起來比較方便,而且使用范圍也比較廣。所以說了解語法規則是很重要的,如果沒有一個良好的語法基礎,很難編出一個好的程序。
學好語法基礎后我們就可以開始編程了。很多初學者在看完題目后不知從何入手,其實在編寫程序的時候,我們應該養成畫流程圖的好習慣。因為C語言的程序是以順序為主,一步步地從上往下執行的,而流程圖的思路也是從上到下一步步畫出來的。而且畫流程圖的過程也是你在構建編寫程序的思路的過程,流程圖畫好了,編程的思路也基本定了,然后根據思路來編寫程序即可。
除了要掌握上述基本的知識外,良好的編程習慣也是學好C語言的重要因素,例如,編寫程序時要有縮進,寫注釋,程序寫到一定的階段時要做模塊測試等。程序的維護是令程序員很頭疼的問題,如果一個復雜的程序在編完后才發現有錯誤,那么找出錯誤的工作量將會非常大。但是若在編寫程序時做好格式的縮進和寫注釋,那么程序看起來就很清晰了,如果在每個階段做模塊測試,確定之前的程序沒有錯誤,這樣錯誤機會也會減少很多。
設計程序的過程如同解決一個實際問題,你需要從多個角度來分析,首先要了解這個問題的基本要求,即輸入、輸出,以及完成從輸入到輸出的要求是什么,其次,從問題的要害入手,從前往后解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導出輸出,在這個過程中可確定所需的變量、數組、函數,然后確定處理過程——算法,最后得出結論。
學習一門編程語言之前,都要了解這門語言的精髓是什么。對于C語言而言,指針的定義與運用是它的一大特色,也是其能夠得到廣泛應用的重要原因之一。例如,指針可以作為數組的地址使數組的處理變得簡潔也可以通過指針給函數傳遞變量的地址,從而實現調用函數后返回多個值;指針還支持動態內存分配,使處理數值、字符數組的方法更為簡單。本書對指針內容進行了更新,詳細講解了這方面的內容。
0.5 C言的學習路線
學習編程語言就是一個堅持看、敲、寫的過程。
(1)要學好C語言,首先要買一本好的入門書籍。本書把C語言所涉及的內容進行了詳細的講解,對于新手來說是個不錯的選擇。
(2)看書,大概了解內容的時候,一定要把程序敲出來自己運行一遍。編程工具推薦VC 6.0,其使用教程可以上網搜索。
(3)讀程序。登錄論壇或者百度文庫找一些用C語言編寫的程序的例子,試著去讀懂。
(4)自己改寫程序。通過前面的學習,應該已經掌握一些基本的編程技巧。一定要有自己的想法,然后讓自己的想法通過程序來實現。編程語言的學習過程就是堅持的過程,只要掌握了一種編程語言,再去學習其他的語言就很輕松了。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。