c程序設(shè)計(jì)語言1a_第1頁
c程序設(shè)計(jì)語言1a_第2頁
c程序設(shè)計(jì)語言1a_第3頁
c程序設(shè)計(jì)語言1a_第4頁
c程序設(shè)計(jì)語言1a_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章 C語言概述8/18/20221內(nèi)容 計(jì)算機(jī)語言 C語言簡(jiǎn)介 C語言發(fā)展歷史 C 語言特點(diǎn) 計(jì)算機(jī)程序 C語言程序 C語言程序的基本結(jié)構(gòu) C語言的語句 C語言的字符集和標(biāo)識(shí)符 算法與算法的表示 算法 算法的表示 結(jié)構(gòu)化程序設(shè)計(jì)方法8/18/2022計(jì)算機(jī)語言定義 為計(jì)算機(jī)用戶設(shè)計(jì)的用于編制程序的語言工具稱為計(jì)算機(jī)程序設(shè)計(jì)語言分類機(jī)器語言匯編語言高級(jí)語言8/18/2022計(jì)算機(jī)語言:機(jī)器語言定義 具有固定格式、能完成一系列操作的特定二進(jìn)制編碼。 特點(diǎn) 難于掌握、容易出錯(cuò),冗長繁瑣8/18/2022計(jì)算機(jī)語言:匯編語言定義 用助記符代替指令的操作碼、用數(shù)字或符號(hào)代替指令中的操作數(shù)或操作數(shù)存放

2、位置的程序設(shè)計(jì)語言。 例如:用ADD代替加法指令的二進(jìn)制代碼; 用SUB代替減法指令的二進(jìn)制代碼;特點(diǎn) 易于記憶、便于掌握; 用匯編語言編寫的程序需要通過計(jì)算機(jī)編譯程序編譯,才能被計(jì)算機(jī)執(zhí)行,因而執(zhí)行效率不如機(jī)器語言程序高。8/18/2022計(jì)算機(jī)語言:高級(jí)語言定義 機(jī)器語言或匯編語言是面向機(jī)器的語言,用它們編寫程序都離不開具體的計(jì)算機(jī)指令系統(tǒng)。高級(jí)語言則是面向過程的語言,它獨(dú)立于機(jī)器。在高級(jí)語言里,操作碼與地址都以符號(hào)代碼或文字形式出現(xiàn)。特點(diǎn) 易于記憶、便于理解和掌握,編寫效率高; 用高級(jí)語言編寫的程序需要通過編譯或解釋,才能被計(jì)算機(jī)執(zhí)行,因而執(zhí)行效率不如機(jī)器語言程序高。8/18/2022計(jì)

3、算機(jī)語言:高級(jí)語言種類 BASIC,PASCAL,F(xiàn)ORTRAN, COBOL,C,LISP, PROLOG高級(jí)語言程序的執(zhí)行方式編譯執(zhí)行:將源程序先轉(zhuǎn)換成機(jī)器語言的目標(biāo)程序,再將各個(gè)目標(biāo)程序連接成可執(zhí)行程序。解釋執(zhí)行:用語言的解釋程序?qū)υ闯绦蜻M(jìn)行解釋,同時(shí)執(zhí)行。執(zhí)行過程中不保存解釋后的機(jī)器代碼,下次運(yùn)行程序需要重新解釋。 8/18/2022C語言簡(jiǎn)介:C語言發(fā)展歷史語言名稱誕生年代 制定者 ALGOL 60 1960Peter Naur等13人來自7個(gè)不同的國家CPL 1963劍橋大學(xué) BCPL 1967M.Richards B語言 1970-1971K. Thompson C語言 1972

4、-1973D.M.Ritchie 可移植C語言 1977標(biāo)準(zhǔn)C語言 1978B.W.Kernighan, D.M.Ritchie ANSI C語言 1983American National Standard Institute 87 ANSI C 1987American National Standard Institute ISO C語言 1990International Standard Organnization 8/18/2022C語言簡(jiǎn)介:C語言發(fā)展歷史語言名稱特點(diǎn) ALGOL 60 面向問題,離硬件遠(yuǎn),不適合編寫系統(tǒng)軟件(Algorithm Language) CPL 比AL

5、GOL60 離硬件近,但規(guī)模大,難實(shí)現(xiàn) BCPL 對(duì)CPL的簡(jiǎn)化-Basic Combined Programming Language B語言 更簡(jiǎn)化的BCPL, 可編寫系統(tǒng)軟件(UNIX),但過于簡(jiǎn)單,功能有限 C語言 保持了B和BCPL語言的特點(diǎn),克服了不足, 編寫了UNIX第5,6版 可移植C語言 簡(jiǎn)化了移植C的工作, 標(biāo)準(zhǔn)C語言 以UNIX第7版的編譯程序?yàn)榛A(chǔ),The C Programming Language ANSI C語言 考慮了C語言問世以來的發(fā)展情況,比標(biāo)準(zhǔn)C有很大發(fā)展 87 ANSI C K&G 重新寫了書The C Programming Language,提出了新

6、標(biāo)準(zhǔn) ISO C語言 以87 ANSI C 為標(biāo)準(zhǔn)和基礎(chǔ),誕生了許多C語言系統(tǒng): Microsoft c、Turbo C、Quick C、Borland C、Visual C、Visual C+ 8/18/2022C語言簡(jiǎn)介:典型的C語言版本目前比較流行的C語言版本 Microsoft C、Visual C、Visual C+ (Microsoft); Turbo C、Borland C、 Borland C+(Borland); 這些C語言分DOS版本、WINDOWS版本; 有面向過程的、也有面向?qū)ο蟮摹1菊n程以Turbo C3.0,Visual c+ 6.0 為編程實(shí)踐的上機(jī)環(huán)境。8/18

7、/2022C語言簡(jiǎn)介: C 語言特點(diǎn)1.語言簡(jiǎn)潔、緊湊、使用方便、靈活32個(gè)關(guān)鍵字,9種控制語句,書寫自由,接近自然語言 2. 運(yùn)算符豐富有34種運(yùn)算符,使用很靈活,可以構(gòu)造多樣表達(dá)式 3. 數(shù)據(jù)類型齊全 標(biāo)準(zhǔn)的和用戶定義的數(shù)據(jù)類型能滿足各種編程需要 4. 結(jié)構(gòu)化語言便于編寫結(jié)構(gòu)化的程序 8/18/2022C語言簡(jiǎn)介: C 語言特點(diǎn)5.程序執(zhí)行效率高,可移植性好 比匯編程序執(zhí)行效率低1020%,基本不需修改即可以移植到其他機(jī)器系統(tǒng) 6.比其他高級(jí)語言更接近機(jī)器語言 C語言是高級(jí)語言中的低級(jí)語言,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接訪問物理硬件 7.語法不太規(guī)范,自由度大,查錯(cuò)難度大 從這個(gè)意義

8、上講,不是“很好”的教學(xué)語言 8/18/2022計(jì)算機(jī)程序程序種類源程序目標(biāo)程序可執(zhí)行程序解釋程序編譯程序程序執(zhí)行過程 CPU從內(nèi)存中讀出一條指令,通過運(yùn)算器和控制器執(zhí)行相應(yīng)的操作,再讀下一條指令,執(zhí)行相應(yīng)的操作,重復(fù)該過程,直至程序的最后一條指令。8/18/2022C語言程序源程序目標(biāo)程序可執(zhí)行程序編譯程序8/18/2022 C語言程序的基本結(jié)構(gòu) C語言程序示例例1 僅由一個(gè)main()函數(shù)構(gòu)成的語言程序。 #include void main() printf(“Hi, it is me- a simple C program!n”);主函數(shù)語句:輸出語句預(yù)處理命令8/18/2022C語言

9、程序的基本結(jié)構(gòu)例2#includefloat max(float x, float y);void main() float a, b, c; /*輸入3個(gè)實(shí)數(shù)*/ scanf(”%f%f%f”,&a,&b,&c); /*打印最大者*/ printf(”The biggest is %f”, max(max(a,b),c);float max(float x, float y) if (xy ) return (x); else return (y); 輸入語句函數(shù)注釋聲明語句if語句8/18/2022 C語言程序的基本結(jié)構(gòu)C語言程序是函數(shù)的組合體特殊的主函數(shù)main()函數(shù) C語言程序必須有

10、且只能有一個(gè)名稱是main的函數(shù),稱為主函數(shù)。主函數(shù)是整個(gè)程序的組織者,它直接或間接協(xié)調(diào)組織其它函數(shù)按照一定的順序工作,完成整體任務(wù);C語言遵循“先定義后使用”的原則 一般,要使用一個(gè)符號(hào),應(yīng)當(dāng)在使用前定義它;若主函數(shù)在其它函數(shù)之前出現(xiàn),要對(duì)后面的函數(shù)進(jìn)行聲明;C語言程序從main函數(shù)開始執(zhí)行8/18/2022C語言程序的基本結(jié)構(gòu) 從設(shè)計(jì)C語言源程序到可以執(zhí)行的程序, 通常要經(jīng)過以下幾步:編輯編譯連接執(zhí)行8/18/2022 C語言的函數(shù)直觀描述 函數(shù)好比一個(gè)加工處理器,可以接收需要處理的數(shù)據(jù),也可以輸出要求的處理結(jié)果,其形象圖如下:輸入:參數(shù)函數(shù)輸出:函數(shù)類型8/18/2022 C語言的函數(shù)函

11、數(shù)的一般格式 函數(shù)類型 函數(shù)名稱(函數(shù)參數(shù)) 函數(shù)體:由聲明、語句以及注釋組成;void main() printf(”Hi, it is me- a simple C program!n”);8/18/2022 C語言的函數(shù)函數(shù)的例子 void main() printf(”a simple C program!n”);float max(float x, float y) if (xy ) return (x); else return (y); 8/18/2022C語言的函數(shù)函數(shù)由語句構(gòu)成每條語句須以分號(hào)“;”結(jié)束 一行可以包含一條語句或多條語句;多行一條語句()注釋有兩種形式 /* *

12、/:用于一段注釋;可出現(xiàn)在引號(hào)外、空格可出現(xiàn)的任何位置; / :用于一行注釋; 注釋不是程序的必要部分,其存在與否不影響程序的編譯和執(zhí)行。但注釋可增強(qiáng)程序的可讀性。C語言絕大部分功能通過函數(shù)實(shí)現(xiàn) C語言一般都提供了常見功能的函數(shù);使用這些函數(shù),要在main函數(shù)前面出現(xiàn)包含這些函數(shù)的頭文件;比如#include包含scanf、printf等I/O函數(shù);#include包含sin、log、sqrt等數(shù)學(xué)函數(shù)8/18/2022C語言的語句按形式分類控制語句 (1)選擇結(jié)構(gòu)控制語句: if-else, switch (2)循環(huán)結(jié)構(gòu)控制語句:do-while,for, while (3)其它控制語句:g

13、oto, return,break, continue 表達(dá)式語句表達(dá)式語句由表達(dá)式后加一個(gè)分號(hào)構(gòu)成;表達(dá)式語句的特例是函數(shù)調(diào)用語句.例如:scanf(“%f%f%f”,&a,&b,&c); printf(“%f”, max(max(a,b),c);8/18/2022C語言的語句按語句數(shù)目分類簡(jiǎn)單語句:?jiǎn)螚l語句;只由一個(gè)分號(hào)構(gòu)成的語句稱為空語句。復(fù)合語句:由大括號(hào)括起來的一組簡(jiǎn)單語句構(gòu)成的語句組。 注意: (1)復(fù)合語句在地位上與單條語句相同,但復(fù)合語句最后沒有分號(hào); (2)復(fù)合語句可以嵌套,即復(fù)合語句中可出現(xiàn)復(fù)合語句;void main() int a,b,c; a=1;b=3;c=3; p

14、rintf(“%d”,a+b+c);復(fù)合語句8/18/2022C的字符集和標(biāo)識(shí)符C語言的標(biāo)識(shí)符和運(yùn)算符是組成C語句的基本單位。C語言的字符集是構(gòu)成標(biāo)識(shí)符和運(yùn)算符的基本單位。8/18/2022ASCII碼:American Standard Code for Information Interchange8/18/2022C的字符集 C語言的字符集C語言字符集是ASCII碼字符集的子集,主要包括:(1) 26個(gè)英文字母(區(qū)分大小寫)(2) 10個(gè)數(shù)字(09)(3)下劃線以及專用符號(hào)(+ - * / % 等)。 關(guān)于ASCII碼字符集基本知識(shí):(1)26個(gè)英文大寫字母連續(xù)排列;(2)26個(gè)英文小寫

15、字母連續(xù)排列;(3)10個(gè)數(shù)字(09)連續(xù)排列;(4)每個(gè)字符有唯一一個(gè)序號(hào)相對(duì)應(yīng); 8/18/2022C的標(biāo)識(shí)符 標(biāo)識(shí)符由C語言字符組成 C語言標(biāo)識(shí)符構(gòu)建規(guī)則: 注意: (1) C語言的標(biāo)識(shí)符區(qū)分大、小寫字母; (2) 標(biāo)識(shí)符的長度依編譯系統(tǒng)的不同而不同。由字母或下劃線開頭,字母、數(shù)字和下劃線的組合8/18/2022C的標(biāo)識(shí)符例 標(biāo)識(shí)符舉例合法的標(biāo)識(shí)符: a, A, A10, A_2, store, price, Student_no, is_zero, _pdf不合法的標(biāo)識(shí)符: 2, 2a, a-2, a+2, *3a, “this” 8/18/2022C的標(biāo)識(shí)符:關(guān)鍵字(保留字) 關(guān)鍵字

16、(保留字)是C語言專用的標(biāo)識(shí)符,用戶不能賦予新的含義而用作自己的標(biāo)識(shí)符(共有32個(gè)):autobreakcasechar constcontinuedefaultdodouble elseenumexternfloatfor goto if intlongregister returnshortsignedsizeofstatic structswitch typedef unionunsigned voidvolatilewhile8/18/2022C的標(biāo)識(shí)符:預(yù)定義標(biāo)識(shí)符 預(yù)定義標(biāo)識(shí)符是賦予指定含義的標(biāo)識(shí)符,這些含義通常符合習(xí)慣用法。例如:sin,tan,log等都與數(shù)學(xué)中的含義相同; f

17、close, fopen用于文件的關(guān)閉、打開。這些預(yù)定義標(biāo)識(shí)符的數(shù)量隨系統(tǒng)的不同而不同。預(yù)定義標(biāo)識(shí)符與關(guān)鍵字不同,用戶可以賦予新的含義,但不提倡這樣做。 8/18/2022C的標(biāo)識(shí)符:用戶定義標(biāo)識(shí)符 用戶安照自己的意愿和需要定義的標(biāo)識(shí)符用戶定義標(biāo)識(shí)符的基本原則例判別下面的字符序列是否是合法的標(biāo)識(shí)符: p2p, ,, sin, Int, INT, sin, a2, a*b(1)符合標(biāo)識(shí)符號(hào)的組成規(guī)則;(2)絕對(duì)避免和關(guān)鍵字重名;(3)盡量避免和預(yù)定義標(biāo)識(shí)符重名;8/18/2022C的標(biāo)識(shí)符例3標(biāo)識(shí)符sin,cos被重命名,程序正確;若把它們改為int,for,編譯時(shí)會(huì)出錯(cuò)。#include#in

18、cludedouble sin(double x) return 2*x; void main() float cos=2; printf(%.2f,sin(1);8/18/2022算法與算法的表示編寫程序時(shí),必須明確如下3個(gè)方面: 1已知的要處理的數(shù)據(jù)對(duì)象數(shù)據(jù)結(jié)構(gòu) 2要求得到的結(jié)果及形式 3從已知出發(fā)求得結(jié)果所采取的方法和步驟算法數(shù)據(jù)結(jié)構(gòu)和算法根據(jù)結(jié)果和形式確定,所得結(jié)果和形式是數(shù)據(jù)結(jié)構(gòu)和算法的必然產(chǎn)物。計(jì)算機(jī)程序是數(shù)據(jù)結(jié)構(gòu)之上的算法,即: 程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法計(jì)算機(jī)算法可以分為兩大類: 數(shù)值算法和非數(shù)值算法。 8/18/2022 算法的例子例4 任意給定正整數(shù)n,求數(shù)列 1,-1/

19、2,1/3,-1/4,前n項(xiàng)的和。分析:處理對(duì)象正負(fù)項(xiàng)交替出現(xiàn),后一項(xiàng)的分母比前一項(xiàng)的分母大1的數(shù)列;求前n項(xiàng)的和。算法:令sum 代表要求的和,且sum初始值為0;則sum 是逐項(xiàng)求出數(shù)列的每一項(xiàng)后,加到sum上的結(jié)果。令item代表第k項(xiàng)(從1開始),則當(dāng)k為奇數(shù)時(shí),item為正,否則為負(fù)。讓k按1遞增,當(dāng)k變到n的時(shí)候,sum就是所求的結(jié)果。據(jù)此可以設(shè)計(jì)如下算法:8/18/2022 算法的例子 (1)讀入整數(shù)n (2)sum=0 (3)k=1 (4)若k為奇數(shù),item=1/k;否則item=-1/k (5)sum=sum+item (6)k遞增1:k=k+1 (7)如果k不大于n,則繼

20、續(xù)(4)(6); 否則結(jié)束,輸出結(jié)果 8/18/2022 算法的特點(diǎn)1有窮性:算法應(yīng)當(dāng)在有限步結(jié)束2確定性:算法的每一步都應(yīng)當(dāng)是清晰明確的3有效性:算法應(yīng)能有效運(yùn)行并給出預(yù)期結(jié)果4. 有輸出:算法應(yīng)當(dāng)有一個(gè)或多個(gè)輸出。 8/18/2022 算法的表示自然語言表示法 用自然語言把算法表達(dá)、敘述出來。此方法因自然語言含義的不準(zhǔn)確而不準(zhǔn)確,因此不能在計(jì)算機(jī)上實(shí)現(xiàn)。 計(jì)算機(jī)語言表示法 用語言嚴(yán)格按照其語法寫出算法對(duì)應(yīng)的程序,這是我們編程的目標(biāo)。但一下子直接寫出算法的計(jì)算機(jī)語言程序往往比較困難,需要有個(gè)過渡。下面的幾種方法可以理解為從自然語言到計(jì)算機(jī)語言的過渡表示方法 8/18/2022 算法的表示流程

21、圖表示法流程圖是一種用圖形直觀表示算法操作的算法表示方法。常用的圖形是由美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)制定并得到公認(rèn)的。主要有以下幾種: 起止框輸入輸出框處理框判斷框流程線8/18/2022 算法的表示上面例子的流程圖YNYN開始讀入nsum=0k=1item=1/kk是奇數(shù)item= -1/ksum=sum+itemk=k+1kn ?結(jié)束8/18/2022 算法的表示采用基本結(jié)構(gòu)的改進(jìn)流程圖 在流程圖表示方法中,流程線的使用沒有任何限制,從而會(huì)導(dǎo)致流程走向的任意性,降低可讀性。 1966年Bohra和Jacopini 提出了以下5種改進(jìn)的基本結(jié)構(gòu):(1)順序結(jié)構(gòu) (2)雙分支選擇結(jié)構(gòu) (3)

22、單分支選擇結(jié)構(gòu) (4)當(dāng)型循環(huán)結(jié)構(gòu) (5)直到型循環(huán)結(jié)構(gòu) 8/18/2022 算法的表示5種改進(jìn)的基本結(jié)構(gòu)的結(jié)構(gòu)圖AB順序結(jié)構(gòu)ABp雙分支選擇結(jié)構(gòu)pA單分支選擇結(jié)構(gòu)NYpA當(dāng)型循環(huán)結(jié)構(gòu)YNAp直到型循環(huán)結(jié)構(gòu)8/18/2022 算法的表示5種基本結(jié)構(gòu)的特點(diǎn):(1)只有一個(gè)入口和一個(gè)出口(2) 結(jié)構(gòu)內(nèi)每個(gè)部分都能得到執(zhí)行且沒有死循環(huán)重要結(jié)論:(1)由5種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以解決任何復(fù)雜的問題。(2)由5種基本結(jié)構(gòu)順序組成的算法稱為結(jié)構(gòu)化的算法 8/18/2022 算法的表示 N-S流程圖表示法 沒有流程線的結(jié)構(gòu)化流程圖稱為N-S流程圖。上面5種基本結(jié)構(gòu)對(duì)應(yīng)的N-S基本結(jié)構(gòu)圖為:順序結(jié)構(gòu)

23、選擇結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)N-S流程圖表示的算法顯然是結(jié)構(gòu)化算法 當(dāng)P成立 A B 直到P成立 A A B P N Y A B8/18/2022算法的表示 k是奇數(shù) N Yitem=-1/k item=1/ksum=sum+itemk=k+1 讀入n Sum=0 K=1直到kn例4的N-S流程圖為8/18/2022算法的表示例5判斷素?cái)?shù)的N-S流程圖8/18/2022 算法的表示偽代碼表示法 流程圖的優(yōu)點(diǎn)是直觀準(zhǔn)確,但突出的缺點(diǎn)是難以繪畫,且不便于修改。偽代碼表示法克服了這些缺點(diǎn)。偽代碼表示法是介于自然語言表示法和計(jì)算機(jī)語言表示法之間的一種表示方法。它的寫法如同寫文章,自上而下,方便自如。例4的偽代碼表示法如下 8/18/2022 算法的表示開始 讀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論