《Visual_C++.NET程序設計教程與上機指導》課件.ppt_第1頁
《Visual_C++.NET程序設計教程與上機指導》課件.ppt_第2頁
《Visual_C++.NET程序設計教程與上機指導》課件.ppt_第3頁
《Visual_C++.NET程序設計教程與上機指導》課件.ppt_第4頁
《Visual_C++.NET程序設計教程與上機指導》課件.ppt_第5頁
已閱讀5頁,還剩336頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Visual_C+.NET程序設計教程與上機指導課件,第1章 概 述,教學提示:微軟推出 .NET是為了適應Internet的發展而作出的應對決策,其中Visual C+ .NET是微軟的Visual C+系列軟件的升級版本,用它來開發本機應用程序或Internet Web程序都有顯著的增強。本章主要介紹Visual C+ .NET的開發界面及可以開發的常用程序類型。,教學目標:初步介紹Visual C+ .NET開發界面,使初學者對Visual C+ .NET的開發環境有一個整體的認識。本書用的軟件版本為Visual Studio .NET 2003中文版,如果機器上裝的不是這個版本,可能界面上有些差異,但是這些差異非常小,只要稍微注意一下,基本上不會妨礙學習。如果還是不太放心的話,請按第1章的步驟安裝此版本軟件,這樣就可以省去一些麻煩。,1.1 Visual C+ .NET簡介,微軟于2000年6月22日向全球發布了 .NET,引起全球的轟動, .NET使程序員的編程方式產生了很大的變化。 .NET平臺在以Internet為基礎的計算和通信激增的背景下,通過先進的軟件技術,利用網絡協議和格式協調眾多的智能設備與網站,從而提供更簡單、更為個性化且更有效的Internet服務。 微軟為了配合其 .NET戰略,發布了Visual Studio .NET。 Visual Studio .NET主要包括三套產品:Visual C# .NET、Viusal Basic .NET和Visual C+ .NET。,1.2 安裝Visual C+ .NET,Visual C+ .NET是Visual Studio .NET的一部分,表 1.1 以安裝Visual Studio .NET 2003 為例,列出了安裝系統需求。 滿足上述要求的計算機可以進行安裝了 。 Visual Studio . NET 2003共有6張安裝光盤,包括2張Visual Studio .NET安裝光盤,1張系統必備盤,3張MSDN安裝盤。將Visual Studio .NET的第一張安裝光盤放入光驅,即出現如圖1.1所示的畫面。 然后,讀者可以按照安裝程序的步驟,首先安裝系統必備,系統必備包括一些開發 .NET程序必需的Internet組件和 .NET 應用程序框架。安裝完系統必備后,按照提示一步步安裝Visual Studio .NET,由于過程比較簡單,在此就不贅述了 。前兩步安裝完成后 ,最好安裝MSDN產品文檔,因為MSDN中包含多達1.9GB的文檔和例子,而且可以很方便地查詢。,表1.1 安裝Visual Studio .NET 2003的系統要求,返回,圖1.1 Visual Studio .NET安裝程序,返回,1.3 Visual C+ .NET開發界面簡介,單擊Windows的【開始】|【程序】| Microsoft Visual Studio .NET 2003命令,Microsoft Visual Studio .NET 2003 即可以啟動 。其啟動的初始界面如圖1.2所示。,圖1.2 Visual Studio .NET的起始頁,下面來新建一個Visual C+ .NET項目,以便于更詳細地了解Visual C+ .NET程序開發環境。按照以下步驟,一步步進行: 首先單擊如圖1.2中的選項【項目】,再單擊【新建項目】按鈕,出現【新建項目】對話框,選擇左邊【項目類型】|【Visual C+項目】| MFC選項,在右邊的【模板】框中單擊【MFC應用程序】,再在【名稱】文本框中輸入項目名稱Jiao1_1,如圖1.3所示。,圖1.3 【新建項目】對話框,返回,單擊【確定】按鈕,即可進入如圖1.4所示的【MFC應用程序向導】對話框。在這里共有7個步驟供選擇,由于后面會詳細講解向導的創建步驟,所以現在都用默認值,直接單擊【完成】按鈕即可創建一個多文檔應用程序項目。,圖1.4 【MFC應用程序向導】對話框,返回,可以在【解決方案資源管理器】視圖中點開所生成的項目,即可看到本項目所包含的文件(如果找不到,可以單擊菜單【視圖】|【解決方案資源管理器】即可出現)。可以雙擊文件Jiao1_1.cpp,在中央的編輯器界面中進行代碼的編寫。其界面如圖1.5所示。,圖1.5 Visual C+ .NET的界面,返回,Visual C+ .NET 的集成界面包括菜單欄、工具欄、解決方案資源管理器、類視圖、資源視圖、動態幫助、屬性窗口、輸出窗口,下面將進行詳細介紹。 1.3.1 菜單欄 1.3.2 工具欄 1.3.3 解決方案資源管理器 1.3.4 類視圖 1.3.5 資源視圖 1.3.6 動態幫助 1.3.7 屬性窗口 1.3.8 任務列表及輸出等窗口,1.3.1 菜單欄,Visual C+ .NET的主菜單欄包括9個菜單項,這些菜單項可以完成幾乎所有的任務,因此了解并掌握這些菜單命令是必要的。請注意,Visual C+ .NET的菜單會根據當前打開不同的對象而有一些變化,所以本節只講常見的菜單項命令。,返回,1.3.2 工具欄,由于工具欄上面的按鈕命令都可以在相應的菜單中找到 ,所以不詳細講解了。可以看看圖標就知道它是干什么的,還可以把鼠標移動到按鈕上面停一下,就有相應的提示對話框解釋按鈕的功能,使用很方便。而且還可以自己打開或定制工具欄。在工具欄上面右擊,在出現的彈出式菜單中單擊相應的命令即可以顯示或隱藏相應的工具欄 。圖1.15是標準工具欄的樣式 。從左到右的命令依次為:新建項目、添加項目、打開文件、保存、全部保存、剪切、復制、粘貼、撤消、重復、向后定位、向前定位、啟動、解決方案配置、在文件中查找、查找、解決方案資源管理器、屬性窗口、對象瀏覽器、工具箱以及類視圖。,返回,圖1.15 標準工具欄,返回,1.3.3 解決方案資源管理器,如圖1.16 ,【解決方案資源管理器】窗口以圖形方式顯示了組成項目的所有文件,Visual C+ .NET中屬于同一應用程序的所有項目稱作解決方案。以前版本(如Visual C+ 6.0) 中同一應用程序中的所有項目組成的一個整體叫作工程,它們的意思差不多,只是換了一個名字。【解決方案資源管理器】窗口中顯示了每個解決方案中文件的樹狀查看列表,包括各個項目的引用、源文件、頭文件、資源文件、配置文件和幫助文件。雙擊相應的選項,Visual C+ .NET自動用合適的編輯器打開它,可以進行任意的修改。如果要給解決方案添加一些項目,可在解決方案上面右擊,選擇彈出式菜單中相應的選項可以添加所要的項目。如果該窗口已經被關閉,則可以菜單命令【視圖】|【解決方案資源管理器】來打開。,返回,圖1.16 【解決方案資源管理器】窗口,返回,1.3.4 類視圖,Visual C+ .NET中的項目都是由類來組織的。見圖1.17【類視圖】窗口,解決方案Jiao1_1下面由【宏和常數】、【全局函數和變量】、CAboutDlg類、CchildFrame(子框架窗口類)、CJiao1_1App(應用程序類)、CJiao1_1DoC(文檔類)、CJiao1_1View(視圖類)、CmainFrame(框架窗口類)等組成(如果你看不懂,不要緊,這里只是稍微提一下,以后有詳細的說明)。,返回,圖1.17 【類視圖】窗口,返回,1.3.5 資源視圖,【資源視圖】窗口是程序員在Visual C+ .NET中管理資源的地方,它以樹形視圖的結構把解決方案中的所有資源都一項一項地列出來了,給人以非常直觀和清晰的感覺。,返回,1.3.6 動態幫助,圖1.19所示為【動態幫助】窗口,它提供了非常強大的智能幫助功能來幫助開發應用程序,如果在編輯框中選中不清楚的類或者類的屬性或方法時,幫助視圖中就提供選擇項的幫助提示功能,可以單擊相應的提示項來詳細地了解該項的說明,使用非常貼心,是程序員編程的好幫手。還可以單擊示例和開始項下面的相應項來學習有關知識。如果在Visual C+ .NET編程遇到困難時,第一個想到的幫助者就是Visual C+ .NET提供的動態幫助功能,也可以打開MSDN 2003來提供幫助。,返回,圖1.19 【動態幫助】窗口,返回,1.3.7 屬性窗口,可以這么說,一個人開發Visual C+ .NET的速度和熟練程度,和他對【屬性】窗口的熟練使用程度是息息相關的。讀者可能用過Visual C+以前的版本,如Visual C+ 6.0中提供的ClassWizard對話框,對類的管理是非常方便的(包括資源控件和類成員的對應連接,數據傳遞路徑,消息處理等),可能對Visual C+ .NET中取消了ClassWizard功能感到非常失望,但是這只是個習慣問題,如果對【屬性】窗口熟悉以后,一定會為它提供的功能折服。眾所周知,Visual C+ .NET里面所有的項目都是有屬性的,通過使用【屬性】窗口可以非常方便地修改屬性。,返回,1.3.8 任務列表及輸出等窗口,圖1.21所示為任務列表及輸出等窗口。其中任務列表窗口可以瀏覽用戶任務、生成錯誤。可以在此窗口中單擊【單擊此處添加新任務】來添加新任務,也可以在項目代碼中以特定的格式添加注釋。如果此窗口不可見,可單擊菜單【視圖】|【其他窗口】|【任務列表】來顯示。,圖1.21 任務列表及輸出等窗口,返回,1.4 利用Visual C+ .NET向導生成應用程序,Visual C+ .NET為用戶提供了功能強大的應用程序生成向導,用戶可以不編寫一行代碼就能生成一個典型的Windows應用程序框架。在1.3節涉及到了利用MFC應用程序向導生成程序Jiao1_1,下面重點講解利用向導生成應用程序的具體過程,并生成一個可以編輯文字的MFC多文檔應用程序Jiao1_2。 1.4.1 選擇新建項目類型 1.4.2 利用向導建立應用程序 1.4.3 生成應用程序,1.4.1 選擇新建項目類型,在起始頁上單擊【新建項目】按鈕,或者在菜單欄上選擇【文件】|【新建】|【項目】,就會彈出如圖1.3所示的【新建項目】對話框,用戶可以對所要的項目類型進行選擇。可以看到,Visual C+ .NET開發的程序類型幾乎覆蓋了所有的開發類型,如Windows應用程序、自定義類庫、控件庫、ASP.NET Web應用程序、ASP.NET Web Service、Web控件庫、ATL Server Web 服務、控制臺應用程序、Windows服務、空項目以及空Web項目等等。本書重點講解MFC應用程序的開發。,返回,1. 應用程序類型,在【MFC應用程序向導】對話框中,選擇左邊的【應用程序類型】,在右邊的【應用程序類型】選項組中選擇【多文檔】單選按鈕,其他選項用默認值,如圖1.22所示。可以看到,利用MFC可以創建基于對話框的應用程序、單文檔應用程序、多文檔應用程序和多頂級文檔應用程序。,圖1.22 選擇應用程序類型,返回,2. 復合文檔支持,【復合文檔支持】是一個程序中能夠嵌入另一個應用程序的功能,容器就是只能維護嵌入的對象;袖珍服務器指應用程序不能獨立運行,而是被調用使之為其他程序服務;完全服務器指能夠獨立運行,并能為其他應用程序提供服務;容器/完全服務器指應用程序既可以作容器,也可以作完全服務器對象。保持默認值不變,即不選擇任何復合文檔支持具體見圖1.23。,圖1.23 設置復合文檔支持,返回,3. 文檔模板字符串,選左邊的【文檔模板字符串】,右邊的選項都用默認值。文件 擴展名指文件的后綴名,具體見圖1.24。,圖1.24 設置文檔模板字符串,返回,4. 數據庫支持,在左邊選擇【數據庫支持】,將出現如圖1.25所示的界面。如果不編寫數據庫應用程序,選擇【無】;如果想要訪問數據庫 ,但不想應用程序從類CFormView派生視圖 ,或者其界面不含有記錄菜單,則選擇【僅支持頭文件】;如果想要應用程序從類CFormView派生視圖,并且其界面含有記錄菜單,但不需要保存文檔,則選擇【不支持文件的數據庫視圖】;如果還需要文檔保存功能,則選擇【支持文件的數據庫視圖】。當選擇第3、4項時,你還要選擇客戶端的數據庫類型:OLE DB或者ODBC,并可以指定數據源及其他操作。,圖1.25 設置數據庫支持,返回,5. 用戶界面功能,選擇左邊的【用戶界面功能】,右邊的【主框架樣式】和【工具欄】都用默認值,具體見圖1.26。,圖1.26 設置用戶界面功能,返回,6. 高級功能,選擇左邊的【高級功能】,將出現如圖1.27所示的界面,保持默認設置。【區分上下文的幫助】可以選擇WinHelp格式或HTML幫助格式,WinHelp格式是傳統的Windows幫助格式、幫助源文件為.RTF文件;而HTML幫助格式是Windows最新幫助格式,幫助源文件為.HTML文件。【最近文件列表上的文件數】為4。如圖1.27所示。,圖1.27 設定高級功能,返回,7. 生成的類,選擇左邊【生成的類】,將出現如圖1.28所示的界面。其中【基類】下拉列表框中有許多基類可供選擇,注意在【基類】中選擇CEditView。 單擊【完成】按鈕,Visual C+ .NET就自動生成一個多文檔應用程序。,圖1.28 選擇生成的類,返回,1.4.3 生成應用程序,選擇菜單欄上的【生成】|【生成解決方案】,然后選擇【調試】|【開始執行(不調試)】,或者直接按Ctrl + F5鍵編譯運行,運行界面如圖1.29所示。程序中可以對文字進行簡單的編輯。如果文檔有了更改,系統還會提示用戶是否保存文檔。看,一個簡單的文檔編輯器誕生了,不需要用戶寫一行代碼。,返回,圖1.29 Jiao1_2程序運行界面,返回,1.5 理解Visual C+ .NET工程,Visual C+ .NET作為一種程序設計語言,同時也是一個集成開發工具,提供了軟件代碼自動生成和可視化的資源編輯功能。在使用Visual C+ .NET開發應用程序的過程中,系統生成了大量的各種類型的文件,在本節中將要詳細介紹Visual C+ .NET中這些不同類型的文件分別起什么樣的作用 , 在此基礎上對 Visual C+ .NET如何管理應用程序所用到的各種文件有一個全面的認識。,1.6 上 機 指 導,程序員最重要的是動手能力,如果只會構思,但是不能把思想變成一個實實在在的程序,那么也是很遺憾的。勤于練習才能真正掌握編程的方法。在1.3小節我們已經練習了利用 MFC 應用程序向導生成 MFC 應用程序 。下面來練習一下利用向導生成控制臺程序的方法。 Visual C+ .NET可以開發基于 .NET的控制臺程序和基于Win32的控制臺程序。 .NET的控制臺應用程序是基于通用語言運行時環境的,而Win32控制臺程序是基于本機運行環境的,直接生成本機機器碼。 1.6.1 .NET的控制臺程序開發步驟 1.6.2 Win32的控制臺程序開發步驟,第2章 Visual C+ .NET的基本語法,教學提示:在本章,主要是對Visual C+ .NET 的基本語法要素進行介紹,包括標識符和關鍵字、基本數據類型、變量和常量、命名空間、預編譯指令、運算符和表達式。但僅僅掌握這些還是不夠的。本章還進一步介紹了控制語句、結構體、聯合體、枚舉、指針和數組的詳細使用方法。學習完這些內容后,讀者對其語言將會有一個比較全面的了解。,教學目標:掌握Visual C+ .NET語言的基本數據類型,熟悉常用的標識符、運算符、關鍵字;掌握常量和變量的定義方法;掌握數據類型的轉換方法;理解預編譯指令、命名空間;掌握各種控制語句的使用方法;掌握結構體、聯合體和枚舉的定義及其使用方法;掌握指針和數組的使用方法,熟練掌握函數的使用方法。通過上機實踐,初步掌握上述內容的靈活運用。,2.1 標識符和關鍵字,任何一門語言都有它自己的標識符和關鍵字,C+也不例外。標識符(identifier)是指常量、變量、語句標號、自定義函數、對象等能被編譯器識別而提供的惟一名稱,所有標識符的首字符必須以字母(az,AZ)或下劃線(_)開始,后面的字符可以是字母、下劃線或數字(09)。 C+語言區分大小寫,因此,大寫的英文字母與其對應的小寫英文字母是表示不同的標識符的,如localString和localstring代表兩個不同的標識符。 關鍵字是C+語言保留的標識符,每個關鍵字都有特殊的意義,不能當作其他用途使用。,2.2 基本數據類型,C+語言使用確定的數據類型來組織各種數據,并根據各種數據類型來存儲和操作這些數據。基本的數據類型是C+預定義的類型,編程人員可以直接利用這些類型來定義數據。下面來看看C+中的基本數據類型:Bool(邏輯型)、char(字符型)、short(短整型)、int(整型)、long(長整型)、float(浮型)、double(雙精度型)、long double(長雙精度型)。 bool類型用true和false代表真與假,其占用空間是8位。 char是字符型類型,它在計算機里面是以ASCII表示的,占8位。 short、int和long都是整型,只是數據的位數不一樣:short占8位;int在DOS環境下占16位,在Windows下面占32位;long占32位。還可以在這三個類型前面加unsigned,表示無符號整數(即只表示正數)。 Float、double、long double都是浮點型類型,只是位數不一樣,float占32位,double占64位,long double占80位。,2.3 常量和變量,常量是指C+語言中表示固定數值或字符值的標識符,并且在程序的執行過程中不允許修改。通過使用關鍵字const,可以將一個變量(下面會講變量)定義為一個常量,并且const可以位于數據類型前或者數據類型后面。其定義的一般格式為: type const 變量名值 或者 const type 變量名值 在定義變量時,應給出該變量的數據類型和名字,還可以給這個變量賦一個初始值,也可以在以后再賦值,系統在編譯時就會分配給該變量一個合適的內存空間。 變量的一般定義為: 數據類型 變量名值(可選),2.4 命 名 空 間,命名空間是為了處理不同公司或個人使用相同的標識符這種情況而使用的一個概念。假設AAA公司使用了自己的一套標志符,BBB公司也使用自己的一套標識符,現在如果要使用這兩家公司的某些標識符,且兩個公司都提供了變量標識符INTEGER,那么在程序中使用INTEGER到底是使用AAA公司的,還是BBB公司的呢?這是個棘手的問題,Visual C+ .NET編譯器也會報錯。,2.5 運算符、表達式和語句,在C+語言中,運算符是指對操作數進行操作的符號,按照運算功能,C+運算符可分為算術運算符、關系運算符、邏輯運算符、位運算符和賦值運算符等,按優先級順序,C+運算符如表2.3所示。,2.6 預編譯指令,預編譯指令指在程序正式編譯前就由編譯器進行編譯的操作,可以放在程序中的任何位置。常見的預編譯指令有: #include “頭文件“或#include : 該指令指示編譯器將頭文件的全部內容插入此處。若用括起頭文件則在系統的INCLUDE目錄中尋找文件,若用“”括起文件則在當前目錄中尋找文件。一般來說,頭文件后綴名都為.h,其中主要內容為各種變量的聲明。,2.7 數據類型轉換,在進行程序的開發過程中,數據類型的轉換是會經常碰到的。在一個表達式當中,所有的變量必須是相同類型才能進行運算,但是在一般的表達式中很難有相同類型的變量來進行運算。因此,不同類別的變量進行運算時,C+會先將較低類型的操作數轉換為較高類型的操作數再進行運算。在計算機中,數據都是用二進制位來存放的,較低類型是指存儲位數較少的類型,較高類型則是指存儲位數較多的類型。如定義變量int a和long b,則進行a+b的運算時,要先將a轉換為long型,再與b相加。 數據類型的高低順序依序為:long double、double、float、long、int、short、char。,2.8 數據的基本輸入與輸出,數據的基本輸入與輸出是程序與用戶進行交互的重要手段,可以設想一下,如果一個程序既不能輸入也不能輸出,那么這會是個什么程序?用戶什么數據都輸不進去,也看不到程序的運行結果。所以處理好程序的輸入輸出是很重要的。C+中提供了兩個基本的輸入和輸出的函數:cout(輸出)及cin(輸入)。,2.9 控 制 語 句,程序控制語句控制程序的執行過程和方向,因此是非常重要的。靈活運用各種控制語句可以輕松地完成你想要做的事情。C+中的控制語句包括條件語句、循環語句、判斷和跳轉語句,下面具體介紹它們的用法。 2.9.1 條件(選擇)語句 2.9.2 循環語句 2.9.3 判斷和跳轉語句(轉移語句),2.9.1 條件(選擇)語句,C+語言支持幾種基本的條件語句:if語句、ifelse語句、?:語句、switch語句。 1. if語句 2. ifelse語句 3. ?:條件語句 4. switch語句,返回,1. if語句,if語句用于在程序中有條件地執行某一語句序列,語法形式如下: if(表達式) 執行語句;/滿足表達式時執行的語句 其中表達式是一個關系或邏輯表達式,執行語句是指當表達式為真時執行,為假時跳過執行。如果執行語句包含多個語句,則必須用包圍起來作為一個整體來執行。例如:如果變量a大于變量b,則把a與b之和賦給變量c,其語句如下: if(ab) c=a+b;,返回,2. ifelse語句,它的一般格式是: if(表達式) 執行語句1;/如果表達式為真,則執行語句1 else 執行語句2;/如果表達式為假,則執行語句2 ifelse語句的變體結構(可以判斷兩種以上的情況): if(表達式1) 執行語句1;/如果表達式1為真,則執行語句1 else if(表達式2) 執行語句2;/如果表達式2為真,則執行語句2 /如果表達式i為真,則執行語句i . else 執行語句n;/其他情況,則執行語句n,返回,3. ?:條件語句,?:條件語句是ifelse條件語句的簡化形式,其格式如下: (ab)?c:d;/如果表達式ab為真,則其結果為c,否則為d,返回,4. switch語句,switch語句與ifelse的變體結構類似,都是從多種供選擇的情況中選擇一種執行,其語法形式為: switch(表達式) case:值1: 語句段1;/如果表達式與值1相等,則執行語句段1 break; case:值2: 語句段2;/如果表達式與值2相等,則執行語句段2 break; ;/如果表達式與值i相等,則執行語句段i default:/default語句段可以不要 語句段n:/如果表達式與值n相等,則執行語句段n break; ,返回,2.9.2 循環語句,程序結構中的重復性操作的語句可以用循環語句來完成,循環語句可以根據循環變量來執行指定的次數。C+語言提供while、for、dowhile三種循環語句,它們之間的不同之處在于while和for先判斷條件,再執行語句;而dowhile是先執行語句,再判斷條件。這樣可以看出while和for循環有可能一次都不執行,而dowhile至少執行一次。它們的共同點是當條件語句為非零時為真,而為零時則為假。這三種循環語句可以相互轉換。 1. while語句 2. for語句 3. dowhile循環語句,返回,1. while語句,當循環次數無法計算或者很難確定時,可以考慮用while循環語句。它的語法結構為: while(表達式) 循環體語句;,返回,2. for語句,for語句通常用于處理具有固定長度的數據結構,for循環語句的語法結構如下: for(表達式1)初始化部分;(表達式2)循環條件部分;(表達式3)增量部分) 循環體語句; / 如果是單條語句,可以省略外面的大括弧 ,返回,3. dowhile循環語句,dowhile也叫“直到型”循環結構,即一直執行到條件為假時退出循環。其格式為: do 循環語句 while(循環條件表達式);,返回,2.9.3 判斷和跳轉語句(轉移語句),當執行該類語句時,它要改變程序的執行順序,即不依次執行緊跟其后的語句,而跳到另一個語句處接著執行。從表面上看循環語句或條件語句也改變了程序的執行順序,但由于整個循環可以看作一個語句(條件語句也一樣),因此它們也仍然是順序執行的。C+中的轉移語句有break、continue和goto語句。 1. break語句 2. continue語句 3. goto語句,返回,1. break語句,break語句用于強制退出循環語句以及case語句的執行,用在while和dowhile、for循環語句中,使它們終止執行,即用于從循環體內跳出,提前結束循環。用于switchcase中則是執行對應的case語句后跳出switchcase。,返回,2. continue語句,continue語句用于while、dowhile、for循環語句中,當執行到continue語句時,終止后面的循環執行語句,直接進行循環條件語句的判斷,如果為真則開始下一輪循環,如果為假則終止循環。 continue與break語句不同,它并不終止整個循環語句,而僅僅終止當前這一次循環的執行。,返回,3. goto語句,goto語句一般很少使用,一般有人認為大量使用goto語句會使程序的執行過程混亂且容易出錯,這是對的,但是在程序中適當地使用goto語句可以使程序簡單明了。如果有一個多重嵌套循環,須從最里層跳到最外層,若用break來實現,則每一層循環中都要調用break語句,很麻煩。但是如果在最里層用goto語句的話,就可以一下子跳到外面的一個標號處,并把流程跳轉到該處,很方便。它的格式為: goto 語句標號,返回,2.10 指針、數組與字符串,2.10.1 指針 2.10.2 數組 2.10.3 字符串,2.10.1 指針,在計算機中,內存儲器是由若干存儲單元組成的,每個存儲單元均有一個惟一的編號用于標識該存儲單元,該編號稱為存儲單元的地址。在C+中,數據是用變量存放在存儲單元中的,而指針就是一個保存著某變量在內存中的存儲單元中的位置變量,即指針是指向變量在內存中的地址,可以通過指針來指向變量在內存中的地址來訪問和控制變量。 指針的定義形式為: 數據類型 *指針名;,返回,2.10.2 數組,數組就是把一系列有序的相同類型的數據組合起來的數據集合。數組都有一個名字即數組名。數組中的每一個數據稱為數組元素,數組元素在數組中的位置由下標確定。根據數組元素下標的個數,數組分為一維數組、二維數組和多維數組。當數組元素的數據類型為字符型時,該數組稱為字符數組。當數組元素的數據類型為整型時,該數組稱為整型數組。,返回,2.10.3 字符串,字符串就是用一對雙引號括起來的字符序列。例如“I am a student!”是一個字符串。字符串中的字符可以是能顯示的字符,也可以是轉義字符,如t表示跳格。在C+中,為了判斷字符串是否結束,系統自動在字符串的末尾加上一個字符0,作為字符串的結束標志。如字符串“I am a student!”共15個字符,但實際上在計算機內存里占用16個存儲單元。最后一個存儲單元存放0,作為字符串的結束標志,所以字符串的存儲空間比實際的字符數要多1。 注意字符串常量和字符常量是有區別的,字符串常量是用雙引號括起來的字符序列,而字符常量則是用單引號括起來的單個字符,它們所占的內存空間也不同。 字符串一般存放在字符數組中,字符數組就是存放字符的數組,返回,2.11 函 數,個C+程序可由一個或多個源程序文件組成,一個源程序文件可由一個或多個函數組成;函數是構成C+程序的基礎,任意個C+源程序都是由若干個函數組成的。C+中的函數分為庫函數與自定義函數兩類,庫函數是由C+系統提供的標準函數(如求一個數的絕對值可用函數:“int abs( int n );”);自定義函數是需要自己寫的函數。 C+中的函數是這樣定義的: 返回值數據類型 函數名(參數表) 語句; ,2.12 結構、聯合和枚舉,2.12.1 結構 2.12.2 聯合體 2.12.3 枚舉類型,2.12.1 結構,有時候需要將不同類型的數據組合成有機整體 ,以方便引用這些數據。這些數據之間是相互聯系的,例如,一個人的基本信息包括姓名、性別、年齡、身高、體重等;一個學生的基本信息包括學號、姓名、年齡、某些課程成績、住址等。如果將這些數據分別存放在不同的數據變量中,就不能體現它們之間的內在聯系,并且在引用這些數據時也會由于它們之間的聯系不明確而變得很復雜,容易出錯。可以通過使用結構體將這些不同類型的數據定義為一個特殊的數據類型,這樣就能很方便地使用這些數據了。 結構體是指由不同類型的一組變量組成的一個數據單位 ,在 C和C+語言中,使用保留字struct來構造一個結構體,定義一個結構體類型的形式如下: struct 結構體名 結構體成員列表,返回,2.12.2 聯合體,聯合體是指幾個不同類型的變量共用一個內存單元的一種數據類型,這樣的變量可以在一個運算中構成一個整數,在另外一個運算中構成一個實數。 定義聯合體類型需要用到保留字union,定義的一般形式如下: union 聯合體名 成員列表 變量列表,返回,2.12.3 枚舉類型,在實際生活中,經常會遇到只有有限個取值的變量,例如,每一天只可能是星期一到星期天7種之間的一種,一個布袋里只有紅、黃、藍、綠、黑5種顏色的玻璃球等等。 針對這樣的變量,可以定義其為枚舉類型,即變量的值可以一一列舉出來。定義枚舉類型需要用到保留字enum,返回,2.13 上 機 指 導,本章講述了Visual C+ .NET的基本語法。在本次的上機指導中,將針對上述內容進行實際上機練習。主要內容為:基本的輸出輸入語法的使用;命名空間的引入;基本控制語句的使用;函數的使用等。 2.13.1 if語句的使用 2.13.2 switch語句的使用 2.13.3 函數的使用,第3章 類 和 對 象,教學提示:類和對象是面向對象程序設計的核心概念,繼承性和多態性是面向對象程序設計的重要特性,本章對Visual C+ .NET中的類和對象、繼承和派生、多態和虛函數、模板類和模板函數進行了詳細介紹。,教學目標:掌握類和對象的定義,熟悉Visual C+ .NET語言中的繼承機制,能熟練地通過重載、虛函數、抽象類等手段實現多態性。,3.1 類 和 對 象,類和對象是面向對象程序設計的核心,所以理解類和對象的概念是學習面向對象程序設計的關鍵。 3.1.1 類和對象的定義 3.1.2 對象與對象的定義 3.1.3 成員變量和成員函數 3.1.4 構造函數和析構函數,3.1.1 類和對象的定義,類是一種復雜的數據類型 ,它是將不同類型的數據和與這些數據相關的操作封裝在一起的集合體。類的定義格式一般分為說明部分和實現部分。說明部分是用來說明該類中的成員,包括數據成員的說明和成員函數的說明。其中,成員函數是用來對數據成員進行操作的,又稱為“方法”。實現部分是用來對成員函數的定義。 類的一般定義格式如下: class public: private: ,返回,3.1.2 對象與對象的定義,對象是類的實例。對象是屬于某個已知的類。因此,定義對象之前,一定要先定義好該對象的類。 對象在確定了它的類以后,其定義格式如下: 其中,是要定義的對象所屬類的名字,即所定義的對象是該類類型的對象。中可以有一個或多個對象,多個對象名是用逗號分隔。,返回,3.1.3 成員變量和成員函數,一個對象的成員就是該對象的類所定義的成員。對象成員有數據成員和成員函數,其表示方法如下: . 或者 .(),返回,3.1.4 構造函數和析構函數,1. 構造函數和析構函數 2. 默認構造函數和默認析構函數 3. 復制初始化構造函數,返回,1. 構造函數和析構函數,構造函數和析構函數是在類體中說明的兩種特殊成員函數 。構造函數的功能是在創建對象時,使用給定的值來初始化對象。析構函數的功能是用來釋放一個對象,在對象刪除前,用它來做一些清理工作,它與構造函數的功能正好相反。,返回,2. 默認構造函數和默認析構函數,在類定義過程中,如果沒有定義任何構造函數,則編譯器自動生成一個不帶參數的默認構造函數,其格式如下: :() ,返回,3. 復制初始化構造函數,復制初始化構造函數是一種特殊的成員函數,它的功能是用一個已知的對象來初始化一個被創建的同類對象。復制初始化構造函數實際上也是構造函數,它是在初始化時被調用來將一個已知對象的數據成員值復制給正在創建的另一個同類對象。,返回,3.2 類的繼承和派生,繼承性是面向對象程序設計中最重要的機制。這種機制改變了過去傳統的非面向對象程序設計中那種對不再適合要求的用戶定義數據類型進行改寫甚至重寫的方法,克服了傳統程序設計方法對編寫出來的程序無法重復使用而造成的資源浪費。通過C+語言中的繼承機制,可以擴充和完善舊的程序設計以適應新的需求,這樣不僅可以節省程序開發時間和資源,并且為將來程序設計增添了新的資源。 3.2.1 基類和派生類 3.2.2 單一繼承 3.2.3 虛基類,3.2.1 基類和派生類,通過繼承機制,可以利用已有的數據類型來定義新的數據類型。所定義的新數據類型不僅擁有新定義的成員,而且還同時擁有舊的成員,則稱已存在的用來派生新類的類為基類,又稱為父類。由已存在的類派生派生出的新類稱為派生類,又稱為子類。,返回,3.2.2 單一繼承,在單繼承中,每個類可以有多個派生類,但是每個派生類只能有一個基類,從而形成樹型結構。 1. 成員訪問權限的控制 2. 構造函數和析構函數,返回,1. 成員訪問權限的控制,在公有繼承(public)時,派生類的public、private、protected型的成員函數可以訪問基類中的公有成員和保護成員;而派生類的對象僅可訪問基類中的公有成員。 在私有繼承(private)時,派生類的對象不可訪問基類中的任何成員。另外使用class關鍵字定義類時,默認的繼承方式是private。也就是說,當繼承方式為私有繼承時,可以省略private。 在保護繼承(protected)時,把繼承方式public改為protected,把protected變為private成員,private不變。,返回,2. 構造函數和析構函數,派生類對象的數據結構是由基類中說明的數據成員和派生類中說明的數據成員共同構成。將派生類對象中由基類中說明的數據成員和操作構成的封裝體稱為基類子對象,它由基類中的構造函數進行初始化。 構造函數不能夠被繼承,因此,派生類的構造函數必須通過調用基類的構造函數來初始化基類子對象。所以,在定義派生類的構造函數時除了對自己的數據成員進行初始化外,還必須負責調用基類構造函數使基類數據成員得以初始化。如果派生類中還有子對象時,還應包含對子對象初始化的構造函數。 派生類構造函數的一般格式如下: ():, (子對象名)() ;,返回,3.2.3 虛基類,引進虛基類的目的是為了解決二義性問題,其說明格式如下: virtual,返回,3.3 多態和虛函數,多態性是面向對象程序設計的重要特性之一,它與前面講過的封裝性和繼承性構成了面向對象程序設計的三大特性。這三大特性是相互關聯的,封裝性是基礎,繼承性是關鍵,多態性是補充,而多態性又必須存在于繼承的環境之中。 所謂多態性是指發出同樣的消息被不同類型的對象接收時導致完全不同的行為。這里所說的消息主要是指對類的成員函數的調用,而不同的行為是指不同的實現。利用多態性,用戶只需要發送一般形式的消息,而將所有的實現留給接收消息的對象。對象根據所接收到的消息而做出相應的動作(即操作)。 函數重載和運算符重載是簡單的多態性。重要的多態性是建立在虛函數的概念和方法基礎上的。,3.4 上 機 指 導,在本次上機指導中,針對前面幾節中的內容進行實際上機練習。其主要內容包括:類和對象使用、派生類的使用、類的多態性編程以及模板類和模板函數編程等。 3.4.1 類和對象編程實例 3.4.2 派生類編程實例 3.4.3 類的多態編程實例 3.4.4 模板類和模板函數編程實例,第4章 Windows程序設計,教學提示:本章說明了Windows應用程序的特點,即用戶圖形界面、硬件無關特性及消息驅動機制,介紹了Visual C+ .NET的MFC類及如何應用Visual C+ .NET開發Windows程序。,教學目標:熟悉Windows應用程序的特點及流程,特別是消息驅動機制,了解MFC的基本概念,掌握應用Visual C+ .NET開發Windows程序的方法。,4.1 Windows程序設計基礎,Windows操作系統是由Microsoft推出的基于PC的圖形操作系統。Windows應用程序具有下列幾個特點:一是它的標準用戶圖形界面窗口;二是應用程序與硬件的無關特性;三是所有的Windows應用程序都是采用消息驅動機制。應用程序的設備無關性將在第10章中進行介紹,本章簡單介紹一下窗口和消息的概念。 4.1.1 Windows窗口的概念 4.1.2 Windows程序的消息響應機制 4.1.3 Windows程序流程,4.1.1 Windows窗口的概念,1. Windows API 2. Windows窗口,返回,1. Windows API,Windows應用程序是通過在應用程序中調用Windows API實現的。Windows API是Windows操作系統提供的應用程序編程接口,包括幾百個函數加上數據常量、宏、結構以及許多其他項。大多數API在Windows.h頭文件中定義。Windows 95以上的操作系統都是32位的,因此在目前常用的Windows中都使用Win32 API。,返回,2. Windows窗口,“窗口”是Windows操作系統標準的圖形界面,一個典型的窗口如圖4.1所示。應用程序在創建某個類型的窗口前,必須首先注冊該“窗口類”(Windows Class)。注冊時把窗口過程、窗口類型以及其他類型信息和要登記的窗口類關聯起來。應用程序接著通過調用Windows API來創建窗口。創建一個窗口實際調用的函數需要下列參數:屏幕位置、窗口大小以及即將創建的窗口風格。,返回,圖4.1 一個典型的窗口,返回,4.1.2 Windows程序的消息響應機制,Windows程序與其他類型程序的不同點就是消息。例如DOS程序,要等待(有時也稱為檢測)可能的輸入,如鍵盤或鼠標,如果程序檢測不到鼠標,就不會對鼠標的動作做出相應的反應。而在Windows程序中以消息作為媒介,在操作系統中用消息來告訴應用程序有情況發生了。例如,用戶按下了某個鍵,單擊或移動了鼠標、打印機可用了等等。一個窗口(每一個元素都是一個窗口)也可以發送消息給另一個窗口,大多數窗口對消息的反應是發送一條略微不同的消息給另外一個窗口。,返回,4.1.3 Windows程序流程,用Windows平臺軟件開發工具包(SDK)的Win32 API編寫各種Windows 應用程序,有其共同的規律:首先是編寫WinMain函數,編寫處理消息和事件的窗口過程WndProc,在WinMain里頭注冊窗口(Register Window),創建窗口,然后開始應用程序的消息循環。,返回,4.2 怎樣用Visual C+ .NET設計Windows程序,在Visual C+ .NET中,開發Windows應用程序有以下幾種方法: 直接調用Windows環境提供的Win32 API函數來編寫Windows應用程序。實際上該方法適用于任何Windows環境下的C/C+語言編程。 使用MFC類庫和活動模板庫(ATL)直接編寫Windows應用程序。 既使用MFC類庫和ATL,也使用向導(Wizard)來編寫Windows應用程序。在這種情況下用MFC應用程序、MFC ActiveX控件等向導來生成Windows應用程序的基本源文件,然后在程序框架的基礎上建立應用程序的類和消息處理代碼并定義控件的屬性、事件和方法,最后把各應用程序所要求的功能添加到程序中。 使用C+托管擴展程序編寫Windows應用程序。這是基于通用語言運行時環境的Windows應用程序。 其實,不管程序使用何種開發方式編寫Windows應用程序,最終都要調用到Windows API,因此,大家一起來看看在Visual C+ .NET中如何用Win32 API編寫Windows程序,以進一步了解Windows程序的流程。,4.3 Visual C+ .NET的基礎類庫(MFC)介紹,4.3.1 MFC庫簡介 4.3.2 MFC中的常用類 4.3.3 MFC中類的消息機制 4.3.4 MFC的程序流程,4.3.1 MFC庫簡介,Windows程序與其他類型程序的不同點就是消息。例如DOS程序,要等待(有時也稱為檢測)可能的輸入,如鍵盤或鼠標,如果程序檢測不到鼠標,就不會對鼠標的動作做出相應的反應。而在Windows程序中以消息作為媒介,在操作系統中用消息來告訴應用程序有情況發生了。例如,用戶按下了某個鍵,單擊或移動了鼠標、打印機可用了等等。一個窗口(每一個元素都是一個窗口)也可以發送消息給另一個窗口,大多數窗口對消息的反應是發送一條略微不同的消息給另外一個窗口。,返回,4.3.2 MFC中的常用類,用Windows平臺軟件開發工具包(SDK)的Win32 API編寫各種Windows應用程序,有其共同的規律:首先是編寫WinMain函數,編寫處理消息和事件的窗口過程WndProc,在WinMain里頭注冊窗口(Register Window),創建窗口,然后開始應用程序的消息循環。,返回,4.3.3 MFC中類的消息機制,Windows程序與其他類型程序的不同點就是消息。例如DOS程序,要等待(有時也稱為檢測)可能的輸入,如鍵盤或鼠標,如果程序檢測不到鼠標,就不會對鼠標的動作做出相應的反應。而在Windows程序中以消息作為媒介,在操作系統中用消息來告訴應用程序有情況發生了。例如,用戶按下了某個鍵,單擊或移動了鼠標、打印機可用了等等。一個窗口(每一個元素都是一個窗口)也可以發送消息給另一個窗口,大多數窗口對消息的反應是發送一條略微不同的消息給另外一個窗口。,返回,4.3.4 MFC的程序流程,用Windows平臺軟件開發工具包(SDK)的Win32 API編寫各種Windows 應用程序 , 有其共同的規律:首先是編寫WinMain函數,編寫處理消息和事件的窗口過程WndProc,在WinMain里頭注冊窗口(Register Window),創建窗口,然后開始應用程序的消息循環。,返回,4.4 上 機 指 導,下面提供一個HELLOAPP示例,該示例定義了應用程序類的派生類和窗體的派生類,用很少幾行代碼在屏幕上顯示一個窗口。 同任何用MFC編寫的應用程序一樣,HELLOAPP也包含一個從應用程序類派生的類 。此應用程序類提供

溫馨提示

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

評論

0/150

提交評論