版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、高級(jí)語言程序設(shè)計(jì)(C語言),主講: 羅 威,E-mail: luowei_zh@163.com 手機(jī):13808077036,教材、參考書與課時(shí)安排,教材C程序設(shè)計(jì)(第四版)譚浩強(qiáng)編著 清華大學(xué)出版社參考書C程序設(shè)計(jì)題解與上機(jī)指導(dǎo) 譚浩強(qiáng) 著 清華大學(xué)
2、出版社C語言程序設(shè)計(jì)教程 譚浩強(qiáng) 高等教育出版社C高級(jí)實(shí)用程序設(shè)計(jì) 王士元 清華大學(xué)出版社Programming in C Brian W. Kernighan課時(shí)安排總學(xué)時(shí): 20學(xué)時(shí),課程要求,課前請做好預(yù)習(xí)保持課堂安靜,頭腦清醒,思維活躍認(rèn)真、獨(dú)立、按時(shí)完成并提交作業(yè)重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間,課程評估平時(shí)成績30分(出勤10分,作業(yè)20分)30%2. 期末
3、考試70分 70%,學(xué)習(xí)計(jì)算機(jī)語言的意義,就業(yè)需要:社會(huì)化考核工作需要:深入的專業(yè)研究基本素質(zhì):與計(jì)算機(jī)進(jìn)行 主動(dòng)的 互動(dòng)交流,第一章 C語言概述,1.1 C語言
4、發(fā)展歷史,機(jī)器語言,匯編語言,高級(jí)語言,,,直接用二進(jìn)制代碼指令表達(dá)的計(jì)算機(jī)語言第一代的計(jì)算機(jī)語言,特點(diǎn):計(jì)算機(jī)直接識(shí)別,不需翻譯 缺點(diǎn):繁雜瑣碎 可讀性差 可移植性差,重用性差 ……,用助記符(Mnemonic)代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼,仍然是面向機(jī)器的語言,比較繁瑣費(fèi)時(shí)可讀性差 可移植
5、性差,特點(diǎn):語法和結(jié)構(gòu)類似人類語言 遠(yuǎn)離硬件優(yōu)點(diǎn):易學(xué)、易掌握 可讀性好、可維護(hù)性強(qiáng)、可靠性高 移植性好、重用性好 ……,C語言,如:10000000 加 10010000 減,如:如 ADD A, B,如:c=a+b;,ALGOL60,1960,遠(yuǎn)離硬件,1963,CPL,規(guī)模大 難以學(xué)習(xí)掌握,1967,BC
6、PL,簡化版CPL,1971,B,進(jìn)一步簡化 無類型,1972~1973,C,UNIX,1977~1978,《The C programming Language》,不依賴機(jī)器和系統(tǒng),1983,ANSI C,1987,87 ANSI C,ISO,1990,,,,,,,,,,,,,,,1994,new ANSI C,,,,,,,1.2 C語言特點(diǎn)語言簡潔、緊湊、靈活運(yùn)算符和數(shù)據(jù)類型豐富程序設(shè)計(jì)結(jié)構(gòu)化、模塊化語法限制不太嚴(yán)格,程序
7、設(shè)計(jì)自由度大。C 語言允許直接訪問物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對硬件進(jìn)行操作。生成目標(biāo)代碼質(zhì)量高可移植性好,<,>,>,>,>,>,>,,>,37個(gè)關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義)auto break case char constcontinue default
8、 do double elseenum extern float for gotoif inline int long register restrict return short signed size
9、of static struct switch typedef unsigned union void volatile while _bool_Complex _Imaginary,<,9種控制語句:if( )~else~for( )~while( )~do~while( )continuebreak
10、switchgotoreturn,<,例 C語言與Pascal語言比較C語言 Pascal語言 含義{ } BEGIN….END 復(fù)合語句if(e) s; IF(e) THEN s
11、 條件語句int i ; VAR i:INTEGER 定義i為整型變量 int a[10]; VAR a:ARRAY[1..10] OF INTEGER 定義整型數(shù)組aint f(); FUNCTION f():INTEGER
12、 定義f為返值整型的函數(shù)int *p; VAR p:?INTEGER 定義p為指向整型變量的指針i+= 2; i=i+2 賦值i+2?ii++,++i; i=i+1 i自增值結(jié)論:C比 Pascal簡練,源程序短。,<,34種運(yùn)算符:算術(shù)運(yùn)算符
13、:+ - * / % ++ --關(guān)系運(yùn)算符: >= !=邏輯運(yùn)算符:! && ||位運(yùn)算符:> ~ | ^ &賦值運(yùn)算符:= 及其擴(kuò)展條件運(yùn)算符:?:逗號(hào)運(yùn)算符:,指針運(yùn)算符:* &求字節(jié)數(shù):sizeof強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:. ->下標(biāo)運(yùn)算符:[]其它:( ) -,<,<,定義類型typedef,C
14、99標(biāo)準(zhǔn):long long,C99標(biāo)準(zhǔn):復(fù)數(shù)類型、bool類型,,,,,,,,,,,,,,,,<,/* example1.1 The first C Program*/#include int main(){ printf(“This is a C program!\n”); return 0;},>,輸出:This is a C program!,,1.3 C程序格式
15、和結(jié)構(gòu)特點(diǎn)例1.1 第一個(gè)程序 輸出一行信息,格式特點(diǎn)習(xí)慣用小寫字母,大小寫敏感不使用行號(hào),無程序行概念可使用空行和空格常用鋸齒形書寫格式,<,>,main( ){ ………………. ……………… ………….. ………….. ……… ……….
16、 …………… ……………. ………………. ………………..},main( ){ int i , j , sum; sum=0; for(i=1; i<10;i++) { for(j=1;j<10;j++) { sum+=i*
17、j ; } } printf(“%d\n”,sum);},良好的編程習(xí)慣:使用TAB縮進(jìn){}對齊有足夠的注釋有合適的空行,,,,結(jié)構(gòu)特點(diǎn)函數(shù)與主函數(shù)程序由一個(gè)或多個(gè)函數(shù)組成一個(gè)函數(shù)由兩部分構(gòu)成:(1)函數(shù)的首部,包括:函數(shù)名、函數(shù)類型(返回值類型)、函數(shù)屬性、形式參數(shù)名、形式參數(shù)類型。(2)函數(shù)體,大括號(hào){ }中的部分。函數(shù)體中包含聲明部分和執(zhí)行
18、部分。必須有且只能有一個(gè)主函數(shù)main()程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。程序語句C程序由語句組成用“;”作為語句終止符注釋/* */為注釋不產(chǎn)生編譯代碼,<,>,,,編譯預(yù)處理命令,1.4 C程序的上機(jī)步驟C程序開發(fā)步驟,<,>,程序代碼的錄入,生成源程序*.c,語法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj,與其它目標(biāo)程序或庫鏈接裝配,
19、生成可執(zhí)行程序*.exe,程序開發(fā)環(huán)境的核心是編譯程序。高級(jí)程序設(shè)計(jì)語言書寫的源程序,翻譯成等價(jià)的計(jì)算機(jī)匯編語言或機(jī)器語言的目標(biāo)程序的翻譯程序,典型的程序開發(fā)環(huán)境及其特點(diǎn):,程序設(shè)計(jì)所需的軟件條件(稱為開發(fā)環(huán)境)一般包括:,第二章 程序的靈魂——算法,什么是程序? 是為實(shí)現(xiàn)特定目標(biāo)或解決特定問題而用計(jì)算機(jī)語言編寫的 指令序列的集合。什么是算法?,對數(shù)據(jù)的描述 需要通過計(jì)算機(jī)來處
20、理加工數(shù)據(jù),這些數(shù)據(jù)的類型以及這些 數(shù)據(jù)的組織形式。對操作的描述 對這些數(shù)據(jù)的加工處理過程,即操作步驟,就是算法。 程序 = 數(shù)據(jù)結(jié)構(gòu)+算法,程序包括兩方面的內(nèi)容,計(jì)算機(jī)算法分兩大類: 1.數(shù)值運(yùn)算算法: 目的是求數(shù)值的解。,2.非數(shù)值運(yùn)算算法:主要用于事務(wù)管理領(lǐng)域。,矩陣運(yùn)算、線性方程組的求解、非線性方程與方程組的求解等等,圖書館的查閱檢索系統(tǒng),火車飛機(jī)的訂票系統(tǒng)等等,1、有窮性: 一個(gè)算法必
21、須保證執(zhí)行有限步之后結(jié)束 2、確定性: 算法的每一步驟必須有確切的定義 3、輸入:一個(gè)算法有0個(gè)或多個(gè)輸入,以描述運(yùn)算對象的初始情況 4、輸出:一個(gè)算法有一個(gè)或多個(gè)輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果。 沒有輸出的算法是毫無意義的 5、有效性:算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果,算法的特性:,算法的
22、描述:,算法通常采用程序流程圖的形式來描述。 常用的流程圖符號(hào)有:,,,,,,,加工、處理框,判別框,輸入|輸出框,流程線,連接點(diǎn),開始、結(jié)束框,例2.1:求 5! 1×2×3×4×5?,原始方法:,,通用方法:,設(shè)兩個(gè)變量:一個(gè)代表被乘數(shù)t 一個(gè)代表乘數(shù) i 直接將每一步驟的乘積放在被乘數(shù)變量 t 中,,,t=1,①,i=2,②,t=t*i,③,i=i+1,④,⑤,如果i不大于5,返回
23、執(zhí)行步驟3以及其后的步驟4、步驟5。否則輸出t,算法結(jié)束,>,>,a=1*2*3*4*5;,t=t*i,,1,2,,,,<,2,算法的三種基本結(jié)構(gòu),一、順序結(jié)構(gòu):必然性,二、選擇結(jié)構(gòu):或然性,三、循環(huán)結(jié)構(gòu):回旋性,實(shí)現(xiàn)方式:基本流程,典型實(shí)現(xiàn)方式:if – else 語句,典型實(shí)現(xiàn)方式:for 語句,if (x>=0) f = 1;else f = 0;,i=1; s=0;for (;i<=10;)
24、 { s=s+i; i=i+1; },結(jié)論:理論上已經(jīng)證明,用三種基本程序結(jié)構(gòu)可以實(shí)現(xiàn)任何復(fù)雜的算法,三大基本結(jié)構(gòu)示意圖,順序結(jié)構(gòu)選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),,,模塊(語句)A,模塊(語句)B,,,,條件?,語句序列 1,,,,,,,,成立,不成立,語句序列 2,,,,,條件?,,語句序列,,,,,,,,,,,不成立,成立,(當(dāng)型循環(huán)),語句序列,,,,,,,成立,不成立,循環(huán)結(jié)構(gòu),條件?,(直到型循環(huán))
25、,流程圖,N-S 流程圖: 又稱N-S結(jié)構(gòu)化流程圖是將全部算法寫在 一個(gè)矩形框內(nèi),,,,,,,,,,,,,A,B,P,成立,不成立,A,B,,當(dāng)P1成立,A,A,直到P1成立,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),,用偽代碼表示算法: 偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)來描述算法。 用偽代碼寫算法沒有固定、嚴(yán)格的語法規(guī)則,只要把意思表達(dá)清楚就行,但書寫的格式要清晰易讀。如: begin
26、1->t2->iwhile it i+1->i}print t end,課堂練習(xí),用傳統(tǒng)流程圖或N-S 圖表示求解問題的算法有兩個(gè)瓶子A和B,分別盛放醋和醬油,要求將它們互換有3個(gè)數(shù),找出其中最大的一個(gè).,1.設(shè):0代表醋,1 代表醬油,T為空碗,2.N-S流程圖描述,,,,,,,,,,,,,,,,,,,,,,,,結(jié)構(gòu)化程序設(shè)計(jì)方法,自頂向下、逐步細(xì)化是將復(fù)雜、
27、大的問題劃分為小問題,找出問題的關(guān)鍵、重點(diǎn)所在,然后用精確的思維定性、定量地去描述問題。 是將現(xiàn)實(shí)世界的問題經(jīng)抽象轉(zhuǎn)化為邏輯空間或求解空間的問題。復(fù)雜問題經(jīng)抽象化處理變?yōu)橄鄬Ρ容^簡單的問題。模塊化設(shè)計(jì) 就是把程序劃分為若干個(gè)部 分,每個(gè)部分完成一個(gè)特定的功能。其目的 是降低程序的復(fù)雜度,使設(shè)計(jì)出來的程序便 于閱讀、調(diào)試和維護(hù)。結(jié)構(gòu)化編碼 就是將設(shè)計(jì)好的算法用結(jié)構(gòu) 化語言正確的表示出來,結(jié)構(gòu)
28、化程序設(shè)計(jì)(SP),北京大學(xué)王選院士沒有GOTO語句一個(gè)入口一個(gè)出口自頂向下、逐步求精的分解程序組,清華大學(xué)潭浩強(qiáng)教授自頂向下、逐步求精程序結(jié)構(gòu)按功能劃分為模塊化模塊功能單一、簡單模塊由三種基本程序結(jié)構(gòu)組成程序由函數(shù)、子程序來實(shí)現(xiàn),SP方法的基本思想是:把一個(gè)復(fù)雜問題的求解過程分 階段進(jìn)行,每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫?和處理的范圍內(nèi)。,書面作業(yè): 1.5、1.6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 題5.6給一百分制成績,要求輸出成績等級(jí)‘a(chǎn)’、‘b’
- 我的一百分作文
- 成為一百分營業(yè)員
- 績效百分制考核細(xì)則
- 給成績打個(gè)
- 水利三類人員試卷三一百分帶答案
- 折合百分制相當(dāng)于92-祈福學(xué)校
- 謝家鋪鎮(zhèn)中心小學(xué)班級(jí)百分制競賽細(xì)則
- excel根據(jù)成績分優(yōu)秀等級(jí)-模板
- 出租車服務(wù)質(zhì)量考核百分制實(shí)施方案
- 計(jì)算機(jī)等級(jí)考試成績證明
- 中國傳媒大學(xué)百分制分?jǐn)?shù)轉(zhuǎn)換績點(diǎn)(gpa)算法對應(yīng)說明
- 2012年全民政工作百分制考評細(xì)則征求意見稿
- 數(shù)據(jù)挖掘在學(xué)分制成績管理中的應(yīng)用研究.pdf
- 申請達(dá)特茅斯學(xué)院托福成績要求
- 畢業(yè)論文(設(shè)計(jì))成績單(填寫要求)
- 廣西大學(xué)教學(xué)工作量標(biāo)準(zhǔn)學(xué)時(shí)與百分制標(biāo)準(zhǔn)分計(jì)算辦法
- 用excel制作學(xué)生成績匯總及等級(jí)評價(jià)模板
- 百分率應(yīng)用題
- 百分率應(yīng)用題
評論
0/150
提交評論