資源描述:
《程序設(shè)計(jì)與C程序設(shè)計(jì)初步》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)主講人:胡青第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步1.1計(jì)算機(jī)程序1.1.1算法定義:用來解決問題的有多個(gè)步驟組成的具體過程。(p4例1.1.1求解最大公約數(shù)的歐幾里德算法)基本特征:由一些能夠執(zhí)行的操作組成可以具有多個(gè)輸入和輸出算法對(duì)于任何輸入都應(yīng)該是可終止的算法的主要操作對(duì)象是數(shù)據(jù)1.1.2實(shí)體許多行為也可以用算法來表示。例:銀行賬戶存款(輸入、輸出、步驟)例:銀行賬戶取款(輸入、輸出、步驟)發(fā)現(xiàn):存款、取款行為所用數(shù)據(jù)均包含賬戶當(dāng)前余額,存款與取款行為是密切相關(guān)的。銀行賬戶(包括賬號(hào)、戶名、密碼、余額等狀態(tài))可完成存款、取款行為——
2、實(shí)體第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步通常一個(gè)實(shí)體應(yīng)具有一個(gè)名字、一組表示該實(shí)體特征的數(shù)據(jù)以及若干作用在這些數(shù)據(jù)上的行為。實(shí)體具有數(shù)據(jù)表示了他的狀態(tài),而這些狀態(tài)可有他的行為來改變。從行為出發(fā)來把握事物。(C)從實(shí)體出發(fā)把握事物。(C++)我們通過觀察與分析事物表現(xiàn)出來的行為來探討事物的內(nèi)在結(jié)構(gòu),掌握了事物的內(nèi)在結(jié)構(gòu)又可用來解釋或預(yù)測(cè)事物的行為。在處理大型問題時(shí),從實(shí)體比從行為出發(fā)更容易把握問題的復(fù)雜性。第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步1.1.3程序有了實(shí)體,如何用計(jì)算機(jī)解決問題?程序即是實(shí)體在計(jì)算機(jī)中的體現(xiàn)。1、數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的表示(通過二進(jìn)制編碼表
3、示)2、程序在計(jì)算機(jī)內(nèi)部的表示(無論何種計(jì)算機(jī),各有一套基本指令系統(tǒng),其中每條指令都是由二進(jìn)制編碼表示。)機(jī)器語言匯編語言(二進(jìn)制編碼表示)宏匯編語言(引入宏)機(jī)器語言高級(jí)語言(與機(jī)器無關(guān))第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步匯編程序宏匯編程序編譯程序,解釋程序1.1.4程序設(shè)計(jì)程序設(shè)計(jì)是編寫計(jì)算機(jī)程序的活動(dòng)。完成程序設(shè)計(jì)工作必須具備四方面的知識(shí):一是應(yīng)用領(lǐng)域的知識(shí);二是程序設(shè)計(jì)方法;三是程序設(shè)計(jì)語言;四是程序設(shè)計(jì)環(huán)境與工具。方法:自頂向下自底向上設(shè)計(jì)語言實(shí)體程序設(shè)計(jì)環(huán)境與工具(類庫(kù)函數(shù)庫(kù))第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步兩者結(jié)合1.2程序設(shè)計(jì)的演變1.
4、2.1早期程序設(shè)計(jì)語言有:FORTRAN(FORmulaTRANslator)1954---1957IBM公司開發(fā)科學(xué)計(jì)算工程領(lǐng)域COBOL(CommonBusinessOrientedLanguage)1959商業(yè)事物處理ALGOL(算法語言)Basic(無固定程序設(shè)計(jì)方法時(shí)期)第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步1.2.2結(jié)構(gòu)化程序設(shè)計(jì)主要技術(shù):自頂向下、逐步求精、采用單入口/單出口的控制結(jié)構(gòu)只用三種基本控制結(jié)構(gòu)(順序、選擇、循環(huán))Pascal(人名命名,17世紀(jì)法國(guó)數(shù)學(xué)家BlaisePascal)教育界、學(xué)術(shù)界C(1972貝爾實(shí)驗(yàn)室DECPDP—11
5、計(jì)算機(jī)上實(shí)現(xiàn))為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工作語言七十年代末“傳統(tǒng)C”、“經(jīng)典C”第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步1.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)建立在結(jié)構(gòu)化程序設(shè)計(jì)基礎(chǔ)上,最重要的改變是程序圍繞被操作的數(shù)據(jù)來設(shè)計(jì),而不是圍繞操作本身。從程序設(shè)計(jì)方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計(jì)范型,其基本思想是使用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念來進(jìn)行程序設(shè)計(jì)。第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步其基本思想是:從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來建立軟件系統(tǒng)強(qiáng)調(diào)直接以問題域(現(xiàn)實(shí)世界)中的事物為中心來思考問題、認(rèn)識(shí)問題,并根
6、據(jù)這些事物的本質(zhì)特征,把它們抽象地表為系統(tǒng)中的對(duì)象,作為系統(tǒng)的基本構(gòu)成單位。這可以使系統(tǒng)直接映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。充分運(yùn)用人類日常的思維方法強(qiáng)調(diào)運(yùn)用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝、關(guān)聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問題,并以其他人也能看得懂的方式把自己的認(rèn)識(shí)表達(dá)出來。第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步對(duì)問題域的認(rèn)識(shí)(人)客觀世界(問題域)計(jì)算機(jī)自然語言語言的鴻溝編程語言語言的過渡(人)編程(人)程序的理解和執(zhí)行(機(jī)器)軟件開發(fā)--實(shí)際上是從問題空間向解空間映射的過程。從
7、認(rèn)識(shí)論看面向?qū)ο笳Z言的形成第一章程序設(shè)計(jì)與C++程序設(shè)計(jì)初步計(jì)算機(jī)機(jī)器語言自然語言客觀世界(問題域)語言的鴻溝語言的發(fā)展--鴻溝變窄面向?qū)ο蟮恼Z言非OO的高級(jí)語言匯編語言程序的指令、數(shù)據(jù)、地址,都是由二進(jìn)制的“0”和“1”構(gòu)成的。離機(jī)器最近,能夠直接地執(zhí)行,然而沒有絲毫形象的意義,離人類的思維最遠(yuǎn)。以易理解的符號(hào)表示指令、數(shù)據(jù)以及寄存器、地址等物理概念。稍稍適合人類的形象思維,但仍然相差很遠(yuǎn)。因?yàn)槌橄髮哟翁?,仍需考慮大量的機(jī)器細(xì)節(jié)。高級(jí)語言隱蔽了機(jī)器細(xì)節(jié),使用有形象意義的數(shù)據(jù)命名和表達(dá)式,可以聯(lián)系到程序所描述的具體事物。特別是結(jié)構(gòu)化編程語言更便于體現(xiàn)客
8、觀事物的結(jié)構(gòu)和邏輯涵義,與人類的自然語言更接近,但仍有不少差距。能比較直接地反映