官术网_书友最值得收藏!

第0章 學(xué)習(xí)攻略

在學(xué)習(xí)任何一門編程語言之前,都應(yīng)該對這門語言的用途和應(yīng)用領(lǐng)域有一個比較清楚的認識。只有這樣,才能有目的、有方向地去學(xué)習(xí)。

本章要點(已掌握的在方框中打鉤)

□ C語言的來源

□ C 語言的特點

□ C 語言的應(yīng)用領(lǐng)域

□ C 語言的學(xué)習(xí)路線

0.1 C語言的來源

C語言是一種計算機程序設(shè)計語言,它既有高級語言的特點,又具有低級匯編語言的特點。它可以作為系統(tǒng)設(shè)計語言來編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言來編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍非常廣泛。

C語言的誕生及發(fā)展歷程如圖所示。

第1階段:A語言

C語言的發(fā)展頗為有趣,它的原型是ALGOL 60語言,也稱A語言。ALGOL 60是一種面向問題的高級語言,它離硬件比較遠,不適合編寫系統(tǒng)程序。ALGOL 60(也就是算法語言60)是程序設(shè)計語言由技藝轉(zhuǎn)向科學(xué)的重要標志,其特點是具有局部性、動態(tài)性、遞歸性和嚴謹性。

第2階段:CPL語言

1963年,劍橋大學(xué)將ALGOL 60語言發(fā)展成為CPL(Combined Programming Language),CPL在ALGOL 60的基礎(chǔ)上與硬件接近了一些,但規(guī)模仍然比較宏大,難于實現(xiàn)。

第3階段:BCPL語言

1967年,劍橋大學(xué)馬丁·理察斯(Martin Richards)對CPL進行了簡化,推出了BCPL(Basic Combined Programming Language)。BCPL是計算機軟件人員在開發(fā)系統(tǒng)軟件時作為記述語言使用的一種結(jié)構(gòu)化程序設(shè)計語言,它能夠直接處理與機器本身數(shù)據(jù)類型相近的數(shù)據(jù),具有與內(nèi)存地址對應(yīng)的指針處理方式。

第4階段:B語言

在20世紀70年代初期,時任美國貝爾實驗室的肯·湯普遜對BCPL進行了修改,設(shè)計出比較簡單而且很接近硬件的語言,取名為B語言。B語言還包括了湯普遜的一些個人偏好,比如在一些特定的程序中減少非空格字符的數(shù)量。和BCPL以及FORTH類似,B語言只有一種數(shù)據(jù)類型,計算機字。大部分的操作將其作為整數(shù)對待,例如,進行+、-、*、/操作,但進行其余的操作時,則將其作為一個復(fù)引用的內(nèi)存地址。在許多方面,B語言更像是一種早期版本的C語言,它還包括了一些庫函數(shù),其作用類似于C語言中的標準輸入/輸出函數(shù)庫。

第5階段:C語言

由于B語言過于簡單,數(shù)據(jù)沒有類型,功能也有限,所以美國貝爾實驗室的丹尼斯·里奇在B語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,取名為C語言,并試著以C語言編寫UNIX。1972年,丹尼斯·里奇完成了C語言的設(shè)計,并成功地利用C語言編寫出了操作系統(tǒng),從而降低了作業(yè)系統(tǒng)的修改難度。

1978年,C語言先后移植到大、中、小、微型計算機上,風(fēng)靡世界,成為最廣泛的幾種計算機語言之一。

1983年,美國國家標準學(xué)會(ANSI)對C語言進行了標準化,當(dāng)年頒布了第一個C語言標準草案(83 ANSI C),1987年又頒布了另一個C語言標準草案(87 ANSI C)。1994年,ISO修訂了C語言的標準。最新的C語言標準是在1999年頒布的,并在2000年3月被ANSI采用的C99,正式名稱是ISO/IEC9899:1999。

0.2 C語言的特點

每一種語言都有自己的優(yōu)缺點,C語言也不例外,所以才有了語言的更替,有了不同語言的使用范圍。下面列舉C語言的一些優(yōu)點。

1. 功能強大、適用范圍廣、可移植性好

許多著名的系統(tǒng)軟件都是由C 語言編寫的,而且C語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。

C語言適合于多種操作系統(tǒng),如DOS、UNIX等。對于操作系統(tǒng)、系統(tǒng)使用程序以及需要對硬件進行操作的場合,使用C語言明顯優(yōu)于其他解釋型高級語言,一些大型應(yīng)用軟件也是用C語言編寫的。

2. 運算符豐富

C語言的運算符包含的范圍廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理,從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活地使用各種運算符可以實現(xiàn)在其他高級語言中難以實現(xiàn)的運算。運算符的介紹見第4章中的相關(guān)內(nèi)容。

3. 數(shù)據(jù)結(jié)構(gòu)豐富

C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。C語言還引入了指針的概念,從而使程序的效率更高。

4. C語言是結(jié)構(gòu)化語言

結(jié)構(gòu)化語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂谩⒕S護以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,因此用戶可以方便地調(diào)用這些函數(shù),并具有多種循環(huán)和條件語句來控制程序的流向,從而使程序完全結(jié)構(gòu)化。

5. C語言可以進行底層開發(fā)

C語言允許直接訪問物理地址,可以直接對硬件進行操作,因此可以使用C語言來進行計算機軟件的底層開發(fā)。

6. 其他特性

C語言對語法的限制不太嚴格,其語法比較靈活,允許程序編寫者有較大的自由度。另外,C語言生成目標代碼的質(zhì)量高,程序執(zhí)行效率高。

0.3 C語言無處不在

C語言應(yīng)用范圍極為廣泛,不僅僅是在軟件開發(fā)上,各類科研項目也都要用到C語言。下面列舉了C語言一些常見的領(lǐng)域。

(1)應(yīng)用軟件。Linux操作系統(tǒng)中的應(yīng)用軟件都是使用C語言編寫的,因此這樣的應(yīng)用軟件安全性非常高。

(2)對性能要求嚴格的領(lǐng)域。一般對性能有嚴格要求的地方都是用C語言編寫的,比如網(wǎng)絡(luò)程序的底層和網(wǎng)絡(luò)服務(wù)器端的底層、地圖查詢等。

(3)系統(tǒng)軟件和圖形處理。C語言具有很強的繪圖能力和可移植性,并且具備很強的數(shù)據(jù)處理能力,可以用來編寫系統(tǒng)軟件、制作動畫、繪制二維圖形和三維圖形等。

(4)數(shù)字計算。相對于其他編程語言,C語言是數(shù)字計算能力很強的高級語言。

(5)嵌入式設(shè)備開發(fā)。手機、PDA等時尚消費類電子產(chǎn)品相信大家都不陌生,其內(nèi)部的應(yīng)用軟件、游戲等很多都是采用C語言進行嵌入式開發(fā)的。

(6)游戲軟件開發(fā)。對于游戲大家更不陌生,很多人就是因為玩游戲而熟悉了計算機。利用C語言可以開發(fā)很多游戲,比如推箱子、貪吃蛇等。

0.4 C語言的學(xué)習(xí)經(jīng)驗

CC語言是在國內(nèi)外廣泛使用的一種計算機語言。其語言功能豐富、表達能力強、使用靈活方便,既具有高級語言的優(yōu)點,又具有低級語言的許多特點,適合編寫系統(tǒng)軟件。很多新型的語言,如C++, Java,C#,J#,perl等都是衍生自C語言。掌握了C語言,可以說就掌握了很多門語言。

C語言是計算機的基礎(chǔ),大多數(shù)軟件都需要用C語言來編寫,例如,我們在編寫一個較大的程序時,應(yīng)該把它分成幾個小程序來看,這樣會容易得多。同時, C語言應(yīng)該是操作和理論相結(jié)合的課程,兩者是不可分割的。

要了解C語言,就要從語法學(xué)起,首先要了解它的結(jié)構(gòu),比如變量,要了解變量的定義方式(格式),其意義是什么(定義變量有什么用);其次就是要怎么去運用它(用什么形式去應(yīng)用它)。這些都是語法基礎(chǔ),也是C語言的基礎(chǔ),如果把它們都了解了,那么編起程序來就很得心應(yīng)手了。比如,IF ELSE 和 SWITCH CASE 這兩種條件語句都是用來判斷執(zhí)行功能的,那要什么時侯用IF,什么時侯用SWITCH呢?如果能夠很好地了解它們的結(jié)構(gòu)和作用,那么就知道,若它的條件分支有多個,而且條件的值是整數(shù)或一個字符值,就會選SWITCH。因為如果條件分支太多時用IF語句,一定會出現(xiàn)IF的嵌套,IF的嵌套越多,程序的開銷就會隨著增大,這樣整個程序的運行效率就會大大降低。而SWITCH則不同,它只要比較一次,就可以找出條件的結(jié)果。不過SWITCH也有它的約束條件,就是它的條件值一定要為一個整型數(shù)或一個字符值,所以碰到它不能解決的問題時通常也會使用IF語句,畢竟IF語句使用起來比較方便,而且使用范圍也比較廣。所以說了解語法規(guī)則是很重要的,如果沒有一個良好的語法基礎(chǔ),很難編出一個好的程序。

學(xué)好語法基礎(chǔ)后我們就可以開始編程了。很多初學(xué)者在看完題目后不知從何入手,其實在編寫程序的時候,我們應(yīng)該養(yǎng)成畫流程圖的好習(xí)慣。因為C語言的程序是以順序為主,一步步地從上往下執(zhí)行的,而流程圖的思路也是從上到下一步步畫出來的。而且畫流程圖的過程也是你在構(gòu)建編寫程序的思路的過程,流程圖畫好了,編程的思路也基本定了,然后根據(jù)思路來編寫程序即可。

除了要掌握上述基本的知識外,良好的編程習(xí)慣也是學(xué)好C語言的重要因素,例如,編寫程序時要有縮進,寫注釋,程序?qū)懙揭欢ǖ碾A段時要做模塊測試等。程序的維護是令程序員很頭疼的問題,如果一個復(fù)雜的程序在編完后才發(fā)現(xiàn)有錯誤,那么找出錯誤的工作量將會非常大。但是若在編寫程序時做好格式的縮進和寫注釋,那么程序看起來就很清晰了,如果在每個階段做模塊測試,確定之前的程序沒有錯誤,這樣錯誤機會也會減少很多。

設(shè)計程序的過程如同解決一個實際問題,你需要從多個角度來分析,首先要了解這個問題的基本要求,即輸入、輸出,以及完成從輸入到輸出的要求是什么,其次,從問題的要害入手,從前往后解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個過程中可確定所需的變量、數(shù)組、函數(shù),然后確定處理過程—算法,最后得出結(jié)論。

學(xué)習(xí)一門編程語言之前,都要了解這門語言的精髓是什么。對于C語言而言,指針的定義與運用是它的一大特色,也是其能夠得到廣泛應(yīng)用的重要原因之一。例如,指針可以作為數(shù)組的地址使數(shù)組的處理變得簡潔;也可以通過指針給函數(shù)傳遞變量的地址,從而實現(xiàn)調(diào)用函數(shù)后返回多個值;指針還支持動態(tài)內(nèi)存分配,使處理數(shù)值、字符數(shù)組的方法更為簡單。本書對指針內(nèi)容進行了更新,詳細講解了這方面的內(nèi)容。

0.5 C語言的學(xué)習(xí)路線

學(xué)習(xí)編程語言就是一個堅持看、敲、寫的過程。

⑴ 要學(xué)好C語言,首先要買一本好的入門書籍。本書把C語言所涉及的內(nèi)容進行了詳細的講解,對于新手來說是個不錯的選擇。

⑵ 看書,大概了解內(nèi)容的時候,一定要把程序敲出來自己運行一遍。編程工具推薦VC 6.0,其使用教程可以上網(wǎng)搜索。

⑶ 讀程序。登錄論壇或者百度文庫找一些用C語言編寫的程序的例子,試著去讀懂。

⑷ 自己改寫程序。通過前面的學(xué)習(xí),應(yīng)該已經(jīng)掌握一些基本的編程技巧。一定要有自己的想法,然后讓自己的想法通過程序來實現(xiàn)。編程語言的學(xué)習(xí)過程就是堅持的過程,只要掌握了一種編程語言,再去學(xué)習(xí)其他的語言就很輕松了。

主站蜘蛛池模板: 宁陕县| 华池县| 阿瓦提县| 疏勒县| 金门县| 菏泽市| 饶阳县| 长垣县| 澄城县| 海兴县| 乐业县| 和平区| 镇原县| 灌南县| 高州市| 永宁县| 镇雄县| 和田市| 上思县| 社旗县| 九寨沟县| 安龙县| 五台县| 图木舒克市| 和平区| 巴南区| 郯城县| 白山市| 枣强县| 阳东县| 云和县| 修水县| 怀来县| 白山市| 伊宁市| 湖州市| 莲花县| 鹰潭市| 阿拉善盟| 安丘市| 金阳县|