




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 C/C+概述 計(jì)算機(jī)組成:軟件+硬件 計(jì)算機(jī)語言:機(jī)器語言、匯編語言、高級(jí)語言 程序設(shè)計(jì)方法:面向過程POP、面向?qū)ο驩OP C/C+歷史 C/C+開發(fā)步驟 VC 6.0集成環(huán)境介紹 第一個(gè)C語言程序1.1 了解計(jì)算機(jī)通俗地講,計(jì)算機(jī)是個(gè)“超級(jí)工具”,是個(gè)能執(zhí)行命令的電子設(shè)備。幾乎所有的計(jì)算機(jī)都遵循馮諾伊曼的“存儲(chǔ)運(yùn)行”結(jié)構(gòu),有以下基本功能:輸入、輸出、存儲(chǔ)、執(zhí)行算術(shù)和邏輯運(yùn)算。計(jì)算機(jī)主要由硬件和軟件兩大部分組成,首先看一下什么是硬件。馮.諾依曼結(jié)構(gòu):計(jì)算機(jī)運(yùn)算器控制器存儲(chǔ)器主機(jī):I/O設(shè)備:鍵盤、顯示器等中央處理器CPU1.1.1 計(jì)算機(jī)硬件計(jì)算機(jī)的硬件主要有中央處理器(CPU, C
2、entral Processing Unit)、內(nèi)存(或稱主存、隨機(jī)處理器、RAMRandom Access Memory)、輸入/輸出設(shè)備(Input/Output Devices)和外部存儲(chǔ)設(shè)備(Secondary Storage,多數(shù)為具備海量存儲(chǔ)能力的硬盤)下圖說明了計(jì)算機(jī)的硬件結(jié)構(gòu)。1.1.2 計(jì)算機(jī)軟件軟件是能完成特定功能的程序,軟件大體上可以分為兩類: (1)系統(tǒng)軟件系統(tǒng)軟件是用來控制計(jì)算機(jī),管理計(jì)算機(jī)上的資源,使計(jì)算機(jī)的硬件有效起作用的。在系統(tǒng)啟動(dòng)時(shí)裝載入內(nèi)存的程序集合稱為操作系統(tǒng),沒有操作系統(tǒng)的計(jì)算機(jī)什么也干不了,操作系統(tǒng)除了進(jìn)行內(nèi)存管理、文件管理和輸入輸出管理外,一般都提供
3、了很多系統(tǒng)級(jí)的服務(wù)供用戶調(diào)用。但不要認(rèn)為操作系統(tǒng)程序是多么的高深莫測(cè),從本質(zhì)上所,它也是用程序設(shè)計(jì)語言寫出來的。只要你掌握了程序設(shè)計(jì)的原理和硬件系統(tǒng)的相關(guān)知識(shí),你甚至可以寫出自己的操作系統(tǒng)。除了操作系統(tǒng)外,設(shè)備驅(qū)動(dòng)程序和其他一些管理工具也可以歸入系統(tǒng)軟件的范疇。DOS,WINDOWS,UNIX,LINUX(2)應(yīng)用軟件盡管系統(tǒng)軟件雖然能有效處理計(jì)算機(jī)的內(nèi)部功能,協(xié)助計(jì)算機(jī)使用外圍設(shè)備,但卻沒有把計(jì)算機(jī)轉(zhuǎn)化成可以寫報(bào)告,練打字,看電影等多用途的機(jī)器,想要實(shí)現(xiàn)這些功能,需要安裝應(yīng)用軟件。應(yīng)用軟件程序面向特定的應(yīng)用,如WORD用來處理文字,EXCEL用來記錄數(shù)據(jù),還有供娛樂的游戲程序等等。1.2 程
4、序設(shè)計(jì)語言語言在人類的交流中的作用無可取代,要想交流通暢,有共同的語言是首要條件,打個(gè)比方,一個(gè)中國人想和一個(gè)英國人聊天,光靠比劃手勢(shì)是不行的,有兩條路可以選,要么學(xué)習(xí)英語,要么找一個(gè)翻譯。計(jì)算機(jī)程序設(shè)計(jì)同樣如此,計(jì)算機(jī)是無生命無知覺的機(jī)器,不懂人類的語言,不管是漢語還是英語,計(jì)算機(jī)都不會(huì)接受,人類要想和其交流,讓計(jì)算機(jī)完成特定的任務(wù),必須解決“語言”的問題。同樣,人類和計(jì)算機(jī)交流同樣有兩條路:要么學(xué)習(xí)機(jī)器語言,要么找一個(gè)“翻譯”。機(jī)器語言是什么,“翻譯”又是什么,下面將給出解答。機(jī)器語言匯編語言高級(jí)語言(又分為:面向過程、面向?qū)ο?編程語言編程語言表示形式表示形式特點(diǎn)特點(diǎn)高級(jí)語言(C語言)a
5、=b+1簡(jiǎn)潔,易懂,易記匯編語言mov 0 x0804a01c,eaxadd 0 x01,eaxmov eax,0 x0804a018機(jī)器語言a1 1c a0 04 0883 c0 01a3 18 a0 04 08晦澀,難懂,難記1.2.1 機(jī)器語言 計(jì)算機(jī)是一種電子設(shè)備,計(jì)算機(jī)處理的是數(shù)字信號(hào)。數(shù)字信號(hào)采用0和1記錄信息,那么計(jì)算機(jī)的語言,稱為機(jī)器語言(Machine Language),自然也就是0和1序列。數(shù)字0和1稱為二進(jìn)制數(shù)據(jù)(Binary Digit),或者稱為位(Bit),這種0和1的序列就稱為二進(jìn)制代碼。 即便是完成相近的功能,不同的計(jì)算機(jī)的設(shè)計(jì)者也可能會(huì)采用不同的二進(jìn)制代碼集
6、來表示程序指令,換句話說,不同的計(jì)算機(jī)使用的機(jī)器語言并不一定相同,不過可以肯定的是,現(xiàn)代計(jì)算機(jī)都是以二進(jìn)制代碼的形式存儲(chǔ)和處理數(shù)據(jù)的。1.2.2 匯編語言 匯編語言(Assembly Language)的出現(xiàn)簡(jiǎn)化了程序員的工作,在匯編語言中,用便于記憶的方法定義程序指令,表1給出了匯編語言指令機(jī)器語言指令的對(duì)應(yīng)關(guān)系。 1.2.3 高級(jí)語言既然機(jī)器語言和匯編語言都是計(jì)算機(jī)可以理解的語言,用其可以完全控制計(jì)算機(jī)的行為,那么為什么人們還要?jiǎng)?chuàng)造并使用高級(jí)程序設(shè)計(jì)語言呢?因?yàn)闄C(jī)器語言和匯編語言都是低級(jí)語言,是面向機(jī)器的,與具體的計(jì)算機(jī)相關(guān)。學(xué)習(xí)起來困難,編程效率也低,可讀性、可維護(hù)性也差。還是舉個(gè)例子,
7、一個(gè)說普通話的北京人想要去歐洲旅行,可是他不懂任何一門歐洲語言;恰好,一個(gè)說粵語的廣東人也去歐洲旅行,而且,他懂得德語、英語、法語、西班牙語等所有歐洲語言,他們結(jié)伴同行。北京人想要同歐洲人交流,有兩種方式:一是學(xué)習(xí)各種歐洲語言,然后同各個(gè)國家的人直接交流;二是讓廣東人當(dāng)翻譯,將自己的意思講給歐洲人聽,并將歐洲人的回答反饋給自己。如果您是那個(gè)北京人,您選擇哪種方式?我想答案是確定的,肯定要請(qǐng)廣東人當(dāng)翻譯。雖然普通話和粵語也有一定的差異,但是比起同歐洲語言的差異來,這種差異小了很多。況且,如果直接同歐洲人交流,需要學(xué)習(xí)多少門語言?高級(jí)語言和計(jì)算機(jī)的關(guān)系,與北京人的語言和歐洲人的關(guān)系相似。高級(jí)語言編
8、寫的程序借助于編譯器就可以在特定的機(jī)器上運(yùn)行,不同的歐洲人相當(dāng)于不同的計(jì)算機(jī),廣東人相當(dāng)于編譯器,粵語相當(dāng)于計(jì)算機(jī)高級(jí)語言。1.2.4 程序要素:數(shù)據(jù)結(jié)構(gòu)和算法 計(jì)算機(jī)程序規(guī)定了計(jì)算機(jī)要執(zhí)行哪些動(dòng)作及這些動(dòng)作應(yīng)當(dāng)按什么順序來執(zhí)行,如同菜譜規(guī)定了廚師做菜的材料和步驟。一個(gè)程序主要有以下兩個(gè)要素: 數(shù)據(jù)結(jié)構(gòu):即數(shù)據(jù)的存儲(chǔ)形式,程序用到的信息。 算法:操作步驟,對(duì)操作的描述,程序用什么方法解決問題。 著名的計(jì)算機(jī)科學(xué)家Nikiklaus Wirth提出了一個(gè)公式: 程序 數(shù)據(jù)結(jié)構(gòu) 算法。1.2.5 面向過程的程序設(shè)計(jì)(POP)在60年代計(jì)算機(jī)發(fā)展的初期,計(jì)算機(jī)和編程是少數(shù)聰明人的玩具,程序員可以根據(jù)
9、自己的喜好隨心所欲地進(jìn)行程序設(shè)計(jì),大多數(shù)程序代碼組織混亂,可以說只有作者本人可以看懂,被稱為“意大利面條式編程”,隨著計(jì)算機(jī)的發(fā)展和程序規(guī)模的不斷擴(kuò)大,一大堆的問題凸現(xiàn)出來:程序質(zhì)量低下,進(jìn)度延誤,預(yù)算嚴(yán)重超支,這就是“軟件危機(jī)”。為此,人們提出了結(jié)構(gòu)化程序設(shè)計(jì)方法,探討了面向過程編程的3種基本結(jié)構(gòu),即順序、分支和循環(huán),大大提高了程序的清晰度和可靠性,在一定程度上緩解了“軟件危機(jī)”。結(jié)構(gòu)化程序設(shè)計(jì)方法建立在Bohm、Jacopini證明的結(jié)構(gòu)定理的基礎(chǔ)上,結(jié)構(gòu)定理指出:任何程序邏輯都可以用順序、選擇和循環(huán)等3種基本結(jié)構(gòu)來表示,如所示。1.2.6 面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)面向?qū)ο蟮某绦蚺c結(jié)構(gòu)
10、化的程序不同,由C+編寫的結(jié)構(gòu)化的程序是由一個(gè)個(gè)的函數(shù)組成的,而由C+編寫的面向?qū)ο蟮某绦蚴怯梢粋€(gè)個(gè)的對(duì)象組成的,對(duì)象之間通過消息而相互作用。在結(jié)構(gòu)化的程序設(shè)計(jì)中,我們要解決某一個(gè)問題,就是要確定這個(gè)問題能夠分解為哪些函數(shù),數(shù)據(jù)能夠分解為哪些基本的類型,如int、double等。也就是說,思考方式是面向機(jī)器結(jié)構(gòu)的,不是面向問題的結(jié)構(gòu),需要在問題結(jié)構(gòu)和機(jī)器結(jié)構(gòu)之間建立聯(lián)系。面向?qū)ο蟮某绦蛟O(shè)計(jì)方法的思考方式是面向問題的結(jié)構(gòu),它認(rèn)為現(xiàn)實(shí)世界是由對(duì)象組成的。面向?qū)ο蟮某绦蛟O(shè)計(jì)方法解決某個(gè)問題,要確定這個(gè)問題是由哪些對(duì)象組成的,對(duì)象間的相互關(guān)系是什么。1.3 C/C+概述 C語言是1972年貝爾實(shí)驗(yàn)室為
11、寫unix操作系統(tǒng)在B語言的基礎(chǔ)上編寫的 1978年發(fā)布C Program Language 1989年ANSI組織發(fā)布 C89標(biāo)準(zhǔn) 1999年發(fā)布C99標(biāo)準(zhǔn) C+語言是貝爾實(shí)驗(yàn)室在C語言的基礎(chǔ)上,借鑒simula語言面向?qū)ο蟮臋C(jī)制,于80年代初開發(fā)出來的一種過程性和對(duì)象性結(jié)合的程序設(shè)計(jì)語言,最初稱為“帶類的C”,1983年更名為“C+”1.3.1 C+語言發(fā)展歷程最初,Stroustrup使用了一個(gè)C+到C的編譯器程序,將C+源代碼翻譯成C代碼,然后通過標(biāo)準(zhǔn)的C編譯器將其轉(zhuǎn)化成二進(jìn)制代碼,隨著C+的日漸普及,才出現(xiàn)了獨(dú)立的C+編譯器,直接將C+代碼編譯成目標(biāo)代碼,這種方式,突出了C+“由C語
12、言而來,卻不同于C語言”的獨(dú)立地位。C+靈活而強(qiáng)大的功能,很快就受到了計(jì)算機(jī)軟件廠商的青睞,并不斷對(duì)C+進(jìn)行細(xì)化,促進(jìn)了C+的發(fā)展。雖然多數(shù)公司和科研單位都希望自己的C+版本能和其他版本兼容,但如果沒有一個(gè)標(biāo)準(zhǔn)的出臺(tái),這將很難做到。為此,美國國家標(biāo)準(zhǔn)局在1990年設(shè)立了一個(gè)委員會(huì)(ANSI X3J16),專門負(fù)責(zé)C+標(biāo)準(zhǔn)的制定。ANSI/ISO C+國際標(biāo)準(zhǔn)第一版于1998年正式發(fā)布,2003年又發(fā)布了C+國際標(biāo)準(zhǔn)第二版,新的標(biāo)準(zhǔn)是對(duì)第一版的整理修訂錯(cuò)誤,減少歧義等,并沒有改變語言特性,本書所有介紹和實(shí)例代碼都是基于新的C+國際標(biāo)準(zhǔn)的。1.3.2 C+語言特點(diǎn) C+語言是以C語言為基礎(chǔ)擴(kuò)充、發(fā)
13、展起來的一種優(yōu)秀的通用程序設(shè)計(jì)語言,它保存了C語言的緊湊、靈活、高效和移植性好的特點(diǎn),又吸收了其他程序設(shè)計(jì)語言的優(yōu)秀特性,從simula中吸收了類的機(jī)制,從Algol中吸收了運(yùn)算符重載、引用和在局部的任何地方聲明變量,綜合了Ada的類屬和異常處理機(jī)制。 C+語言是C語言的一個(gè)超集,它是一門混合型的語言,既支持傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì),又支持面向?qū)ο蟮某绦蛟O(shè)計(jì),這是C+語言成功流行的一個(gè)重要原因。1.3.3 C/C+程序開發(fā)基本過程1.編輯(Edit):使用文本編輯工具錄入程序代碼,生成源程序*.c,*.cpp;2.編譯(Compile):語法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj;3.鏈接(Link
14、):與其它目標(biāo)程序或庫鏈接裝配,生成可執(zhí)行程序*.exe;4.執(zhí)行(Run):運(yùn)行最終的可執(zhí)行文件。如:cl.exe a.c f.c注:cl.exe位于C:Program FilesMicrosoft Visual StudioVC98Bin 目錄下1.4 C+開發(fā)環(huán)境的搭建 C+的流行使得許多軟件廠商都提供了自己的C+集成開發(fā)環(huán)境,稱為C+ IDE。著名的有Borland公司的C+ Builder(BCB),Microsoft公司的Visual C+(VC)等等。所謂集成開發(fā)環(huán)境,在同一個(gè)環(huán)境下,能夠完成C+源程序的編寫、連編、運(yùn)行和調(diào)試。 對(duì)初學(xué)者而言,不要被VC、BCB、BC(Borla
15、nd C+)、MC(Microsoft C+)、TC(Turbo C+)等詞匯所迷惑他們都是集成開發(fā)環(huán)境,而我們要學(xué)的是一門語言。 本文以Windows操作系統(tǒng)下流行的C+集成開發(fā)環(huán)境Visual C+ 6(VC6)+sp6為示例開發(fā)環(huán)境,所有示例代碼都在(Windows XP+VC6/Windows 2000+VC6)下編譯通過。 1.4.1 Visual C+ 6開發(fā)環(huán)境簡(jiǎn)介 Visual C+ 6集成開發(fā)環(huán)境,被劃分成4個(gè)主要區(qū)域:菜單和工具欄、工作區(qū)窗口、代碼編輯窗口和輸出窗口,如圖1.4所示。1.4.2 開發(fā)步驟1.創(chuàng)建工程:打開VC6.0FileNewProjects然后按照左圖進(jìn)
16、行選擇An empty project(空項(xiàng)目)。2.創(chuàng)建文件:FileNewFiles然后按照右圖進(jìn)行。1.5 第一個(gè)C程序第一個(gè)程序:在屏幕上顯示Hello World按照1.4節(jié)的介紹建立工程,添加源代碼文件HelloWorld.cpp,見代碼1 1: /1-1/*文件名:example101.cpp功 能:輸出Hello,World*/#include /編譯預(yù)處理:頭文件int main()/主函數(shù)printf(Hello,Worldn); /輸出Hello,World并換行return 0;/返回1.6 小結(jié)本章主要講述計(jì)算機(jī)和程序設(shè)計(jì)的基本概念、方法,并簡(jiǎn)單介紹了C+語言的特點(diǎn)以及Visual C+集成開發(fā)環(huán)境的使用。面向過程的結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟮某绦蛟O(shè)計(jì)是兩種主要的程序設(shè)計(jì)方法。結(jié)構(gòu)化程序設(shè)計(jì)主張只采用順
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 賣衣服投資合同范例
- 廠房土地改造合同范例
- 二年級(jí)口算題庫大全100道
- 深空探測(cè)載荷技術(shù)驗(yàn)證報(bào)告
- 2025年重慶市安全員B證考試題庫附答案
- 加工承攬個(gè)合同范本
- 賣設(shè)備合同范本
- 協(xié)議賣車合同范例
- 個(gè)體戶電子合同范本
- 云南木材采購合同范本
- 產(chǎn)科腹部四步觸診要點(diǎn)
- 第10課 人類社會(huì)及其發(fā)展規(guī)律-【中職專用】2024年中職思想政治《哲學(xué)與人生》金牌課件(高教版2023·基礎(chǔ)模塊)
- SLT 478-2021 水利數(shù)據(jù)庫表結(jié)構(gòu)及標(biāo)識(shí)符編制總則
- 2024年春學(xué)期人教版小學(xué)道德與法治六年級(jí)下冊(cè)教學(xué)計(jì)劃附教學(xué)進(jìn)度表
- 深度學(xué)習(xí)視角下“尺規(guī)作圖”教學(xué)策略
- 2024 年袋鼠數(shù)學(xué)競(jìng)賽 等級(jí)E(中國區(qū))
- 2024年南京旅游職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫匯編
- 2024-2030中國半導(dǎo)體閥門及管接頭市場(chǎng)現(xiàn)狀研究分析與發(fā)展前景預(yù)測(cè)報(bào)告
- 公務(wù)員面試考官培訓(xùn)
- 2024年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及一套參考答案
- 繽紛天地美食街運(yùn)營方案
評(píng)論
0/150
提交評(píng)論