版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、高級程序設(shè)計地球科學(xué)與技術(shù)學(xué)院測繪系2015.102前 言n教材:C#程序設(shè)計與案例教程,楊樹林、胡潔萍編著,清華大學(xué)出版社,2007.08n參考書:C#入門經(jīng)典(第5版),(美)沃森、內(nèi)格爾等著,齊立波翻譯,清華大學(xué)出版社,2010.12n上課時間: n周二1、2節(jié),西廊101,第7-10、13-17周n周四3、4節(jié),西廊101,第7-8、10、14、16周n上機(jī)時間: n周一1、2節(jié),微601,第9-10、13-17周n周三1、2節(jié),微601,第9、13、15周3課程主要內(nèi)容 n第1章 C#語言基礎(chǔ)n第2章 面向?qū)ο蟪绦蛟O(shè)計n第3章 GUI程序設(shè)計n第4章 圖形、圖像程序設(shè)計n第5章 數(shù)據(jù)
2、庫程序設(shè)計n第6章 流和文件n第7章 線程(不講)n第8章 網(wǎng)絡(luò)程序設(shè)計(不講)n第9章 ASP.NET(不講)第第1章章 C#語言基礎(chǔ)語言基礎(chǔ)5第1章 目錄1.1 C#概述1.2 C#語言基礎(chǔ)1.3 控制語句1.4 數(shù)組1.5 異常處理61.1 C#概述概述n1、.NET概述n2、什么是C#n3、Visual Studio .Net集成開發(fā)環(huán)境n4、初識C#程序n5、命名空間71.1.1 .NET概述n.NET是微軟公司推出跨平臺、跨語言開發(fā)平臺。機(jī)器語言匯編語言高級語言硬件依賴高硬件依賴低可移植性低可移植性高可復(fù)用性低可復(fù)用性高81.1.1 .NET概述FORTRANC.NET(C#)源代
3、碼復(fù)用二進(jìn)制碼復(fù)用Java跨平臺跨語言91.1.1 .NET概述n.NET Framework體系結(jié)構(gòu)操作系統(tǒng)公共語言運(yùn)行時 (CLR).Net Framework 類庫 (FCL)101.1.1 .NET概述nCLR和MSIL(CIL)日語漢語翻譯英語(中間語言)111.1.1 .NET概述nCLR和MSIL(CIL)121.1.1 .NET概述nCLR和MSIL(CIL) 編譯C# | -程序集(.exe、.dllMSIL)、元信息數(shù)據(jù)信息、可選資源圖片、聲音) | (Microsoft Intermediate Language 微軟中間語言) | | -.NET CLR (Common
4、 Language Runtime 公共語言運(yùn)行庫) | -JIT編譯 (Just-In-Time,稱為即時編譯,僅在需要時才編譯MSIL) | 機(jī)器代碼 131.1.1 .NET概述nCLR和MSIL(CIL)n有了CLR,保證了.NET 中一種語言具有的功能其他語言也都具有。nMicrosoft 中間語言 (MSIL) 由一組特定的指令組成,這些指令指明如何執(zhí)行代碼。nJIT 編譯器的主要工作是將普通 MSIL 代碼轉(zhuǎn)換為可以直接由 CPU 執(zhí)行的計算機(jī)代碼。n系統(tǒng)進(jìn)程可以輕松讀取 MSIL 代碼。141.1.1 .NET概述n.NET組成nNET平臺包括.NET框架-NET框架(Fram
5、ework)是開發(fā)平臺的基礎(chǔ)n公共語言運(yùn)行時(CLR)n.NET類庫n.NET開發(fā)工具等組成部分。n .NET編程語言(C+.NET C#.NET VB.NET)n. Visual Studio.NET集成開發(fā)環(huán)境15基本框架類.Net Framework.Net Framework 類庫類庫ASP.NETCLSCLRCTS1.1.1 .NET概述16n.NET版本1.1.1 .NET概述17nCLS(Common Language Specification):不同語言程序之間相互通用必須遵守的規(guī)則和限制。nCTS(Common Type System):CLS中對數(shù)據(jù)類型的規(guī)定。 1.1.
6、1 .NET概述181.1.2 什么是C#nC#是微軟推出的一種基于.NET框架的、面向?qū)ο蟮母呒壘幊陶Z言。C#由C語言和C+派生而來,繼承了其強(qiáng)大的性能,同時又以.NET 框架類庫作為基礎(chǔ),擁有類似Visual Basic的快速開發(fā)能力。C#由安德斯海爾斯伯格主持開發(fā),微軟在2000年發(fā)布了這種語言。n原Borland公司的首席研發(fā)設(shè)計師安德斯海爾斯伯格(Anders Hejlsberg)在微軟開發(fā)了Visual J+ 1.0,很快的Visual J+由1.1版本升級到6.0版。SUN公司認(rèn)為Visual J+ 違反了Java開發(fā)平臺的中立性,對微軟提出了訴訟。2000年6月26日微軟在奧蘭
7、多舉行的“職業(yè)開發(fā)人員技術(shù)大會”(PDC 2000)上,發(fā)表新的語言C#。C#語言取代了Visual J+,語言本身深受 Java、C 和 C+ 的影響。191.1.2 什么是C#n版本 C#版本變化和.Net Framework版本變化一樣,新版本總是在舊版本基礎(chǔ)上增加了新的功能或增強(qiáng)了已有功能。201.1.2 什么是C#n語言特征,相對于C和C+,C#在許多方面進(jìn)行了限制和增強(qiáng):n指針(Pointer)只能被用于不安全模式。大多數(shù)對象訪問通過安全的引用實現(xiàn),以避免無效的調(diào)用。n對象不需要被顯式釋放,代替為當(dāng)不存在被引用時通過垃圾回收器回收。n只允許單一繼承(single inheritan
8、ce),但是一個類可以實現(xiàn)多個接口(interfaces)。nC#比C+更加類型安全。默認(rèn)的安全轉(zhuǎn)換是隱含轉(zhuǎn)換,例如由短整型轉(zhuǎn)換為長整型和從派生類轉(zhuǎn)換為基類。而布爾型同整型,及枚舉型同整型不允許隱含轉(zhuǎn)換。n數(shù)組聲明語法不同(int a = new int5 而不是 int a5)。n屬性支持,使用類似訪問成員的方式調(diào)用。211.1.3 Visual Studio.NET集成開發(fā)環(huán)境nVisual Studio集成開發(fā)工具不同版本22Microsoft Visual Studio起始頁23新建項目對話框24n代碼編輯器,用于編寫源代碼。n“工具箱”,用于使用鼠標(biāo)迅速開發(fā)可視化界面。n解決方案資源
9、管理器 ,用于查看和管理項目文件和設(shè)置。n項目設(shè)計器 ,用于配置編譯器選項、部署路徑、資源及更多其他內(nèi)容。n屬性窗口,用于配置用戶界面中控件的屬性和事件。nVisual Studio 調(diào)試器,用于對程序進(jìn)行測試。n類視圖,用于根據(jù)類型(而不是文件)在源代碼中導(dǎo)航。n對象瀏覽器,用于查看.NET Framework 程序集和 COM 對象中可用的方法和類。25Visual Studio.NET集成開發(fā)環(huán)境26屬性窗口 屬性描述控件選擇事件圖標(biāo)屬性圖標(biāo)屬性名屬性值按字母排序271.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。nC#語言使用類來組織和包裝代碼,所有可執(zhí)行代碼都必須包含在類
10、中。nusing指令用于聲明程序中使用的系統(tǒng)類所在的命名空間。 如:Console類包含在System命名空間中。/聲明系統(tǒng)命名空間using System;using System.Collections.Generic;using System.Linq;using System.Text;/用戶自定義命名空間namespace Exam_1_1 / / 程序開始類:Program / class Program / / 應(yīng)用程序的主入口方法: Main / / static void Main(string args) Console.WriteLine(請輸入你的名字:); strin
11、g username = Console.ReadLine(); Console.WriteLine(歡迎0進(jìn)入C#世界!, username); 281.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。n注釋方式:n單行注釋 / 注釋內(nèi)容n多行注釋 /* 注釋第1行注釋第n行 */n文檔注釋 / 文檔注釋 即XML注釋,將文檔注釋的內(nèi)容轉(zhuǎn)為XML文檔保存。/聲明系統(tǒng)命名空間using System;using System.Collections.Generic;using System.Linq;using System.Text;/用戶自定義命名空間namespace Exam_
12、1_1 / / 程序開始類:Program / class Program / / 應(yīng)用程序的主入口方法: Main / / static void Main(string args) Console.WriteLine(請輸入你的名字:); string username = Console.ReadLine(); Console.WriteLine(歡迎0進(jìn)入C#世界!, username); 291.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。nMain方法:nMain 方法是 C# 控制臺應(yīng)用程序或窗口應(yīng)用程序的入口點(diǎn),程序控制流在該處開始和結(jié)束。nMain 在類或結(jié)構(gòu)的內(nèi)
13、部聲明。Main 方法必須是靜態(tài)的,且不應(yīng)該是公用的(默認(rèn)訪問級別是 private)但不要求所在類或結(jié)構(gòu)是靜態(tài)的。nMain 的返回類型有兩種:void 或 int。nMain 方法可以包含命令行參數(shù) string ,也可以不具有這樣的形參。301.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。n控制臺輸入、輸出n使用.NET Framework中 System 命名空間中的Console類提供的輸入輸出方法。n輸入:Console.Read(); /讀取一個字符 Console.ReadLine(); /讀取一行字符n輸出:Console.Write(); /以文本形式輸出 Co
14、nsole.WriteLine(); /以文本形式輸出并換行 若輸出若干變量值,則用 0 表示第一項,1 表示第二項,依此類推,如:int year = 1066; string battle = Battle of Hastings; Console.WriteLine(The 0 took place in 1., battle, year); 311.1.4 初識C#程序【例例1-2】一個圖形界面程序。 設(shè)計一個程序,界面上用一個文本框輸入姓名,單擊“確定”按鈕后,在文本框中顯示“歡迎XXX進(jìn)入C#世界!”,運(yùn)行結(jié)果如下圖所示。321.1.5 命名空間n命名空間類似于文件系統(tǒng)中的文件夾,
15、可以看作相關(guān)類的一個容器。n命名空間分為兩類:用戶定義的命名空間、系統(tǒng)定義的命名空間。n系統(tǒng)命名空間:NET Framework 本身有八十多個命名空間,每個命名空間中有上千個類。 System.Drawing:提供了GDI+基本繪圖功能; System.IO:提供數(shù)據(jù)文件讀寫等功能; System.Collections:提供了列表、隊列等集合操作n用戶定義的命名空間是在代碼中定義的命名空間。 331.1.5 命名空間namespace 命名空間名稱 用戶代碼n命名空間可以嵌套n命名空間的使用n使用using指令能夠引用給定的命名空間或創(chuàng)建命名空間的別名(using 別名)。 using 別
16、名 = 類或命名空間名;如:using System; using System.Drawing; using StatisticalData;namespace StatisticalData class FileHandling public void Load() / code to load statistical data namespace Images class FileHandling public void Load() / code to load an image file class Program static void Main() StatisticalData
17、.FileHandling data = new StatisticalData.FileHandling(); data.Load(); Images.FileHandling image = new Images.FileHandling(); image.Load(); 34命名空間命名空間類的描述類的描述System定義通常使用的數(shù)據(jù)類型和數(shù)據(jù)轉(zhuǎn)換的基本.NET類。System.Collections定義列表、隊列、位數(shù)組合字符串表。System.Data定義ADO.NET數(shù)據(jù)庫結(jié)構(gòu)。System.Drawing提供對基本圖形功能的訪問。System.IO允許讀寫數(shù)據(jù)列和文件。Syst
18、em.Net提供對Windows網(wǎng)絡(luò)功能的訪問。System.Net.Sockets提供對Windows套接字的訪問。1.1.5 命名空間n系統(tǒng)定義的命名空間351.2 C#語言基礎(chǔ) n1、基本編碼規(guī)則n2、數(shù)據(jù)類型n3、數(shù)據(jù)類型轉(zhuǎn)換n4、常量與變量n5、裝箱與拆箱n6、運(yùn)算符361.2.1 基本編碼規(guī)則nC#語言中,標(biāo)識符是以字母、下劃線(_)或開始的一個字符序列,后面可以跟字母、下劃線、數(shù)字。C#語言區(qū)分大小寫。n具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識符使用,這些標(biāo)識符稱為保留字或關(guān)鍵字。 n書寫規(guī)則書寫規(guī)則n每行語句以 ; 結(jié)尾。n空行和縮進(jìn)被忽略。n多條語句可以處于同一行,之間用分號
19、分隔即可。n注釋:有3種方式。371.2.2 數(shù)據(jù)類型n數(shù)據(jù)類型分類1:可分為內(nèi)置類型和構(gòu)造類型。數(shù)據(jù)類型數(shù)據(jù)類型內(nèi)置類型內(nèi)置類型構(gòu)造類型構(gòu)造類型(自定義類型)(自定義類型)objectstringbyte, sbyteshort, ushortint, uintlong, ulongfloat, double, decimalboolchar數(shù)組結(jié)構(gòu)struct枚舉enum類class接口interface委托delegate381.2.2 數(shù)據(jù)類型n數(shù)據(jù)類型分類2:按數(shù)據(jù)的存儲方式,可分為值類型和引用類型。數(shù)據(jù)類型數(shù)據(jù)類型值類型值類型引用類型引用類型數(shù)值類型bool, char結(jié)構(gòu)枚舉st
20、ring數(shù)組類接口委托說明:說明:1、所有的數(shù)據(jù)類型是以類的形、所有的數(shù)據(jù)類型是以類的形式組織的;式組織的;2、數(shù)據(jù)類型的根基類是、數(shù)據(jù)類型的根基類是object類;類;3、定義、定義值類型變量值類型變量時,直接使時,直接使用即可;定義用即可;定義引用型變量引用型變量時,時,需先使用需先使用new分配內(nèi)存,但分配內(nèi)存,但string類型除外。類型除外。391.2.2 數(shù)據(jù)類型n類型的層次結(jié)構(gòu)稱為通用類型系統(tǒng)CTS(Common Type System)401.2.2 數(shù)據(jù)類型n類型的層次結(jié)構(gòu)稱為通用類型系統(tǒng)CTS(Common Type System)41n值類型值類型n各種值類型總是含有該類
21、型的一個值。每當(dāng)把一個值賦給一個值類型時,該值實際上被拷貝了。n相比,對于引用類型,僅是引用被拷貝了,而實際的值仍然保留在原來的內(nèi)存位置。nC#的值類型可以歸類如下:n 內(nèi)置類型(Simple type)n 枚舉類型(Enumeration type)n 結(jié)構(gòu)類型(Structure type)1.2.2 數(shù)據(jù)類型421.2.2 數(shù)據(jù)類型n值類型值類型內(nèi)置類型內(nèi)置類型整數(shù)整數(shù)431.2.2 數(shù)據(jù)類型n值類型值類型內(nèi)置類型內(nèi)置類型實數(shù)實數(shù)n值類型值類型內(nèi)置類型內(nèi)置類型字符型字符型nUnicode 字符是 16 位字符,用于表示世界上大多數(shù)已知的書面語言。441.2.2 數(shù)據(jù)類型n值類型值類型內(nèi)置
22、類型內(nèi)置類型字符型字符型n值類型值類型內(nèi)置類型內(nèi)置類型布爾型布爾型n布爾型只有true、false兩個值,且不對應(yīng)于任何整數(shù)值。char chars = new char4;chars0 = X; / Character literal chars1 = x0058; / Hexadecimal chars2 = (char)88; / Cast from integral type chars3 = u0058; / Unicode foreach (char c in chars) Console.Write(c + ); / Output: X X X X 451.2.2 數(shù)據(jù)類型n值類
23、型值類型枚舉類型枚舉類型n默認(rèn)情況下,第一個枚舉數(shù)的值為 0,后面每個枚舉數(shù)的值依次遞增 1。 enum Days Sat, Sun, Mon, Tue, Wed, Thu, Fri; n也可以更改默認(rèn)值。 enum Days Sat=1, Sun, Mon, Tue, Wed, Thu, Fri; nenum和整型之間的轉(zhuǎn)換需要用顯式類型轉(zhuǎn)換來完成,即使用強(qiáng)制轉(zhuǎn)換。 int x = (int)Days.Sun; 或 x = Convert.ToInt32(Days.Sun); 注:Convert可以轉(zhuǎn)換字符串?!纠?-3】定義一個職稱枚舉類型,輸出類型中所有枚舉常量。461.2.2 數(shù)據(jù)類型
24、n值類型值類型結(jié)構(gòu)類型結(jié)構(gòu)類型n用 struct 關(guān)鍵字定義的,如: public struct PostalAddress / Fields, properties, methods and events go here. n結(jié)構(gòu)與類共享大多數(shù)相同的語法。但結(jié)構(gòu)是值類型,類是引用類型,且結(jié)構(gòu)不支持繼承。 471.2.2 數(shù)據(jù)類型n值類型值類型結(jié)構(gòu)類型結(jié)構(gòu)類型【例1-4】結(jié)構(gòu)與類的比較(即值類型與引用類型的比較)。public struct MyStruct public int a; public void Output() Console.WriteLine(結(jié)構(gòu)成員 a = 0, a);
25、 class Program static void Main() MyStruct x; x.a = 100; x.Output(); 481.2.2 數(shù)據(jù)類型n引用類型引用類型n和值類型相比,引用類型不存儲它們所代表的實際數(shù)據(jù),但它們存儲實際數(shù)據(jù)的地址(引用)。n引用類型包括:object、string、數(shù)組、類、接口、委托等。其內(nèi)容在后續(xù)的章節(jié)中介紹。nobject類是 .net 類型層次結(jié)構(gòu)的根,所有類型(用戶定義類型、引用類型和值類型)均是直接或間接從 object 繼承的。因為它是所有類型的基類,所以可把任何類型的值賦給它,例如: object theObj = 123; 即:裝箱
26、(值類型 Object類型) 拆箱(Object類型 值類型)491.2.3 數(shù)據(jù)類型轉(zhuǎn)換n分為:隱式轉(zhuǎn)換和顯式轉(zhuǎn)換隱式轉(zhuǎn)換和顯式轉(zhuǎn)換n隱式轉(zhuǎn)換:系統(tǒng)默認(rèn),不需要加以說明。需要注意的是:n字符類型:可以隱式轉(zhuǎn)換為整型或浮點(diǎn)型,但不存在其他類型到字符類型的隱式轉(zhuǎn)換。n數(shù)值類型:低精度類型可以隱式轉(zhuǎn)換為高精度類型,反之會出現(xiàn)異常。n在浮點(diǎn)型和decimal類型之間不存在隱式轉(zhuǎn)換,因此,這兩種類型之間必須使用顯示轉(zhuǎn)換。 ushort destinationVar;char sourceVar = a;destinationVar = sourceVar;Console.WriteLine(sourc
27、eVar val: +sourceVar);Console.WriteLine(destinationVar val:+destinationVar);501.2.3 數(shù)據(jù)類型轉(zhuǎn)換n隱式轉(zhuǎn)換隱式轉(zhuǎn)換511.2.3 數(shù)據(jù)類型轉(zhuǎn)換n顯式轉(zhuǎn)換顯式轉(zhuǎn)換:即強(qiáng)制轉(zhuǎn)換,需要指定要轉(zhuǎn)換到的類型。n方法一:(類型名稱)變量名稱;注:如不強(qiáng)制轉(zhuǎn)換則程序出現(xiàn)編譯錯誤。 double x = 1234.7;int a; / Cast double to int. a = (int)x; System.Console.WriteLine(a); 521.2.3 數(shù)據(jù)類型轉(zhuǎn)換n顯式轉(zhuǎn)換顯式轉(zhuǎn)換n方法一:(類型名稱)變量
28、名稱;int sourceVar=7;byte targetVar;targetVar = (byte)sourceVar;Console.WriteLine(32位有符號整數(shù): 0, sourceVar);Console.WriteLine(8位無符號整數(shù): 0, targetVar);531.2.3 數(shù)據(jù)類型轉(zhuǎn)換n顯式轉(zhuǎn)換顯式轉(zhuǎn)換n方法一:(類型名稱)變量名稱;n此時出現(xiàn)溢出現(xiàn)象,可采用checked(expression)檢查。int sourceVar=281;byte targetVar;targetVar = (byte)sourceVar;Console.WriteLine(32
29、位有符號整數(shù): 0, sourceVar);Console.WriteLine(8位無符號整數(shù): 0, targetVar);541.2.3 數(shù)據(jù)類型轉(zhuǎn)換n顯式轉(zhuǎn)換顯式轉(zhuǎn)換n方法二:使用System.Convert類,可以檢查溢出。55【例1-5】float a = 15.5f;int b = (int)a; /截斷double c = a; int d = Convert.ToInt32(a); /四舍五入Console.WriteLine(“轉(zhuǎn)換類型前變量 a 的值為: 0, a);Console.WriteLine(顯式轉(zhuǎn)換為 int 類型后的值為: 0, b);Console.Writ
30、eLine(隱式轉(zhuǎn)換為 double 類型后的值為: 0, c);Console.WriteLine(使用Convert類ToInt32方法轉(zhuǎn)換int類型后的值為: 0, d);char e = a;byte f = Convert.ToByte(e); Console.WriteLine(字符a使用Convert類ToByte方法轉(zhuǎn)換為byte類型的值為: 0, f);string value=“124”; /Convert可以轉(zhuǎn)換字符串為數(shù)值型Console.WriteLine(字符串124使用Convert類ToInt32方法轉(zhuǎn)換為int類型的值為:0, Convert.ToInt32(
31、value);1.2.3 數(shù)據(jù)類型轉(zhuǎn)換561.2.4 常量和變量n符號常量n變量命名規(guī)范nHungarian notation(匈牙利命名法):在組成變量的單詞前,加上小寫字母、下劃線作為前綴,以識別變量的作用域、類型等。 如:m_strLastName(表示類的成員變量) strLastName(表示函數(shù)內(nèi)的局部變量)ncamelCase(駱駝命名法):組成變量的單詞中,除第一個單詞首字母小寫外,其余單詞首字母大寫。 如:lastNamenPascalCase(帕斯卡命名法):組成變量的每個單詞的首字母大寫。 如:LastNamenMicrosoft建議:簡單變量使用camelCase ,函
32、數(shù)等使用PascalCase。const int speedLimit = 55;const double pi = 3.14159265358979323846264338327950; 571.2.5 裝箱與拆箱n裝箱(boxing):裝箱是值類型到 object 類型或到某一引用類型的隱式轉(zhuǎn)換。對值類型進(jìn)行裝箱會在堆棧中創(chuàng)建對象變量,并將該值復(fù)制到對象變量指向的堆中。 int i = 123; object o = (object) i; / boxing 581.2.5 裝箱與拆箱n裝箱(boxing):裝箱是值類型到 object 類型或到某一引用類型的隱式轉(zhuǎn)換。對值類型進(jìn)行裝箱會在
33、堆棧中創(chuàng)建對象變量,并將該值復(fù)制到對象變量指向的堆中。 class TestBoxing static void Main() int i = 123; object o = i; / Implicit boxing i = 456; / Change the contents of i System.Console.WriteLine(The value-type value = 0, i); System.Console.WriteLine(The object-type value = 0, o); /* Output: The value-type value = 456 The ob
34、ject-type value = 123 */ 591.2.5 裝箱與拆箱n拆箱(unboxing):是從 object 類型或某一引用類型到值類型的顯式轉(zhuǎn)換。操作包括:n檢查對象變量,以確保其指向的裝箱值是需轉(zhuǎn)換的值類型.n將該值從對象變量中復(fù)制到值類型變量中。int i = 123; / a value type object o = i; / boxing int j = (int)o; / unboxing 601.2.6 運(yùn)算符n根據(jù)運(yùn)算類型,常用運(yùn)算符可以分為以下幾類:n算術(shù)運(yùn)算符n賦值運(yùn)算符n關(guān)系運(yùn)算符n邏輯運(yùn)算符n位運(yùn)算符611.2.6 運(yùn)算符n算術(shù)運(yùn)算符621.2.6 運(yùn)算
35、符n賦值、復(fù)合賦值運(yùn)算符631.2.6 運(yùn)算符n關(guān)系運(yùn)算符641.2.6 運(yùn)算符n邏輯運(yùn)算符651.2.6 運(yùn)算符n位運(yùn)算符(二進(jìn)制運(yùn)算)【例1-6】運(yùn)算符說明& 按位與:對應(yīng)位均為1時,則結(jié)果為1;否則為0| 按位或:對應(yīng)位只要有1,則結(jié)果為1;否則為0 按位異或:對應(yīng)位值不同時,則結(jié)果為1;否則為0int x = 4, y = 5, z;z = x & y;z = x | y;z = x y;661.2.6 運(yùn)算符n運(yùn)算符優(yōu)先級671.3 控制語句n分支結(jié)構(gòu)nifelse語句nswitch語句n循環(huán)結(jié)構(gòu)nwhile語句ndowhile語句nfor語句nforeach語句68
36、1.3.1 分支結(jié)構(gòu)nifelse語句if (result = true) Console.WriteLine(The variable is set to true.); else Console.WriteLine(The variable is set to false.); if (x 10) if (y 20) Console.Write(Statement_1); else Console.Write(Statement_2); if (Condition_1) / Statement_1; else if (Condition_2) / Statement_2; else if
37、(Condition_3) / Statement_3; else / Statement_n; 691.3.1 分支結(jié)構(gòu)nswitch語句int caseSwitch = 1;/輸入caseSwitch switch (caseSwitch) case 1: Console.WriteLine(Case 1); break; case 2: Console.WriteLine(Case 2); break; default: Console.WriteLine(Default case); break; int n; /輸入n值switch(n) case 1: case 2: case 3
38、: Console.WriteLine(Its 1, 2, or 3.); break; default: Console.WriteLine(Not sure what it is.); break; 701.3.2 循環(huán)結(jié)構(gòu)nwhile語句ndowhile語句int n = 1; while (n 6) Console.WriteLine(Current value of n is 0, n); n+; int x = 0; do Console.WriteLine(x); x+; while (x 5); 711.3.2 循環(huán)結(jié)構(gòu)nfor語句for(初始值; 循環(huán)條件; 更新值) 循環(huán)體
39、 for (int i = 1; i 10; i+) for (int j = 1; j = i; j+) Console.Write(0*1=2, -2 , i, j, i * j); /-2是占位符 Console.WriteLine();721.3.2 循環(huán)結(jié)構(gòu)nforeach語句n用于集合類元素的枚舉,如數(shù)組、字符串、列表、隊列、堆棧等。 foreach(數(shù)據(jù)類型 變量 in 集合表達(dá)式) 循環(huán)體; n主要用于元素值的讀,不建議用于元素值的更改以避免產(chǎn)生不可預(yù)知的副作用。731.3.2 循環(huán)結(jié)構(gòu)nforeach語句int fibarray = new int 0, 1, 2, 3, 5
40、, 8, 13 ;foreach (int i in fibarray) System.Console.WriteLine(i);string S = 歡迎光臨青島;foreach (char a in S) System.Console.WriteLine(a);for (int i = 0; i S.Length; i+) System.Console.WriteLine(Si);741.3.2 循環(huán)結(jié)構(gòu)n循環(huán)終止語句nbreak語句 用于終止所在循環(huán)或所在的 switch 語句。ncontinue語句 用于終止本次循環(huán),開始下一次循環(huán)。751.4 數(shù)組n按照數(shù)組的維數(shù),數(shù)組可分為三類:n
41、一維數(shù)組n多維數(shù)組n交錯數(shù)組761.4.1 一維數(shù)組n聲明方法: 數(shù)據(jù)類型 數(shù)組名;注:數(shù)組為引用類型,在使用前必須先分配空間。n可以在聲明數(shù)組時進(jìn)行初始化: 或初始化的簡化形式:int array = new int5;string stringArray = new string6; int array = new int 1, 3, 5, 7, 9 ;string weekDays = new string Sun, Mon, Tue, Wed, Thu, Fri, Sat ; int array = 1, 3, 5, 7, 9 ; string weekDays = Sun, Mon,
42、 Tue, Wed, Thu, Fri, Sat ; 771.4.1 一維數(shù)組n可以在聲明數(shù)組變量時不為其分配空間,當(dāng)在程序中將數(shù)組分配給此變量時必須使用 new 運(yùn)算符。int array;string weekDays;array = new int 1, 3, 5, 7, 9 ; / OK/array2 = 1, 3, 5, 7, 9; / Error weekDays = new string Sun, Mon, Tue, Wed, Thu, Fri, Sat ; 781.4.1 一維數(shù)組n數(shù)組元素的遍歷nfor形式for (int i=0; i數(shù)組名.length; i+) / ca
43、n use 數(shù)組名i for each elementnforeach形式foreach (類型 變量 in 數(shù)組名) / can use 變量 for each element791.4.2 多維數(shù)組n聲明:n聲明時初始化:n如果聲明一個數(shù)組變量時不為其分配空間,必須使用 new 運(yùn)算符將一個數(shù)組分配給此變量: int, array = new int4, 2;int, , array1 = new int2, 2, 3; int, array2D = new int, 1, 2 , 3, 4 , 5, 6 , 7, 8 ;int, , array3D = new int, 1, 2, 3
44、, 4, 5, 6 , 7, 8, 9 , 10, 11, 12 ; int, array5; array5 = new int, 1, 2 , 3, 4 , 5, 6 , 7, 8 ; / OK /array5 = 1,2, 3,4, 5,6, 7,8; / Error 801.4.2 多維數(shù)組nArray類的常用方法、屬性n使用方法:數(shù)組名.方法名()、數(shù)組名.屬性名811.4.3 交錯數(shù)組n交錯數(shù)組:也稱為“數(shù)組的數(shù)組”,交錯數(shù)組是一維數(shù)組,且每個元素自身又是一個一維數(shù)組。作為元素的數(shù)組無需為相同的大小。n聲明 或n還需給各元素分配空間 或同時賦初值int jaggedArray = n
45、ew int3; int jaggedArray;jagged = new int3; jaggedArray0 = new int5; jaggedArray1 = new int4; jaggedArray2 = new int2; jaggedArray0 = new int 1, 3, 5, 7, 9 ;jaggedArray1 = new int 0, 2, 4, 6 ; jaggedArray2 = new int 11, 22 ; int jaggedArray = new int34; 821.4.3 交錯數(shù)組n聲明時也可賦初值 或簡化形式int jaggedArray = n
46、ew int new int 1,3,5,7,9, new int 0,2,4,6, new int 11,22 ; int jaggedArray = new int 1,3,5,7,9, new int 0,2,4,6, new int 11,22 ; int jaggedArray = 1,3,5,7,9, 0,2,4,6, 11,22 ; 831.4.3 交錯數(shù)組/ Declare the array of two elements: int arr = new int2; / Initialize the elements: arr0 = new int5 1, 3, 5, 7, 9
47、 ; arr1 = new int4 2, 4, 6, 8 ; / Display the array elements: for (int i = 0; i arr.Length; i+) System.Console.Write(Element(0): , i); for (int j = 0; j arri.Length; j+) System.Console.Write( 0 , arrij); System.Console.WriteLine(); 841.5 異常處理n程序存在兩類錯誤:n編譯錯誤(build error)n錯誤列表窗口n調(diào)試工具(Debug)n運(yùn)行錯誤(runtime error):稱為異常(exception)n編譯時無法預(yù)期的錯誤,如數(shù)組越界、被 0 除等。nTryCatchFinally結(jié)構(gòu)851.5 異常處理n調(diào)試方法n設(shè)置斷點(diǎn)(Break Point)、逐句跟蹤、值跟蹤(局部變量窗口、監(jiān)視窗口)n“局部變量”窗口:顯示當(dāng)前函數(shù)的局部變量n“監(jiān)視”窗口:自定義要監(jiān)視的內(nèi)容n信息輸出n控制臺輸出:Console.Writeline();nDebug的“輸出”窗口:System.Diagnostics.Debug.Writeline();nMessageBox.Show();861.5 異常處理nTryCatchFinally結(jié)構(gòu)n將可
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋅礦合同范例
- 倆人開公司合同范例
- 畢業(yè)生勞動就業(yè)合同范例
- 雙包勞務(wù)施工合同范例
- 買房前期物業(yè)合同范例
- 之江租房合同范例
- 政府績效合同范例
- 品牌策劃服務(wù)合同范例
- 青山區(qū)房產(chǎn)合同范例
- 高級技術(shù)顧問咨詢合同范例
- 江西省三新協(xié)同教研共同體2023-2024學(xué)年高一上學(xué)期12月聯(lián)考物理試卷(解析版)
- 籃球原地單手肩上投籃 教案(表格式)
- 2021-2022學(xué)年廣東省廣州市天河區(qū)八年級(上)期末英語試卷
- 慶祝澳門回歸24周年主題班會
- 特種設(shè)備使用單位日管控、周排查、月調(diào)度示范表
- 三角函數(shù)歷史與發(fā)展
- 形式邏輯新解智慧樹知到課后章節(jié)答案2023年下上海財經(jīng)大學(xué)
- 系統(tǒng)集成項目總體服務(wù)方案
- 現(xiàn)代酒店管理智慧樹知到課后章節(jié)答案2023年下海南工商職業(yè)學(xué)院
- 笛卡爾環(huán)線性化技術(shù)的基本原理
- 人教版小學(xué)數(shù)學(xué)三年級上冊全套課件合集
評論
0/150
提交評論