第1章C語(yǔ)言概述_第1頁(yè)
第1章C語(yǔ)言概述_第2頁(yè)
第1章C語(yǔ)言概述_第3頁(yè)
第1章C語(yǔ)言概述_第4頁(yè)
第1章C語(yǔ)言概述_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第1章章 C語(yǔ)言概述語(yǔ)言概述1.1 C語(yǔ)言出現(xiàn)的歷史背景語(yǔ)言出現(xiàn)的歷史背景1.2 C語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn)1.3 簡(jiǎn)單的簡(jiǎn)單的C C程序介紹程序介紹1.4 C程序的上機(jī)步驟程序的上機(jī)步驟程序設(shè)計(jì)語(yǔ)言與人類語(yǔ)言自然語(yǔ)言自然語(yǔ)言:人類為了交流思想、表達(dá)感:人類為了交流思想、表達(dá)感 情、交換信息,逐步發(fā)明了語(yǔ)言情、交換信息,逐步發(fā)明了語(yǔ)言。 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言:人類為了能夠更好地與計(jì):人類為了能夠更好地與計(jì) 算機(jī)進(jìn)行交流與通訊,發(fā)明了專算機(jī)進(jìn)行交流與通訊,發(fā)明了專 門與計(jì)算機(jī)打交道的交流工具。門與計(jì)算機(jī)打交道的交流工具。 34字字5基本單元基本單元詞:詞:常量、常量、變量、函數(shù)變量、函數(shù)句子句

2、子:語(yǔ)句語(yǔ)句篇章篇章:程序程序程序設(shè)計(jì)規(guī)則4.4.第四次飛躍:第四次飛躍:2020世紀(jì)世紀(jì)9090年代的年代的JavaJava 的出現(xiàn)標(biāo)志著單機(jī)語(yǔ)言向的出現(xiàn)標(biāo)志著單機(jī)語(yǔ)言向 的跨越,出現(xiàn)了第四次飛躍。的跨越,出現(xiàn)了第四次飛躍。 3.3.第三次飛躍:由第三次飛躍:由8080年代初期的面向年代初期的面向 過(guò)程的程序設(shè)計(jì),跨越到過(guò)程的程序設(shè)計(jì),跨越到8080年代的年代的 ,出現(xiàn)了出現(xiàn)了C+C+、 MLML、PerlPerl、PostscriptPostscript等與自然更接等與自然更接 近的語(yǔ)言,出現(xiàn)了第三個(gè)飛躍近的語(yǔ)言,出現(xiàn)了第三個(gè)飛躍 。 2.2.第二次飛躍:第二次飛躍:2020世紀(jì)世紀(jì)707

3、0年代出現(xiàn)年代出現(xiàn) 的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言AdaAda、C C、 PrologProlog、PascalPascal、SmallTalkSmallTalk。程序語(yǔ)言發(fā)展的四個(gè)飛躍1. 1.第一次飛躍:從第一次飛躍:從19461946到到19561956年年1010年年 的時(shí)間,計(jì)算機(jī)語(yǔ)言從最初的基于的時(shí)間,計(jì)算機(jī)語(yǔ)言從最初的基于 二進(jìn)制的語(yǔ)言發(fā)展到可以編譯的語(yǔ)二進(jìn)制的語(yǔ)言發(fā)展到可以編譯的語(yǔ) 言言( (匯編語(yǔ)言為代表的匯編語(yǔ)言為代表的)。)。 機(jī)器語(yǔ)言機(jī)器語(yǔ)言:【低級(jí)語(yǔ)言低級(jí)語(yǔ)言】由一系列二進(jìn)制由一系列二進(jìn)制0 0和和1 1組成,機(jī)器可直接執(zhí)行組成,機(jī)器可直接執(zhí)行;000000

4、010000000010000000000100010000101000000101000000000001000000010001000011000000010000000000000100000010000000001110 數(shù)據(jù)裝入寄存器數(shù)據(jù)裝入寄存器0數(shù)據(jù)裝入寄存器數(shù)據(jù)裝入寄存器1寄存器寄存器0與與1的數(shù)據(jù)乘的數(shù)據(jù)乘數(shù)據(jù)裝入寄存器數(shù)據(jù)裝入寄存器1寄存器寄存器0與與1的數(shù)據(jù)加的數(shù)據(jù)加保存寄存器保存寄存器0里的數(shù)據(jù)里的數(shù)據(jù) 難寫難讀,人使用不便,程序開發(fā)效率極低。難寫難讀,人使用不便,程序開發(fā)效率極低。像不像天書?像不像天書? 匯編語(yǔ)言匯編語(yǔ)言: 【低級(jí)語(yǔ)言低級(jí)語(yǔ)言】助記符號(hào)形式,指令與機(jī)

5、器指令對(duì)應(yīng),便于人識(shí)別和助記符號(hào)形式,指令與機(jī)器指令對(duì)應(yīng),便于人識(shí)別和使用。使用。load 0 aload 1 bmult 0 1load 1 cadd 0 1save 0 d 將單元將單元a的數(shù)據(jù)裝入寄存器的數(shù)據(jù)裝入寄存器0將單元將單元b的數(shù)據(jù)裝入寄存器的數(shù)據(jù)裝入寄存器1寄存器寄存器0與與1的數(shù)據(jù)乘的數(shù)據(jù)乘將單元將單元c的數(shù)據(jù)裝入寄存器的數(shù)據(jù)裝入寄存器1寄存器寄存器0與與1的數(shù)據(jù)加的數(shù)據(jù)加將寄存器將寄存器0里的數(shù)據(jù)存入單元里的數(shù)據(jù)存入單元d 計(jì)算機(jī)無(wú)法直接執(zhí)行匯編語(yǔ)言程序,執(zhí)行前需要翻譯為計(jì)算機(jī)無(wú)法直接執(zhí)行匯編語(yǔ)言程序,執(zhí)行前需要翻譯為機(jī)器指令程序。機(jī)器指令程序。最早是人自己翻譯。最早是人自

6、己翻譯。后來(lái)人們開發(fā)出后來(lái)人們開發(fā)出“匯編系統(tǒng)匯編系統(tǒng)”,讓計(jì)算機(jī)去完成程序翻,讓計(jì)算機(jī)去完成程序翻譯工作。譯工作。每條指令的意義容易理解。每條指令的意義容易理解。程序粒度太小,細(xì)節(jié)太多。程序粒度太小,細(xì)節(jié)太多。程序無(wú)結(jié)構(gòu),缺乏組織手段。程序無(wú)結(jié)構(gòu),缺乏組織手段。寫大程序仍然很困難。寫大程序仍然很困難。既不是英語(yǔ),也非機(jī)器語(yǔ)言既不是英語(yǔ),也非機(jī)器語(yǔ)言但更像英語(yǔ)但更像英語(yǔ)中(高)級(jí)語(yǔ)言中(高)級(jí)語(yǔ)言比寫機(jī)器語(yǔ)言程序容易,但比使用比寫機(jī)器語(yǔ)言程序容易,但比使用英語(yǔ)難英語(yǔ)難C語(yǔ)言語(yǔ)言: 【中(高)級(jí)語(yǔ)言中(高)級(jí)語(yǔ)言】在在C語(yǔ)言里寫前面同樣的程序:語(yǔ)言里寫前面同樣的程序:d = a * b + c;

7、 1011輸入輸入/輸出輸出設(shè)備設(shè)備存儲(chǔ)器存儲(chǔ)器運(yùn)算器運(yùn)算器控制器控制器程序程序和輸入數(shù)據(jù)和輸入數(shù)據(jù)輸出結(jié)果輸出結(jié)果取出數(shù)據(jù)取出數(shù)據(jù)存入數(shù)據(jù)存入數(shù)據(jù)操作命令操作命令存取命令存取命令取出取出程序指令程序指令輸入輸出輸入輸出命令命令計(jì)算結(jié)果計(jì)算結(jié)果CPU大腦大腦記憶裝置記憶裝置(Memory)眼睛眼睛和耳和耳朵朵121314接受美國(guó)國(guó)家技術(shù)勛章C程序設(shè)計(jì)語(yǔ)言的地盤 C C語(yǔ)言被分類位高級(jí)語(yǔ)言,但實(shí)際上它語(yǔ)言被分類位高級(jí)語(yǔ)言,但實(shí)際上它是一種介于高級(jí)語(yǔ)言和低級(jí)語(yǔ)言之間是一種介于高級(jí)語(yǔ)言和低級(jí)語(yǔ)言之間的語(yǔ)言。的語(yǔ)言。 很多流行語(yǔ)言、新生語(yǔ)言都借鑒了它很多流行語(yǔ)言、新生語(yǔ)言都借鑒了它的思想、語(yǔ)法的思想、

8、語(yǔ)法從從C+C+,到,到JavaJava,再到,再到C#C# 正確地學(xué)好正確地學(xué)好C C語(yǔ)言,是學(xué)習(xí)這些流行語(yǔ)語(yǔ)言,是學(xué)習(xí)這些流行語(yǔ)言的基礎(chǔ)。言的基礎(chǔ)。 特特點(diǎn)點(diǎn)( P24)返返回回2)運(yùn)運(yùn)算算符符豐豐富富。 (13類類,34 種種運(yùn)運(yùn)算算符符)3)數(shù)數(shù)據(jù)據(jù)類類型型豐豐富富。 (4大大類類,11 種種數(shù)數(shù)據(jù)據(jù)類類型型)4)具具有有結(jié)結(jié)構(gòu)構(gòu)化化的的控控制制語(yǔ)語(yǔ)句句。5)語(yǔ)語(yǔ)法法限限制制不不太太嚴(yán)嚴(yán)格格,程程序序設(shè)設(shè)計(jì)計(jì)自自由由度度大大。6)允允許許直直接接訪訪問(wèn)問(wèn)物物理理地地址址,能能進(jìn)進(jìn)行行位位操操作作,能能實(shí)實(shí)現(xiàn)現(xiàn)匯匯編編語(yǔ)語(yǔ)言言的的大大部部分分功功能能。7)生生成成目目標(biāo)標(biāo)代代碼碼質(zhì)質(zhì)量量

9、高高,程程序序執(zhí)執(zhí)行行效效率率高高。8)與與匯匯編編語(yǔ)語(yǔ)言言相相比比,程程序序的的移移植植性性好好。1)語(yǔ)語(yǔ)言言簡(jiǎn)簡(jiǎn)潔潔、緊緊湊湊,使使用用方方便便、靈靈活活。(32 個(gè)個(gè)關(guān)關(guān)鍵鍵字字)C語(yǔ)言的特點(diǎn)中級(jí)語(yǔ)言中級(jí)語(yǔ)言現(xiàn)在C語(yǔ)言的應(yīng)用 單片機(jī)系統(tǒng)中單片機(jī)系統(tǒng)中C C語(yǔ)言逐漸取代匯編語(yǔ)言。語(yǔ)言逐漸取代匯編語(yǔ)言。PalmPalm等嵌入式系統(tǒng)下支持的開發(fā)語(yǔ)言。等嵌入式系統(tǒng)下支持的開發(fā)語(yǔ)言。黑客、網(wǎng)絡(luò)安全以及黑客、網(wǎng)絡(luò)安全以及TivoliTivoli網(wǎng)管軟件的開發(fā)語(yǔ)言。網(wǎng)管軟件的開發(fā)語(yǔ)言。Unix/Linux Unix/Linux 操作系統(tǒng)上的編程語(yǔ)言。操作系統(tǒng)上的編程語(yǔ)言。WindowsWindows操

10、作系統(tǒng)下大部分代碼用標(biāo)準(zhǔn)操作系統(tǒng)下大部分代碼用標(biāo)準(zhǔn)C C開發(fā)開發(fā)BorlandBorland公司:公司: Turbo C,Turbo C+,Borland C+Turbo C,Turbo C+,Borland C+ C+ Builder(Windows C+ Builder(Windows版本版本) )MicrosoftMicrosoft公司:公司: Microsoft C (MS C)Microsoft C (MS C) Visual C+(Windows Visual C+(Windows版本版本) )IBM PCIBM PC微機(jī)微機(jī)DOSDOS、WindowsWindows平臺(tái)上常見的平

11、臺(tái)上常見的C C語(yǔ)言版本有:語(yǔ)言版本有: 主函數(shù)主函數(shù)由函數(shù)構(gòu)由函數(shù)構(gòu)成的語(yǔ)句成的語(yǔ)句【例例1.11.1】 打印單詞打印單詞 Hello, World! 的程序的程序簡(jiǎn)單的C語(yǔ)言程序介紹“myfunction.h”注釋文本注釋文本【例例1.21.2】求兩個(gè)整數(shù)之和求兩個(gè)整數(shù)之和。 解題的基本思路:解題的基本思路:(1)(1)從鍵盤輸入兩個(gè)整數(shù);從鍵盤輸入兩個(gè)整數(shù);(3)將運(yùn)算的結(jié)果存放在某一存儲(chǔ)單元;將運(yùn)算的結(jié)果存放在某一存儲(chǔ)單元;(4)輸出和。輸出和。(2)作加法運(yùn)算;作加法運(yùn)算;main( )一個(gè)程序的開始一個(gè)程序的開始 函數(shù)開始的標(biāo)志函數(shù)開始的標(biāo)志int i,j,sum;變量說(shuō)明,申請(qǐng)存

12、儲(chǔ)空間變量說(shuō)明,申請(qǐng)存儲(chǔ)空間i=2;j=-3;給出兩個(gè)整數(shù),給變量賦值給出兩個(gè)整數(shù),給變量賦值sum=i+j;作加法,并保留和作加法,并保留和printf(The sum of i+j is%dn,sum);輸出和輸出和函數(shù)結(jié)束的標(biāo)志函數(shù)結(jié)束的標(biāo)志/* example1.1 calculate the sum of i and j*/#include /* This is the main program */main() int i,j,sum; i=10; j=24; sum=add(i,j); printf(”sum= %dn,sum);/* This function calculat

13、es the sum of x and y */int add(int x,int y) int z; z=x+y; return(z);運(yùn)行結(jié)果:運(yùn)行結(jié)果:sum=34函數(shù)函數(shù)語(yǔ)句語(yǔ)句預(yù)處理命令預(yù)處理命令注釋注釋【例例1.21.2】求兩個(gè)整數(shù)之和求兩個(gè)整數(shù)之和。(另解)。(另解)由由main()函數(shù)和函數(shù)和1個(gè)其它函數(shù)個(gè)其它函數(shù)add()構(gòu)成的語(yǔ)言程序。構(gòu)成的語(yǔ)言程序。1.函數(shù)是語(yǔ)言程序的基本單位。函數(shù)是語(yǔ)言程序的基本單位。main()函數(shù)的作用,相當(dāng)于其它高級(jí)語(yǔ)言中的主程序;其它函數(shù)的作用,相當(dāng)于子程序。2.C語(yǔ)言程序總是從語(yǔ)言程序總是從main()函數(shù)開始執(zhí)行。函數(shù)開始執(zhí)行。一個(gè)語(yǔ)言程序

14、,總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)行完畢。習(xí)慣上,將主函數(shù)main()放在最前頭。C語(yǔ)言程序特點(diǎn)3. 函數(shù)的一般結(jié)構(gòu)函數(shù)的一般結(jié)構(gòu) 任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說(shuō)明和函數(shù)體兩部分組成。其一般結(jié)構(gòu)如下: 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表) 函數(shù)說(shuō)明部分 說(shuō)明語(yǔ)句部分; 執(zhí)行語(yǔ)句部分; 函數(shù)體部分 1.函數(shù)說(shuō)明函數(shù)說(shuō)明 由函數(shù)類型(可缺?。?、函數(shù)名和函數(shù)參數(shù)表三部分組成,其中函數(shù)參數(shù)表的格式為: 數(shù)據(jù)類型 形參, 數(shù)據(jù)類型 形參2例如,案例1.2中的函數(shù)add(),其函數(shù)說(shuō)明各部分如圖1-1所示。 函數(shù)類型 函數(shù)名 函數(shù)參數(shù)表 in

15、t add ( int x , int y ) 圖1-1 函數(shù)說(shuō)明部分結(jié)構(gòu)圖注意:注意:在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表。3.函數(shù)體函數(shù)體在函數(shù)說(shuō)明部分的下面、大括號(hào)(必須配對(duì)使用)內(nèi)的部分。函數(shù)體一般由說(shuō)明語(yǔ)句和可執(zhí)行語(yǔ)句兩部分構(gòu)成:(1)說(shuō)明語(yǔ)句部分說(shuō)明語(yǔ)句部分由變量定義、自定義類型定義、自定義函數(shù)說(shuō)明、外部變量說(shuō)明等組成。 (2)可執(zhí)行語(yǔ)句)可執(zhí)行語(yǔ)句 一般由若干條可執(zhí)行語(yǔ)句構(gòu)成。圖1-2是main()函數(shù)體的示意圖。/*主函數(shù)main()*/main() int num1,num2; 變量定義部分變量定義部分 printf(“Input the first integer number:

16、 ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); 可執(zhí)行語(yǔ)句部分可執(zhí)行語(yǔ)句部分 函數(shù)體 scanf(“%d”, &num2); printf(“max=%dn”, max(num1, num2); 圖1-2 函數(shù)體結(jié)構(gòu)示意圖 4.說(shuō)明說(shuō)明(1)函數(shù)體中的變量定義語(yǔ)句,必須在所有可執(zhí)行語(yǔ)句之前。 下面程序中變量定義語(yǔ)句“int max;”的位置是非法的:main() int i,j,sum; i=10; j=24; sum=add(i,j); printf(”sum= %dn,sum);ma

17、in() int i,j;/*變量定義語(yǔ)句:定義2個(gè)整型變量i、j*/ i=10; /*可執(zhí)行的賦值語(yǔ)句:將10賦值給變量i*/ j=24;/*可執(zhí)行的賦值語(yǔ)句:將24賦值給變量j*/ int sum;/*變量定義語(yǔ)句:出現(xiàn)在可執(zhí)行的 賦值語(yǔ)句“i=10;”和“ j=24;”之后,非法!*/ sum=i+j; printf(“sum=%dn”,sum); 解決辦法很簡(jiǎn)單,請(qǐng)讀者自己思考。(2)如果不需要,也可以缺省變量定義語(yǔ)句。1.2.3 源程序書寫格式源程序書寫格式1.所有語(yǔ)句都必須以分號(hào)“;”結(jié)束,函數(shù)的最后一個(gè)語(yǔ)句也不例外。2.程序行的書寫格式自由,既允許1行內(nèi)寫幾條語(yǔ)句,也允許1條語(yǔ)句

18、分寫在幾行上。例如,案例案例1.2的主函數(shù)main(),也可改寫成如下所示的格式:#include int main(void)int sum,i,j; i=2; j=3; sum=i+ j; printf(The sum of i+j is %dn, sum); return 0;如果某條語(yǔ)句很長(zhǎng),一般需要將其分寫在幾行上。3.允許使用注釋。C語(yǔ)言的注釋格式為: /* */例如,在案例1.1和案例1.2中,以及本節(jié)其它部分給出的源程序中,凡是用“/*”和“*/”括起來(lái)的文字,都是注釋。(1) “/*”和“*/” 必須成對(duì)使用,且“/”和“*”、以及“*”和“/”之間不能有空格,否則都出錯(cuò)。

19、技巧技巧:為避免遺漏必須配對(duì)使用的符號(hào),例如注釋符號(hào)、函數(shù)體的起止標(biāo)識(shí)符(花括號(hào))、圓括號(hào)等等,在輸入時(shí),可連續(xù)輸入這些起止標(biāo)識(shí)符,然后再在其中進(jìn)行插入來(lái)完成內(nèi)容的編輯。在起止標(biāo)識(shí)符嵌套時(shí),以及相距較遠(yuǎn)時(shí),這樣做更有必要。 (2)注釋的位置,可以單占1行,也可以跟在語(yǔ)句的后面。 (3)如果1行寫不下,可另起1行繼續(xù)寫。 (4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運(yùn)行。313233分析分析(Analysis)設(shè)計(jì)設(shè)計(jì)(Design)C程序的上機(jī)步驟1 1、源程序、目標(biāo)程序、可執(zhí)行程序的概念、源程序、目標(biāo)程序、可執(zhí)行程序的概念程序:為了使計(jì)算機(jī)能按照人們的意志工作,就程序:為了使計(jì)算機(jī)能按照人們的意志工作,就要根據(jù)問(wèn)題的要求,編寫相應(yīng)的程序。程序是一組要根據(jù)問(wèn)題的要求,編寫相應(yīng)的程序。程序是一組計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令,每一條指令使計(jì)算計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令,每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。機(jī)執(zhí)行特定的操作。源程序:程序可以用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫,源程序:程序可以用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫,用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫的程序稱為源程序。用高級(jí)語(yǔ)言或匯編語(yǔ)言編寫的程序稱為源程序。C C程序源程序的擴(kuò)展名為程序源程序的擴(kuò)展名為“.c.c”.”.目標(biāo)程序:源程序經(jīng)過(guò)目標(biāo)程序:源程序經(jīng)過(guò)“編譯程序編譯程序”翻譯

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論