程序設(shè)計與VC語言簡介_第1頁
程序設(shè)計與VC語言簡介_第2頁
程序設(shè)計與VC語言簡介_第3頁
程序設(shè)計與VC語言簡介_第4頁
程序設(shè)計與VC語言簡介_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、劉驚雷劉驚雷 編著編著電子工業(yè)出版社電子工業(yè)出版社2022-5-32 本課程以操作系統(tǒng)的程序員接口為主本課程以操作系統(tǒng)的程序員接口為主線,介紹了線,介紹了VCVC程序的編制方法和原理。主程序的編制方法和原理。主要內(nèi)容分為三篇:要內(nèi)容分為三篇:VCVC控制臺程序設(shè)計與面控制臺程序設(shè)計與面向?qū)ο罄碚摚ㄖ饕帉懴驅(qū)ο罄碚摚ㄖ饕帉懽址绞较碌某套址绞较碌某绦颍┬颍籚CVC的兩種編程模式的兩種編程模式APIAPI編程和編程和MFCMFC編編程(編寫具有程(編寫具有圖形用戶界面圖形用戶界面的應用程序);的應用程序);VCVC高級編程高級編程-基于組件的編程與基于組件的編程與應用應用(編寫編寫COMC

2、OM和和DLLDLL組件組件)。)。2022-5-33 掌握利用掌握利用VC編寫面向?qū)ο蟮目刂婆_程序、編寫面向?qū)ο蟮目刂婆_程序、VC雙路開發(fā)具有圖形用戶界面的模式雙路開發(fā)具有圖形用戶界面的模式API編程和編程和MFC編程,了解基于組件的應用編程,了解基于組件的應用程序的編制方法。在整個課程的學習中,要程序的編制方法。在整個課程的學習中,要體會體會Windows操作系統(tǒng)的兩個接口(操作系統(tǒng)的兩個接口(用戶接用戶接口口和和程序員接口程序員接口)的使用,熟悉)的使用,熟悉VC應用程序應用程序?qū)τ嬎銠C軟硬件系統(tǒng)的控制,掌握一些常用對計算機軟硬件系統(tǒng)的控制,掌握一些常用的程序設(shè)計方法的程序設(shè)計方法。 2

3、022-5-34 VCVC(Visual C+Visual C+的簡稱)是一種功的簡稱)是一種功能強大、使用靈活的程序設(shè)計語言,尤能強大、使用靈活的程序設(shè)計語言,尤其是在使用操作系統(tǒng)所提供的其是在使用操作系統(tǒng)所提供的服務服務與與資資源源方面獨霸群雄,方面獨霸群雄,VCVC程序設(shè)計可以深入程序設(shè)計可以深入到計算機的方方面面,但到計算機的方方面面,但“萬丈高樓平萬丈高樓平地起地起”,掌握程序設(shè)計有關(guān)的基礎(chǔ)理論,掌握程序設(shè)計有關(guān)的基礎(chǔ)理論與應用是至關(guān)重要的。與應用是至關(guān)重要的。2022-5-35 1、教材教材:Visual C+實用教程實用教程(劉驚雷編著,電子工業(yè)劉驚雷編著,電子工業(yè)出版社,出版社

4、,2005.3)、參考書:、參考書:1)劉驚雷、范輝等劉驚雷、范輝等Visual C+6.0程序設(shè)計簡程序設(shè)計簡明教程,高等教育出版社,明教程,高等教育出版社,2001.72)2)劉路放等劉路放等Visual C+與面向?qū)ο蟪绦蛟O(shè)計與面向?qū)ο蟪绦蛟O(shè)計教程高等教育出版社教程高等教育出版社,2002.43)3)朱磊,周彬朱磊,周彬Windows下的下的C/C+高級編高級編程人民郵電出版社程人民郵電出版社,2003.32022-5-361. 習題習題2. 課堂開卷考試課堂開卷考試3. 上機調(diào)試程序上機調(diào)試程序2022-5-37 VC VC(Visual C+Visual C+的簡稱)是一種功能的簡稱

5、)是一種功能強大、使用靈活的程序設(shè)計語言,尤其是強大、使用靈活的程序設(shè)計語言,尤其是在使用操作系統(tǒng)所提供的服務與資源方面在使用操作系統(tǒng)所提供的服務與資源方面獨霸群雄,獨霸群雄,VCVC程序設(shè)計可以深入到計算機程序設(shè)計可以深入到計算機的方方面面,但的方方面面,但“萬丈高樓平地起萬丈高樓平地起”,掌,掌握程序設(shè)計有關(guān)的一些基礎(chǔ)理論與應用是握程序設(shè)計有關(guān)的一些基礎(chǔ)理論與應用是至關(guān)重要的。本篇為至關(guān)重要的。本篇為VCVC控制臺程序與面向控制臺程序與面向?qū)ο罄碚?,旨在為讀者順利進入對象理論,旨在為讀者順利進入VCVC開發(fā)領(lǐng)開發(fā)領(lǐng)域打下堅實的基礎(chǔ)。域打下堅實的基礎(chǔ)。2022-5-38 1.1 1.1 程序

6、設(shè)計與程序設(shè)計語言程序設(shè)計與程序設(shè)計語言 1.2 1.2 程序設(shè)計方法的演變程序設(shè)計方法的演變 1.3 1.3 VCVC語言概述語言概述 習題習題 本章內(nèi)容主要包括本章內(nèi)容主要包括程序設(shè)計的四個層次程序設(shè)計的四個層次,四種程序設(shè)計方法的概,四種程序設(shè)計方法的概念,念,簡單的具有輸入輸出功能的控制臺程序的設(shè)計簡單的具有輸入輸出功能的控制臺程序的設(shè)計,VCVC集成開發(fā)環(huán)境集成開發(fā)環(huán)境的特點的特點. . 要求了解面向?qū)ο蟮某绦蛟O(shè)計和基于組件的程序設(shè)計的特點,要求了解面向?qū)ο蟮某绦蛟O(shè)計和基于組件的程序設(shè)計的特點,掌掌握結(jié)構(gòu)化程序設(shè)計的特點及應用握結(jié)構(gòu)化程序設(shè)計的特點及應用、輸入輸出流在控制臺程序中的應

7、用、輸入輸出流在控制臺程序中的應用,熟悉單文件控制臺應用程序的編寫過程熟悉單文件控制臺應用程序的編寫過程,熟練掌握程序設(shè)計四個層,熟練掌握程序設(shè)計四個層次的含義及每個層次的重要性。次的含義及每個層次的重要性。 2022-5-39概述概述1.1.1 1.1.1 程序設(shè)計程序設(shè)計 1.1.2 1.1.2 程序設(shè)計技術(shù)的四個層次程序設(shè)計技術(shù)的四個層次 1.1.3 1.1.3 算法與程序算法與程序 1.1.4 1.1.4 程序設(shè)計方法學基礎(chǔ)程序設(shè)計方法學基礎(chǔ)1.1.5 1.1.5 程序設(shè)計語言程序設(shè)計語言 1.1.6 1.1.6 程序設(shè)計的重要性概念程序設(shè)計的重要性概念2022-5-310在計算機技術(shù)

8、發(fā)展的歷史長河中,有兩個人是需在計算機技術(shù)發(fā)展的歷史長河中,有兩個人是需要我們記憶的,一個是要我們記憶的,一個是圖靈圖靈,另一個是另一個是比爾、蓋茨比爾、蓋茨。圖靈用數(shù)學的概念形式地對計算的本質(zhì)做了解釋;圖靈用數(shù)學的概念形式地對計算的本質(zhì)做了解釋;比爾、蓋茨連續(xù)幾年都為全球首富,這比爾、蓋茨連續(xù)幾年都為全球首富,這“地球人全地球人全知道了知道了”,是他帶領(lǐng),是他帶領(lǐng)MicrosoftMicrosoft公司,從事于計算機公司,從事于計算機的靈魂的靈魂軟件的開發(fā)。本書的目的,就是帶領(lǐng)廣軟件的開發(fā)。本書的目的,就是帶領(lǐng)廣大讀者熟悉其軟件開發(fā)的旗艦產(chǎn)品大讀者熟悉其軟件開發(fā)的旗艦產(chǎn)品Visual C+V

9、isual C+,通過它開始我們的程序設(shè)計,通過它開始我們的程序設(shè)計,開始對計算機系統(tǒng)的開始對計算機系統(tǒng)的認識過程認識過程。 2022-5-311 程序設(shè)計的概念:程序設(shè)計的概念:是采用是采用某種編程語言某種編程語言,為了解決某個,為了解決某個特定領(lǐng)域特定領(lǐng)域的問題,而使用的問題,而使用某種某種設(shè)計方法設(shè)計方法編寫計算機程序的活動。編寫計算機程序的活動。如果把小說比作程序的話,小說創(chuàng)作就是程序設(shè)計。只不過小說是如果把小說比作程序的話,小說創(chuàng)作就是程序設(shè)計。只不過小說是表達人的思想,進而控制人的活動的一種代碼,而表達人的思想,進而控制人的活動的一種代碼,而計算機程序是表計算機程序是表達機器的思想

10、,進而控制機器活動的一種代碼達機器的思想,進而控制機器活動的一種代碼,當然這種代碼也是,當然這種代碼也是和人相通的。和人相通的。 程序設(shè)計的特征:程序設(shè)計的特征:程序設(shè)計必須采用某種語言;程序設(shè)計必須采用某種語言;對領(lǐng)域的依賴性;對領(lǐng)域的依賴性;采用某種設(shè)計方法進行。采用某種設(shè)計方法進行。 2022-5-312算法設(shè)計與分析算法設(shè)計與分析程序設(shè)計語言程序設(shè)計語言程序設(shè)計方法學程序設(shè)計方法學程序設(shè)計環(huán)境與工具程序設(shè)計環(huán)境與工具2022-5-313 算法的概念:算法的概念:利用計算機解決問題的步驟。利用計算機解決問題的步驟。著名的計算機科學家沃思說著名的計算機科學家沃思說“程序程序= =數(shù)據(jù)結(jié)構(gòu)數(shù)

11、據(jù)結(jié)構(gòu)+ +算法算法”,算法在程序設(shè)計,算法在程序設(shè)計中的作用可窺見一斑。中的作用可窺見一斑。如果把做菜的原料比做數(shù)據(jù),你做出的菜比做設(shè)計的程序,那么如果把做菜的原料比做數(shù)據(jù),你做出的菜比做設(shè)計的程序,那么烹飪的烹飪的方法就是算法方法就是算法。 程序:程序:用某種語言為工具編制出來的動作序列,它是用某種語言為工具編制出來的動作序列,它是人類思想的一個載體人類思想的一個載體。計算機程序是用計算機程序設(shè)計語言所要求的規(guī)范書寫出來的一系列動計算機程序是用計算機程序設(shè)計語言所要求的規(guī)范書寫出來的一系列動作,它作,它表達了程序員要求計算機進行的操作表達了程序員要求計算機進行的操作,該操作的結(jié)果是為人類服

12、,該操作的結(jié)果是為人類服務的某種表示形式。務的某種表示形式。2022-5-314程序的特征:程序的特征:a)a)程序的靜態(tài)與動態(tài)屬性程序的靜態(tài)與動態(tài)屬性 ;b)b)程序是程序語言抽象的符號表示程序是程序語言抽象的符號表示 ;c)c)程序是對數(shù)據(jù)實施算法的過程程序是對數(shù)據(jù)實施算法的過程 ;d)d)程序是分層嵌套的。程序是分層嵌套的。2022-5-315 算法在程序設(shè)計中的重要性算法在程序設(shè)計中的重要性 : 1.1. 算法具有時間上的穩(wěn)定性;算法具有時間上的穩(wěn)定性;2.2. 語言是用工具編制出來的動作序列,算法的理解、設(shè)計語言是用工具編制出來的動作序列,算法的理解、設(shè)計和分析都需要掌握扎實的基礎(chǔ)理

13、論知識。包括算法的復和分析都需要掌握扎實的基礎(chǔ)理論知識。包括算法的復雜性理論,各種常用的求解方法如遞歸法、貪心法等;雜性理論,各種常用的求解方法如遞歸法、貪心法等;3.3. 程序開發(fā)的后期,界面的設(shè)計不再是主要的問題,而數(shù)程序開發(fā)的后期,界面的設(shè)計不再是主要的問題,而數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計卻變得愈加重要。據(jù)結(jié)構(gòu)和算法的設(shè)計卻變得愈加重要。2022-5-316 上個世紀60年代后期,許多軟件項目的開發(fā)周期與開發(fā)成本超出預算,而生產(chǎn)出來的軟件產(chǎn)品卻可靠性差、可重用性差、可維護性差,這反映了整個軟件行業(yè)的生產(chǎn)效率低下,這就是人們常說的軟件危機。程序設(shè)計方法學程序設(shè)計方法學是指在程序設(shè)計過程中應遵循的一

14、些原理和方法。是指在程序設(shè)計過程中應遵循的一些原理和方法。程序設(shè)計中最關(guān)心的是程序的效率和程序的可靠性。程序設(shè)計中最關(guān)心的是程序的效率和程序的可靠性。 程序的可靠性包括兩個方面:程序的可靠性包括兩個方面:程序的正確性。指程序的實現(xiàn)是否滿足了需求,程序的正確性的證程序的正確性。指程序的實現(xiàn)是否滿足了需求,程序的正確性的證明在程序設(shè)計方法學課程中來研究;明在程序設(shè)計方法學課程中來研究;程序的健壯性,指程序異常情況下工作的能力。程序的健壯性,指程序異常情況下工作的能力。 2022-5-317 程序設(shè)計方法學主要研究程序設(shè)計方法學主要研究: : 抽象數(shù)據(jù)類型理論、程序的控制結(jié)構(gòu)抽象數(shù)據(jù)類型理論、程序的

15、控制結(jié)構(gòu) 程序的正確性證明、程序變換技術(shù)程序的正確性證明、程序變換技術(shù) 結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計( (如如C C語言語言) )與面向?qū)ο蟮某绦蛟O(shè)計與面向?qū)ο蟮某绦蛟O(shè)計( (C+)C+)范型等。范型等。 程序設(shè)計方法是獨立于具體程序設(shè)計語言的技術(shù)程序設(shè)計方法是獨立于具體程序設(shè)計語言的技術(shù) 程序設(shè)計方法與程序設(shè)計語言是相輔相成的。程序設(shè)計方法與程序設(shè)計語言是相輔相成的。 采用某種程序設(shè)計方法編寫程序需要相應程序設(shè)計語言作為工具采用某種程序設(shè)計方法編寫程序需要相應程序設(shè)計語言作為工具 程序設(shè)計語言的設(shè)計是為了支持某種程序設(shè)計方法。程序設(shè)計語言的設(shè)計是為了支持某種程序設(shè)計方法。2022-5-318

16、程序設(shè)計語言程序設(shè)計語言: :是一種適合于計算機和人們閱讀方式的描述計是一種適合于計算機和人們閱讀方式的描述計算的符號系統(tǒng)算的符號系統(tǒng) 。注:注:“高級語言程序設(shè)計高級語言程序設(shè)計”強調(diào)的是利用某種高級語言進行程序設(shè)計的過強調(diào)的是利用某種高級語言進行程序設(shè)計的過程,而程,而“高級程序設(shè)計語言高級程序設(shè)計語言”強調(diào)的是對高級程序設(shè)計語言的理解和應用強調(diào)的是對高級程序設(shè)計語言的理解和應用 。與程序設(shè)計語言有關(guān)系的三類人員與程序設(shè)計語言有關(guān)系的三類人員程序設(shè)計語言的開發(fā)者程序設(shè)計語言的開發(fā)者程序設(shè)計語言的實現(xiàn)者程序設(shè)計語言的實現(xiàn)者程序設(shè)計語言的使用者程序設(shè)計語言的使用者 。 2022-5-319 程

17、序設(shè)計的重要性,可從以下幾個方面程序設(shè)計的重要性,可從以下幾個方面來來理解:理解:1)程序設(shè)計是計算機類學生畢業(yè)走向工作崗位的一程序設(shè)計是計算機類學生畢業(yè)走向工作崗位的一項基本技能。項基本技能。2)程序設(shè)計是非計算機學生跨入計算機領(lǐng)域的一個程序設(shè)計是非計算機學生跨入計算機領(lǐng)域的一個實踐之路。實踐之路。3) 程序設(shè)計的四個層次決定了程序設(shè)計是一項全面程序設(shè)計的四個層次決定了程序設(shè)計是一項全面技能的培養(yǎng)。技能的培養(yǎng)。2022-5-320概述概述1.2.1 1.2.1 結(jié)構(gòu)化程序設(shè)計概念結(jié)構(gòu)化程序設(shè)計概念1.2.2 1.2.2 面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計 1.2.3 1.2.3 基于組件的程序

18、設(shè)計基于組件的程序設(shè)計 1.2.41.2.4* * 面向面向AgentAgent程序設(shè)計程序設(shè)計 2022-5-321 20世紀世紀60年代以后,計算機硬件技術(shù)的迅年代以后,計算機硬件技術(shù)的迅速發(fā)展,導致其速度與存儲容量不斷提高,成本速發(fā)展,導致其速度與存儲容量不斷提高,成本急劇下降。加之程序規(guī)模越來越大,許多程序的急劇下降。加之程序規(guī)模越來越大,許多程序的開發(fā)不再是僅靠個人的技藝,而需要團隊的共同開發(fā)不再是僅靠個人的技藝,而需要團隊的共同努力才可能完成。而舊的程序設(shè)計方法很少考慮努力才可能完成。而舊的程序設(shè)計方法很少考慮團隊各成員之間交流協(xié)作的需要,因此,為了實團隊各成員之間交流協(xié)作的需要,

19、因此,為了實現(xiàn)程序的現(xiàn)程序的可靠性、可重用性和可理解性可靠性、可重用性和可理解性等因素,等因素,誕生了很多程序設(shè)計方法。本節(jié)闡述程序設(shè)計發(fā)誕生了很多程序設(shè)計方法。本節(jié)闡述程序設(shè)計發(fā)展史的四種程序設(shè)計方法。展史的四種程序設(shè)計方法。2022-5-322結(jié)構(gòu)化程序設(shè)計的核心思想:結(jié)構(gòu)化程序設(shè)計的核心思想:(1 1)程序?qū)嶓w主要由算法和數(shù)據(jù)結(jié)構(gòu)組成;)程序?qū)嶓w主要由算法和數(shù)據(jù)結(jié)構(gòu)組成;(2 2)其分析與設(shè)計方法采用的是)其分析與設(shè)計方法采用的是“自頂向下,逐步求自頂向下,逐步求精精”的程序設(shè)計方法;的程序設(shè)計方法;(3 3)在程序流程控制結(jié)構(gòu)上遵循)在程序流程控制結(jié)構(gòu)上遵循“單入口單出口單入口單出口”

20、的的理念;理念;(4 4)任何程序的結(jié)構(gòu)都是由順序、選擇與循環(huán)來完成)任何程序的結(jié)構(gòu)都是由順序、選擇與循環(huán)來完成的,取消的,取消Goto語句的使用語句的使用 。2022-5-323【例例1-1】打印自然數(shù)中前】打印自然數(shù)中前n n個素數(shù)。程序的主文個素數(shù)。程序的主文件是件是PrintPrimPrintPrim. .cppcpp。 分析:分析: 存放存放n n個素數(shù)的個素數(shù)的數(shù)據(jù)結(jié)構(gòu):用數(shù)據(jù)結(jié)構(gòu):用一維數(shù)組一維數(shù)組判斷判斷素數(shù)素數(shù)算法:根據(jù)算法:根據(jù)素數(shù)的定義,素數(shù)的定義,x x是素數(shù),是素數(shù),當且僅當且僅當當x x只能被只能被1 1和自身和自身x x整除整除,因此,要確定,因此,要確定x x是

21、不是素數(shù),是不是素數(shù),只要檢查只要檢查x x能不能被不超過能不能被不超過sqrtsqrt(x)(x)的數(shù)整除即可。的數(shù)整除即可。劃分模塊,逐步求精:打印自然數(shù)中前劃分模塊,逐步求精:打印自然數(shù)中前n n個素數(shù)的任個素數(shù)的任務劃分為:判斷務劃分為:判斷x x是否素數(shù)、找前是否素數(shù)、找前n n個素數(shù)、打印前個素數(shù)、打印前n n個素數(shù)三部分,以函數(shù)抽象之。個素數(shù)三部分,以函數(shù)抽象之。程序?qū)崿F(xiàn)程序?qū)崿F(xiàn)2022-5-324# #include include stdiostdio.h.h#include math.h#include math.h#define #define MaxLenMaxLen

22、10000 10000bool IsPrimbool IsPrim( (intint x) / x) /判斷判斷x x是否素數(shù)是否素數(shù) for(for(intint i=2;i= i=2;i=sqrtsqrt(x);i+)(x);i+)if (x%i=0)if (x%i=0)return false;return false;return true;return true; void void FindPrimsFindPrims( (intint a, a,intint n ) / n ) /找前找前n n個素數(shù)存于數(shù)組個素數(shù)存于數(shù)組a a中中 intint x=1; x=1;a0=2; /

23、a0=2; /第一個素數(shù)是第一個素數(shù)是2 2,不用求,不用求intint i=1;/ i=1;/數(shù)組的下標位置數(shù)組的下標位置while(in)while(in) x=x+2; /x=x+2; /素數(shù)除了素數(shù)除了2 2外,只能是奇數(shù),從外,只能是奇數(shù),從3 3搜尋搜尋if(if(IsPrimIsPrim(x)(x) ai=x; /ai=x; /將素數(shù)將素數(shù)x x放到數(shù)組放到數(shù)組a a的第的第i i個位置處個位置處i+; /i+; /下個位置增下個位置增1 1 2022-5-325void void PrintPrimsPrintPrims( (intint a, a,intint n) n) F

24、indPrimsFindPrims(a,n); /(a,n); /找前找前n n個素數(shù)存于數(shù)組個素數(shù)存于數(shù)組a a中中for(for(intint i=0;in;i+) / i=0;in;i+) /打印數(shù)組打印數(shù)組a a中存放的中存放的n n個素數(shù)個素數(shù)printfprintf(%8d,ai);(%8d,ai); printfprintf(n);(n); void main()void main() intint a aMaxLenMaxLen; /a; /a存放素數(shù)存放素數(shù)intint n; / n; /打印的素數(shù)的個數(shù)打印的素數(shù)的個數(shù)printfprintf(Please Input n

25、Number To A );(Please Input n Number To A );scanfscanf(%d,&n);(%d,&n);PrintPrimsPrintPrims(a,n);/(a,n);/打印打印a a數(shù)組中的前數(shù)組中的前n n個素數(shù)個素數(shù) 2022-5-326 以結(jié)構(gòu)化程序設(shè)計的觀點看,以結(jié)構(gòu)化程序設(shè)計的觀點看,程序主要包括數(shù)據(jù)程序主要包括數(shù)據(jù) 結(jié)構(gòu)與算法,并且兩者是分離的結(jié)構(gòu)與算法,并且兩者是分離的。但將函數(shù)與其操作。但將函數(shù)與其操作的數(shù)據(jù)分裂開來,導致了程序維護的困難。的數(shù)據(jù)分裂開來,導致了程序維護的困難。 面向?qū)ο蟮木幊谭椒嫦驅(qū)ο蟮木幊谭椒ò岩粋€比

26、較復雜的問題分解把一個比較復雜的問題分解成一個個能夠完成獨立功能的對象,把這些對象組成一個個能夠完成獨立功能的對象,把這些對象組合起來去完成一個復雜的功能合起來去完成一個復雜的功能。這就像計算機公司一。這就像計算機公司一樣,用許多計算機的部件(比如機箱、內(nèi)存、硬盤、顯樣,用許多計算機的部件(比如機箱、內(nèi)存、硬盤、顯示器等)去組裝一臺計算機,各個零部件都能完成自己示器等)去組裝一臺計算機,各個零部件都能完成自己的功能,計算機公司員工所做的工作只是的功能,計算機公司員工所做的工作只是依照依照一定的一定的方方式式把它們組合起來。把它們組合起來。2022-5-327 面向?qū)ο蟮某绦蛟O(shè)計方法是將反映事物

27、的屬性與操縱該屬面向?qū)ο蟮某绦蛟O(shè)計方法是將反映事物的屬性與操縱該屬性的方法組裝成一體,形成一個性的方法組裝成一體,形成一個實體對象實體對象。 屬性屬性是指某對象的屬性,是指某對象的屬性,方法方法是指某對象的方法,比如說是指某對象的方法,比如說輪子的個數(shù)是一個屬性,但必須搞清是什么對象的屬性,因為輪子的個數(shù)是一個屬性,但必須搞清是什么對象的屬性,因為汽車和自行車都有輪子;同樣,當我們說加速這個方法時,必汽車和自行車都有輪子;同樣,當我們說加速這個方法時,必須搞清是什么對象的方法,因為汽車和自行車都有加速的方法須搞清是什么對象的方法,因為汽車和自行車都有加速的方法,但其加速的原理是不一樣的,即該方

28、法的實現(xiàn)在不同的對象,但其加速的原理是不一樣的,即該方法的實現(xiàn)在不同的對象中的代碼是不一樣的。中的代碼是不一樣的。 相同類型的對象構(gòu)成一個類,對象是類的一個實例相同類型的對象構(gòu)成一個類,對象是類的一個實例,類是,類是構(gòu)成面向?qū)ο蟪绦蛟O(shè)計的基石。構(gòu)成面向?qū)ο蟪绦蛟O(shè)計的基石。 客觀世界的問題是由實體及其相互間的關(guān)系構(gòu)成的,采用客觀世界的問題是由實體及其相互間的關(guān)系構(gòu)成的,采用面向?qū)ο蟮姆椒ㄊ前堰@些面向?qū)ο蟮姆椒ㄊ前堰@些實體映射為對象實體映射為對象,各對象既是一個獨,各對象既是一個獨立的實體,又可通過消息(即讓對象以某種進行操作的請求)立的實體,又可通過消息(即讓對象以某種進行操作的請求)相互作用。

29、相互作用。 2022-5-328 基于組件的程序設(shè)計可以說是面向?qū)ο蟪绦蛟O(shè)計的基于組件的程序設(shè)計可以說是面向?qū)ο蟪绦蛟O(shè)計的延伸,兩者并不矛盾,可以說延伸,兩者并不矛盾,可以說基于組件程序設(shè)計也采基于組件程序設(shè)計也采用了面向?qū)ο蟮募夹g(shù)用了面向?qū)ο蟮募夹g(shù),只不過在面向?qū)ο蟪绦蛟O(shè)計中只不過在面向?qū)ο蟪绦蛟O(shè)計中,我們往往強調(diào)的是在同一個程序語言的開發(fā)環(huán)境下進,我們往往強調(diào)的是在同一個程序語言的開發(fā)環(huán)境下進行設(shè)計行設(shè)計。面向?qū)ο蟪绦蛟O(shè)計的基石是類與對象面向?qū)ο蟪绦蛟O(shè)計的基石是類與對象,這,這些類可以在一個開發(fā)環(huán)境下重用,例如些類可以在一個開發(fā)環(huán)境下重用,例如VCVC中的中的MFCMFC類庫類庫就只能在就

30、只能在VCVC的環(huán)境下使用,的環(huán)境下使用,C+ BuilderC+ Builder的的VCLVCL庫也主要庫也主要在在BorlandBorland的產(chǎn)品中進行重用;而的產(chǎn)品中進行重用;而在基于組件的程序在基于組件的程序設(shè)計中,程序設(shè)計的基石是組件,它是粒度更大設(shè)計中,程序設(shè)計的基石是組件,它是粒度更大的對象的對象,其作用主要在于跨平臺與開發(fā)語言中使用。,其作用主要在于跨平臺與開發(fā)語言中使用。當前的組件技術(shù)主要有當前的組件技術(shù)主要有CORBACORBA與與COMCOM。在最后一篇中,我在最后一篇中,我們就要利用們就要利用VCVC來開發(fā)一個跨平臺的來開發(fā)一個跨平臺的COMCOM組件組件。 2022

31、-5-329組件:組件:是指系統(tǒng)中明確辨識的構(gòu)成部分,是可以被復用的軟是指系統(tǒng)中明確辨識的構(gòu)成部分,是可以被復用的軟件實體。它由件實體。它由組件規(guī)約組件規(guī)約和和組件實現(xiàn)組件實現(xiàn)兩部分組成,其中組件規(guī)兩部分組成,其中組件規(guī)約主要由組件模型來進行描述。約主要由組件模型來進行描述。 組件模型組件模型: :是指對組件本質(zhì)特征的抽象描述,當前組件的設(shè)是指對組件本質(zhì)特征的抽象描述,當前組件的設(shè)計采用的模型主要有計采用的模型主要有CORBA和和COM,這些組件模型將組件這些組件模型將組件的接口與實現(xiàn)進行了有效地分離,提高了組件交互能力,從的接口與實現(xiàn)進行了有效地分離,提高了組件交互能力,從而增加了復用的機會

32、,并適應了目前網(wǎng)絡環(huán)境下大型分布式而增加了復用的機會,并適應了目前網(wǎng)絡環(huán)境下大型分布式系統(tǒng)的需要。系統(tǒng)的需要。采用組件來設(shè)計程序的好處:采用組件來設(shè)計程序的好處:(1 1)跨平臺、跨語言的支)跨平臺、跨語言的支持。(持。(2 2)位置透明性。()位置透明性。(3 3)可伸縮性。()可伸縮性。(4 4)可復用性。)可復用性。 2022-5-330 基于組件的程序設(shè)計中還有一個很重要的概念基于組件的程序設(shè)計中還有一個很重要的概念架構(gòu)架構(gòu)。 架構(gòu)架構(gòu)是整個或部分系統(tǒng)的可重用設(shè)計是整個或部分系統(tǒng)的可重用設(shè)計, ,表現(xiàn)為一組抽象組件表現(xiàn)為一組抽象組件及組件實例間交互的方法;另一種定義為,架構(gòu)是可被應用開

33、及組件實例間交互的方法;另一種定義為,架構(gòu)是可被應用開發(fā)者定制的應用骨架。前者是從發(fā)者定制的應用骨架。前者是從應用方面應用方面而后者是從而后者是從目的方面目的方面給出的定義。給出的定義。 架構(gòu)的最大好處就是架構(gòu)的最大好處就是復用復用,面向?qū)ο笙到y(tǒng)最大復用方式就,面向?qū)ο笙到y(tǒng)最大復用方式就是程序架構(gòu)的復用。是程序架構(gòu)的復用。 架構(gòu)提供了架構(gòu)提供了可復用的抽象算法可復用的抽象算法及高層設(shè)計,并能將大的系及高層設(shè)計,并能將大的系統(tǒng)分解成更小,而且能夠描述組件間的內(nèi)部接口,這些標準接統(tǒng)分解成更小,而且能夠描述組件間的內(nèi)部接口,這些標準接口使得在已有的組件基礎(chǔ)上通過組裝建立各種各樣的系統(tǒng)成為口使得在已有

34、的組件基礎(chǔ)上通過組裝建立各種各樣的系統(tǒng)成為可能??赡堋?2022-5-331 在面向代理的時代,程序是由多個具有在面向代理的時代,程序是由多個具有獨立功能的獨立功能的AgentAgent組成組成,程序設(shè)計的關(guān)鍵是設(shè)計每一個具有智能行為的,程序設(shè)計的關(guān)鍵是設(shè)計每一個具有智能行為的AgentAgent實體。實體。 Agent Agent是一個被密封了的計算機系統(tǒng),我們可以從以下是一個被密封了的計算機系統(tǒng),我們可以從以下四四個方面加以理解:個方面加以理解:(1 1)一個)一個AgentAgent是一個完整的計算機實是一個完整的計算機實體,它內(nèi)部包含了實現(xiàn)其目標所必需的各種子系統(tǒng)和子系統(tǒng)間體,它內(nèi)部包

35、含了實現(xiàn)其目標所必需的各種子系統(tǒng)和子系統(tǒng)間相互作用的接口;相互作用的接口;(2(2)它能夠感知自己當前所處的環(huán)境和環(huán)境)它能夠感知自己當前所處的環(huán)境和環(huán)境狀態(tài)的變化,并能夠?qū)Νh(huán)境的變化智能地做出自己的行動;狀態(tài)的變化,并能夠?qū)Νh(huán)境的變化智能地做出自己的行動;(3)(3)每個每個AgentAgent都有自己特定的能夠?qū)崿F(xiàn)的目標;(都有自己特定的能夠?qū)崿F(xiàn)的目標;(4 4)每個)每個AgentAgent是一個自治體,它既能控制其內(nèi)部的狀態(tài)又能控制自己是一個自治體,它既能控制其內(nèi)部的狀態(tài)又能控制自己的行為。的行為。 2022-5-332面向面向AgentAgent的程序設(shè)計的的程序設(shè)計的四個步驟四個步

36、驟: (1 1)分解大系統(tǒng)。分解大系統(tǒng)。 (2 2)提?。┨崛gentAgent。 (3 3)建立模型與軟件實現(xiàn)。建立模型與軟件實現(xiàn)。 (4 4)組裝。組裝。 2022-5-3331.3.1 1.3.1 C C、C+C+和和VCVC語言的關(guān)系語言的關(guān)系 1.3.2 1.3.2 VCVC控制臺程序介紹控制臺程序介紹 1.3.3 1.3.3 一個一個VCVC單文件應用程序的實現(xiàn)單文件應用程序的實現(xiàn) 1.3.4 1.3.4 標準設(shè)備的輸入與輸出語句標準設(shè)備的輸入與輸出語句 1.3.5 1.3.5 VCVC控制臺程序基本結(jié)構(gòu)與特點控制臺程序基本結(jié)構(gòu)與特點 1.3.61.3.6* * VC6.0VC6

37、.0集成開發(fā)環(huán)境集成開發(fā)環(huán)境 2022-5-334C C語言是一種典型的語言是一種典型的結(jié)構(gòu)化程序設(shè)計語言結(jié)構(gòu)化程序設(shè)計語言,數(shù)據(jù)和對數(shù)據(jù),數(shù)據(jù)和對數(shù)據(jù)的操作在的操作在C C語言下是分離的,這導致了在大規(guī)模軟件開發(fā)中,語言下是分離的,這導致了在大規(guī)模軟件開發(fā)中,對程序結(jié)構(gòu)的復雜性難以控制,開發(fā)出的代碼復用程度較低。對程序結(jié)構(gòu)的復雜性難以控制,開發(fā)出的代碼復用程度較低。 C+C+語言和語言和C C是兼容的,是兼容的,C C語言是語言是C+C+語言的一個子集語言的一個子集。C C中中的關(guān)鍵字、語法、函數(shù)、表達式等在的關(guān)鍵字、語法、函數(shù)、表達式等在C+C+里都完全適用。里都完全適用。 C+C+是一種

38、程序設(shè)計語言,是一種程序設(shè)計語言,VCVC和和BCBBCB采用的都是基于采用的都是基于C+C+語語言的編程工具言的編程工具。 2022-5-335控制臺程序:控制臺程序:是管理基于字符(文本)界面的輸入與輸出;是管理基于字符(文本)界面的輸入與輸出;在字符界面的應用程序中,沒有提供基于圖形用戶界面接在字符界面的應用程序中,沒有提供基于圖形用戶界面接口的口的WindowsWindows程序的界面函數(shù)庫。程序的界面函數(shù)庫。 輸入緩沖區(qū):輸入緩沖區(qū): 輸入緩沖區(qū)放的是輸入事件(如鍵盤和鼠標)的記錄;輸入緩沖區(qū)放的是輸入事件(如鍵盤和鼠標)的記錄; 屏幕輸出緩沖區(qū)是一個二維數(shù)組,存放輸出到控制臺窗口屏

39、幕輸出緩沖區(qū)是一個二維數(shù)組,存放輸出到控制臺窗口的字符信息和顏色信息。的字符信息和顏色信息。 2022-5-336【例【例1-21-2】實現(xiàn)簡單文本輸出的單文件控制臺程序?qū)嵗?。該程】實現(xiàn)簡單文本輸出的單文件控制臺程序?qū)嵗?。該程序的主文件是序的主文件是SingleFileSingleFile. .cppcpp。1 1編輯編輯 單擊單擊Visual StudioVisual Studio主菜單欄中的主菜單欄中的FileFile菜單項下的菜單項下的NewNew,則彈出一個新建程序?qū)υ捒?,在該對話框中有四個選項卡,則彈出一個新建程序?qū)υ捒颍谠搶υ捒蛑杏兴膫€選項卡,選擇選擇FilesFiles選項卡,

40、彈出的對話框中列出了選項卡,彈出的對話框中列出了1313個選項。選中個選項。選中C+ Source FileC+ Source File列表項列表項,并在右邊的,并在右邊的FileFile編輯框中輸入新建編輯框中輸入新建的單文件的單文件C+C+文件名稱文件名稱SingleFileSingleFile,同時在同時在LocationLocation編輯框編輯框中指定一個存放文件的目錄中指定一個存放文件的目錄 。2022-5-337程序源代碼:程序源代碼: # #include include .hvoid main()void main() coutcout“這是一個簡單的單文件這是一個簡單的單文

41、件VisuallVisuall C+ C+程程 序序!n;n;coutcout“歡迎進入歡迎進入VCVC程序開發(fā)的世界程序開發(fā)的世界! !您的基礎(chǔ)知識您的基礎(chǔ)知識準準 備好了嗎備好了嗎?變量變量11變量變量22變量變量3 3變量變量n;n; 其中其中cincin是預定義的輸入流對象,代表鍵盤。是預定義的輸入流對象,代表鍵盤。為輸入流對為輸入流對象的提取操作符,它作用于象的提取操作符,它作用于cincin上可以實現(xiàn)從標準輸入設(shè)備上可以實現(xiàn)從標準輸入設(shè)備鍵盤上輸入數(shù)據(jù)。鍵盤上輸入數(shù)據(jù)。輸入流輸入流cincin通過通過從鍵盤上提取用戶的輸入,從鍵盤上提取用戶的輸入,然后將這些值送到其后的變量中。然后

42、將這些值送到其后的變量中。2022-5-343例如例如: intint x,y; x,y;cincinxy;xy; 當程序執(zhí)行時,用戶從鍵盤上輸入當程序執(zhí)行時,用戶從鍵盤上輸入1616和和2828(用空格或回車分(用空格或回車分隔)時,隔)時,cincin的提取操作的提取操作就把從鍵盤上所獲取的字符串就把從鍵盤上所獲取的字符串“16”“16”和和“28”“28”,轉(zhuǎn)化成整型數(shù)據(jù)存入變量,轉(zhuǎn)化成整型數(shù)據(jù)存入變量x x與與y y中。中。 2 2屏幕輸出屏幕輸出 屏幕輸出作用是從內(nèi)存中讀取數(shù)據(jù)項,對相應的表達式求屏幕輸出作用是從內(nèi)存中讀取數(shù)據(jù)項,對相應的表達式求值后,轉(zhuǎn)換為相應的字符串顯示到屏幕上,

43、其格式為:值后,轉(zhuǎn)換為相應的字符串顯示到屏幕上,其格式為: coutcout表達式表達式11表達式表達式22表達式表達式3 3表達式表達式n;n;2022-5-344 其中其中coutcout是預定義的輸出流對象,代表顯示器。是預定義的輸出流對象,代表顯示器。為輸為輸出流對象的插入操作符出流對象的插入操作符,它作用于,它作用于coutcout上可以將數(shù)據(jù)輸出到上可以將數(shù)據(jù)輸出到標準輸出設(shè)備標準輸出設(shè)備顯示器上。各個表達式是輸出項,顯示器上。各個表達式是輸出項,coutcout的的插入操作符首先對各輸出項的表達式求值,然后轉(zhuǎn)換成字符插入操作符首先對各輸出項的表達式求值,然后轉(zhuǎn)換成字符串形式輸出。

44、例如串形式輸出。例如: intint x=66,y=88; x=66,y=88; coutcoutxx“nn”y+1y+1endlendl; ; 當程序執(zhí)行時,程序計算出當程序執(zhí)行時,程序計算出x x的值是的值是6666,把它轉(zhuǎn)換成字符,把它轉(zhuǎn)換成字符串輸出到屏幕上,緊接著輸出字符串輸出到屏幕上,緊接著輸出字符“n”n”(換行字符)、表換行字符)、表達式達式y(tǒng)+1y+1的值的值8989。endlendl的作用與的作用與“n”n”一樣,都是換行符。一樣,都是換行符。 2022-5-3453 3輸出格式控制符輸出格式控制符 C+C+中的輸出中,可以包含各種各樣的格式控制符號中的輸出中,可以包含各種

45、各樣的格式控制符號,例如上面所見到的,例如上面所見到的換行符換行符endlendl與與“n”n”,還有制表符還有制表符“t”t”等。表等。表1.11.1列出了常用的格式控制符及其功能。在使列出了常用的格式控制符及其功能。在使用它們時,要在程序的用它們時,要在程序的開頭添加開頭添加# #include include .h。格式控制符功能endl輸出一個新行,并清空輸出緩沖區(qū)setfill(char c)設(shè)置填充字符cdec/oct/hex用十進制/八進制/十六進制表示輸入或輸出數(shù)值setw設(shè)置輸出寬度setprecision(int n)設(shè)置浮點數(shù)輸出精度(包括小數(shù))表1.1 常用輸出格式控制

46、符2022-5-346 VC語言設(shè)計的控制臺程序和語言設(shè)計的控制臺程序和C語言編寫語言編寫DOS下的程序很下的程序很相似,不同之處在于,相似,不同之處在于,VCVC語言設(shè)計的控制臺程序中出現(xiàn)了類和語言設(shè)計的控制臺程序中出現(xiàn)了類和對象對象,以及由類和對象帶來的語法、語義和語用。,以及由類和對象帶來的語法、語義和語用。VC控制臺控制臺程序是由一個或多個文件組成,程序是由一個或多個文件組成,每個文件由用戶自定義或每個文件由用戶自定義或VCVC系系統(tǒng)自帶的類、函數(shù)、變量組成統(tǒng)自帶的類、函數(shù)、變量組成。類由成員變量和成員函數(shù)組成。類由成員變量和成員函數(shù)組成,函數(shù)由若干個語句組成,語句是單詞的集合,單詞是

47、字符的,函數(shù)由若干個語句組成,語句是單詞的集合,單詞是字符的集合。集合。 2022-5-3471 1main()main()函數(shù)函數(shù) VC VC控制臺程序的執(zhí)行控制臺程序的執(zhí)行開始點是開始點是main()main()函數(shù)函數(shù),和,和C C語語言不同的是,言不同的是,VCVC下必須指定該函數(shù)的返回值(前面例子下必須指定該函數(shù)的返回值(前面例子的返回值為的返回值為voidvoid)。)。VCVC開發(fā)的帶有圖形用戶界面(第二開發(fā)的帶有圖形用戶界面(第二篇所講的)的篇所講的)的WindowsWindows程序的程序的開始點是開始點是WinMainWinMain()()。2 2程序注釋程序注釋 VC V

48、C下,程序有兩種注釋的方法:下,程序有兩種注釋的方法:一是單行注釋符一是單行注釋符/,它是將它是將/后面的一行語句作為程序的注釋;后面的一行語句作為程序的注釋;二是多行注二是多行注釋符號釋符號/ /* *和和* */ /,它們必須成對出現(xiàn),它們必須成對出現(xiàn),/ /* *標識注釋的開始,標識注釋的開始,* */ /標識注釋的結(jié)束。用戶可以根據(jù)需要注釋單行或多行標識注釋的結(jié)束。用戶可以根據(jù)需要注釋單行或多行開靈活選擇相應的注釋語句。開靈活選擇相應的注釋語句。 2022-5-3483 3編譯預處理編譯預處理 預處理中的每個命令也是一種操作,預處理中的每個命令也是一種操作,該操作指明程該操作指明程序在編譯前所做的一些工作序在編譯前所做的一些工作。我們最常見的是。我們最常見的是文件包含文件包含命令命令# #includeinclude,它將其后所跟的頭文件嵌入到當前的語它將其后所跟的頭文件嵌入到當前的語句處。句處。 為了解決在程序的許多文件中都出現(xiàn)大量為了解決在程序的許多文件中都出現(xiàn)大量# #includeinclude命令,命令,VCVC下提供了一個標準的處理方法,下提供了一個標準的處理方法,將在各個文件將在各個文件都要包含的頭文件放到一個都要包含的頭文件放到一個stdafxstdafx.h.h的頭文件中,然后的頭文件中,然后在需要引用這

溫馨提示

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

評論

0/150

提交評論