《visual_c--.net程序設(shè)計教程與上機(jī)指導(dǎo)》課件_第1頁
已閱讀1頁,還剩340頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、《Visual_C++.NET程序設(shè)計教程與上機(jī)指導(dǎo)》課件,第1章 概 述,教學(xué)提示:微軟推出 .NET是為了適應(yīng)Internet的發(fā)展而作出的應(yīng)對決策,其中Visual C++ .NET是微軟的Visual C++系列軟件的升級版本,用它來開發(fā)本機(jī)應(yīng)用程序或Internet Web程序都有顯著的增強(qiáng)。本章主要介紹Visual C++ .NET的開發(fā)界面及可以開發(fā)的常用程序類型。,教學(xué)目標(biāo):初步介紹Visual C++ .NET

2、開發(fā)界面,使初學(xué)者對Visual C++ .NET的開發(fā)環(huán)境有一個整體的認(rèn)識。本書用的軟件版本為Visual Studio .NET 2003中文版,如果機(jī)器上裝的不是這個版本,可能界面上有些差異,但是這些差異非常小,只要稍微注意一下,基本上不會妨礙學(xué)習(xí)。如果還是不太放心的話,請按第1章的步驟安裝此版本軟件,這樣就可以省去一些麻煩。,1.1 Visual C++ .NET簡介,微軟于2000年6月22日向全球發(fā)布了 .NET,引起全球

3、的轟動, .NET使程序員的編程方式產(chǎn)生了很大的變化。 .NET平臺在以Internet為基礎(chǔ)的計算和通信激增的背景下,通過先進(jìn)的軟件技術(shù),利用網(wǎng)絡(luò)協(xié)議和格式協(xié)調(diào)眾多的智能設(shè)備與網(wǎng)站,從而提供更簡單、更為個性化且更有效的Internet服務(wù)。 微軟為了配合其 .NET戰(zhàn)略,發(fā)布了Visual Studio .NET。 Visual Studio .NET主要包括三套產(chǎn)品:Visual C# .N

4、ET、Viusal Basic .NET和Visual C++ .NET。,1.2 安裝Visual C++ .NET,Visual C++ .NET是Visual Studio .NET的一部分,表 1.1 以安裝Visual Studio .NET 2003 為例,列出了安裝系統(tǒng)需求。 滿足上述要求的計算機(jī)可以進(jìn)行安裝了 。 Visual Studio . NET 2003共有6張安裝光盤,包括2張Visual

5、 Studio .NET安裝光盤,1張系統(tǒng)必備盤,3張MSDN安裝盤。將Visual Studio .NET的第一張安裝光盤放入光驅(qū),即出現(xiàn)如圖1.1所示的畫面。 然后,讀者可以按照安裝程序的步驟,首先安裝系統(tǒng)必備,系統(tǒng)必備包括一些開發(fā) .NET程序必需的Internet組件和 .NET 應(yīng)用程序框架。安裝完系統(tǒng)必備后,按照提示一步步安裝Visual Studio .NET,由于過程比較簡單,在此就不贅述了 。前兩步

6、安裝完成后 ,最好安裝MSDN產(chǎn)品文檔,因為MSDN中包含多達(dá)1.9GB的文檔和例子,而且可以很方便地查詢。,表1.1 安裝Visual Studio .NET 2003的系統(tǒng)要求,返回,,圖1.1 Visual Studio .NET安裝程序,返回,1.3 Visual C++ .NET開發(fā)界面簡介,單擊Windows的【開始】|【程序】| Microsoft Visual Studio .NET 2003命令,Microsof

7、t Visual Studio .NET 2003 即可以啟動 。其啟動的初始界面如圖1.2所示。,,圖1.2 Visual Studio .NET的起始頁,下面來新建一個Visual C++ .NET項目,以便于更詳細(xì)地了解Visual C++ .NET程序開發(fā)環(huán)境。按照以下步驟,一步步進(jìn)行: 首先單擊如圖1.2中的選項【項目】,再單擊【新建項目】按鈕,出現(xiàn)【新建項目】對話框,選擇左邊【項目類型】|【Visual C

8、++項目】| MFC選項,在右邊的【模板】框中單擊【MFC應(yīng)用程序】,再在【名稱】文本框中輸入項目名稱Jiao1_1,如圖1.3所示。,,圖1.3 【新建項目】對話框,返回,單擊【確定】按鈕,即可進(jìn)入如圖1.4所示的【MFC應(yīng)用程序向?qū)А繉υ捒?。在這里共有7個步驟供選擇,由于后面會詳細(xì)講解向?qū)У膭?chuàng)建步驟,所以現(xiàn)在都用默認(rèn)值,直接單擊【完成】按鈕即可創(chuàng)建一個多文檔應(yīng)用程序項目。,,圖1.4 【MFC應(yīng)用程序向?qū)А繉υ捒?返回,可以在【解決

9、方案資源管理器】視圖中點開所生成的項目,即可看到本項目所包含的文件(如果找不到,可以單擊菜單【視圖】|【解決方案資源管理器】即可出現(xiàn))??梢噪p擊文件Jiao1_1.cpp,在中央的編輯器界面中進(jìn)行代碼的編寫。其界面如圖1.5所示。,,圖1.5 Visual C++ .NET的界面,返回,Visual C++ .NET 的集成界面包括菜單欄、工具欄、解決方案資源管理器、類視圖、資源視圖、動態(tài)幫助、屬性窗口、輸出窗口,下面將進(jìn)行詳細(xì)介紹

10、。 1.3.1 菜單欄 1.3.2 工具欄 1.3.3 解決方案資源管理器 1.3.4 類視圖 1.3.5 資源視圖 1.3.6 動態(tài)幫助 1.3.7 屬性窗口 1.3.8 任務(wù)列表及輸出等窗口,1.3.1 菜單欄,Visual C++ .NET的主菜單欄包括9個菜單項,這些菜

11、單項可以完成幾乎所有的任務(wù),因此了解并掌握這些菜單命令是必要的。請注意,Visual C++ .NET的菜單會根據(jù)當(dāng)前打開不同的對象而有一些變化,所以本節(jié)只講常見的菜單項命令。,返回,1.3.2 工具欄,由于工具欄上面的按鈕命令都可以在相應(yīng)的菜單中找到 ,所以不詳細(xì)講解了??梢钥纯磮D標(biāo)就知道它是干什么的,還可以把鼠標(biāo)移動到按鈕上面停一下,就有相應(yīng)的提示對話框解釋按鈕的功能,使用很方便。而且還可以自己打開或定制工具欄。在工具欄上面右擊,

12、在出現(xiàn)的彈出式菜單中單擊相應(yīng)的命令即可以顯示或隱藏相應(yīng)的工具欄 。圖1.15是標(biāo)準(zhǔn)工具欄的樣式 。從左到右的命令依次為:新建項目、添加項目、打開文件、保存、全部保存、剪切、復(fù)制、粘貼、撤消、重復(fù)、向后定位、向前定位、啟動、解決方案配置、在文件中查找、查找、解決方案資源管理器、屬性窗口、對象瀏覽器、工具箱以及類視圖。,返回,,,圖1.15 標(biāo)準(zhǔn)工具欄,返回,1.3.3 解決方案資源管理器,如圖1.16 ,【解決方案資源管理器】窗口以圖

13、形方式顯示了組成項目的所有文件,Visual C++ .NET中屬于同一應(yīng)用程序的所有項目稱作解決方案。以前版本(如Visual C++ 6.0) 中同一應(yīng)用程序中的所有項目組成的一個整體叫作工程,它們的意思差不多,只是換了一個名字?!窘鉀Q方案資源管理器】窗口中顯示了每個解決方案中文件的樹狀查看列表,包括各個項目的引用、源文件、頭文件、資源文件、配置文件和幫助文件。雙擊相應(yīng)的選項,Visual C++ .NET自動用合適的編輯器打開它,

14、可以進(jìn)行任意的修改。如果要給解決方案添加一些項目,可在解決方案上面右擊,選擇彈出式菜單中相應(yīng)的選項可以添加所要的項目。如果該窗口已經(jīng)被關(guān)閉,則可以菜單命令【視圖】|【解決方案資源管理器】來打開。,返回,,,圖1.16 【解決方案資源管理器】窗口,返回,1.3.4 類視圖,Visual C++ .NET中的項目都是由類來組織的。見圖1.17【類視圖】窗口,解決方案Jiao1_1下面由【宏和常數(shù)】、【全局函數(shù)和變量】、CAboutDlg類

15、、CchildFrame(子框架窗口類)、CJiao1_1App(應(yīng)用程序類)、CJiao1_1DoC(文檔類)、CJiao1_1View(視圖類)、CmainFrame(框架窗口類)等組成(如果你看不懂,不要緊,這里只是稍微提一下,以后有詳細(xì)的說明)。,返回,,,圖1.17 【類視圖】窗口,返回,1.3.5 資源視圖,【資源視圖】窗口是程序員在Visual C++ .NET中管理資源的地方,它以樹形視圖的結(jié)構(gòu)把解決方案中的所有資源都

16、一項一項地列出來了,給人以非常直觀和清晰的感覺。,返回,1.3.6 動態(tài)幫助,圖1.19所示為【動態(tài)幫助】窗口,它提供了非常強(qiáng)大的智能幫助功能來幫助開發(fā)應(yīng)用程序,如果在編輯框中選中不清楚的類或者類的屬性或方法時,幫助視圖中就提供選擇項的幫助提示功能,可以單擊相應(yīng)的提示項來詳細(xì)地了解該項的說明,使用非常貼心,是程序員編程的好幫手。還可以單擊示例和開始項下面的相應(yīng)項來學(xué)習(xí)有關(guān)知識。如果在Visual C++ .NET編程遇到困難時,第一個

17、想到的幫助者就是Visual C++ .NET提供的動態(tài)幫助功能,也可以打開MSDN 2003來提供幫助。,返回,,圖1.19 【動態(tài)幫助】窗口,返回,1.3.7 屬性窗口,可以這么說,一個人開發(fā)Visual C++ .NET的速度和熟練程度,和他對【屬性】窗口的熟練使用程度是息息相關(guān)的。讀者可能用過Visual C++以前的版本,如Visual C++ 6.0中提供的ClassWizard對話框,對類的管理是非常方便的(包括資源控件

18、和類成員的對應(yīng)連接,數(shù)據(jù)傳遞路徑,消息處理等),可能對Visual C++ .NET中取消了ClassWizard功能感到非常失望,但是這只是個習(xí)慣問題,如果對【屬性】窗口熟悉以后,一定會為它提供的功能折服。眾所周知,Visual C++ .NET里面所有的項目都是有屬性的,通過使用【屬性】窗口可以非常方便地修改屬性。,返回,1.3.8 任務(wù)列表及輸出等窗口,圖1.21所示為任務(wù)列表及輸出等窗口。其中任務(wù)列表窗口可以瀏覽用戶任務(wù)、生成

19、錯誤??梢栽诖舜翱谥袉螕簟締螕舸颂幪砑有氯蝿?wù)】來添加新任務(wù),也可以在項目代碼中以特定的格式添加注釋。如果此窗口不可見,可單擊菜單【視圖】|【其他窗口】|【任務(wù)列表】來顯示。,圖1.21 任務(wù)列表及輸出等窗口,返回,1.4 利用Visual C++ .NET向?qū)蓱?yīng)用程序,Visual C++ .NET為用戶提供了功能強(qiáng)大的應(yīng)用程序生成向?qū)?,用戶可以不編寫一行代碼就能生成一個典型的Windows應(yīng)用程序框架。在1.3節(jié)涉及到了利用M

20、FC應(yīng)用程序向?qū)沙绦騄iao1_1,下面重點講解利用向?qū)蓱?yīng)用程序的具體過程,并生成一個可以編輯文字的MFC多文檔應(yīng)用程序Jiao1_2。 1.4.1 選擇新建項目類型 1.4.2 利用向?qū)Ы?yīng)用程序 1.4.3 生成應(yīng)用程序,,1.4.1 選擇新建項目類型,在起始頁上單擊【新建項目】按鈕,或者在菜單欄上選擇【文件】|【新建】|【項目】,就會彈出如圖1.3所示的【新建

21、項目】對話框,用戶可以對所要的項目類型進(jìn)行選擇??梢钥吹?,Visual C++ .NET開發(fā)的程序類型幾乎覆蓋了所有的開發(fā)類型,如Windows應(yīng)用程序、自定義類庫、控件庫、ASP.NET Web應(yīng)用程序、ASP.NET Web Service、Web控件庫、ATL Server Web 服務(wù)、控制臺應(yīng)用程序、Windows服務(wù)、空項目以及空Web項目等等。本書重點講解MFC應(yīng)用程序的開發(fā)。,返回,1. 應(yīng)用程序類型,在【MFC應(yīng)用程

22、序向?qū)А繉υ捒蛑?,選擇左邊的【應(yīng)用程序類型】,在右邊的【應(yīng)用程序類型】選項組中選擇【多文檔】單選按鈕,其他選項用默認(rèn)值,如圖1.22所示。可以看到,利用MFC可以創(chuàng)建基于對話框的應(yīng)用程序、單文檔應(yīng)用程序、多文檔應(yīng)用程序和多頂級文檔應(yīng)用程序。,,圖1.22 選擇應(yīng)用程序類型,返回,2. 復(fù)合文檔支持,【復(fù)合文檔支持】是一個程序中能夠嵌入另一個應(yīng)用程序的功能,容器就是只能維護(hù)嵌入的對象;袖珍服務(wù)器指應(yīng)用程序不能獨立運行,而是被調(diào)用使之為

23、其他程序服務(wù);完全服務(wù)器指能夠獨立運行,并能為其他應(yīng)用程序提供服務(wù);容器/完全服務(wù)器指應(yīng)用程序既可以作容器,也可以作完全服務(wù)器對象。保持默認(rèn)值不變,即不選擇任何復(fù)合文檔支持具體見圖1.23。,,圖1.23 設(shè)置復(fù)合文檔支持,返回,3. 文檔模板字符串,選左邊的【文檔模板字符串】,右邊的選項都用默認(rèn)值。文件擴(kuò)展名指文件的后綴名,具體見圖1.24。,,圖1.24 設(shè)置文檔模板字符串,返回,4. 數(shù)據(jù)庫支持,在左邊選擇【數(shù)據(jù)庫支持

24、】,將出現(xiàn)如圖1.25所示的界面。如果不編寫數(shù)據(jù)庫應(yīng)用程序,選擇【無】;如果想要訪問數(shù)據(jù)庫 ,但不想應(yīng)用程序從類CFormView派生視圖 ,或者其界面不含有記錄菜單,則選擇【僅支持頭文件】;如果想要應(yīng)用程序從類CFormView派生視圖,并且其界面含有記錄菜單,但不需要保存文檔,則選擇【不支持文件的數(shù)據(jù)庫視圖】;如果還需要文檔保存功能,則選擇【支持文件的數(shù)據(jù)庫視圖】。當(dāng)選擇第3、4項時,你還要選擇客戶端的數(shù)據(jù)庫類型:OLE DB或者O

25、DBC,并可以指定數(shù)據(jù)源及其他操作。,,圖1.25 設(shè)置數(shù)據(jù)庫支持,返回,5. 用戶界面功能,選擇左邊的【用戶界面功能】,右邊的【主框架樣式】和【工具欄】都用默認(rèn)值,具體見圖1.26。,,圖1.26 設(shè)置用戶界面功能,返回,6. 高級功能,選擇左邊的【高級功能】,將出現(xiàn)如圖1.27所示的界面,保持默認(rèn)設(shè)置?!緟^(qū)分上下文的幫助】可以選擇WinHelp格式或HTML幫助格式,WinHelp格式是傳統(tǒng)的Windows幫助格式、幫助源文

26、件為.RTF文件;而HTML幫助格式是Windows最新幫助格式,幫助源文件為.HTML文件。【最近文件列表上的文件數(shù)】為4。如圖1.27所示。,,圖1.27 設(shè)定高級功能,返回,7. 生成的類,選擇左邊【生成的類】,將出現(xiàn)如圖1.28所示的界面。其中【基類】下拉列表框中有許多基類可供選擇,注意在【基類】中選擇CEditView。 單擊【完成】按鈕,Visual C++ .NET就自動生成一個多文檔應(yīng)用程序。,,圖1

27、.28 選擇生成的類,返回,1.4.3 生成應(yīng)用程序,選擇菜單欄上的【生成】|【生成解決方案】,然后選擇【調(diào)試】|【開始執(zhí)行(不調(diào)試)】,或者直接按Ctrl + F5鍵編譯運行,運行界面如圖1.29所示。程序中可以對文字進(jìn)行簡單的編輯。如果文檔有了更改,系統(tǒng)還會提示用戶是否保存文檔???,一個簡單的文檔編輯器誕生了,不需要用戶寫一行代碼。,返回,,圖1.29 Jiao1_2程序運行界面,返回,1.5 理解Visual C++ .N

28、ET工程,Visual C++ .NET作為一種程序設(shè)計語言,同時也是一個集成開發(fā)工具,提供了軟件代碼自動生成和可視化的資源編輯功能。在使用Visual C++ .NET開發(fā)應(yīng)用程序的過程中,系統(tǒng)生成了大量的各種類型的文件,在本節(jié)中將要詳細(xì)介紹Visual C++ .NET中這些不同類型的文件分別起什么樣的作用 , 在此基礎(chǔ)上對 Visual C++ .NET如何管理應(yīng)用程序所用到的各種文件有一個全面的認(rèn)識。,1.6 上 機(jī) 指 導(dǎo),

29、程序員最重要的是動手能力,如果只會構(gòu)思,但是不能把思想變成一個實實在在的程序,那么也是很遺憾的。勤于練習(xí)才能真正掌握編程的方法。在1.3小節(jié)我們已經(jīng)練習(xí)了利用 MFC 應(yīng)用程序向?qū)?MFC 應(yīng)用程序 。下面來練習(xí)一下利用向?qū)煽刂婆_程序的方法。Visual C++ .NET可以開發(fā)基于 .NET的控制臺程序和基于Win32的控制臺程序。 .NET的控制臺應(yīng)用程序是基于通用語言運行時環(huán)境的,而Win32控制臺程序是基于本機(jī)運行環(huán)境

30、的,直接生成本機(jī)機(jī)器碼。 1.6.1 .NET的控制臺程序開發(fā)步驟 1.6.2 Win32的控制臺程序開發(fā)步驟,第2章 Visual C++ .NET的基本語法,教學(xué)提示:在本章,主要是對Visual C++ .NET 的基本語法要素進(jìn)行介紹,包括標(biāo)識符和關(guān)鍵字、基本數(shù)據(jù)類型、變量和常量、命名空間、預(yù)編譯指令、運算符和表達(dá)式。但僅僅掌握這些還是不夠的。本章還進(jìn)一步介紹了控制語句、結(jié)構(gòu)體、聯(lián)合體、枚舉

31、、指針和數(shù)組的詳細(xì)使用方法。學(xué)習(xí)完這些內(nèi)容后,讀者對其語言將會有一個比較全面的了解。,教學(xué)目標(biāo):掌握Visual C++ .NET語言的基本數(shù)據(jù)類型,熟悉常用的標(biāo)識符、運算符、關(guān)鍵字;掌握常量和變量的定義方法;掌握數(shù)據(jù)類型的轉(zhuǎn)換方法;理解預(yù)編譯指令、命名空間;掌握各種控制語句的使用方法;掌握結(jié)構(gòu)體、聯(lián)合體和枚舉的定義及其使用方法;掌握指針和數(shù)組的使用方法,熟練掌握函數(shù)的使用方法。通過上機(jī)實踐,初步掌握上述內(nèi)容的靈活運用。,2.1 標(biāo)識

32、符和關(guān)鍵字,任何一門語言都有它自己的標(biāo)識符和關(guān)鍵字,C++也不例外。標(biāo)識符(identifier)是指常量、變量、語句標(biāo)號、自定義函數(shù)、對象等能被編譯器識別而提供的惟一名稱,所有標(biāo)識符的首字符必須以字母(a~z,A~Z)或下劃線(_)開始,后面的字符可以是字母、下劃線或數(shù)字(0~9)。C++語言區(qū)分大小寫,因此,大寫的英文字母與其對應(yīng)的小寫英文字母是表示不同的標(biāo)識符的,如localString和localstring代表兩個不同的標(biāo)識

33、符。 關(guān)鍵字是C++語言保留的標(biāo)識符,每個關(guān)鍵字都有特殊的意義,不能當(dāng)作其他用途使用。,2.2 基本數(shù)據(jù)類型,C++語言使用確定的數(shù)據(jù)類型來組織各種數(shù)據(jù),并根據(jù)各種數(shù)據(jù)類型來存儲和操作這些數(shù)據(jù)?;镜臄?shù)據(jù)類型是C++預(yù)定義的類型,編程人員可以直接利用這些類型來定義數(shù)據(jù)。下面來看看C++中的基本數(shù)據(jù)類型:Bool(邏輯型)、char(字符型)、short(短整型)、int(整型)、long(長整型)、float(浮型)、

34、double(雙精度型)、long double(長雙精度型)。bool類型用true和false代表真與假,其占用空間是8位。char是字符型類型,它在計算機(jī)里面是以ASCII表示的,占8位。short、int和long都是整型,只是數(shù)據(jù)的位數(shù)不一樣:short占8位;int在DOS環(huán)境下占16位,在Windows下面占32位;long占32位。還可以在這三個類型前面加unsigned,表示無符號整數(shù)(即只表示正數(shù))。Floa

35、t、double、long double都是浮點型類型,只是位數(shù)不一樣,float占32位,double占64位,long double占80位。,2.3 常量和變量,常量是指C++語言中表示固定數(shù)值或字符值的標(biāo)識符,并且在程序的執(zhí)行過程中不允許修改。通過使用關(guān)鍵字const,可以將一個變量(下面會講變量)定義為一個常量,并且const可以位于數(shù)據(jù)類型前或者數(shù)據(jù)類型后面。其定義的一般格式為:type const 變量名=值或者c

36、onst type 變量名=值 在定義變量時,應(yīng)給出該變量的數(shù)據(jù)類型和名字,還可以給這個變量賦一個初始值,也可以在以后再賦值,系統(tǒng)在編譯時就會分配給該變量一個合適的內(nèi)存空間。 變量的一般定義為: 數(shù)據(jù)類型 變量名=值(可選),2.4 命 名 空 間,命名空間是為了處理不同公司或個人使用相同的標(biāo)識符這種情況而使用的一個概念。假設(shè)AAA公司使用了自己的一套標(biāo)志符,BBB公司也使用自己

37、的一套標(biāo)識符,現(xiàn)在如果要使用這兩家公司的某些標(biāo)識符,且兩個公司都提供了變量標(biāo)識符INTEGER,那么在程序中使用INTEGER到底是使用AAA公司的,還是BBB公司的呢?這是個棘手的問題,Visual C++ .NET編譯器也會報錯。,2.5 運算符、表達(dá)式和語句,在C++語言中,運算符是指對操作數(shù)進(jìn)行操作的符號,按照運算功能,C++運算符可分為算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符和賦值運算符等,按優(yōu)先級順序,C++運算符如表

38、2.3所示。,2.6 預(yù)編譯指令,預(yù)編譯指令指在程序正式編譯前就由編譯器進(jìn)行編譯的操作,可以放在程序中的任何位置。常見的預(yù)編譯指令有: #include "頭文件"或#include : 該指令指示編譯器將頭文件的全部內(nèi)容插入此處。若用括起頭文件則在系統(tǒng)的INCLUDE目錄中尋找文件,若用“”括起文件則在當(dāng)前目錄中尋找文件。一般來說,頭文件后綴名都為.h,其中主要內(nèi)容為各種變量的聲明

39、。,2.7 數(shù)據(jù)類型轉(zhuǎn)換,在進(jìn)行程序的開發(fā)過程中,數(shù)據(jù)類型的轉(zhuǎn)換是會經(jīng)常碰到的。在一個表達(dá)式當(dāng)中,所有的變量必須是相同類型才能進(jìn)行運算,但是在一般的表達(dá)式中很難有相同類型的變量來進(jìn)行運算。因此,不同類別的變量進(jìn)行運算時,C++會先將較低類型的操作數(shù)轉(zhuǎn)換為較高類型的操作數(shù)再進(jìn)行運算。在計算機(jī)中,數(shù)據(jù)都是用二進(jìn)制位來存放的,較低類型是指存儲位數(shù)較少的類型,較高類型則是指存儲位數(shù)較多的類型。如定義變量int a和long b,則進(jìn)行a+b的

40、運算時,要先將a轉(zhuǎn)換為long型,再與b相加。 數(shù)據(jù)類型的高低順序依序為:long double、double、float、long、int、short、char。,2.8 數(shù)據(jù)的基本輸入與輸出,數(shù)據(jù)的基本輸入與輸出是程序與用戶進(jìn)行交互的重要手段,可以設(shè)想一下,如果一個程序既不能輸入也不能輸出,那么這會是個什么程序?用戶什么數(shù)據(jù)都輸不進(jìn)去,也看不到程序的運行結(jié)果。所以處理好程序的輸入輸出是很重要的。C++中提供了兩

41、個基本的輸入和輸出的函數(shù):cout(輸出)及cin(輸入)。,2.9 控 制 語 句,程序控制語句控制程序的執(zhí)行過程和方向,因此是非常重要的。靈活運用各種控制語句可以輕松地完成你想要做的事情。C++中的控制語句包括條件語句、循環(huán)語句、判斷和跳轉(zhuǎn)語句,下面具體介紹它們的用法。 2.9.1 條件(選擇)語句 2.9.2 循環(huán)語句 2.9.3 判斷和跳轉(zhuǎn)語句(轉(zhuǎn)移語句),2.9.1 條件(選擇)語句,C++語

42、言支持幾種基本的條件語句:if語句、if…else語句、?:語句、switch語句。 1. if語句 2. if…else語句 3. ?:條件語句 4. switch語句,返回,1. if語句,if語句用于在程序中有條件地執(zhí)行某一語句序列,語法形式如下:if(表達(dá)式)執(zhí)行語句;//滿足表達(dá)式時執(zhí)行的語句 其中表達(dá)式是一個關(guān)系或邏輯表達(dá)式,執(zhí)行語句

43、是指當(dāng)表達(dá)式為真時執(zhí)行,為假時跳過執(zhí)行。如果執(zhí)行語句包含多個語句,則必須用{}包圍起來作為一個整體來執(zhí)行。例如:如果變量a大于變量b,則把a(bǔ)與b之和賦給變量c,其語句如下:if(a>b)c=a+b;,返回,2. if…else語句,它的一般格式是:if(表達(dá)式)執(zhí)行語句1;//如果表達(dá)式為真,則執(zhí)行語句1else執(zhí)行語句2;//如果表達(dá)式為假,則執(zhí)行語句2if…else語句的變體結(jié)構(gòu)(可以判斷兩種以上的情況):i

44、f(表達(dá)式1)執(zhí)行語句1;//如果表達(dá)式1為真,則執(zhí)行語句1else if(表達(dá)式2)執(zhí)行語句2;//如果表達(dá)式2為真,則執(zhí)行語句2…..…..//如果表達(dá)式i為真,則執(zhí)行語句i…...else執(zhí)行語句n;//其他情況,則執(zhí)行語句n,返回,3. ?:條件語句,?:條件語句是if…else條件語句的簡化形式,其格式如下:(a>b)?c:d;//如果表達(dá)式a>b為真,則其結(jié)果為c,否則為d,返回,4. sw

45、itch語句,switch語句與if…else的變體結(jié)構(gòu)類似,都是從多種供選擇的情況中選擇一種執(zhí)行,其語法形式為:switch(表達(dá)式){case:值1:語句段1;//如果表達(dá)式與值1相等,則執(zhí)行語句段1break;case:值2:語句段2;//如果表達(dá)式與值2相等,則執(zhí)行語句段2break;……;//如果表達(dá)式與值i相等,則執(zhí)行語句段idefault://default語句段可以不要語句段n://如果表達(dá)式與值n

46、相等,則執(zhí)行語句段nbreak;},返回,2.9.2 循環(huán)語句,程序結(jié)構(gòu)中的重復(fù)性操作的語句可以用循環(huán)語句來完成,循環(huán)語句可以根據(jù)循環(huán)變量來執(zhí)行指定的次數(shù)。C++語言提供while、for、do…while三種循環(huán)語句,它們之間的不同之處在于while和for先判斷條件,再執(zhí)行語句;而do…while是先執(zhí)行語句,再判斷條件。這樣可以看出while和for循環(huán)有可能一次都不執(zhí)行,而do…while至少執(zhí)行一次。它們的共同點是當(dāng)條件

47、語句為非零時為真,而為零時則為假。這三種循環(huán)語句可以相互轉(zhuǎn)換。 1. while語句 2. for語句 3. do…while循環(huán)語句,返回,1. while語句,當(dāng)循環(huán)次數(shù)無法計算或者很難確定時,可以考慮用while循環(huán)語句。它的語法結(jié)構(gòu)為:while(表達(dá)式){循環(huán)體語句;},返回,2. for語句,for語句通常用于處理具有固定長度的數(shù)據(jù)結(jié)構(gòu),for循環(huán)語句的語法結(jié)構(gòu)如下:

48、for((表達(dá)式1)初始化部分;(表達(dá)式2)循環(huán)條件部分;(表達(dá)式3)增量部分){循環(huán)體語句; // 如果是單條語句,可以省略外面的大括弧},返回,3. do…while循環(huán)語句,do…while也叫“直到型”循環(huán)結(jié)構(gòu),即一直執(zhí)行到條件為假時退出循環(huán)。其格式為:do{循環(huán)語句}while(循環(huán)條件表達(dá)式);,返回,2.9.3 判斷和跳轉(zhuǎn)語句(轉(zhuǎn)移語句),當(dāng)執(zhí)行該類語句時,它要改變程序的執(zhí)行順序,即不依次執(zhí)行緊跟其后的語

49、句,而跳到另一個語句處接著執(zhí)行。從表面上看循環(huán)語句或條件語句也改變了程序的執(zhí)行順序,但由于整個循環(huán)可以看作一個語句(條件語句也一樣),因此它們也仍然是順序執(zhí)行的。C++中的轉(zhuǎn)移語句有break、continue和goto語句。 1. break語句 2. continue語句 3. goto語句,返回,1. break語句,break語句用于強(qiáng)制退出循環(huán)語句以及case語句的

50、執(zhí)行,用在while和do…while、for循環(huán)語句中,使它們終止執(zhí)行,即用于從循環(huán)體內(nèi)跳出,提前結(jié)束循環(huán)。用于switch…case中則是執(zhí)行對應(yīng)的case語句后跳出switch…case。,返回,2. continue語句,continue語句用于while、do…while、for循環(huán)語句中,當(dāng)執(zhí)行到continue語句時,終止后面的循環(huán)執(zhí)行語句,直接進(jìn)行循環(huán)條件語句的判斷,如果為真則開始下一輪循環(huán),如果為假則終止循環(huán)。

51、 continue與break語句不同,它并不終止整個循環(huán)語句,而僅僅終止當(dāng)前這一次循環(huán)的執(zhí)行。,返回,3. goto語句,goto語句一般很少使用,一般有人認(rèn)為大量使用goto語句會使程序的執(zhí)行過程混亂且容易出錯,這是對的,但是在程序中適當(dāng)?shù)厥褂胓oto語句可以使程序簡單明了。如果有一個多重嵌套循環(huán),須從最里層跳到最外層,若用break來實現(xiàn),則每一層循環(huán)中都要調(diào)用break語句,很麻煩。但是如果在最里層用goto語句的話,就可以一

52、下子跳到外面的一個標(biāo)號處,并把流程跳轉(zhuǎn)到該處,很方便。它的格式為:goto 語句標(biāo)號,返回,2.10 指針、數(shù)組與字符串,2.10.1 指針2.10.2 數(shù)組2.10.3 字符串,2.10.1 指針,在計算機(jī)中,內(nèi)存儲器是由若干存儲單元組成的,每個存儲單元均有一個惟一的編號用于標(biāo)識該存儲單元,該編號稱為存儲單元的地址。在C++中,數(shù)據(jù)是用變量存放在存儲單元中的,而指針就是一個保存著某變量在內(nèi)存中的存儲單元中的位置變量,即

53、指針是指向變量在內(nèi)存中的地址,可以通過指針來指向變量在內(nèi)存中的地址來訪問和控制變量。指針的定義形式為:數(shù)據(jù)類型 *指針名;,返回,2.10.2 數(shù)組,數(shù)組就是把一系列有序的相同類型的數(shù)據(jù)組合起來的數(shù)據(jù)集合。數(shù)組都有一個名字即數(shù)組名。數(shù)組中的每一個數(shù)據(jù)稱為數(shù)組元素,數(shù)組元素在數(shù)組中的位置由下標(biāo)確定。根據(jù)數(shù)組元素下標(biāo)的個數(shù),數(shù)組分為一維數(shù)組、二維數(shù)組和多維數(shù)組。當(dāng)數(shù)組元素的數(shù)據(jù)類型為字符型時,該數(shù)組稱為字符數(shù)組。當(dāng)數(shù)組元素的數(shù)據(jù)類型為

54、整型時,該數(shù)組稱為整型數(shù)組。,返回,2.10.3 字符串,字符串就是用一對雙引號括起來的字符序列。例如“I am a student!”是一個字符串。字符串中的字符可以是能顯示的字符,也可以是轉(zhuǎn)義字符,如‘\t’表示跳格。在C++中,為了判斷字符串是否結(jié)束,系統(tǒng)自動在字符串的末尾加上一個字符‘\0’,作為字符串的結(jié)束標(biāo)志。如字符串“I am a student!”共15個字符,但實際上在計算機(jī)內(nèi)存里占用16個存儲單元。最后一個存儲單元

55、存放‘\0’,作為字符串的結(jié)束標(biāo)志,所以字符串的存儲空間比實際的字符數(shù)要多1。 注意字符串常量和字符常量是有區(qū)別的,字符串常量是用雙引號括起來的字符序列,而字符常量則是用單引號括起來的單個字符,它們所占的內(nèi)存空間也不同。 字符串一般存放在字符數(shù)組中,字符數(shù)組就是存放字符的數(shù)組,返回,2.11 函 數(shù),—個C++程序可由一個或多個源程序文件組成,一個源程序文件可由一個或多個函數(shù)組成;函數(shù)是構(gòu)成C

56、++程序的基礎(chǔ),任意—個C++源程序都是由若干個函數(shù)組成的。C++中的函數(shù)分為庫函數(shù)與自定義函數(shù)兩類,庫函數(shù)是由C++系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)(如求一個數(shù)的絕對值可用函數(shù):“int abs( int n );”);自定義函數(shù)是需要自己寫的函數(shù)。C++中的函數(shù)是這樣定義的:返回值數(shù)據(jù)類型 函數(shù)名(參數(shù)表){語句;},2.12 結(jié)構(gòu)、聯(lián)合和枚舉,2.12.1 結(jié)構(gòu)2.12.2 聯(lián)合體2.12.3 枚舉類型,2.12.1 結(jié)

57、構(gòu),有時候需要將不同類型的數(shù)據(jù)組合成有機(jī)整體 ,以方便引用這些數(shù)據(jù)。這些數(shù)據(jù)之間是相互聯(lián)系的,例如,一個人的基本信息包括姓名、性別、年齡、身高、體重等;一個學(xué)生的基本信息包括學(xué)號、姓名、年齡、某些課程成績、住址等。如果將這些數(shù)據(jù)分別存放在不同的數(shù)據(jù)變量中,就不能體現(xiàn)它們之間的內(nèi)在聯(lián)系,并且在引用這些數(shù)據(jù)時也會由于它們之間的聯(lián)系不明確而變得很復(fù)雜,容易出錯??梢酝ㄟ^使用結(jié)構(gòu)體將這些不同類型的數(shù)據(jù)定義為一個特殊的數(shù)據(jù)類型,這樣就能很方便地使

58、用這些數(shù)據(jù)了。 結(jié)構(gòu)體是指由不同類型的一組變量組成的一個數(shù)據(jù)單位 ,在 C和C++語言中,使用保留字struct來構(gòu)造一個結(jié)構(gòu)體,定義一個結(jié)構(gòu)體類型的形式如下:struct 結(jié)構(gòu)體名{結(jié)構(gòu)體成員列表},返回,2.12.2 聯(lián)合體,聯(lián)合體是指幾個不同類型的變量共用一個內(nèi)存單元的一種數(shù)據(jù)類型,這樣的變量可以在一個運算中構(gòu)成一個整數(shù),在另外一個運算中構(gòu)成一個實數(shù)。定義聯(lián)合體類型需要用到保留字union,定義的一般形式

59、如下:union 聯(lián)合體名{ 成員列表}變量列表,返回,2.12.3 枚舉類型,在實際生活中,經(jīng)常會遇到只有有限個取值的變量,例如,每一天只可能是星期一到星期天7種之間的一種,一個布袋里只有紅、黃、藍(lán)、綠、黑5種顏色的玻璃球等等。 針對這樣的變量,可以定義其為枚舉類型,即變量的值可以一一列舉出來。定義枚舉類型需要用到保留字enum,返回,2.13 上 機(jī) 指 導(dǎo),本章講述了Visual C++ .NET的基

60、本語法。在本次的上機(jī)指導(dǎo)中,將針對上述內(nèi)容進(jìn)行實際上機(jī)練習(xí)。主要內(nèi)容為:基本的輸出輸入語法的使用;命名空間的引入;基本控制語句的使用;函數(shù)的使用等。 2.13.1 if語句的使用 2.13.2 switch語句的使用 2.13.3 函數(shù)的使用,第3章 類 和 對 象,教學(xué)提示:類和對象是面向?qū)ο蟪绦蛟O(shè)計的核心概念,繼承性和多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的重要特性,本章對Visual C++ .NET中的類和對象、繼

61、承和派生、多態(tài)和虛函數(shù)、模板類和模板函數(shù)進(jìn)行了詳細(xì)介紹。,教學(xué)目標(biāo):掌握類和對象的定義,熟悉Visual C++ .NET語言中的繼承機(jī)制,能熟練地通過重載、虛函數(shù)、抽象類等手段實現(xiàn)多態(tài)性。,3.1 類 和 對 象,類和對象是面向?qū)ο蟪绦蛟O(shè)計的核心,所以理解類和對象的概念是學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計的關(guān)鍵。 3.1.1 類和對象的定義 3.1.2 對象與對象的定義 3.1.3 成員變量和成員函數(shù) 3.1

62、.4 構(gòu)造函數(shù)和析構(gòu)函數(shù),3.1.1 類和對象的定義,類是一種復(fù)雜的數(shù)據(jù)類型 ,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。類的定義格式一般分為說明部分和實現(xiàn)部分。說明部分是用來說明該類中的成員,包括數(shù)據(jù)成員的說明和成員函數(shù)的說明。其中,成員函數(shù)是用來對數(shù)據(jù)成員進(jìn)行操作的,又稱為“方法”。實現(xiàn)部分是用來對成員函數(shù)的定義。類的一般定義格式如下:class{public:private:},返回,3.

63、1.2 對象與對象的定義,對象是類的實例。對象是屬于某個已知的類。因此,定義對象之前,一定要先定義好該對象的類。對象在確定了它的類以后,其定義格式如下: 其中,是要定義的對象所屬類的名字,即所定義的對象是該類類型的對象。中可以有一個或多個對象,多個對象名是用逗號分隔。,返回,3.1.3 成員變量和成員函數(shù),一個對象的成員就是該對象的類所定義的成員。對象成員有數(shù)據(jù)成員和成員函數(shù),其表示方法如下:.或者.(),返回,3.1.

64、4 構(gòu)造函數(shù)和析構(gòu)函數(shù),1. 構(gòu)造函數(shù)和析構(gòu)函數(shù)2. 默認(rèn)構(gòu)造函數(shù)和默認(rèn)析構(gòu)函數(shù)3. 復(fù)制初始化構(gòu)造函數(shù),返回,1. 構(gòu)造函數(shù)和析構(gòu)函數(shù),構(gòu)造函數(shù)和析構(gòu)函數(shù)是在類體中說明的兩種特殊成員函數(shù) 。構(gòu)造函數(shù)的功能是在創(chuàng)建對象時,使用給定的值來初始化對象。析構(gòu)函數(shù)的功能是用來釋放一個對象,在對象刪除前,用它來做一些清理工作,它與構(gòu)造函數(shù)的功能正好相反。,返回,2. 默認(rèn)構(gòu)造函數(shù)和默認(rèn)析構(gòu)函數(shù),在類定義過程中,如果沒有定義任何構(gòu)造

65、函數(shù),則編譯器自動生成一個不帶參數(shù)的默認(rèn)構(gòu)造函數(shù),其格式如下:::(){…},返回,3. 復(fù)制初始化構(gòu)造函數(shù),復(fù)制初始化構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的功能是用一個已知的對象來初始化一個被創(chuàng)建的同類對象。復(fù)制初始化構(gòu)造函數(shù)實際上也是構(gòu)造函數(shù),它是在初始化時被調(diào)用來將一個已知對象的數(shù)據(jù)成員值復(fù)制給正在創(chuàng)建的另一個同類對象。,返回,3.2 類的繼承和派生,繼承性是面向?qū)ο蟪绦蛟O(shè)計中最重要的機(jī)制。這種機(jī)制改變了過去傳統(tǒng)的非面向?qū)?/p>

66、象程序設(shè)計中那種對不再適合要求的用戶定義數(shù)據(jù)類型進(jìn)行改寫甚至重寫的方法,克服了傳統(tǒng)程序設(shè)計方法對編寫出來的程序無法重復(fù)使用而造成的資源浪費。通過C++語言中的繼承機(jī)制,可以擴(kuò)充和完善舊的程序設(shè)計以適應(yīng)新的需求,這樣不僅可以節(jié)省程序開發(fā)時間和資源,并且為將來程序設(shè)計增添了新的資源。 3.2.1 基類和派生類 3.2.2 單一繼承 3.2.3 虛基類,,3.2.1 基類和派生類,通過繼承機(jī)制,可以利用已

67、有的數(shù)據(jù)類型來定義新的數(shù)據(jù)類型。所定義的新數(shù)據(jù)類型不僅擁有新定義的成員,而且還同時擁有舊的成員,則稱已存在的用來派生新類的類為基類,又稱為父類。由已存在的類派生派生出的新類稱為派生類,又稱為子類。,返回,3.2.2 單一繼承,在單繼承中,每個類可以有多個派生類,但是每個派生類只能有一個基類,從而形成樹型結(jié)構(gòu)。1. 成員訪問權(quán)限的控制2. 構(gòu)造函數(shù)和析構(gòu)函數(shù),返回,1. 成員訪問權(quán)限的控制,在公有繼承(public)時,派生類

68、的public、private、protected型的成員函數(shù)可以訪問基類中的公有成員和保護(hù)成員;而派生類的對象僅可訪問基類中的公有成員。 在私有繼承(private)時,派生類的對象不可訪問基類中的任何成員。另外使用class關(guān)鍵字定義類時,默認(rèn)的繼承方式是private。也就是說,當(dāng)繼承方式為私有繼承時,可以省略private。 在保護(hù)繼承(protected)時,把繼承方式public改為protecte

69、d,把protected變?yōu)閜rivate成員,private不變。,返回,2. 構(gòu)造函數(shù)和析構(gòu)函數(shù),派生類對象的數(shù)據(jù)結(jié)構(gòu)是由基類中說明的數(shù)據(jù)成員和派生類中說明的數(shù)據(jù)成員共同構(gòu)成。將派生類對象中由基類中說明的數(shù)據(jù)成員和操作構(gòu)成的封裝體稱為基類子對象,它由基類中的構(gòu)造函數(shù)進(jìn)行初始化。 構(gòu)造函數(shù)不能夠被繼承,因此,派生類的構(gòu)造函數(shù)必須通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類子對象。所以,在定義派生類的構(gòu)造函數(shù)時除了對自己的數(shù)據(jù)成

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論