C#-程序設計教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集_第1頁
C#-程序設計教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集_第2頁
C#-程序設計教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集_第3頁
C#-程序設計教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集_第4頁
C#-程序設計教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集_第5頁
已閱讀5頁,還剩187頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 C# 程序設計 第1章 C# 2.0開發(fā)環(huán)境1.1.1 .NET Framework 2.0簡介 一個建立、配置和運行web服務以及應用程序的多語言環(huán)境,是Microsoft的新一代web應用程序開發(fā)平臺,它包含以下三個主要部分 :公共語言運行時環(huán)境(common language runtime, CLR)框架類庫(Framework Class Library,FCL) ASP.NET1.1.2 C#介紹C#是一種面向對象的編程語言,是從C和C+派生出來的一種簡單、現(xiàn)代、面向對象和類型安全的編程語言,其語言體系都構建在.NET框架上,并且能夠與.NET框架完美結合。優(yōu)勢:快速應用開發(fā)(R

2、AD)功能語言的自由性強大的Web服務端組件支持跨平臺與XML的融合對C+的繼承1.2 VS 2008集成開發(fā)環(huán)境集成開發(fā)環(huán)境(簡稱IDE Integrated Development Environment )是用于提供程序開發(fā)環(huán)境的應用程序,主要包括代碼編輯器、編譯器、調試器和圖形用戶界面工具,為用戶提供了一個完全的編程環(huán)境。Visual Studio2008是微軟公司出品的一款大型應用軟件,是.NET開發(fā)的首選工具,其中C#是使用最廣發(fā)的開發(fā)語言,方便用戶快速有效的建立應用程序。1.2.1 安裝環(huán)境要求系統(tǒng)配置要求:處理器:最低1.6GHZ,推薦2.2GHZ或以上。內存:最低384MB(

3、Vista最低768MB),推薦1GB或以上。硬盤:最低5400RPM,推薦7200RPM或更高轉速,Visual Studio 2008安裝最小需要1.22GB的可用硬盤空間,完全安裝需要大概4GB的可用硬盤空間?,F(xiàn)實設備:最低1024*768,推薦1280*1024或以上的分辨率。操作系統(tǒng):建議使用Windows XP或更新版本操作系統(tǒng)。1.2.2 軟件安裝步驟(1)首先購買Visual Studio 2008的安裝光盤,也可以下載Visual Studio 2008安裝軟件,網上有很多下載地址。將Visual Studio 2008安裝光盤放入DVD光驅,屏幕將彈出圖1-1所示的窗體。1

4、.2.2 軟件安裝步驟(續(xù))(2)單擊第1項“安裝Visual Studio 2008”鏈接,進入下一步安裝,如圖1-2所示,用戶此時可以根據(jù)自己意愿選擇是否參加微軟幫助改進安裝活動。1.2.2 軟件安裝步驟(續(xù))(3)單擊“下一步”,彈出如圖1-3所示的窗體。這個窗體中包含用戶許可協(xié)議,用戶必須接受許可協(xié)議中的條款才可繼續(xù)安裝,且用戶需在制定的文本框中輸入產品的密鑰。1.2.2 軟件安裝步驟(續(xù))(4)單擊“下一步”按鈕,進入如圖1-4所示的窗體,用戶此時可以根據(jù)自己的需求選擇“默認值”、“完全”或“自定義”模式安裝組件。如果硬盤空間足夠,建議用戶完全安裝。此處允許用戶選擇更改安裝路徑,Vi

5、sual Studio 2008的默認安裝路徑為“C:Program FilesMicrosoft Visual Studio9.0”。1.2.2 軟件安裝步驟(續(xù))(5)完成設置,單擊“安裝”按鈕,開始安裝,安裝軟件將進入一個漫長的安裝過程,如圖1-5所示。1.2.2 軟件安裝步驟(續(xù))(6)安裝完成后顯示安裝成功的窗體,如圖1-6示,重新啟動電腦,安裝結束。1.2.3 VS 2008基本功能簡介(1) 菜單欄在標題欄下的水平欄,包含:文件、編輯、查看等7個菜單 (2) 工具欄為了操作更方便、快捷,常用的菜單命令按功能分組,被分別放入相應的工具欄中,方便開發(fā)人員的使用 (3) 工具箱面板工具

6、箱是Visual Studio 2008的重要工具,它提供了進行Windows窗體應用程序開發(fā)所必需的控件,通過工具箱開發(fā)人員可以方便地進行可視化的窗體設計,簡化了程序設計的工作量,提高了工作效率。 1.2.3 VS 2008基本功能簡介(續(xù))(4) “屬性”面板“屬性”面板是Visual Studio 2008的一個非常有用的工具。該面板為Widows窗體應用程序的開封提供了簡單的屬性修改方式,還提供了事件的管理功能,可以管理控件事件,方便編程時對事件的處理。如圖1-11所示。 (5) 代碼編輯器代碼編輯器提供了強大的代碼編輯功能,它提供了自動換行、漸進式搜索、代碼的大綱顯示等新功能,窗體如

7、圖1-12所示。1.2.3 VS 2008基本功能簡介(續(xù))(6) “錯誤列表”面板編寫程序代碼、編譯程序和運行程序過程中發(fā)現(xiàn)的錯誤都會顯示到“錯誤列表”面板中。在開發(fā)過程中,“錯誤列表”面板會提示錯誤信息,方便開發(fā)人員可以從及時發(fā)現(xiàn)錯誤并修改錯誤。(7) “輸出”面板“輸出”用于提示項目的生成情況。 1.3 命名空間 “命名空間”,也稱“名稱空間”,是 VS.NET中的各種語言使用的一種代碼組織的形式,通過名稱空間來分類,區(qū)別不同的代碼功能,是解決命名沖突的主要途徑。命名空間是數(shù)據(jù)類型的一種組合方式,但在命名空間中所有數(shù)據(jù)類型的名稱都會自動加上該命名空間的名字作為其前綴。命名空間還可以相互嵌

8、套。例如,大多數(shù)用于一般目的的.NET基類位于命名空間System中,基類Array在這個命名空間中,所以其全名是System.Array。.NET需要在命名空間中定義所有的類型,例如,可以把Customer類放在命名空間YourCompanyName中,則這個類的全名就是YourCompanyName.Customer。 1.4 創(chuàng)建第一個C#項目1.4.1 第一個控制臺應用程序.NET可以實現(xiàn)多種應用程序開發(fā),包括控制臺應用程序、Windows窗體應用程序、WPF應用程序、WCF服務應用程序等。創(chuàng)建步驟:(1)選擇“文件”“新建”“項目”命令,彈出“新建項目”的窗口。1.4.1 第一個控制

9、臺應用程序(續(xù))(2)在“新建項目”窗口中,先選擇左邊“項目類型”列表框“Visual C#”選項,然后選擇右邊“模板”列表框“控制臺應用程序”選項。在下方,需要輸入項目名稱“HelloWorld”,選擇項目保存位置。(3)單擊“確定”按鈕,Visual Studio 2008自動生成應用程序。1.4.1 第一個控制臺應用程序(續(xù))(4)編寫程序代碼,在Main()函數(shù)中加入一行代碼,用于顯示“Hello World”。static void Main(string args) Console.Write(Hello World);/用于顯示“Hello World”字符串 (5)最后運行程序

10、。選擇“調試”“啟動調試(或按F5)”,也可以選擇“調試”“開始執(zhí)行(或按Ctrl+F5)”運行程序。1.4.2 第一個Windows窗體應用程序Windows窗體應用程序就是Windows圖形界面應用程序,它能通過窗體和對話框完成于計算機用戶的信息交互,并實現(xiàn)一系列的功能。 開發(fā)步驟:(1) 選擇“文件”“新建”“項目”命令,彈出“新建項目”的窗口,在“新建項目”窗口中,先選擇左邊“項目類型”列表框“Visual C#”選項,然后選擇右邊“模板”列表框“Windows窗體應用程序”選項。在下方,需要輸入項目名稱“Welcome”,選擇項目保存位置,單擊“確定”按鈕。1.4.2 第一個Wind

11、ows窗體應用程序(續(xù))(2)查看“解決方案資源管理器”窗口,如圖所示。在文件“Form1.cs”上單擊右鍵,選擇“重命名”,將其改名為“Welcome.cs”。(3)查看主窗口,里面自動生成一個名為“Form1”的窗體,然后單擊右側“屬性”窗口,該窗口如圖1-20所示,修改Name屬性為“Welcome”,修改Text屬性為“Welcome”。 1.4.2 第一個Windows窗體應用程序(續(xù))(4)單擊主窗口左側的“工具箱”窗口,出現(xiàn)一些Windows控件。(5)雙擊“Label”控件,或者單擊后按住左鍵將其拖至主窗口的窗體中,并設置“Lable”控件的屬性。(6)雙擊“Button”控件

12、,或者單擊后按住左鍵將其拖至主窗口的窗體中,并設置“Button”控件的屬性。NamelbtnShowText顯示NamelblDisplayText空BackColorWindow1.4.2 第一個Windows窗體應用程序(續(xù))(7)雙擊“顯示”按鈕,將進入代碼窗口,可以看到VS.NET已經自動生成了很多代碼。進入代碼窗口后,光標自動位于方法“btnShow_Click()”內部,在光標處添加如下代碼:this.lblDisplay.Text = Welcome to C#!;(8)選擇“調試”“開始執(zhí)行(不調試)”菜單項,或者使用快捷鍵“CTRL+F5”運行程序,單擊“顯示”按鈕,在標簽

13、中就會出現(xiàn)如圖所示的結果。 1.5 MSDNMSDN 的全稱是 Microsoft Developer Network,是微軟公司面向軟件開發(fā)者的一種信息服務,是開發(fā)人員不可缺少的工具。MSDN 實際上是一個以 Visual Studio 和 Windows 平臺為核心整合的開發(fā)虛擬社區(qū),包括技術文檔、在線電子教程、網絡虛擬實驗室、微軟產品下載等等一系列服務,它涵蓋了所有的可以被開發(fā)擴充的平臺和應用程序,作為一個學習者,更應該學會使用MSDN。MSDN的基本使用(1) 目錄瀏覽單擊工具欄“目錄”按鈕,可以在主界面左側,可以讓用戶快速的對MSDN的結構有一個大概的了解,為用戶使用MSDN起到導航

14、的作用。(2) 索引快速訪問單擊工具欄“索引”按鈕,可以在主界面的左側 “索引”面板。用戶可以在“查詢”文本框中輸入所要查詢的內容并回車,MSDN將自動搜索最匹配的技術文檔,供用戶閱讀。(3) 搜索MSDN文檔庫MSDN還為用戶提供了一種強大的搜索功能,可以提供對本地幫助、MSDN Online、Codezone社區(qū)等許多文檔庫的詳細搜索。單擊工具欄中的搜索按鈕,并在文本框中輸入搜索的內容提要,并回車,搜索的結果將以概要方式呈現(xiàn)在主界面中,用戶可以根據(jù)自己的需要選擇不同的文檔進行閱讀。第2章 C#程序設計基礎2.1 C#語句語句是構成程序的主要組成部分,編寫任何程序都必須以語句為單位構成的。所

15、謂語句,其實就是構造所有C#程序的過程構造塊。 C#語句可以分為5大類,分別是:1. 控制語句,能 完成一定的控制功能,C#提供了9種控制語句。2.方法調用語句,由一次函數(shù)調用加一 個分號構成一個語句3. 表達式語句,由一個表達式構成一個語句4.空語句,是由一個分號組成,不進行任何操作5. 代碼塊,是可以用 把一些語句括起來成為復合語句2.2 關鍵字與標識符C#語言主要由關鍵字、標識符、運算符等元素組成。這幾種元素有著不同的語法含義和組成規(guī)則,它們之間相互配合,共同完成C#的語義表達。 2.2.1關鍵字關鍵字也被稱為保留字,是C#語言本身使用的標識符,它有特定的語法含義,所有的C#關鍵字不用做

16、標識符,其常見的關鍵字如右所示。2.2.2 標識符標識符是對程序中的各個元素(如變量、常量、方法等)加以命名時使用的命名記號。在C#語言中,標識符是一個字符序列,它有特定的命名規(guī)則:標識符必須以字母、下劃線“_”或者“”開頭,后面的字符可以是字母、下劃線或數(shù)字,不能包含空格、標點符號、運算符等其他符號;標識符不能命名為C#的關鍵字;標識符不能命名為C#的庫函數(shù)。(1)變量1.數(shù)據(jù)類型數(shù)值型:byte、short、int和long浮點型:float和double字符型:char布爾型:bool數(shù)值類型C# 數(shù)據(jù)類型大小默認值 示例sbyte (byte)有(無)符號的 8 位整數(shù) 0byte g

17、pa = 2;short (ushort)有(無)符號的 16 位整數(shù) 0short salary = 3400;int (uint)有(無)符號的 32 位整數(shù) 0int rating = 20;long (ulong)有(無)符號的 64 位整數(shù) 0Llong population = 23451900;float32 位浮點數(shù),精確到小數(shù)點后 7 位 0.0Ffloat temperature = 40.6F;double雙精度浮點型,15或16個有效數(shù)字 0.0double temperature = 40.6;decimal 28個有效數(shù)字的精確小數(shù)型 0.0decimal temp

18、erature = 40.6變量(續(xù))2.變量聲明在C#中,使用變量之前必須聲明。變量聲明的語法規(guī)則如下:type identifier=value,identifier=value;聲明多個同類型的變量,可以用逗號隔開。變量的兩種方式賦值:使用賦值運算符 (=)給變量i賦值,例如:int i;i = 10;聲明變量,并初始化它的值,例如:int i=10;變量(續(xù))3.變量的類型在C#語言中,把變量分成3種類型,它們有各自的特點。實例變量:是不帶任何關鍵字的變量,例如:int i。實例變量在其所在的方法調用結束后,其數(shù)據(jù)會被清除掉,所占的內存空間也會被釋放。靜態(tài)變量:是使用了“static”

19、關鍵字修飾的變量,例如:static int i。靜態(tài)變量在函數(shù)調用結束仍保留變量值,直到程序結束前一直存在。另外,靜態(tài)變量不在類的方法中定義,因為這沒有意義。局部變量:是指一個獨立的代碼塊中聲明的變量,只有在這個代碼塊中有效,一旦離開這個作用域,將不再存在。(2)常量常量的聲明和變量類似,需要指定數(shù)據(jù)類型、常量名、初始值,并需要使用關鍵字const,常量聲明的語法規(guī)則如下:const typeidentifier=value;2.3 運算符與表達式1.一元運算符一元運算符就是運算和一個變量就可構成一個表達式。C#的一元運算符包括自增運算符(+)和自減運算符(-)。自增運算符(+)是操作數(shù)加1

20、,自減運算符(-)是操作數(shù)減1。2.二元運算符二元運算符需要兩個操作數(shù)的參與,常見的二元運算符算術運算符:加(+)、減(-)、乘(*)、除(/)和取模運算符(%) 邏輯運算符:表示操作數(shù)的邏輯關系,其運算結果用布爾值表示。常見的邏輯運算符有、=、=、!=、&、|、!。位運算符:用來對數(shù)據(jù)按二進制位進行運算的操作符,其運算符包括與(&)、或(|)、異或()、非()、左移() 3.三元運算符三元運算符(?:)也叫做條件運算符,它需要三個操作數(shù)。該運算符的一般形式為:exp1?exp2:exp3;其中exp1、exp2、exp3是表達式,首先計算exp1,如果結果為真,則將exp2的運算結果作為整個

21、表達式的結果;如果結果為假,則將exp3的運算結果作為整個表達式的結果。4.其他簡化運算符+=、-=、*=、/=、%=、&=、|=、=、=運算符的優(yōu)先級 表達式 表達式是可以結算且結果為單個值、對象、方法或命名空間的代碼片段。表達式可以使用運算符和參數(shù)構成符號C#規(guī)則的式子,而參數(shù)又可以是由其他運算符與參數(shù)構成的表達式組成,因此表達式可以很簡單,也可以很復雜。在編寫程序時,不同參數(shù)的數(shù)據(jù)類型可能不同,在C#中,這種進行數(shù)據(jù)統(tǒng)一的方法叫做轉化。轉換是可以把一個表達式的編譯時類型當作另一種編譯時類型處理。轉化有隱式的或顯式的。隱式轉換時,系統(tǒng)將按照數(shù)據(jù)類型的表示范圍由小到大的轉換原則自動進行。數(shù)據(jù)

22、類型的表示范圍由小到大的順序依次為:小大,即byteshortcharintlongfloatdouble;顯式轉化正好相反,當數(shù)據(jù)類型的標識范圍由大到小的順序時,必須采用顯式轉化,否則編譯器會報錯。 2.4 枚舉與結構public class Holiday public enum WeekDays Monday,Tuesday,Wednesday,Thursday,Friday public void GetWeekDays (String EmpName, WeekDays DayOff) /處理工作日 static void Main() Holiday myHoliday = new

23、 Holiday(); myHoliday.GetWeekDays (Richie, Holiday.WeekDays.Wednesday); 1.枚舉(Enum,Enumerator 的縮寫)是一組已命名的數(shù)值常量 ,用于定義具有一組特定值的數(shù)據(jù)類型,以 enum 關鍵字聲明:Wednesday = 2枚舉(續(xù))C# 中的枚舉包含與值關聯(lián)的數(shù)字 默認情況下,將 0 值賦給枚舉的第一個元素,然后對每個后續(xù)的枚舉元素按 1 遞增在初始化過程中可重寫默認值枚舉不能定義自己的方法、屬性或事件,枚舉不能實現(xiàn)接口。public enum WeekDaysMonday=1,Tuesday=2,Wednes

24、day=3,Thursday=4,Friday=52.結構結構是幾個數(shù)據(jù)組成的數(shù)據(jù)結構,它可以包含方法。 結構聲明的語法規(guī)則如下:訪問修飾符 struct 結構名 :實現(xiàn)的接口 結構體 ;其中,內容是可選的,訪問修飾符可以是public、private等關鍵字。結構體的類型可以相同,也可以不同,甚至可以是其他的結構類型。結構(續(xù)) 定義: struct Point_self short x,y; struct RectArea Point_self LeftTop; Point_self RightBottoms; public void Drawing() 引用分量 p1.x=5; p1.y

25、=10; p2.x=p1.x; p2.y=p1.y+5; 說明職員信息的結構2.5 數(shù)組與集合1.數(shù)組一維數(shù)組:說明:int MyIntArray; Point MyPointArray; 創(chuàng)建:int MyIntArray=new int5; Point MyPointArray= new PointarraySize;初始化: String MyFreandPhone= “0288540233”,”02885412222”,”01088774563”; 訪問數(shù)組的元素 :從0開始 MyIntArray1=10 Console.writeline(MyFreandPhon1); 多維數(shù)組:多

26、維數(shù)組說明: int, MyMatrix; int, My3Darray;多維數(shù)組創(chuàng)建:設 Length ,width 是常量 int, MyMatrix= new intlength, width;多維數(shù)組初始化: int, MyMatrix=1,2,3,4,4,3,2,1,9,8,7,6;多維數(shù)組元素引用: MyMatrix2,3 3行4列的元素 數(shù)組(續(xù))2.數(shù)組運算: 數(shù)組元素的遍歷:是指全部訪問數(shù)組中的元素一次且僅一次,C#提供了foreach語句以實現(xiàn)數(shù)組的遍歷功能,使用foreach語句可以訪問數(shù)組中的每個元素而不需要知道每個元素的下標。查找數(shù)組元素:在數(shù)組中查找元素,可以有兩種

27、結果,一是從整個數(shù)組中尋找與給定值相同的元素,二是判斷數(shù)組中是否含有與給定值相同的元素。最常用查找方法有:順序檢索、二分檢索、使用System.Array.IndexOf方法檢索。數(shù)組排序:將數(shù)組中的元素值按遞增或遞減的次序排列。數(shù)組排序的算法有很多,常用的有選擇法、冒泡法、插入法、合并排序等。數(shù)組中元素的插入和刪除 ;集合集合是指一組類似的對象, C#提供了強大的集合操作能力。集合類似于數(shù)組,但是可以用筆數(shù)組更靈活、更有效的方式處理集合中的數(shù)據(jù)項。 1. 一般集合一般集合是常見的集合數(shù)據(jù)結構,包括以下幾種:列表(ArrayList):一個一維的動態(tài)數(shù)組,可以裝載一組相似的數(shù)據(jù)元素;隊列(Qu

28、ene):先進先出的列表;堆棧(Stack):先進后出的列表;哈希表(Hashtable):集合中的每個元素都是一個對的列表;字典(DictionaryEntry):一個對。集合(續(xù))2.常見集合操作列表(ArrayList) :C#提供了實現(xiàn)列表(ArrayList)的常用屬性和方法,其說明如下所示:Capacity:獲取或設置ArrayList可包含的元素數(shù)Count:獲取ArrayList中實際包含的元素數(shù)Item:獲取或限制指定索引處的元素Add/AddRange:將對象添加到ArrayList的結尾處Clear:從ArrayList中移除所有元素Index/IndexRange:將元

29、素插入ArrayList的指定索引處Remove/RemoveRange:從ArrayList中移除特定對象Sort:對ArrayList或其中一部分的元素進行排序隊列(Queue):C#提供了實現(xiàn)隊列(Queue)的常用屬性和方法,其說明如下所示:Count:獲取Queue中實際包含的元素數(shù)Clear:從Queue中移除所有元素Enqueue:入隊操作Dequeue:出隊操作堆棧(Stack):C#提供了實現(xiàn)堆棧(Stack)的常用屬性和方法,其說明如下所示:Count:獲取Stack中實際包含的元素數(shù)Clear:從Stack中移除所有元素Push:入棧操作Pop:出棧操作第3章 程序控制結

30、構重點內容了解順序結構理解與應用if和switch分支選擇語句理解與應用while、do-while和for循環(huán)語句理解與應用break和continue控制轉向語句3.1 順序結構順序結構就是各語句按出現(xiàn)的先后次序執(zhí)行。程序的執(zhí)行過程是:先執(zhí)行語句A,然后執(zhí)行語句B,最后執(zhí)行語句C。3.2 分支選擇結構分支結構,顧名思義,是指程序進入分支結構后,面臨走哪一條路、執(zhí)行哪一條分支的選擇。選擇是通過對某一個條件進行測試后做出的,條件往往由關系或邏輯表達式來描述。if語句1. 簡單if語句簡單if語句只在條件為真時執(zhí)行一個分支,當條件為假時不做任何操作,其語法規(guī)則如下:if(布爾表達式)語句(組)其

31、執(zhí)行的流程右圖所示。2. if-else語句當指定布爾表達式為真時執(zhí)行一個分支,當條件為假時執(zhí)行另一個分支,其語法規(guī)則如下:if(布爾表達式)語句(組)else語句(組)其執(zhí)行的流程右圖所示。if語句(續(xù))3. 嵌套if語句if語句中包含其他if語句,則內層的if語句嵌套在外層if語句中。內層if語句又可以包含其他的if語句,這種嵌套的深度沒有限制,其語法規(guī)則如下:if(布爾表達式1)語句(組)else if(布爾表達式2)語句(組)else語句(組)其執(zhí)行的流程圖右圖所示。嵌套if語句可以實現(xiàn)多重選擇,但是使用嵌套if語句時,太多層的if語句容易引起混亂,而且一定要注意if與else的匹配。

32、【例4-6】求分段函數(shù)的值。設有一個數(shù)學函數(shù)的表達式為:程序流程如圖所示。開始輸入變量x輸出結果x0?y1結束YesNoX0?y0y1YesNoswitch語句 witch語句實現(xiàn)多重條件選擇,其語法規(guī)則如下:switch(表達式)case 表達式值1:語句塊1;break;case 表達式值2:語句塊2;break;default:語句塊;break;其中,每個可能的分支都對應著一個case語句,switch判斷表達式的值符合哪一個case語句中的表達式值,就執(zhí)行這個case語句對應的分支,其執(zhí)行的流程圖所示。switch語句(續(xù))使用switch語句必須注意以下規(guī)則:表達式必須能計算出一個

33、char、byte、short或int型值;switch表達式的值與case表達式值必須是相同的數(shù)據(jù)類型;關鍵字break語句是可選的,編寫break語句可以避免編程錯誤,提高代碼的可維護性;關鍵字default語句是可選的。3.3 循環(huán)結構當程序需要不停執(zhí)行某種功能,直到達到某種條件才停止,可以采用循環(huán)結構實現(xiàn)。循環(huán)中要重復執(zhí)行的語句塊稱為循環(huán)體,每個循環(huán)包含一個循環(huán)條件,它是控制循環(huán)體執(zhí)行的布爾表達式,每循環(huán)一次后都要重新計算循環(huán)條件。若條件為真,重復執(zhí)行循環(huán)體,若條件為假,終止循環(huán)。C#提供了4種循環(huán)語句:for循環(huán)語句、while循環(huán)語句、do-while循環(huán)語句和foreach循環(huán)語

34、句。for循環(huán)語句 for循環(huán)語句是最常見的一種循環(huán)結構,一般情況下,它使用一個變量來控制循環(huán)體的執(zhí)行次數(shù)和終止條件,其語法規(guī)則如下:for(初始化操作;循環(huán)條件;每次循環(huán)后的操作)語句塊; /循環(huán)體for語句小括號中的初始化操作、循環(huán)條件和每次循環(huán)后的操作都是用分號隔開,通常初始化操作初始化循環(huán)條件中的變量,每次循環(huán)后的操作增加或減少這個變量,而循環(huán)條件檢驗這個變量是否達到終止值,其執(zhí)行的流程如圖所示。while循環(huán)語句 while循環(huán)語句是另一種常用的循環(huán)結構,它對于循環(huán)次數(shù)有限但又不知道具體次數(shù)的情況相當有效,其語法規(guī)則如下。while(循環(huán)條件)語句塊; /循環(huán)體while循環(huán)語句的功

35、能是:當給定的循環(huán)條件為真時,執(zhí)行循環(huán)體,當給定的循環(huán)條件為假時,則終止循環(huán)。while循環(huán)語句不用知道循環(huán)體的循環(huán)次數(shù),相比if循環(huán)語句更加靈活,其程序流程如圖所示。使用while循環(huán)語句時,應該注意以下規(guī)則:while循環(huán)語句先對循環(huán)條件進行計算,然后才決定是否執(zhí)行循環(huán)體,只有在循環(huán)條件為真時才執(zhí)行循環(huán)體。如果條件從開始就不成立,則一次循環(huán)體也不執(zhí)行;當循環(huán)條件第一次出現(xiàn)為假時,循環(huán)才能終止。do-while循環(huán)語句 do-while循環(huán)語句是while循環(huán)語句的變體,它跟while循環(huán)語句類似,當循環(huán)條件為真時,循環(huán)體就會不斷地重復執(zhí)行,當循環(huán)條件為假時,則終止循環(huán)、退出循環(huán)語句,其語法

36、規(guī)則如下:do語句塊; /循環(huán)體while(表達式);do-while循環(huán)語句是先執(zhí)行循環(huán)體后進行循環(huán)條件判斷,所以do-while循環(huán)語句至少執(zhí)行一次循環(huán)體,其程序流程如圖所示。 foreach循環(huán)語句 foreach循環(huán)語句是一條新語句,該語句為數(shù)組或對象集合中的每個元素重復一個嵌入語句組,它用于循環(huán)訪問集合以獲取所需信息,但不應用于更改集合內容以避免產生不可預知的副作用其語法規(guī)則如下:foreach(類型 變量名 in 集合對象)語句塊; /循環(huán)體嵌入語句為數(shù)組或集合中的每一個元素繼續(xù)執(zhí)行。當集合中的所有元素完成循環(huán)后,終止并退出循環(huán)。常用算法 累加、連乘在循環(huán)結構中,最常用的算法時累加

37、和連乘。累加是在原有的基礎上一次一次地每次加一個數(shù);連乘則是在原有乘的基礎上一次一次地每次乘以一個數(shù)?!纠?.7】求自然對數(shù)e的近似值,要求其誤差小于0.00001,近似公式為e=1+1/1!+1/2!+1/3!+1/n!。 (程序見教材例3.7)2.求素數(shù)素數(shù),又稱為質數(shù),是一個大于2的整數(shù),并且只能被1和本身整除,而不能被其他整數(shù)整除的數(shù)。判別某數(shù)n是否為素數(shù)的方法很多,最簡單的是從素數(shù)的定義求解,其算法思想是:對于m從i=2,3,n-1判別n能否被i整除,只要有一個能整除,n不是素數(shù);否則n是素數(shù)?!纠?.8】求1000以內的素數(shù)。(程序見教材例3.8)3.4 控制轉向的語句C#為程序控

38、制結構提供了4種不同的控制跳轉語句:break、continue、return和共同語句。在前面的循環(huán)結構中,為了提供程序效率,需要強制跳出循環(huán),就必須使用控制跳轉語句。break語句break語句是用于立刻終止語句的執(zhí)行。在循環(huán)語句中,break語句用于包含它的最內層循環(huán)。同樣地,它還可以用于中斷if語句和switch語句。當程序執(zhí)行到break語句,程序跳轉到北終止執(zhí)行的語句后,其語法規(guī)則如下:break;continue語句continue語句與break語句一樣,可以實現(xiàn)跳轉。當程序遇到continue語句后,結束當前進行的這次循環(huán),將程序控制轉移到循環(huán)體尾部,以便進行下一次循環(huán)條件判

39、斷。continue語句與break語句的區(qū)別是,break語句終止整個循環(huán)的執(zhí)行,而continue語句只終止當前這一次循環(huán)的執(zhí)行,其他的循環(huán)可以繼續(xù)進行,其語法規(guī)則如下:continue;return語句return語句是終止包含它的方法的執(zhí)行,并將控制返回到主調函數(shù)繼續(xù)執(zhí)行,它返回時可附帶一個可選值。如果方法為void類型,則可以省略return語句,其語法規(guī)則如下:return;goto語句goto語句屬于無條件跳轉語句,C#語言支持代碼行加上標簽,這樣就可使用goto語句直接跳轉到標簽代表的語句上。goto語句一個好處就是可以保證程序存在唯一的出口,避免了過于龐大的if嵌套,但是由于

40、它是無條件跳轉,可讀性差,所以建議只用在多重循環(huán)的跳出,其它情況盡量不用,其語法規(guī)則如下:goto 標簽;goto語句(續(xù))【例4-10】goto語句的簡單應用。using System;class Program static void Main(string args) goto h; w:Console .WriteLine (world!); return ; h:Console .Write (hello ); goto w; 程序的運行效果如圖所示常用算法實例1.窮舉算法窮舉也稱為枚舉,是最常用的算法之一,它的基本思想是一一列舉各種可能進行測試,從中找出符合條件的解。計算機能夠實現(xiàn)

41、高速運算,是由于它借助于循環(huán)結構實現(xiàn)窮舉,它比人工操作更為有效?!纠?.9】用窮舉算法,在5行中顯示自然數(shù)中的前50個素數(shù),并按一行十個素數(shù)輸出。namespace _3._9 class Program static void Main(string args) int count = 0, number = 2; bool isPrime = true; Console.WriteLine(自然數(shù)中前50個素數(shù)列表為:); while (count 50) isPrime = true; /判斷是否為素數(shù) for (int j = 2; j = (int)(Math.Sqrt(number

42、); j+)/減小窮舉的規(guī)模 if (number % j = 0) isPrime = false; break; if (isPrime=true) count = count +1; if (count % 10 = 0) Console.WriteLine(number); else Console.Write(number + ); number+; 程序運行結果如圖所示。常用算法實例(續(xù))2.迭代算法迭代就是不斷由已知值推出新值,直到求解為止。顯然,迭代算法是利用計算機的高速運算能力和循環(huán)程序來實現(xiàn)的。一般來說迭代由3個環(huán)節(jié)組成:迭代初始值迭代公式迭代終止條件【例3.10】用迭代算

43、法計算:20+21+22+263。namespace _3._10 class Program static void Main(string args) float t = 1, s = 0;/迭代初始條件 for (int i = 0; i “逐語句”開始單步執(zhí)行程序,程序首先暫停在主函數(shù)的第一行,使用快捷鍵F10或F11單步執(zhí)行程序。F10與F11的區(qū)別是:F10可以跳過一行代碼中所調用的方法。2.設置斷點:單VS 2008提供了設置斷點解決大規(guī)模程序差錯。在設置斷點時,首先把光標放置指定的地方,使用快捷鍵F9或Ctrl+B,或者選擇“調試”“新建斷點”,如圖下所示。設置斷點后,選中這個

44、斷點,右鍵單擊該斷點,選擇“條件”選項,即可出現(xiàn)右圖所示的設置“斷點條件”窗口。設置斷點條件完成后,單擊調試按鈕或使用快捷鍵F5,運行程序,當程序運行到指定的斷點位置,并滿足斷點暫停條件時,代碼會暫停運行,此時就可以使用單步執(zhí)行方式來仔細觀察程序的運行狀態(tài),找出程序的錯誤地點。4.3 捕獲異常C#中可以使用try-catch語句來捕獲程序拋出的異常,其語法規(guī)則如下所示:try處理代碼;catch(異常) /捕獲異常捕獲異常;4.4 異常處理當出現(xiàn)異常后,C#用try-catch語句捕獲異常,它還提供了對異常處理的內建支持,即通過try-catch語句、try-catch-finally句語和t

45、hrow語句實現(xiàn)結構化、統(tǒng)一化的類型安全的異常處理。try-catch語句在try-catch語句中,try語句會捕獲到程序出現(xiàn)的異常,然后將程序控制轉移到相應的catch語句中。如果try語句沒有遇到任何異常,則程序直接執(zhí)行try-catch語句后面的代碼。一個try-catch語句中,可以使一個try語句后匹配一個或多個catch語句,程序根據(jù)try語句指定的異常類型與catch語句中指定的異常類型匹配關系,執(zhí)行相應的catch語句。try-catch-finally語句在try-catch-finally語句中,無論是否出現(xiàn)異常,是否有catch語句,finally語句一定會執(zhí)行,其語法

46、規(guī)則如下所示:try處理代碼;catch(異常) /捕獲異常捕獲異常;finally代碼塊;throw語句throw語句用于拋出在程序執(zhí)行期間出現(xiàn)異常情況的信號。throw語句通常與try-catch或者try-catch-finally語句配合使用。開發(fā)人員可以使用throw語句顯示拋出異常(即開發(fā)人員自定義的異常)。不捕捉異常的后果捕捉C#的標準異常是有副作用的:它避免了異常的程序終止。捕捉一個異常時,必須由某些地方的代碼片來捕捉。通常,如果程序不捕捉異常,那么將由C#運行時系統(tǒng)來捕捉異常。此時存在一個問題,運行時系統(tǒng)將報告錯誤并終止程序的運行。4.5 常用異常在C#中,異常用類來表示。所

47、有異常類都必須從內部異常類Exception派生而來,而Exception是System名字空間的一部分。因此,所有異常都是Exception的子類。SystemException和ApplicationException都是從Exception派生而來,它們支持C#定義的兩類常規(guī)異常:C#運行時系統(tǒng)(即通用語言運行時CLR)產生的異常,以及應用程序產生的異常。SystemException和ApplicationException都未給Exception添加新內容,它們只是定義兩個不同異常層次結構的頂層。C#定義了許多內部異常,它們都是從System.Exception派生而來。例如,試圖以

48、0為除數(shù)時,產生的DivideByZeroException異常。System名字空間定義了一些標準的內部異常。產生運行時錯誤時,CLR產生這些異常,所以它們都是從SystemException派生而來。C#定義的常用標準異常如下所示。第5章 C#面向對象程序設計技術重點內容理解面向對象編程的特點掌握類與對象、接口掌握抽象類與抽象方法理解密封類與密封方法理解迭代器、分部類和索引器掌握運算符重載5.1 類與對象在比較傳統(tǒng)的面向過程的應用程序開發(fā)中,程序是由一系列過程或函數(shù)的模塊組成的可執(zhí)行的實體,每個模塊執(zhí)行某個特定的功能,面向過程編程能很好地解決小型的、具體的問題;但面對復雜的大系統(tǒng),它卻無法

49、勝任,因而迫使人們去尋求解決大型的復雜系統(tǒng)的新方法。在這種背景下,產生了面向對象的編程技術。面向對象編程面向對象編程(Object-Oriented Programming,簡稱OOP)是開發(fā)應用程序的一種新方法、新思想,他提出了一種全新的程序設計風格,以數(shù)據(jù)為核心,其編程單元是類,對象最終由類實例化。面向對象技術具有三個重要的特點:封裝(Encapsulation):把數(shù)據(jù)與對數(shù)據(jù)進行的操作封閉在類內,其它對象可通過接口訪問封裝的內容。增加了安全性。繼承(Inheritance):使一個類可以獲得先前已定義類的全部特征,增強了代碼的可重用性,提高了開發(fā)效率。多態(tài)(Polymorphism):

50、指調用相同的函數(shù)名時,可導致完全不同的行為,增加了程序和靈活性。類類是面向對象開發(fā)方法的基本成分,簡單地說,類是一種數(shù)據(jù)結構,它是具有相同屬性和行為的一組對象的集合,用于模擬現(xiàn)實中存在的對象和關系。1 定義類類定義的語法規(guī)則如下所示:訪問修飾符 class 類名類的成員變量和方法;2.定義類的成員變量和局部變量類體中定義的變量成為成員變量,類的方法中定義的變量成為局部變量。成員變量在整個類中有效,局部變量只在定義它的方法中有效。關鍵字static修飾的是類變量,沒有static修飾是實例變量。類變量也稱為靜態(tài)變量,實例變量又稱為非靜態(tài)變量。程序運行期間,靜態(tài)變量的內存單位不會被其他變量占用,不

51、同對象的同名靜態(tài)變量占據(jù)同一個內存單元,因此靜態(tài)變量的值在其中一個對象中發(fā)生變化,則這個變化在另外一個對象使用這個靜態(tài)變量時是有影響的。靜態(tài)變量是由類直接調用的,由類實例化的對象不能調用靜態(tài)變量,它通常用于處理需要統(tǒng)計類的所有對象信息或者是此類對象之間的相互作用的信息,是針對于類所實例化的所用對象。類(續(xù))3.定義方法方法是用于是想可由該類執(zhí)行的計算和操作,是包含一系列語句的代碼塊。在C#中,方法包括四種:(1) 構造方法在各式各樣的方法中有一種特殊的方法,稱為構造方法,這是每個類都有的方法,類似于C語言中的構造函數(shù)。構造方法有以下特點:構造方法的名稱必須與類名相同。構造方法必須是void型的

52、(但是void可以省略不寫),即沒有返回值。在創(chuàng)建某個類時系統(tǒng)自動創(chuàng)建一個默認的構造方法。如果沒有定義顯式的構造方法,系統(tǒng)將按照默認構造方法的需要分配內存。如果編程人員定義了顯式構造方法,則按照顯式構造方法的需要分配內存,其定義的語法規(guī)則如下所示: void 類名(參數(shù)1,參數(shù)2,)方法體;類(續(xù))(2)析構方法析構方法是相對與構造方法而言的,它是用來實現(xiàn)析構一個類實例所需的操作,指定了當銷毀該類的一個實例時所需要執(zhí)行的操作。析構方法有以下特點:析構函數(shù)聲明方式與構造函數(shù)的相同只是在類名前加個()符號析構函數(shù)不接受任何參數(shù),不帶任何反問修飾符。一個類只能有一個析構函數(shù)。析構函數(shù)不能重載析構函數(shù)

53、不能顯式或手動調用,只有在該類被銷毀的時候調用由于以上特點,一般析構方法寫的都是一些資源回收之類的東西,如關閉數(shù)據(jù)庫、關閉文件、關閉網絡連接等操作,其定義的語法規(guī)則如下所示: void 類名(參數(shù)1,參數(shù)2,)方法體;類(續(xù))(3) 靜態(tài)方法靜態(tài)方法是用static關鍵字標識的方法,它不能作用于具體的實例,只能由類直接調用,其定義的語法規(guī)則如下所示: static 方法名(參數(shù)1,參數(shù)2,)方法體; (4)實例方法沒有static修飾的是實例方法,它只能被實例化的對象調用,請定義的語法規(guī)則如下所示: 方法名(參數(shù)1,參數(shù)2,)方法體;對象 對象是面向對象的基本成分,對象包含變量成員和方法,它所

54、包含的變量組成了存儲在對象中的數(shù)據(jù),而其包含的方法可以訪問對象的變量。略為復雜的對象可能不包含任何數(shù)據(jù),而只包含方法,并使用方法表示一個操作。 C#中的對象是類的定義實例化,這標識對象是類創(chuàng)建的一個實例,“類的實例”和對象標識相同的概念,但是類和對象是完全兩個不同的概念。對象(續(xù))1.對象的聲明和實例化C#中要求使用對象前,必須聲明和實例化該對象,其語法規(guī)則如下所示:類名 對象名 = new 構造方法(參數(shù)列表);在例5.6中,程序定義了兩個不同的類,主類中用語句:cat cat1 = new cat(4, 1); 2.類與對象的關系 類就是一種抽象的數(shù)據(jù)類型,但是其抽象的程度可能不同,而對象

55、就是一個類的實例。 類和對象的區(qū)別:類是具有相同或相似結構、操作和約束規(guī)則的對象組成的集合,而對象是某一類的具體化實例,每一個類都是具有某些共同特征的對象的抽象。5.2 類的繼承繼承性是軟件復用的一種形式,是面向對象編程的關鍵技術之一。新類由已存在的類生成。軟件復用可縮短軟件開發(fā)的時間,復用那些已證實并經過調試的高質量的軟件,可以提高系統(tǒng)的性能,減少系統(tǒng)在使用過程中出現(xiàn)的問題。當用戶建立一個新類時,不必全部寫出所有的實例變量和實例方法,只需聲明該類繼承已定義過的“父類”(也叫基類、超類)的實例變量和實例方法,這個新類就稱作“子類”,每個子類也可以成為其他某個子類的父類。一個類可以繼承另一個類,

56、被繼承的類稱為父類,繼承的類稱為子類。子類可以繼承父類所有的非私有(private)成員作為自己的成員。除繼承來的成員外,子類還可以創(chuàng)建自己的成員。類的繼承(續(xù))1.成員訪問和繼承 類成員往往聲明為私有的,以避免對它們進行未授權的使用或破壞。繼承類并不違反私有訪問限制。 訪問權限是由關鍵字public、private、protected,internal設定的。可以放在class前面修飾類的修飾符關鍵字只有public和internal,如果沒寫任何關鍵字,默認是internal。其中用internal修飾的類,只有在同一程序集內,該類才可以被訪問到;而用public修飾的類,可以在任何地方訪

57、問此類。如果父類的變量和方法被修飾為public,則這些變量和方法是共有的,可以在子類中通過對象進行訪問。如果父類的變量和方法被修飾為private,則這些變量和方法是私有的,不能在子類中通過對象進行訪問。如果父類的變量和方法被修飾為protected,則這些變量和方法是受保護的,它和private的權限很相似,唯一不同的是protected類型成員可以被子類繼承,而private類型成員不可以被繼承。 類的繼承(續(xù))2.構造函數(shù)和繼承在層次化結構中,父類和子類都有自己的構造函數(shù),這樣會引起一個重要的問題:哪個構造函數(shù)承擔建立子類對象的任務,是父類的構造函數(shù)還是子類的構造函數(shù)。其答案是子類的構

58、造函數(shù)建造對象的父類部分,而子類的構造函數(shù)建造對象的子類部分。這是合理的,因為父類不知道也不能訪問子類的元素。因此,其構造函數(shù)必須分開。 5.3 接口接口和類一樣,可以有方法、屬性等成員。但與類不同的是,接口僅僅提供的聲明,并不允許提供成員的實現(xiàn),接口成員只能在具體的類或結構代碼中實現(xiàn),其定義的語法規(guī)則如下所示:訪問修飾符 interface 接口標識符 :接口基接口體;聲明接口后,類可以通過繼承接口來實現(xiàn)其中的方法。繼承接口的語法同繼承類語法類似,使用冒號“:”,將要繼承的接口放在類的后面,如果要繼承多個接口,使用逗號“,”將其分開。在實現(xiàn)接口的類中使用接口中聲明的方法時,創(chuàng)建的方法體的名稱

59、、返回類型和參數(shù)必須和接口中聲明的完全一致。 5.4 抽象類與抽象方法抽象方法是只包含方法定義,但沒有具體實現(xiàn)的方法,它需要其子類類具體實現(xiàn),使用關鍵字abstract修飾的方法。抽象類是用關鍵字abstract修飾的類,它含有一個或多個抽象成員。抽象類不能夠被實例化,因為它包含了沒有具體實現(xiàn)的方法。其語法規(guī)則如下所示:訪問修飾符 abstract class 抽象類名抽象屬性;抽象方法;抽象類是特殊的類,具有以下特殊特征:抽象類不能實例化抽象類可以包含抽象方法和抽象訪問器抽象類派生出的非抽象類必須包括繼承所有抽象方法和抽象訪問器的實現(xiàn),而且必須使用override修飾符的屬性聲明重寫抽象方法

60、和抽象訪問器。如果父類被聲明為抽象類,并存在未實現(xiàn)的抽象方法,那么子類就必須實現(xiàn)父類中所有的abstract成員,否則子類也是一個抽象類。抽象方法是特殊的方法,只能被包含在抽象類中。包含抽象方法的類必須定義為抽象類,否則編譯程序時報錯,但抽象類不一定要包含抽象方法。接口與抽象類區(qū)別從語法和功能方法看,接口與抽象類都非常相似。它們都是提供成員的聲明,都不能實例化,但是它們之間也存在著很多的差別:在抽象類中可以有非抽象方法和抽象方法,但在接口中只有抽象方法,它是抽象類的變體。類可以繼承多個接口,但僅能從一個抽象類繼承。從抽象類派生的類仍可實現(xiàn)接口。可以在創(chuàng)建組件時使用抽象類,因為它們使您得以在某些

溫馨提示

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

評論

0/150

提交評論