- 相關(guān)推薦
C語言的由來與發(fā)展
“C語言是在一種稱為B語言的基礎(chǔ)上,克服了B語言依賴于機(jī)器又無數(shù)據(jù)類型等局限性開發(fā)的語言。大家知道C語言是怎么來的嗎?下面yjbys考試網(wǎng)小編為大家普及以下C語言的由來與發(fā)展,希望能夠幫助大家更加了解C語言。
1.1.1. c語言的由來
c語言誕生干19?2年,由美國(guó)電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室的D. M. Ritchie設(shè)計(jì),
并首先在一臺(tái)使用UNIX操作系統(tǒng)的DEC PDP-11計(jì)算機(jī)上實(shí)現(xiàn)。
C語言是在一種稱為B語言的基礎(chǔ)上,克服了B語言依賴于機(jī)器又無數(shù)據(jù)類型等局限性開發(fā)的語言。在1970年,美國(guó)貝爾實(shí)驗(yàn)室的IC. Thompson以BCPL語言為基礎(chǔ),設(shè)計(jì)出一種既簡(jiǎn)單又接近于硬件的B語言,并用它寫成了第一個(gè)UNIX操作系統(tǒng),在PDP-7計(jì)算機(jī)上實(shí)現(xiàn)的。B語言是取了BCPL語言的第一個(gè)字母。而BCPL語言(Basic Combined ProgrammingLanguage)是3.967年英國(guó)劍橋大學(xué)的M. Richard,基于一種CPL語言(combined Program-wing Language)提出的一種改進(jìn)的語言。而CPL語言又是于1963年英國(guó)劍橋大學(xué)根據(jù)AL-GOL 8。推出的一種接近硬件的語言。由此可見,G語言的根源可以追溯到ALGOL 60,它的演變過程如下所示:
ALGOL6o(1960年)與CPL(1963年)一BCPL(1967年)iB<3970年)-->C(1972年)
1. 1. 2C語言的發(fā)展
C語言是在人們?cè)O(shè)想尋找一種既具有一般高級(jí)語言的特征,又具有低級(jí)語言特點(diǎn)的語言
的情況下應(yīng)運(yùn)而生的,它具有人們的這種期望,集中了高級(jí)語言和低級(jí)語言的優(yōu)點(diǎn)。最初的C語言就是為了描述和實(shí)現(xiàn)UNIX操作系統(tǒng)而產(chǎn)生的一種工具語言。1973年,貝爾實(shí)驗(yàn)室的KThampson和D. M. Ri}chie兩人合作使用C語言修改了UNIX操作系統(tǒng),即uNZx第5版本。原來的UNIX操作系統(tǒng)是用匯編語言寫的,改寫后UNIX操作系統(tǒng)中90%以上使用了C語言。從此,C語言的命運(yùn)與UNIX操作系統(tǒng)便有著密切的聯(lián)系,隨著UNIX操作系統(tǒng)的發(fā)展和推廣,C語言也在被廣泛的使用和發(fā)展。
C語言出世以后。在應(yīng)用中不斷的改進(jìn)。在1975年UN1X第6版本公布以后,C語言開始引起人們的注意,它的優(yōu)點(diǎn)逐步被人們所認(rèn)識(shí)。1977年出現(xiàn)了與具體機(jī)器無關(guān)的C語言編譯文本,推動(dòng)了UNIX操作系統(tǒng)在各種機(jī)器上的迅速地實(shí)現(xiàn)。隨著UNIX的日益廣泛的使用,C語言也得到了迅速的推廣。1978年以后,C語言先后被移植到大、中、小和微型機(jī)上,它很快成為世界上應(yīng)用最廣泛的計(jì)算機(jī)語言之一。
1978年又推出UNIX第8版本,以該版本中的C編譯程序?yàn)榛A(chǔ),B. W. Ketnigha。和D. M. Ritchie合作(被稱為K&R)出版}}The C Programming Language}(C程序設(shè)計(jì)語言)一書,被稱為標(biāo)準(zhǔn)C 1983年,ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì))對(duì)G語言的各種版本進(jìn)行了擴(kuò)充,推出了新的標(biāo)準(zhǔn),被稱為ANSI . 它比原來的標(biāo)準(zhǔn)C有了改進(jìn)和擴(kuò)充。1987年,ANSI又公布了87ANSZC新版本。目前流行的各種c語言編譯系統(tǒng)的版本大多數(shù)都以此為基礎(chǔ),但各有其不同。當(dāng)前微機(jī)上使用的C語言編譯系統(tǒng)多為Microsoft C, Turbo C, Borland C和QuickC等,它們略有差異,按標(biāo)準(zhǔn)C書寫的程序,基本上都可運(yùn)行。讀者要了解不同版本的編譯系統(tǒng)的特點(diǎn)和區(qū)別可參閱有關(guān)的操作說明書。
C語言的特點(diǎn)
1.C語言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語言
結(jié)構(gòu)化程序設(shè)計(jì)的優(yōu)點(diǎn)是便于分工合作,便于調(diào)試、維護(hù)和擴(kuò)充。這種程序設(shè)計(jì)方法是將一個(gè)大程序分成若千個(gè)模塊,每個(gè)模塊完成一個(gè)功能,由一個(gè)總控模塊來控制和協(xié)調(diào)各個(gè)模塊來實(shí)現(xiàn)總的功能;因此,這種程序設(shè)計(jì)方法又稱為模塊化程序設(shè)計(jì)方法。在C語言中,函數(shù)是構(gòu)成C諳言程序的最小模塊。實(shí)際上,C語言的程序是由一個(gè)或者多個(gè)文件組成的,每個(gè)文件叉是由一個(gè)或多個(gè)函數(shù)組成的。因此,一個(gè)程序是由一個(gè)或多個(gè)函數(shù)組成的,其中,須有且僅有一個(gè)主函數(shù),生函數(shù)的名字規(guī)定為rnain() o這樣,組成一個(gè)程序的者干個(gè)文件中,僅有一個(gè)是主文件,只有主艾件中才含有main ( )函數(shù)。另外,函數(shù)是由若干條語句組成的,語句是由若干個(gè)單詞組成的‘單詞是由若干個(gè)字符組成的。字符是構(gòu)成程序的最小單元。e語言程序的構(gòu)成如下所示:
程序~文件~函數(shù)~語句~單詞、字符。
C語言是結(jié)構(gòu)化程序設(shè)計(jì)語言,它具有構(gòu)成三種基本結(jié)構(gòu)模式的語句,這種結(jié)構(gòu)化程序設(shè)計(jì)應(yīng)具有的三種基本結(jié)構(gòu)模式如下:
順序結(jié)構(gòu)棋式
它將由若干條順序執(zhí)行的語句構(gòu)成,這是程序設(shè)計(jì)的最基本形式。
分支結(jié)構(gòu)模式
C語言中具有條件語句和開關(guān)語句,它將會(huì)構(gòu)成各種需要的分支結(jié)構(gòu)模式。
循環(huán)結(jié)構(gòu)模式
C語言中提供了三種循環(huán)語句(for循環(huán),whil。循環(huán)和do-while循環(huán)),用它們可以構(gòu)成
各種循環(huán)結(jié)構(gòu)模式。
在講述C語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言的同時(shí),還必須指出它與其他結(jié)構(gòu)化程序設(shè)計(jì)語言(如PASCAL語言)相比較,還有一些不完全之處,因此,C語言是一種不完全的結(jié)構(gòu)化程序設(shè)計(jì)語言。其表現(xiàn)如下:
第一,完全的結(jié)構(gòu)化程序設(shè)計(jì)語言不允許使用goto語句,因?yàn)間oto語句會(huì)破壞結(jié)構(gòu)化。
但是。got。語句在某些時(shí)候會(huì)使得程序簡(jiǎn)練,因此,在C語言中原則上允許使用goto語句,為了減少它對(duì)結(jié)構(gòu)化的影響,采取了限制使用的辦法,即規(guī)定got。語句的轉(zhuǎn)向范圍只能在一個(gè)函數(shù)體內(nèi)。不得使用gates語句從一個(gè)函數(shù)體內(nèi)轉(zhuǎn)向到另一個(gè)函數(shù)體中,這種限制性地使用goto語句會(huì)給編程帶來一些方便,又不會(huì)影響棋塊之間的結(jié)構(gòu)化。但是,建議在G語言的程序中盡量少使用goto語句。
第二,完全的結(jié)構(gòu)化程序設(shè)計(jì)語言要求一個(gè)模塊只有一個(gè)入口和一個(gè)出口,這樣便于結(jié)構(gòu)化的管理。但是,C語言程序中允許函數(shù)使用多個(gè)返回語句(return語句),即允許函數(shù)有多個(gè)出口,返回到調(diào)用函數(shù)。這樣做也是為了編程中的方便。在C語言程序中,可以使用條件語句來返回不同的函數(shù)值。
由此可見,C語言雖然是一個(gè)不夠嚴(yán)格的結(jié)構(gòu)化程序設(shè)計(jì)語言,但它是一個(gè)使用起來十分靈活的高級(jí)語言。
C語言的語法結(jié)構(gòu)
順序結(jié)構(gòu)
順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
例如:a=3,b=5,現(xiàn)交換a、b的值,這個(gè)問題就好像交換兩個(gè)杯子里面的水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序?yàn)椋篶=a;a=b;b=c,執(zhí)行結(jié)果是a=5,b=c=3,如果改變其順序,寫成:a=b;c=a;b=c;則執(zhí)行結(jié)果就變成a=b=c=5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯(cuò)誤。順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算、輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語句順序就是輸入圓的半徑r,計(jì)算s=3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
選擇結(jié)構(gòu)
順序結(jié)構(gòu)的程序雖然能解決計(jì)算、輸出等問題,但不能做判斷再選擇。對(duì)于要先做判斷再選擇的問題就要使用選擇結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)倪x擇語句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計(jì)分析與語言分開,使得問題簡(jiǎn)單化,易于理解。
循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因?yàn)閺?qiáng)制改變程序的順序經(jīng)常會(huì)給程序的運(yùn)行帶來不可預(yù)料的錯(cuò)誤。
特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見錯(cuò)誤。
三個(gè)循環(huán)的異同點(diǎn):用while和do while循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進(jìn)行的;while循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和continue語句進(jìn)行控制的。
順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實(shí)不管哪種結(jié)構(gòu),均可廣義的把它們看成一個(gè)語句。在實(shí)際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實(shí)現(xiàn)各種算法,設(shè)計(jì)出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長(zhǎng)、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個(gè)問題的方法是將C程序設(shè)計(jì)成模塊化結(jié)構(gòu)。
【C語言的由來與發(fā)展】相關(guān)文章:
硬盤是由來及發(fā)展10-17
C語言的結(jié)構(gòu)10-14
C語言和C++的分別06-18
C語言考點(diǎn)精選06-29
C語言的應(yīng)用05-29
C語言試題08-02
什么是C語言07-27
C語言試題11-01
c語言入門經(jīng)典程序08-01