C-《面向?qū)ο蟪绦蛟O(shè)計》第一節(jié)-2011_第1頁
C-《面向?qū)ο蟪绦蛟O(shè)計》第一節(jié)-2011_第2頁
C-《面向?qū)ο蟪绦蛟O(shè)計》第一節(jié)-2011_第3頁
C-《面向?qū)ο蟪绦蛟O(shè)計》第一節(jié)-2011_第4頁
C-《面向?qū)ο蟪绦蛟O(shè)計》第一節(jié)-2011_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C--《面向?qū)ο蟪绦蛟O(shè)計》第一節(jié)-2011第一頁,共50頁。第一章程序設(shè)計方法和C++語言概述

復(fù)習(xí)幾個概念:程序,指令,語言;補碼1.1程序編寫過程1.2面向過程的程序設(shè)計1.3面向?qū)ο蟮某绦蛟O(shè)計1.4C++程序設(shè)計語言的發(fā)展1.5程序開發(fā)過程1.6簡單的C++程序小結(jié)問題第二頁,共50頁。計算機程序,指令,語言計算機的工作是用程序來控制的程序是指令的集合。指令是計算機可以識別的命令。不同計算機識別的指令系列稱為計算機的指令系統(tǒng)。語言是編寫程序的工具概念復(fù)習(xí)第三頁,共50頁。計算機語言是用來編寫_________的。程序必須被翻譯為電信號,計算機才能夠支配和處理;編程語言(計算機語言)必須實現(xiàn)翻譯過程。計算機語言和編譯工具屬于_________。復(fù)習(xí)1系統(tǒng)軟件程序第四頁,共50頁。計算機可以存儲程序指令和數(shù)據(jù)。數(shù)據(jù)在計算機中存放的形式為:__________。數(shù)通過___________編碼方式轉(zhuǎn)成二進制的形式存放的。字符通過___________編碼方式轉(zhuǎn)成二進制的形式存放的。復(fù)習(xí)2二進制補碼ASCII第五頁,共50頁。二進制數(shù)的編碼表示:補碼計算機中的補碼表示法負數(shù)的補碼由該數(shù)反碼的末位加1求得對補碼再求補即得到原碼補碼運算規(guī)則符號位可作為數(shù)值參加運算減法運算可轉(zhuǎn)換為加法運算:加上一個負數(shù)等于加上該數(shù)的補碼補碼運算的結(jié)果仍為補碼運算結(jié)果溢出:負數(shù)之和得正數(shù),或正數(shù)之和得負數(shù)信息的表示與存儲-5(8位表示)100001011111101011111011第六頁,共50頁。信息的表示與存儲練習(xí)(1)與十進制數(shù)127等值的二進制數(shù)是

A)01111111B)11101111C)01111011D)10000000(2)二進制數(shù)轉(zhuǎn)換成十六進制數(shù)是【】。A)64B)63C)100D)144(3)有一個數(shù)值152,它與十六進制6A相等,那么該數(shù)值是【】。A)二進制數(shù)B)八進制數(shù)C)十進制數(shù)AAB第七頁,共50頁。程序編寫過程

計算機世界概念世界現(xiàn)實世界voidfun(){……}intmain(){……

return0;}第八頁,共50頁。程序設(shè)計用計算機解決一個實際應(yīng)用問題時的整個處理過程稱為程序設(shè)計

第九頁,共50頁。1.2面向過程的程序設(shè)計方法第十頁,共50頁。1.2面向過程的程序設(shè)計基本結(jié)構(gòu)

1、順序2、分支3、循環(huán)開始執(zhí)行1執(zhí)行2執(zhí)行3結(jié)束開始條件執(zhí)行2執(zhí)行1結(jié)束是否開始執(zhí)行1執(zhí)行2條件結(jié)束是否第十一頁,共50頁。1.2面向過程的程序設(shè)計模塊的單入

指的是該模塊被哪些模塊所調(diào)用;模塊的單出

指的是該模塊調(diào)用了哪些模塊。第十二頁,共50頁。1.2面向過程的程序設(shè)計主要思想

自頂向下逐步求精

一個計算機程序可以看成是由一系列任務(wù)組成的,任何一項任務(wù)如果過于復(fù)雜就將其分解成一系列較小的子任務(wù),直至每一項任務(wù)都很小,很容易解決。第十三頁,共50頁。1.2面向過程的程序設(shè)計計算每門課的平均成績多少門課學(xué)生人數(shù)每門課總分每門課總分/學(xué)生人數(shù)選課學(xué)生檔案每個學(xué)生該門課的成績累加選擇一門課選課的學(xué)生讀數(shù)據(jù)第十四頁,共50頁。1.2面向過程的程序設(shè)計不足:

1、結(jié)構(gòu)化編程將數(shù)據(jù)和過程相分離;2、結(jié)構(gòu)化編程對代碼重用支持不夠??芍赜盟枷刖褪莿?chuàng)建一些已知屬性的組件,然后插入到自己的程序中。第十五頁,共50頁。1.3面向?qū)ο蟮某绦蛟O(shè)計方法第十六頁,共50頁。程序設(shè)計方法的發(fā)展歷程

——面向?qū)ο蟮姆椒ǚ庋b:將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離的整體——對象。抽象:對同類型對象抽象出其共性,形成類。消息隱藏:類通過一個簡單的外部接口,與外界發(fā)生關(guān)系。消息傳遞:對象與對象之間通過消息進行通訊。面向?qū)ο蟮姆椒ǖ谑唔?,?0頁。對象和類屬性(Property)

尺寸、外形、表面、……方法(Method)

制作、出售、……

對“切”的處理、……事件(Event)

切、……對象:一塊蛋糕類(Class):蛋糕類第十八頁,共50頁。面向?qū)ο蟮幕靖拍?/p>

——對象一般意義上的對象:是現(xiàn)實世界中一個實際存在的事物??梢允褂行蔚模ū热缫惠v汽車),也可以是無形的(比如一項計劃)。是構(gòu)成世界的一個獨立單位,具有:靜態(tài)特征(屬性):可以用某種數(shù)據(jù)來描述動態(tài)特征(操作):對象所表現(xiàn)的行為或具有的功能面向?qū)ο蟮姆椒ǖ谑彭摚?0頁。面向?qū)ο蟮幕靖拍睢惙诸悺祟愅ǔ5乃季S方法分類所依據(jù)的原則——抽象忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念。面向?qū)ο蟮姆椒ǖ诙?,?0頁。公孫龍的“白馬非馬”

故事是春秋時的公孫龍先生說的。城門上告示:“馬匹不得入城”。公孫龍同志騎白馬而來,遭拒入。公孫龍一臉正色:“告示上寫的是‘馬’,而我騎的是‘白馬’,難道‘馬’等于‘白馬’嗎?”守門士兵覺得白馬還真不是馬,于是放行。依公孫龍先生的理論認(rèn)為:如果白馬是馬,黑馬也是馬,那么豈不白馬等于黑馬,所以,不能說白馬是馬?!鞍遵R非馬”是中國哲學(xué)史上的一樁公案。不過,若是我們從程序的角度上說,可以認(rèn)為:馬在這里表示一種類型,而白馬,黑馬它們的類型都是馬。白馬,黑馬具有相同的“數(shù)據(jù)類型”,但它們都相對獨立的個體。從這點說,別說有白黑之分,就算同樣是白馬,這一匹和哪一匹白馬,也是相對獨立的個體。在程序中,“類型”和“變量”的關(guān)系正是“馬”和“白馬”的關(guān)系。如果C或C++有這種數(shù)據(jù)類型:Horse,那么,定義一匹“白馬”的變量應(yīng)該這樣:HorseAWhiteHorse;第二十一頁,共50頁。面向?qū)ο蟮幕靖拍?/p>

——繼承(類型關(guān)系)繼承對于軟件復(fù)用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。定義:特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類的繼承。例如:將輪船作為一個一般類,客輪便是一個特殊類。面向?qū)ο蟮姆椒ǖ诙?,?0頁。類的繼承和派生“蛋糕類”派生“生日蛋糕類”,“蛋糕類”是“生日蛋糕類”的基類,“生日蛋糕類”是“蛋糕類”的派生類“生日蛋糕類”繼承“蛋糕類”蛋糕類生日蛋糕類屬性:賀詞、……方法裝飾、……第二十三頁,共50頁。面向?qū)ο蟮幕靖拍睢鄳B(tài)性多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義。例如:數(shù)的加法->實數(shù)的加法

->復(fù)數(shù)的加法面向?qū)ο蟮姆椒ǖ诙捻?,?0頁。程序設(shè)計方法的發(fā)展歷程

——面向?qū)ο蟮姆椒▋?yōu)點:程序模塊間的關(guān)系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了良好的保障。通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護都更為方便。面向?qū)ο蟮姆椒ǖ诙屙摚?0頁。面向過程與面向?qū)ο蟪绦蛟O(shè)計是一種數(shù)學(xué)思維或計算機思維方法,與人們認(rèn)識世界的方法不同以不穩(wěn)定的、多變的“過程”和“操作”為中心來構(gòu)造系統(tǒng)可重用性較差是建立在認(rèn)識方法學(xué)基礎(chǔ)上的一項技術(shù)科學(xué),比較自然地模擬了人類認(rèn)識客觀世界的方式;以相對穩(wěn)定的“對象”和“數(shù)據(jù)結(jié)構(gòu)”為中心來構(gòu)造系統(tǒng)可重用性較好面向過程程序設(shè)計面向?qū)ο蟪绦蛟O(shè)計第二十六頁,共50頁。練習(xí)-設(shè)計方法第一步:分析、歸納、生成對象第二步:用對象集成系統(tǒng)籌辦宴會項目宴會食物裝飾品賓客主食、菜、甜食、飲料、……花、布藝、草編、……親戚、朋友、同事、……安排制作食物、布置裝飾品、邀請賓客、……第二十七頁,共50頁。1.4程序設(shè)計語言的發(fā)展機器語言

簡單的“0”和“1”的組合,硬件相關(guān)。匯編語言

將機器語言映射為一些可以被人們讀懂的助記符,如“ADD”、“SUB”等,與硬件相關(guān)。高級語言

接近自然語言,與硬件無關(guān)。例子例子例子:考點*第二十八頁,共50頁。對比舉例—機器語言問題:A=1,B=2,求C=A+B的值11000111010001011111110000000001令A(yù)=1110001110100010111111令B=21000111111100將B放入eax累加器00將A與累加器中數(shù)加10將累加器中數(shù)放入C中機器語言是針對特定型號計算機的語言,執(zhí)行效率最高,但是不便于記憶。閱讀和書寫。-----第一代語言第二十九頁,共50頁。對比舉例—匯編語言問題:A=1,B=2,求C=A+B的值Movdwordptr[ebp-4],1令A(yù)=1Movdwordptr[ebp-8],2令B=2Moveax,dwordptr[ebp-4]將B放入eax累加器Addeax,dwordptr[ebp-8]將A與累加器中數(shù)加Movdwordptr[ebp-0ch],eax將累加器中數(shù)放入C中匯編語言用來編寫直接控制機器操作的低層程序,與機器密切相關(guān),移植性不好,效率高。-----第二代語言可執(zhí)行程序匯編程序匯編源程序目標(biāo)程序連接程序編輯程序第三十頁,共50頁。對比舉例—高級語言問題:A=1,B=2,求C=A+B的值A(chǔ)=1B=2C=A+B高級語言與硬件結(jié)構(gòu)和指令系統(tǒng)無關(guān),可讀性、可維護性好,執(zhí)行速度慢,編寫訪問硬件資源的系統(tǒng)軟件較難。-----第三代語言高級語言源程序可執(zhí)行程序編譯程序目標(biāo)程序連接程序編輯程序高級語言源程序輸出結(jié)果解釋程序編輯程序第三十一頁,共50頁。1.4.2C++的誕生C語言之父dennisRitchieTheCProgrammingLanguage第三十二頁,共50頁。1.4C++的誕生

C++之父BjarnestroustrupTheC++ProgrammingLanguage第三十三頁,共50頁。1.4C++的誕生

C++語言是從C語言發(fā)展演變而來。C++包含了整個C,C是建立C++的基礎(chǔ)。C++包含C的所有特征、屬性、優(yōu)缺點,并添加了面向?qū)ο蟮闹С?。C++語言C語言面向?qū)ο蟮谌捻?,?0頁。1.5程序開發(fā)過程源程序:.cppcompile(Ctrl+F7)目標(biāo)程序:.objBuild(F7)可執(zhí)行程序:.exe本書采用VC++6.0集成開發(fā)環(huán)境第三十五頁,共50頁。1.6簡單的C++程序第三十六頁,共50頁。1.6簡單的C++程序/***************************************程序文件:ch1_1.cpp程序功能:在屏幕上輸出helloworld!作者:XXX創(chuàng)建時間:XX年XX月XX日***************************************/#include<iostream>usingnamespacestd;voidmain(){cout<<“HelloWorld!“<<endl;}注釋編譯預(yù)處理程序主體第三十七頁,共50頁。1.6簡單的C++程序

“注釋”是程序員為讀者作的說明,用來提高程序的可讀性,C++程序在編譯過程中忽略注釋。

1、“//”

用來注釋一行說明,在“//”之后的文字直到換行都為注釋。一般用來對于程序中難懂的代碼進行說明。2、

“/*”和“*/”用來注釋一段說明,在“/*”和“*/”之間的部分,不管多長都為注釋。第三十八頁,共50頁。1.6簡單的C++程序

所有以“#”開頭的代碼,稱為編譯預(yù)處理。

#include<iostream>每次啟動編譯器時,先運行預(yù)處理器,預(yù)處理器找到所有以“#”開頭的代碼行進行處理。include是一條預(yù)處理指令,意思是“后面跟的是一個文件名,請找到該文件并將其加入?!眎ostream是系統(tǒng)定義的一個“頭文件”,它設(shè)置了C++的I/O相關(guān)環(huán)境,并定義了輸入輸出流對象cout和cin等。第三十九頁,共50頁。1.6簡單的C++程序

usingnamespacestd;1998年批準(zhǔn)的標(biāo)準(zhǔn)C++使用namespace命名空間標(biāo)準(zhǔn)。iostream是一個標(biāo)準(zhǔn)函數(shù)庫,cout是標(biāo)準(zhǔn)庫函數(shù)提供的一個對象,標(biāo)準(zhǔn)庫函數(shù)在namespace說明書中被指定為“std”。因此這句代碼的意思是使用標(biāo)準(zhǔn)命名空間std中的函數(shù)。第四十頁,共50頁。1.6簡單的C++程序正式的程序從代碼“voidmain()”開始,它包含一個名為main()的函數(shù),也稱為主函數(shù)。每個C++程序有且僅有一個main()函數(shù),程序在開始運行時會自動調(diào)用main()函數(shù)。main()前面的void表示函數(shù)的返回值的類型,意味著程序執(zhí)行結(jié)束后無需向操作系統(tǒng)返回。所有的函數(shù)都以左大括號{開始,右大括號}結(jié)束,在大括號{}之間的部分稱為函數(shù)體。函數(shù):是指能實現(xiàn)一個或多個功能的代碼塊。第四十一頁,共50頁。1.6簡單的C++程序1、cout:標(biāo)準(zhǔn)輸出流對象,2、<<:插入操作符可以連續(xù)使用3、endl:代表換行符意思是使用cout將“<<”后面的內(nèi)容打印在屏幕上。在函數(shù)體的每一句代碼后面都有一個分號“;”表示一個C++語句的結(jié)束。cout<<”HelloWorld!”<<endl;第四十二頁,共50頁。通過以上例子,可以看到:

1.C++程序是由函數(shù)構(gòu)成的。函數(shù)是C++程序中最小的功能單位,在一個C++程序中至少包含一個函數(shù)(main函數(shù)),也可以包含一個main函數(shù)和若干個其它函數(shù)。一個C程序中有并且僅有一個名為main的函數(shù),其它函數(shù)可由用戶取名,它們的位置任意,但執(zhí)行總從main函數(shù)開始小結(jié):第四十三頁,共50頁。2.

一個函數(shù)由兩部分組成:⑴函數(shù)的說明部分。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、形式參數(shù)類型。voidmain()⑵函數(shù)體,即由最外層的一對“{}”括住的部分。函數(shù)體一般包括定義(說明)部分和執(zhí)行語句部分。語句的數(shù)量不限,程序中由這些語句向計算機系統(tǒng)發(fā)出操作命令。C++程序?qū)嵗f明第四十四頁,共50頁。3.C++語言程序有比較自由的書寫格式,一行內(nèi)可以寫幾個語句,一個語句也可以分寫在多行上。4.C++語言程序中的每一條執(zhí)行語句都必須用分號“;”結(jié)束,分號是C++語句的一部分。C++程序?qū)嵗f明第四十五頁,共50頁。1.6簡單的C++程序操作步驟1、新建一個工程 1)啟動VC++6.02)新建一個console工程3)編寫源程序2、編譯和連接

編譯:compile(Ctrl+F7)

鏈接:Build(F7)3、運行使用的命令:Ctrl+F

溫馨提示

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

最新文檔

評論

0/150

提交評論