程序設(shè)計(jì)基礎(chǔ)第一章_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)第一章_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)第一章_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)第一章_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)第一章_第5頁(yè)
已閱讀5頁(yè),還剩109頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、程序設(shè)計(jì)基礎(chǔ)第一章第1頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五聯(lián)系方式cwy主樓B1-513 第2頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五學(xué)時(shí):24+24成績(jī)構(gòu)成: 平時(shí)10, 期中10分 實(shí)驗(yàn)20分,期末60 分考試:閉卷、筆試第3頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五教材: C語(yǔ)言程序設(shè)計(jì) 黃迪明 等 電子科技大學(xué)出版社 2008.7第4頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五參考書(shū)B(niǎo)rian W. Kernighan,Demis RitchieThe C Programming Language 2nd E

2、d(英文影印版)清華大學(xué)出版社 2000譚浩強(qiáng) C程序設(shè)計(jì)(第3版) 清華大學(xué)出版社 2005第5頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序設(shè)計(jì)Programming給出解決特定問(wèn)題程序的方法和過(guò)程,是軟件構(gòu)造活動(dòng)的重要組成部分專(zhuān)業(yè)的程序設(shè)計(jì)人員稱(chēng)為程序員程序設(shè)計(jì)過(guò)程應(yīng)當(dāng)包括需求分析 設(shè)計(jì) 編碼 測(cè)試 維護(hù)五個(gè)階段,并生成各種文檔資料。第6頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序設(shè)計(jì)程序設(shè)計(jì)需要以某種程序設(shè)計(jì)語(yǔ)言為工具:編寫(xiě)出該語(yǔ)言的程序。第7頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五問(wèn)題什么是程序設(shè)計(jì)語(yǔ)言?什么是程序?什么是軟件

3、?程序設(shè)計(jì)語(yǔ)言與程序的關(guān)系是什么?第8頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五語(yǔ)言:一組規(guī)則的組合自然語(yǔ)言中的英語(yǔ):1)字母表的定義;2)詞法規(guī)則:?jiǎn)卧~符號(hào)的形成規(guī)則 一個(gè)單詞對(duì)應(yīng)一條形成規(guī)則,規(guī)定了該單詞由哪些字母按照什么順序進(jìn)行排列第9頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五3)語(yǔ)法規(guī)則:語(yǔ)法單位的形成規(guī)則 短語(yǔ)、從句、句子、段落、文章4)語(yǔ)義規(guī)則: 單詞符號(hào)和語(yǔ)法單位的含義規(guī)則第10頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五5)語(yǔ)用規(guī)則: 語(yǔ)義規(guī)則的發(fā)展和延伸 強(qiáng)調(diào)在一定的語(yǔ)境中使用單詞和語(yǔ)法單位時(shí)體現(xiàn)出來(lái)的具體意義 需要根據(jù)上下

4、文進(jìn)行明確第11頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五思考英語(yǔ)和英語(yǔ)文章的關(guān)系?第12頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序設(shè)計(jì)語(yǔ)言: 用于程序設(shè)計(jì)的人工語(yǔ)言第13頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序設(shè)計(jì)語(yǔ)言機(jī)器語(yǔ)言:第一代程序設(shè)計(jì)語(yǔ)言 字母表:0,1 單詞符號(hào):操作碼、地址 語(yǔ)法單位: 指令 10111000 1001 1110 程序 指令的組合第14頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五機(jī)器語(yǔ)言編寫(xiě)程序十分繁瑣和痛苦;程序不便于記憶、閱讀和書(shū)寫(xiě),容易出錯(cuò)(查錯(cuò)和改錯(cuò),十分困難);每類(lèi)計(jì)算機(jī)的指

5、令系統(tǒng)各不相同,可移植性很差,造成了重復(fù)工作。第15頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五機(jī)器語(yǔ)言指令針對(duì)特定型號(hào)的計(jì)算機(jī)(與機(jī)器有關(guān),低級(jí)語(yǔ)言) 運(yùn)算效率很高第16頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五匯編語(yǔ)言字母表:主要增加了英文字母單詞符號(hào): 操作碼、內(nèi)存符號(hào)、寄存器、數(shù)據(jù)語(yǔ)法單位: 指令 ADD A,R0 程序 指令的組合第17頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五匯編語(yǔ)言:第二代計(jì)算機(jī)語(yǔ)言助記憶符:用與代碼指令含義相近的英文縮寫(xiě)詞、字母和數(shù)字等符號(hào)取代指令代碼較容易理解程序,糾錯(cuò)及維護(hù)變得較方便匯編語(yǔ)言仍然是面向機(jī)器的

6、語(yǔ)言(低級(jí)語(yǔ)言),仍比較繁瑣,通用性也差。第18頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五匯編語(yǔ)言需要將匯編語(yǔ)言指令翻譯成機(jī)器語(yǔ)言的指令:匯編匯編語(yǔ)言程序的目標(biāo)程序占用內(nèi)存空間少,運(yùn)行速度快有著高級(jí)語(yǔ)言不可替代的用途 第19頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五高級(jí)程序設(shè)計(jì)語(yǔ)言1)字母表的定義;2)詞法規(guī)則:一般有五類(lèi)單詞符號(hào)3)語(yǔ)法規(guī)則: 語(yǔ)法單位包括:表達(dá)式、語(yǔ)句、模塊、程序第20頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五高級(jí)程序設(shè)計(jì)語(yǔ)言4)語(yǔ)義規(guī)則:5)語(yǔ)用規(guī)則:無(wú)二義的6)其他規(guī)則: 如數(shù)據(jù)類(lèi)型的定義、運(yùn)算符優(yōu)先級(jí)的定義、參數(shù)的

7、傳遞方式、作用域的規(guī)定等第21頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五FORTRAN語(yǔ)言的一條語(yǔ)句: if (num0) then abs:=num else abs:=-num;第22頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五高級(jí)程序設(shè)計(jì)語(yǔ)言獨(dú)立于計(jì)算機(jī)的硬件對(duì)具體的算法進(jìn)行描述(算法語(yǔ)言)獨(dú)立性,通用性和可移植性好第23頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五高級(jí)程序設(shè)計(jì)語(yǔ)言一般包含有以下四種成分:數(shù)據(jù)成分:描述程序所涉及的數(shù)據(jù)運(yùn)算成分:描述運(yùn)算控制成分:表達(dá)程序的控制結(jié)構(gòu)傳輸成分:表達(dá)數(shù)據(jù)的傳輸(輸入輸出、文件讀寫(xiě)操作)第24頁(yè),

8、共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五高級(jí)程序設(shè)計(jì)語(yǔ)言高級(jí)語(yǔ)言的程序主要是描述計(jì)算機(jī)的解題過(guò)程,即描述復(fù)雜的加工處理過(guò)程,所以也稱(chēng)高級(jí)語(yǔ)言為面向過(guò)程語(yǔ)言。計(jì)算機(jī)不能直接執(zhí)行高級(jí)語(yǔ)言的程序(源程序);通常有解釋方式和編譯方式兩種方法在計(jì)算機(jī)上執(zhí)行程序(目標(biāo)程序)。第25頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五第26頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五思考 大量的程序設(shè)計(jì)語(yǔ)言被發(fā)明、被取代、被修改或組合在一起; 盡管多次試圖創(chuàng)造一種通用的程序設(shè)計(jì)語(yǔ)言,卻沒(méi)有一次嘗試是成功的 WHY?第27頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)5

9、8分,星期五高級(jí)語(yǔ)言的發(fā)展從 早期語(yǔ)言 到 結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言從 面向過(guò)程 到 非過(guò)程化程序語(yǔ)言第28頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五FORTRAN=FORmula TRANslation 主要用于科學(xué)計(jì)算2.ALGOL 60=ALGOrithmic Language 60 采用BNF形式描述語(yǔ)法一. 早期的高級(jí)語(yǔ)言(50年代)第29頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五早期的高級(jí)語(yǔ)言 3. COBOL COmmon Business Oriented Language.廣泛應(yīng)用于各種事務(wù)處理領(lǐng)域.引入了文件和數(shù)據(jù)描述第30頁(yè),共114頁(yè),20

10、22年,5月20日,11點(diǎn)58分,星期五基于數(shù)學(xué)原則的語(yǔ)言 1. LISP.其基礎(chǔ)是函數(shù)和函數(shù)作用2. APL.支持函數(shù)式程序設(shè)計(jì)風(fēng)格.應(yīng)用于大量矩陣運(yùn)算的科學(xué)計(jì)算二.早期的突破第31頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五3. SNOBOL 4 .主要用于字符串處理 . 與機(jī)器無(wú)關(guān)的宏功能,增加了程序的可移植性第32頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五PL/1 .希望將所有語(yǔ)言概念集成大全 .分程序概念和遞歸過(guò)程 .數(shù)據(jù)描述機(jī)能 .動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu) .異常處理 .多任務(wù)機(jī)能 .可用于科學(xué)數(shù)值計(jì)算,數(shù)據(jù)處理等 .難以得到廣泛的應(yīng)用三. 概念的集成(64年

11、)第33頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五 引入了許多有趣的概念1. ALGOL 68 .以零型文法描述語(yǔ)法規(guī)則 .引入正交性和通用性原則四. 再一次突破(60年代后期)第34頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五2. SIMULA67 .應(yīng)用于模擬領(lǐng)域 .協(xié)同程序 .引入了類(lèi)的概念第35頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五3. PASCAL .具有明顯的簡(jiǎn)潔性 .體現(xiàn)結(jié)構(gòu)程序設(shè)計(jì)思想 .具有用戶(hù)自定義類(lèi)型 利用語(yǔ)法圖形式描述語(yǔ)法規(guī)則第36頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五 4. BASICBeg

12、inners All-purpose Symbolic Instruction Code .簡(jiǎn)單易學(xué) .交互式工作環(huán)境 .解釋執(zhí)行第37頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五70年代,支持系統(tǒng)軟件開(kāi)發(fā)1. 語(yǔ)言研究 涉及抽象數(shù)據(jù)類(lèi)型,異常處理和并行處理機(jī)制 2. MODULA-2 .支持模塊結(jié)構(gòu),模塊可以獨(dú)立編譯 .面向?qū)崟r(shí)系統(tǒng)和并行系統(tǒng)綜合功能五. 大量的探索第38頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五3. C CPLBCPLBC .具有高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的優(yōu)點(diǎn) .應(yīng)用于各種領(lǐng)域第39頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五70

13、年代以后,注重可移植性 1. Ada .面向?qū)iT(mén)領(lǐng)域的特殊要求 .是在引入了一個(gè)不大的,容易理解的 概念集合的基礎(chǔ)上開(kāi)發(fā)的 .體現(xiàn)許多現(xiàn)代軟件設(shè)計(jì)方法學(xué)的語(yǔ)言 .提高程序的可讀性,可靠性,可維護(hù)性六. Ada和第四代語(yǔ)言第40頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五2. 第四代語(yǔ)言超高級(jí)語(yǔ)言 面向問(wèn)題 .表達(dá)力強(qiáng),更接近于問(wèn)題的描述 .著重關(guān)心的是:做什么第41頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五 Java、HTML Java是一種通用、并發(fā)、基于類(lèi)的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。面向?qū)ο髮?shí)現(xiàn):編譯與解釋相結(jié)合分布性、安全性、并發(fā)性七. 網(wǎng)絡(luò)時(shí)代的語(yǔ)言第4

14、2頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五拋棄馮.諾依曼體系結(jié)構(gòu)包括函數(shù)式,邏輯式語(yǔ)言應(yīng)用于人工智能等領(lǐng)域八. 新一代程序設(shè)計(jì)語(yǔ)言第43頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1.基礎(chǔ) 存儲(chǔ)器,控制器,處理器,ip2.特點(diǎn) 數(shù)據(jù)或指令以二進(jìn)制形式存儲(chǔ); 存儲(chǔ)程序的工作方式; 程序順序執(zhí)行;可強(qiáng)制修改執(zhí)行順序 存儲(chǔ)器的內(nèi)容可以被修改。 馮.諾依曼體系結(jié)構(gòu)(模型)第44頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五ip代碼存儲(chǔ)器(C)數(shù)據(jù)存儲(chǔ)器(D)第45頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五一些高級(jí)語(yǔ)言的關(guān)系第46頁(yè),共

15、114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序設(shè)計(jì)語(yǔ)言的發(fā)展小結(jié) 機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言 用機(jī)器語(yǔ)言編寫(xiě)的程序由二進(jìn)制代碼組成,計(jì)算機(jī)可以直接執(zhí)行。 將機(jī)器語(yǔ)言符號(hào)化,于是產(chǎn)生了匯編語(yǔ)言。 機(jī)器語(yǔ)言和匯編語(yǔ)言都是與機(jī)器有關(guān)的語(yǔ)言,通常稱(chēng)為低級(jí)語(yǔ)言。第47頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五C語(yǔ)言的發(fā)展1963年,在ALGOL 60 的基礎(chǔ)上,英國(guó)劍橋大學(xué)推出了CPL(Combined Programming Langurage)語(yǔ)言。1967年英國(guó)劍橋大學(xué)的 Matin Richards對(duì)CPL語(yǔ)言做了簡(jiǎn)化,推出了 BCPL (Base CPL )語(yǔ)言。1

16、970年美國(guó)貝爾實(shí)驗(yàn)室的 Ken Thompson 對(duì) BCPL 進(jìn)一步簡(jiǎn)化,設(shè)計(jì)出了簡(jiǎn)單的而且很接近硬件的 B 語(yǔ)言,并用B語(yǔ)言寫(xiě)出了第一個(gè) UNIX 操作系統(tǒng)。第48頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1972年至1973年間,貝爾實(shí)驗(yàn)室的戴尼斯利奇(Demis Ritchie)和布朗卡尼漢(Brian Kernighan)在 B 語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了 C 語(yǔ)言(BCPL)。C語(yǔ)言即保持 BCPL 語(yǔ)言和 B 語(yǔ)言的優(yōu)點(diǎn)(精練、接近硬件),又克服了他們的缺點(diǎn)(過(guò)于簡(jiǎn)單,數(shù)據(jù)無(wú)類(lèi)型等)。 1973年新的UNIX版本完全用C語(yǔ)言編寫(xiě) 第49頁(yè),共114頁(yè),2022年,5

17、月20日,11點(diǎn)58分,星期五1977年出現(xiàn)了可移植C語(yǔ)言的編譯程序 ,推動(dòng)了UNIX在各種機(jī)器上實(shí)現(xiàn) ,C語(yǔ)言也迅速得到推廣,其發(fā)展相輔相成。1978年以后,C語(yǔ)言先后移植到大、中、小、微型計(jì)算機(jī)上,成為最廣泛使用的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言之一。第50頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1978年在Brian W.Kernighan和Dennis M.Ritchie 合著的The C Programming Language 成為C語(yǔ)言的標(biāo)準(zhǔn)。第51頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語(yǔ)言各種版本對(duì)C的

18、發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSI C,比標(biāo)準(zhǔn)C有了很大的發(fā)展1987年,ANSI公布了新標(biāo)準(zhǔn):87 ANSI C。1989年,公布了新的C語(yǔ)言標(biāo)準(zhǔn)C891990年,ISO接受C89作為國(guó)際標(biāo)準(zhǔn),通常稱(chēng)為C90第52頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1999年,ISO對(duì)C語(yǔ)言增加了一些面向?qū)ο蟮奶卣?,?jiǎn)稱(chēng)為 C99。 目前流行的C語(yǔ)言編譯系統(tǒng)大多是以C89為基礎(chǔ)進(jìn)行開(kāi)發(fā)的。第53頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五第一章 C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)知識(shí) C語(yǔ)言是一種通用的高級(jí)程序設(shè)計(jì)語(yǔ)言當(dāng)今世界上最流行的程序設(shè)計(jì)語(yǔ)言之一開(kāi)發(fā)系統(tǒng)軟件和應(yīng)用軟件中得到廣泛

19、應(yīng)用本章簡(jiǎn)介C語(yǔ)言程序設(shè)計(jì)相關(guān)的基礎(chǔ)知識(shí) 第54頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1.1 引言1.1.1 計(jì)算機(jī)與信息社會(huì)計(jì)算機(jī)定義: 一種在事先存入程序的控制下,能夠接收數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、處理數(shù)據(jù)并提供處理結(jié)果的數(shù)字化電子設(shè)備。第55頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五計(jì)算機(jī)工作流程圖輸入運(yùn)算與控制存儲(chǔ)輸出數(shù)據(jù)計(jì)算機(jī)結(jié)果第56頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五1.1.2 計(jì)算機(jī)中信息的表示 1.計(jì)算機(jī)內(nèi)所有信息采用二進(jìn)制表示 2.采用二進(jìn)制的原因: 1)二進(jìn)制只包含0和1,因此可用大量具有兩種不同穩(wěn)定狀態(tài)的元件來(lái)表示。

20、 2)二進(jìn)制數(shù)的運(yùn)算規(guī)則簡(jiǎn)單,使得計(jì)算機(jī)中的運(yùn)算部件的結(jié)構(gòu)變得比較簡(jiǎn)單。第57頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五3 .計(jì)算機(jī)中信息的表示數(shù)值直接轉(zhuǎn)換為二進(jìn)制字符采用ASCII編碼(7位、美國(guó)標(biāo)準(zhǔn)信息交換碼)其它信息(漢字、圖形、圖象、聲音、表格)也有相應(yīng)的編碼標(biāo)準(zhǔn)和規(guī)則。第58頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五 計(jì)算機(jī)系統(tǒng)軟件系統(tǒng)硬件系統(tǒng)系統(tǒng)軟件(操作系統(tǒng)、編譯程序、診斷程序系統(tǒng)服務(wù)軟件等)應(yīng)用軟件(信息管理軟件、游戲等)CPU控制器運(yùn)算器輸入設(shè)備(鼠標(biāo)、鍵盤(pán)、手寫(xiě)筆、MIC等)輸出設(shè)備(顯示器、繪圖儀、打印機(jī)等)存儲(chǔ)器 內(nèi)存儲(chǔ)器(RAM)外

21、存儲(chǔ)器(軟盤(pán)、硬盤(pán)、光盤(pán))1.1.3 計(jì)算機(jī)系統(tǒng)的組成第59頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序的靈魂算法一個(gè)程序應(yīng)包括: 對(duì)數(shù)據(jù)的描述:在程序中要指定數(shù)據(jù)的類(lèi)型和數(shù)據(jù)的組織形式 即數(shù)據(jù)結(jié)構(gòu)(data structure) 對(duì)數(shù)據(jù)進(jìn)行操作的描述:即操作步驟,也就是算法(algorithm)第60頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五Nikiklaus Wirth 提出的公式: 程序=數(shù)據(jù)結(jié)構(gòu)+算法目前 程序=算法+數(shù)據(jù)結(jié)構(gòu) +程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境 第61頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法及其表示算法:解決問(wèn)

22、題所采取的一系列步驟例,要求用一個(gè)給定的半徑計(jì)算圓的面積,計(jì)算機(jī)算法為: 設(shè)置半徑值r; 使用公式s=r2; 顯示S的值。第62頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法的特點(diǎn)(1)有輸入 算法可以有零個(gè)或多個(gè)輸入。輸入是用來(lái)在一個(gè)算法的執(zhí)行過(guò)程中,向它提供處理對(duì)象(數(shù)據(jù))或控制算法執(zhí)行過(guò)程的信息。(2)有輸出 算法必須具有一個(gè)或多個(gè)執(zhí)行結(jié)果的輸出。沒(méi)有輸出的算法是一個(gè)無(wú)效的算法。第63頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法的特點(diǎn)(3)有窮性 任何算法都應(yīng)該在執(zhí)行有窮步驟之后結(jié)束。(4)確定性 算法不能具有二義性。算法中每一步的語(yǔ)義都應(yīng)該清晰明了

23、,明確指出應(yīng)該執(zhí)行什么操作,如何執(zhí)行操作。第64頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法的特點(diǎn)(5)高效性 根據(jù)算法編寫(xiě)出來(lái)的程序應(yīng)具有較高的時(shí)空效率。 執(zhí)行時(shí)間短 不占用過(guò)多內(nèi)存。第65頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法的表示(描述)自然語(yǔ)言表示 易理解和交流,但易產(chǎn)生二義性。偽代碼表示 偽代碼使用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法 (用形式化語(yǔ)言描述算法的邏輯過(guò)程)第66頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法的表示(描述)程序流程圖 用圖形符號(hào)和文字說(shuō)明來(lái)表示數(shù)據(jù)處理的過(guò)程和步驟。N-S流程圖

24、也稱(chēng)方框圖;適于結(jié)構(gòu)化程序設(shè)計(jì)的算法描述工具。第67頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序流程圖是描述算法的良好工具。由邏輯框和流向線(xiàn)組成。 邏輯框是表示程序操作功能的圖形符號(hào)。 流向線(xiàn)用來(lái)指示程序的邏輯處理順序。第68頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五流程圖的邏輯框起止框 表示程序的開(kāi)始和結(jié)束。處理框 表示一種處理功能或程序段,框內(nèi)用文字簡(jiǎn)述其功能。第69頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五邏輯框判斷框 表示在此進(jìn)行判斷以決定程序的流向,框內(nèi)注明判斷條件。連接框 框內(nèi)注有字母,當(dāng)流程圖跨頁(yè)時(shí),或者可能出現(xiàn)流向線(xiàn)交叉時(shí)

25、,用它來(lái)表示彼此之間的關(guān)系,相同符號(hào)的連接框表示它們是相互連接的。第70頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五流向線(xiàn)流向線(xiàn) 表示程序處理的邏輯順序。以單向箭頭表示。第71頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五邏輯框和流向線(xiàn)NY第72頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五N-S流程圖 1973年美國(guó)學(xué)者Nassi和Schneiderman提出N-S流程圖(也稱(chēng)為方框圖),它是一種適于結(jié)構(gòu)化程序設(shè)計(jì)的算法描述工具。 由于流程圖各步驟之間,一般總是按照從上到下順序執(zhí)行,N-S流程圖中取消了流向線(xiàn) 。第73頁(yè),共114頁(yè),2022年,5

26、月20日,11點(diǎn)58分,星期五二選一結(jié)構(gòu)的表示ABYN滿(mǎn)足不滿(mǎn)足AB第74頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法例子1輸入一個(gè)整數(shù),輸出其絕對(duì)值:自然語(yǔ)言描述: 1 輸入一個(gè)整數(shù); 2 若該數(shù)為正數(shù),則其絕對(duì)值取該數(shù)的值 否則,其絕對(duì)值取該數(shù)的相反數(shù)值; 3 輸出其絕對(duì)值。第75頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五偽碼表示BEGIN READ numb IF numb0 abs=numb ELSE abs=-numb PRINT absEND第76頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序流程圖BEGINREAD numb

27、numb0abs=numbabs=-numbPRINT absENDYN第77頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五算法例子2從鍵盤(pán)讀入10個(gè)整數(shù)輸出其中正整數(shù)的和。第78頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五BEGIN SET 0sum SET 0count WHILE count 0 then sum + x sum END count + 1count END_WHILE PRINT sumEND算法例子2偽代碼第79頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序流程圖描述算法第80頁(yè),共114頁(yè),2022年,5月20日,11

28、點(diǎn)58分,星期五 N-S流程圖算法第81頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五編寫(xiě)程序 算法用C語(yǔ)言進(jìn)行實(shí)現(xiàn),該過(guò)程也稱(chēng)對(duì)算法進(jìn)行編碼。按照算法的流程順序編寫(xiě)程序編寫(xiě)程序還必須進(jìn)行語(yǔ)句執(zhí)行過(guò)程的控制。第82頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五語(yǔ)言提供的控制結(jié)構(gòu)1順序:定義了語(yǔ)句按順序執(zhí)行的次序。2選擇:提供了根據(jù)某個(gè)條件的結(jié)果在不同的語(yǔ)句中選擇執(zhí)行某一條語(yǔ)句的能力。3循環(huán)(重復(fù)):提供根據(jù)某個(gè)條件的結(jié)果重復(fù)地執(zhí)行某些語(yǔ)句的能力。4調(diào)用:即在需要時(shí)運(yùn)行指定的代碼段。第83頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五C語(yǔ)言程序的基本結(jié)構(gòu)

29、#include void main( ) 數(shù)據(jù)定義;(變量說(shuō)明語(yǔ)句); 數(shù)據(jù)處理;(執(zhí)行語(yǔ)句);第84頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序說(shuō)明每個(gè)C程序必須有一個(gè)主函數(shù)main 是函數(shù)開(kāi)始和結(jié)束的標(biāo)志若需要輸入和輸出功能,程序開(kāi)頭應(yīng)該為 #include 第85頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五 #include void main( ) printf (“This is a C program.n”); 程序例1程序的作用是輸出一行信息:This is a C program.第86頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,

30、星期五程序例2 求絕對(duì)值#include void main( ) int numb; /*代表某個(gè)整數(shù)*/int abs; /*代表該整的絕對(duì)值*/ scanf(“%d”,&numb); /*輸入該整數(shù)的值*/ /*求絕對(duì)值*/ if ( numb0) abs=numb; else abs= -numb; printf (“the abs of numb is %dn”,abs); /*輸出*/第87頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五注釋/*/表示注釋。注釋是對(duì)源程序進(jìn)行的注解,增加程序的可讀性;對(duì)編譯和運(yùn)行不起作用。第88頁(yè),共114頁(yè),2022年,5月20日,1

31、1點(diǎn)58分,星期五程序例3 求兩個(gè)實(shí)數(shù)之和#include void main( ) float a,b,sum; /*實(shí)型數(shù)據(jù)定義*/ scanf(“%f %f”,&a,&b); sum=a+b; printf(sum is %fn,sum); 第89頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序例4利用海倫公式 計(jì)算 邊長(zhǎng)分別為3、4、5的三角形的面積第90頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五#include#include void main( )float a=3.0,b=4.0,c=5.0;float s,area;s=(a+b+c)/2;a

32、rea=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%fn”,area); 第91頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五庫(kù)函數(shù)C語(yǔ)言(編譯器)提供了許多基本的、常用的功能;分別保存在不同的文件中;以函數(shù)形式提供給程序員使用;第92頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五庫(kù)函數(shù)分類(lèi)(1)I/O 功能,需要的包含文件:stdio.h 如: printf,scanf等。 (2)字符(串)處理功能, string.h 如:islower,strcat,strcmp,strlen等。 (3)數(shù)學(xué)功能,math.h 如:sin,cos,exp,log,sqrt等。第93頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五庫(kù)函數(shù)分類(lèi)(4)時(shí)間、日期功能,time.h 如:time()(5) 圖形功能,包括各種繪制點(diǎn)、線(xiàn)、圓、方和填色等的函數(shù),graphics.h6)動(dòng)態(tài)存儲(chǔ)分配,alloc.h第94頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)58分,星期五程序例5求2個(gè)整數(shù)中較大者(通過(guò)函數(shù)實(shí)現(xiàn)) int max(int x, int y) /* x,y :形參 */ int z; if (xy) z=x; else z=y; return (z); 第95頁(yè),共114頁(yè),2022年,5月20日,11點(diǎn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論