




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
6、紀(jì)律是自由的第一條件?!诟駹?、紀(jì)律是集體的面貌,集體的聲音,集體的動(dòng)作,集體的表情,集體的信念?!R卡連柯8、我們現(xiàn)在必須完全保持黨的紀(jì)律,否則一切都會(huì)陷入污泥中?!R克思9、學(xué)校沒有紀(jì)律便如磨坊沒有水?!涿兰~斯10、一個(gè)人應(yīng)該:活潑而守紀(jì)律,天真而不幼稚,勇敢而魯莽,倔強(qiáng)而有原則,熱情而不沖動(dòng),樂觀而不盲目。——馬克思C++程序設(shè)計(jì)教程1修改版C++程序設(shè)計(jì)教程1修改版6、紀(jì)律是自由的第一條件?!诟駹?、紀(jì)律是集體的面貌,集體的聲音,集體的動(dòng)作,集體的表情,集體的信念?!R卡連柯8、我們現(xiàn)在必須完全保持黨的紀(jì)律,否則一切都會(huì)陷入污泥中?!R克思9、學(xué)校沒有紀(jì)律便如磨坊沒有水。——夸美紐斯10、一個(gè)人應(yīng)該:活潑而守紀(jì)律,天真而不幼稚,勇敢而魯莽,倔強(qiáng)而有原則,熱情而不沖動(dòng),樂觀而不盲目?!R克思C++程序設(shè)計(jì)教程1修改版C++程序設(shè)計(jì)教程(第二版)第一章概述Chapter1Introduction3/25/20212第一章概述1.程序設(shè)計(jì)語言的發(fā)展2.C++語言發(fā)展歷史3.C++編程流程4.程序與算法5.過程化程序設(shè)計(jì)6.對象化程序設(shè)計(jì)3/25/20213匯編語言*匯編語言將機(jī)器指令映射為一些可以被人讀懂的助記符,如ADD、SUB等。*例如:INCEAX;(01000000)*不能直接執(zhí)行,需要經(jīng)過匯編,變成機(jī)器語言程序。*抽象層次很低,仍然是低級(jí)語言。7/21/20236匯編語言(續(xù))a=3*a–2*b+1匯編語言和某個(gè)特定的機(jī)器語言:⑴moveax,DWORDPTRa
$[ebp]8b45fc⑵leaeax,DWORDPTR[eax+eax*2]8d0440⑶movecx,DWORDPTRb
$[ebp]8b4df8⑷addecx,ecx 03c9⑸subeax,ecx2bc1⑹inceax40⑺movDWORDPTRa
$[ebp],eax8945fc7/21/20237高級(jí)語言*高級(jí)語言屏蔽了機(jī)器的細(xì)節(jié),提高了語言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。(eg:c,c++,Java,C#)*例如:if(x<3)
z=x*y;類似英語和數(shù)學(xué)表達(dá)式*不能直接執(zhí)行7/21/20238*高級(jí)語言有兩種翻譯方式:1、解釋方式2、編譯方式源程序解釋程序運(yùn)行結(jié)果源程序編譯程序目標(biāo)代碼7/21/20239總結(jié):*程序語言越低級(jí),則必須對過程描寫的越具體,指令也就越接近機(jī)器的硬件邏輯。*程序語言越高級(jí),就越接近對問題的描述與表達(dá),因而更直觀,更容易被人們所立即。*程序語言的發(fā)展,總是從低級(jí)到高級(jí),也就是從具體描述到抽象描述,當(dāng)然高級(jí)語言的抽象描述最后都自動(dòng)轉(zhuǎn)換成了機(jī)器的具體實(shí)現(xiàn)。7/21/2023102.C++語言發(fā)展前史*1954年,IBM公司JohnBackus設(shè)計(jì)實(shí)現(xiàn)FORTRAN語言,用于科學(xué)計(jì)算的“公式翻譯語言”;*1966年,標(biāo)準(zhǔn)化FORTRAN語言,稱為FORTRAN66;后又被更新FORTRAN77和FORTRAN90;*1959年,設(shè)計(jì)面向商業(yè)的通用語言COBOL;*1968年,標(biāo)準(zhǔn)化COBOL語言,后標(biāo)準(zhǔn)化更新;*1960年,定義ALGOL60語言,首次引入局部變量和遞歸概念。7/21/2023112.C++語言發(fā)展前史(續(xù))*20世紀(jì)60年代,在簡化FORTRAN基礎(chǔ)上,設(shè)計(jì)BASIC語言;*1983年推出TRUEBASIC;*1985年推出QBASIC;*1991年推出的VisualBASIC(VB)*20世紀(jì)60年代中期,設(shè)計(jì)與實(shí)現(xiàn)了用于人工智能研究的Lisp語言。*1967年,為兒童設(shè)計(jì)LOGO語言;*1967年,推出Simula67語言,首次提出類的概念;7/21/2023122.C++語言發(fā)展歷史*1972年:貝爾實(shí)驗(yàn)室首次實(shí)現(xiàn)C語言*1980年:貝爾實(shí)驗(yàn)室開始對C進(jìn)行改進(jìn)和擴(kuò)充――帶類的C*1983年:取名C++*1994年:制定ANSI(美國國家標(biāo)準(zhǔn)化協(xié)會(huì):AmericanNationalStandardsInstitute)C++標(biāo)準(zhǔn)草案*1998年:C++的ANSI/ISO標(biāo)準(zhǔn)被投入使用,——標(biāo)準(zhǔn)的C++7/21/202313*C與C++的最大區(qū)別在于解決問題的思想方法不一樣。1、C是一個(gè)結(jié)構(gòu)化語言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對輸入進(jìn)行運(yùn)算處理得到輸出;對于C++,首要考慮的是如何構(gòu)造一個(gè)對象模型,讓這個(gè)模型能夠契合對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程控制。C與C++語言比較7/21/2023142、就語言本身而言,在C中更多的是算法的概念。算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法,一樣不行。3、C語言設(shè)計(jì)目標(biāo):簡捷、高效。
*缺點(diǎn):比較適用于解決小的問題,對于大規(guī)模編程,程序模塊之間的協(xié)調(diào)性差,程序的可重用性、程序的安全、健壯以及可維護(hù)性、可擴(kuò)充性差。
7/21/2023154、C是C++的子集,C++不僅包括了整個(gè)C,C的全部特征、屬性、優(yōu)點(diǎn),還有一些優(yōu)點(diǎn):
#支持面向?qū)ο缶幊?OOP),也支持結(jié)構(gòu)化程序設(shè)計(jì);
#修補(bǔ)的C語言的一些漏洞,提供更好的類型檢查機(jī)制和編譯分析;
#生成目標(biāo)程序質(zhì)量高,程序執(zhí)行效率較高;#提供異常處理機(jī)制,簡化程序的出錯(cuò)處理;#函數(shù)可以重載以及使用缺省參數(shù);#提供模板機(jī)制:類模板和函數(shù)模板;7/21/2023163.C++編程流程1、編程過程:*一般的編程操作流程為:1、編輯(edit)
2、編譯(compile)
3、鏈接(link或make或build)
4、調(diào)試運(yùn)行(debug或run)
該過程循環(huán)往復(fù),直至完成。編輯源程序(鍵入程序).cpp編譯程序.obj連接.exe調(diào)試運(yùn)行7/21/202317*源程序:用源語言寫的,有待翻譯的程序*目標(biāo)程序:也稱為“結(jié)果程序”,是源程序通過翻譯程序加工以后所生成的程序。7/21/202318*編輯將源程序輸入到計(jì)算機(jī)中,生成后綴為cpp的磁盤文件。*編譯將程序的源代碼轉(zhuǎn)換為機(jī)器語言代碼。*連接將多個(gè)源程序文件以及庫中的某些文件連在一起,生成一個(gè)后綴為exe的可執(zhí)行文件。*運(yùn)行調(diào)試7/21/202319標(biāo)準(zhǔn)輸出的小程序:#include<iostream>intmain(){std::cout<<"helloWorld.\n";}*程序不但要使計(jì)算機(jī)能理解,而且也要讓人能理解,因此,上述程序最好寫成有結(jié)構(gòu)形式的代碼:#include<iostream>intmain(){std::cout<<"helloWorld.\n";}7/21/202320
*說明:#include:編譯預(yù)處理命令,文件包含。iostream是C++為特定環(huán)境編制的標(biāo)準(zhǔn)輸入/輸出流類的標(biāo)準(zhǔn)庫頭文件,也就是說,這個(gè)頭文件提供了輸入/輸出設(shè)施。intmain()是C++程序的入口,稱為主函數(shù)。main是函數(shù)名,int表示整數(shù)(integer)數(shù)據(jù)類型,位于main的前面,表示main函數(shù)應(yīng)該返回一個(gè)整型值。一對花括號(hào)“{…}”是表示main的函數(shù)體。C++語句以分號(hào)(;)結(jié)束7/21/202321cout是標(biāo)準(zhǔn)輸出設(shè)備的名稱,“<<”是操作命令,指示將后面的數(shù)據(jù)送到顯示器設(shè)備上去。″…″:表示字符串常量,原樣輸出?!錦n″:控制字符,表示換行操作,控制字符是″\″和另一個(gè)字符的組合。std是“名空間”,避免名稱沖突。
7/21/202322//**********//*ch1_1.cpp*//**********#include<iostream>intmain(){std::cout<<"Iamastudent.\n";}//*************//**ch1_2.cpp**//*************#include<iostream>intmain(){inta,b,result;std::cout<<"pleaseinputtwonumbers:\n";
std::
cin>>a>>b;result=3*a-2*b+1;
std::
cout<<"resultis“<<result<<endl;}注釋編譯預(yù)處理行函數(shù)7/21/2023232、編程風(fēng)格:程序設(shè)計(jì)風(fēng)格應(yīng)以可讀性為準(zhǔn)則,
合理的緊湊性、模塊整體性、對齊、注釋都是形成特定風(fēng)格的因素。7/21/2023244.程序與算法1、程序:以某種計(jì)算機(jī)程序設(shè)計(jì)語言為工具編制出來的動(dòng)作序列,表達(dá)人的系統(tǒng)性思維。是一系列逐一執(zhí)行的操作。(注意:每種語言都有特定的規(guī)范)對人而言:用計(jì)算機(jī)語言編寫的語句序列對機(jī)器而言:按硬件設(shè)計(jì)規(guī)范編制的指令序列(即:機(jī)器指令序列)7/21/2023252、算法:求特定問題的一組有限的操作序列。*算法引入原因:程序的動(dòng)作序列包含了對數(shù)據(jù)的存取訪問和算術(shù)運(yùn)算,因此對數(shù)據(jù)的合理描述、組織、存放和讀取,關(guān)系到程序運(yùn)行的正確性和高效性;*目的性、抽象性、研究性;*用特定的計(jì)算機(jī)語言來描述算法,就使該算法成為特定計(jì)算機(jī)語言下的程序。同時(shí),算法要靠程序是先來驗(yàn)證。7/21/202326例如,我們考慮以下代數(shù)問題: 一輛汽車2小時(shí)走了50英里,它的速度是多少? 第一步,為得到答案所需要的信息是路程和時(shí)間,也既輸入信息。 第二步,用到的公式:速度=路程/時(shí)間 第三步,判斷要得到的答案,答案是以英里每小時(shí)為單位的速度值,也就是輸出信息。7/21/202327#include<iostream>usingnamespacestd;intmain(intargc,char*argv[]){doubledistance,hour,velocity;cin>>distance>>hour;velocity=distance/hour;cout<<velocity<<endl;return0;}7/21/2023283、編程:是為了解決計(jì)算問題,計(jì)算問題強(qiáng)調(diào)算法,程序設(shè)計(jì)也就是在一定抽象層次上的算法設(shè)計(jì)。這里的抽象層次可以理解為數(shù)據(jù)的描述方式。
*當(dāng)程序要處理大量數(shù)據(jù)時(shí),此時(shí),數(shù)據(jù)組織與數(shù)據(jù)結(jié)構(gòu)的顯得重要,因此數(shù)據(jù)存在的形式必須脫離程序。程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境7/21/2023295.過程化程序設(shè)計(jì)*程序設(shè)計(jì)主要體現(xiàn)在算法上,編程就是解決算法如何設(shè)計(jì)的問題。當(dāng)算法很大時(shí),考慮將它按功能劃分。*主要工作:分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。7/21/202330*設(shè)計(jì)思路自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。*程序結(jié)構(gòu):按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹狀結(jié)構(gòu)。各模塊間的關(guān)系盡可能簡單,功能上相對獨(dú)立。7/21/202331*例如五子棋,面向過程的設(shè)計(jì)思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結(jié)果。把上面每個(gè)步驟用分別的函數(shù)來實(shí)現(xiàn),問題就可以解決了。7/21/202332*結(jié)構(gòu)化程序設(shè)計(jì)(StructuredProgramming)結(jié)構(gòu)化程序設(shè)計(jì)程序設(shè)計(jì)思想:1、描述任何實(shí)體只需用三種基本控制結(jié)構(gòu)2、程序設(shè)計(jì)中各過程體和組成部分都應(yīng)以模塊表示內(nèi)聚性(agregation)外聯(lián)性(association)3、過程化程序設(shè)計(jì)方法7/21/202333*優(yōu)點(diǎn):有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。*缺點(diǎn):對于龐大、復(fù)雜的程序難以開發(fā)和維護(hù)7/21/2023346.對象化程序設(shè)計(jì)*面向?qū)ο蟪绦蛟O(shè)計(jì)是把構(gòu)成問題事務(wù)分解成各個(gè)對象,建立對象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問題的步驟中的行為。7/21/202335*例如五子棋,面向?qū)ο蟮脑O(shè)計(jì)思路:
1、整個(gè)五子棋可以分為黑白雙方,這兩方的行為一樣;2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。第一類對象(玩家對象)負(fù)責(zé)接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的i變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對象(規(guī)則系統(tǒng))來對棋局進(jìn)行判定。
7/21/202336*總結(jié):面向?qū)ο笫且怨δ軄韯澐謫栴},而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設(shè)計(jì)中分散在了總多步驟中,很可能出現(xiàn)不同的繪制版本,因?yàn)橥ǔTO(shè)計(jì)人員會(huì)考慮到實(shí)際情況進(jìn)行各種各樣的簡化。而面向?qū)ο蟮脑O(shè)計(jì)中,繪圖只可能在棋盤對象中出現(xiàn),從而保證了繪圖的統(tǒng)一。
7/21/202337*面向?qū)ο蟪绦蛟O(shè)計(jì)特點(diǎn):Ⅰ將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個(gè)相互依存、不可分離的整體——對象。
Ⅱ?qū)ν愋蛯ο蟪橄蟪銎涔残?,形成類。Ⅲ類通過一個(gè)簡單的外部接口,與外界發(fā)生關(guān)系。7/21/2023381.封裝(encapsulation)Ⅰ把對象的屬性和功能結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位。
Ⅱ盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。對外形成一個(gè)邊界(或者說一道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系。7/21/2023392.繼承(inherita
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 包過培訓(xùn)機(jī)構(gòu)合同范本
- 勞工住宿合同范本
- 辦公用品購置合同范本
- 共享菜園轉(zhuǎn)讓合同范本
- 公司外包收債合同范本
- 健康產(chǎn)業(yè)合同范本
- 農(nóng)村修橋工程合同范本
- 2024年重慶松山醫(yī)院招聘考試真題
- 寫退貨合同范本
- 2024年重慶市永川區(qū)三教鎮(zhèn)招聘公益性崗位人員筆試真題
- 2025年春新外研版(三起)英語三年級(jí)下冊課件 Unit5第1課時(shí)Startup
- 2025年春新外研版(三起)英語三年級(jí)下冊課件 Unit1第2課時(shí)Speedup
- 區(qū)域臨床檢驗(yàn)中心
- 生物新教材培訓(xùn)的心得體會(huì)
- 2024年07月長沙農(nóng)村商業(yè)銀行股份有限公司2024年招考3名信息科技專業(yè)人才筆試歷年參考題庫附帶答案詳解
- 中醫(yī)預(yù)防流感知識(shí)講座
- 上海市2024年中考英語試題及答案
- 臨床患者體位管理
- 砂光機(jī)培訓(xùn)課件
- 米酒的制作流程
- 施工現(xiàn)場防高墜培訓(xùn)
評(píng)論
0/150
提交評(píng)論