《C# 程序设计课件整套电子教案.ppt》由会员分享,可在线阅读,更多相关《C# 程序设计课件整套电子教案.ppt(192页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 C# 程序设计程序设计 第第1章章 C# 2.0开发环境开发环境1.1.1 .NET Framework 2.0简介简介 一个建立、配置和运行web服务以及应用程序的多语言环境,是Microsoft的新一代web应用程序开发平台,它包含以下三个主要部分 : 公共语言运行时环境(common language runtime, CLR) 框架类库(Framework Class Library,FCL) ASP.NET1.1.2 C#介绍介绍C#是一种面向对象的编程语言,是从C和C+派生出来的一种简单、现代、面向对象和类型安全的编程语言,其语言体系都构建在.NET框架上,并且能够与.NET框架
2、完美结合。优势: 快速应用开发(RAD)功能 语言的自由性 强大的Web服务端组件 支持跨平台与XML的融合 对C+的继承1.2 VS 2008集成开发环境集成开发环境集成开发环境(简称IDE Integrated Development Environment )是用于提供程序开发环境的应用程序,主要包括代码编辑器、编译器、调试器和图形用户界面工具,为用户提供了一个完全的编程环境。Visual Studio2008是微软公司出品的一款大型应用软件,是.NET开发的首选工具,其中C#是使用最广发的开发语言,方便用户快速有效的建立应用程序。1.2.1 安装环境要求安装环境要求系统配置要求: 处理
3、器:最低1.6GHZ,推荐2.2GHZ或以上。 内存:最低384MB(Vista最低768MB),推荐1GB或以上。 硬盘:最低5400RPM,推荐7200RPM或更高转速,Visual Studio 2008安装最小需要1.22GB的可用硬盘空间,完全安装需要大概4GB的可用硬盘空间。 现实设备:最低1024*768,推荐1280*1024或以上的分辨率。 操作系统:建议使用Windows XP或更新版本操作系统。1.2.2 软件安装步骤软件安装步骤(1)首先购买Visual Studio 2008的安装光盘,也可以下载Visual Studio 2008安装软件,网上有很多下载地址。将Vi
4、sual Studio 2008安装光盘放入DVD光驱,屏幕将弹出图1-1所示的窗体。1.2.2 软件安装步骤(续)软件安装步骤(续)(2)单击第1项“安装Visual Studio 2008”链接,进入下一步安装,如图1-2所示,用户此时可以根据自己意愿选择是否参加微软帮助改进安装活动。1.2.2 软件安装步骤(续)软件安装步骤(续)(3)单击“下一步”,弹出如图1-3所示的窗体。这个窗体中包含用户许可协议,用户必须接受许可协议中的条款才可继续安装,且用户需在制定的文本框中输入产品的密钥。1.2.2 软件安装步骤(续)软件安装步骤(续)(4)单击“下一步”按钮,进入如图1-4所示的窗体,用户
5、此时可以根据自己的需求选择“默认值”、“完全”或“自定义”模式安装组件。如果硬盘空间足够,建议用户完全安装。此处允许用户选择更改安装路径,Visual Studio 2008的默认安装路径为“C:Program FilesMicrosoft Visual Studio9.0”。1.2.2 软件安装步骤(续)软件安装步骤(续)(5)完成设置,单击“安装”按钮,开始安装,安装软件将进入一个漫长的安装过程,如图1-5所示。1.2.2 软件安装步骤(续)软件安装步骤(续)(6)安装完成后显示安装成功的窗体,如图1-6示,重新启动电脑,安装结束。1.2.3 VS 2008基本功能简介基本功能简介(1)
6、菜单栏在标题栏下的水平栏,包含:文件、编辑、查看等7个菜单 (2) 工具栏为了操作更方便、快捷,常用的菜单命令按功能分组,被分别放入相应的工具栏中,方便开发人员的使用 (3) 工具箱面板工具箱是Visual Studio 2008的重要工具,它提供了进行Windows窗体应用程序开发所必需的控件,通过工具箱开发人员可以方便地进行可视化的窗体设计,简化了程序设计的工作量,提高了工作效率。 1.2.3 VS 2008基本功能简介基本功能简介(续)(续)(4) “属性”面板“属性”面板是Visual Studio 2008的一个非常有用的工具。该面板为Widows窗体应用程序的开封提供了简单的属性修
7、改方式,还提供了事件的管理功能,可以管理控件事件,方便编程时对事件的处理。如图1-11所示。 (5) 代码编辑器代码编辑器提供了强大的代码编辑功能,它提供了自动换行、渐进式搜索、代码的大纲显示等新功能,窗体如图1-12所示。1.2.3 VS 2008基本功能简介基本功能简介(续)(续)(6) “错误列表”面板编写程序代码、编译程序和运行程序过程中发现的错误都会显示到“错误列表”面板中。在开发过程中,“错误列表”面板会提示错误信息,方便开发人员可以从及时发现错误并修改错误。(7) “输出”面板“输出”用于提示项目的生成情况。 1.3 命名空间命名空间 “命名空间”,也称“名称空间”,是 VS.N
8、ET中的各种语言使用的一种代码组织的形式,通过名称空间来分类,区别不同的代码功能,是解决命名冲突的主要途径。命名空间是数据类型的一种组合方式,但在命名空间中所有数据类型的名称都会自动加上该命名空间的名字作为其前缀。命名空间还可以相互嵌套。例如,大多数用于一般目的的.NET基类位于命名空间System中,基类Array在这个命名空间中,所以其全名是System.Array。.NET需要在命名空间中定义所有的类型,例如,可以把Customer类放在命名空间YourCompanyName中,则这个类的全名就是YourCompanyName.Customer。 1.4 创建第一个创建第一个C#项目项目
9、1.4.1 第一个控制台应用程序第一个控制台应用程序.NET可以实现多种应用程序开发,包括控制台应用程序、Windows窗体应用程序、WPF应用程序、WCF服务应用程序等。创建步骤:(1)选择“文件”“新建”“项目”命令,弹出“新建项目”的窗口。1.4.1 第一个控制台应用程序第一个控制台应用程序(续)(续)(2)在“新建项目”窗口中,先选择左边“项目类型”列表框“Visual C#”选项,然后选择右边“模板”列表框“控制台应用程序”选项。在下方,需要输入项目名称“HelloWorld”,选择项目保存位置。(3)单击“确定”按钮,Visual Studio 2008自动生成应用程序。1.4.1
10、 第一个控制台应用程序第一个控制台应用程序(续)(续)(4)编写程序代码,在Main()函数中加入一行代码,用于显示“Hello World”。static void Main(string args) Console.Write(Hello World);/用于显示“Hello World”字符串 (5)最后运行程序。选择“调试”“启动调试(或按F5)”,也可以选择“调试”“开始执行(或按Ctrl+F5)”运行程序。1.4.2 第一个第一个Windows窗体应窗体应用程序用程序Windows窗体应用程序就是Windows图形界面应用程序,它能通过窗体和对话框完成于计算机用户的信息交互,并实现
11、一系列的功能。 开发步骤:(1) 选择“文件”“新建”“项目”命令,弹出“新建项目”的窗口,在“新建项目”窗口中,先选择左边“项目类型”列表框“Visual C#”选项,然后选择右边“模板”列表框“Windows窗体应用程序”选项。在下方,需要输入项目名称“Welcome”,选择项目保存位置,单击“确定”按钮。1.4.2 第一个第一个Windows窗体应窗体应用程序用程序(续)(续)(2)查看“解决方案资源管理器”窗口,如图所示。在文件“Form1.cs”上单击右键,选择“重命名”,将其改名为“Welcome.cs”。(3)查看主窗口,里面自动生成一个名为“Form1”的窗体,然后单击右侧“属
12、性”窗口,该窗口如图1-20所示,修改Name属性为“Welcome”,修改Text属性为“Welcome”。 1.4.2 第一个第一个Windows窗体窗体应用程序应用程序(续)(续)(4)单击主窗口左侧的“工具箱”窗口,出现一些Windows控件。(5)双击“Label”控件,或者单击后按住左键将其拖至主窗口的窗体中,并设置“Lable”控件的属性。(6)双击“Button”控件,或者单击后按住左键将其拖至主窗口的窗体中,并设置“Button”控件的属性。NamelbtnShowText显示NamelblDisplayText空BackColor Window1.4.2 第一个第一个Win
13、dows窗体应窗体应用程序用程序(续)(续)(7)双击“显示”按钮,将进入代码窗口,可以看到VS.NET已经自动生成了很多代码。进入代码窗口后,光标自动位于方法“btnShow_Click()”内部,在光标处添加如下代码:this.lblDisplay.Text = Welcome to C#!;(8)选择“调试”“开始执行(不调试)”菜单项,或者使用快捷键“CTRL+F5”运行程序,单击“显示”按钮,在标签中就会出现如图所示的结果。 1.5 MSDNMSDN 的全称是 Microsoft Developer Network,是微软公司面向软件开发者的一种信息服务,是开发人员不可缺少的工具。M
14、SDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载等等一系列服务,它涵盖了所有的可以被开发扩充的平台和应用程序,作为一个学习者,更应该学会使用MSDN。MSDN的基本使用的基本使用(1) 目录浏览单击工具栏“目录”按钮,可以在主界面左侧,可以让用户快速的对MSDN的结构有一个大概的了解,为用户使用MSDN起到导航的作用。(2) 索引快速访问单击工具栏“索引”按钮,可以在主界面的左侧 “索引”面板。用户可以在“查询”文本框中输入所要查询的内容并回车,MSDN将自动搜索最匹配的技术文档,供用
15、户阅读。(3) 搜索MSDN文档库MSDN还为用户提供了一种强大的搜索功能,可以提供对本地帮助、MSDN Online、Codezone社区等许多文档库的详细搜索。单击工具栏中的搜索按钮,并在文本框中输入搜索的内容提要,并回车,搜索的结果将以概要方式呈现在主界面中,用户可以根据自己的需要选择不同的文档进行阅读。第第2章章 C#程序设计基础程序设计基础2.1 C#语句语句语句是构成程序的主要组成部分,编写任何程序都必须以语句为单位构成的。所谓语句,其实就是构造所有C#程序的过程构造块。 C#语句可以分为5大类,分别是:1. 控制语句,能 完成一定的控制功能,C#提供了9种控制语句。2.方法调用语
16、句,由一次函数调用加一 个分号构成一个语句3. 表达式语句,由一个表达式构成一个语句4.空语句,是由一个分号组成,不进行任何操作5. 代码块,是可以用 把一些语句括起来成为复合语句2.2 关键字与标识符关键字与标识符C#语言主要由关键字、标识符、运算符等元素组成。这几种元素有着不同的语法含义和组成规则,它们之间相互配合,共同完成C#的语义表达。 2.2.1关键字关键字关键字也被称为保留字,是C#语言本身使用的标识符,它有特定的语法含义,所有的C#关键字不用做标识符,其常见的关键字如右所示。2.2.2 标识符标识符标识符是对程序中的各个元素(如变量、常量、方法等)加以命名时使用的命名记号。在C#
17、语言中,标识符是一个字符序列,它有特定的命名规则: 标识符必须以字母、下划线“_”或者“”开头,后面的字符可以是字母、下划线或数字,不能包含空格、标点符号、运算符等其他符号; 标识符不能命名为C#的关键字; 标识符不能命名为C#的库函数。(1)变量变量1.数据类型数值型:byte、short、int和long浮点型:float和double字符型:char布尔型:bool数值类型数值类型C# 数据类型大小默认值 示例sbyte (byte)有(无)符号的 8 位整数 0byte gpa = 2;short (ushort)有(无)符号的 16 位整数 0short salary = 3400;
18、int (uint)有(无)符号的 32 位整数 0int rating = 20;long (ulong)有(无)符号的 64 位整数 0Llong population = 23451900;float32 位浮点数,精确到小数点后 7 位 0.0Ffloat temperature = 40.6F;double双精度浮点型,15或16个有效数字 0.0double temperature = 40.6;decimal 28个有效数字的精确小数型 0.0decimal temperature = 40.6变量(续)变量(续)2.变量声明在C#中,使用变量之前必须声明。变量声明的语法规则如下
19、:type identifier=value,identifier=value;声明多个同类型的变量,可以用逗号隔开。变量的两种方式赋值:使用赋值运算符 (=)给变量i赋值,例如:int i;i = 10;声明变量,并初始化它的值,例如:int i=10;变量(续)变量(续)3.变量的类型在C#语言中,把变量分成3种类型,它们有各自的特点。 实例变量:是不带任何关键字的变量,例如:int i。实例变量在其所在的方法调用结束后,其数据会被清除掉,所占的内存空间也会被释放。 静态变量:是使用了“static”关键字修饰的变量,例如:static int i。静态变量在函数调用结束仍保留变量值,直到
20、程序结束前一直存在。另外,静态变量不在类的方法中定义,因为这没有意义。 局部变量:是指一个独立的代码块中声明的变量,只有在这个代码块中有效,一旦离开这个作用域,将不再存在。(2)常量)常量常量的声明和变量类似,需要指定数据类型、常量名、初始值,并需要使用关键字const,常量声明的语法规则如下:const typeidentifier=value;2.3 运算符与表达式运算符与表达式1.一元运算符一元运算符就是运算和一个变量就可构成一个表达式。C#的一元运算符包括自增运算符(+)和自减运算符(-)。自增运算符(+)是操作数加1,自减运算符(-)是操作数减1。2.二元运算符二元运算符需要两个操作
21、数的参与,常见的二元运算符算术运算符:加(+)、减(-)、乘(*)、除(/)和取模运算符(%) 逻辑运算符:表示操作数的逻辑关系,其运算结果用布尔值表示。常见的逻辑运算符有、=、=、!=、&、|、!。位运算符:用来对数据按二进制位进行运算的操作符,其运算符包括与(&)、或(|)、异或()、非()、左移() 3.三元运算符三元运算符(?:)也叫做条件运算符,它需要三个操作数。该运算符的一般形式为:exp1?exp2:exp3;其中exp1、exp2、exp3是表达式,首先计算exp1,如果结果为真,则将exp2的运算结果作为整个表达式的结果;如果结果为假,则将exp3的运算结果作为整个表达式的结
22、果。4.其他简化运算符+=、-=、*=、/=、%=、&=、|=、=、=运算符的优先级运算符的优先级 表达式表达式 表达式是可以结算且结果为单个值、对象、方法或命名空间的代码片段。表达式可以使用运算符和参数构成符号C#规则的式子,而参数又可以是由其他运算符与参数构成的表达式组成,因此表达式可以很简单,也可以很复杂。在编写程序时,不同参数的数据类型可能不同,在C#中,这种进行数据统一的方法叫做转化。转换是可以把一个表达式的编译时类型当作另一种编译时类型处理。转化有隐式的或显式的。 隐式转换时,系统将按照数据类型的表示范围由小到大的转换原则自动进行。数据类型的表示范围由小到大的顺序依次为:小大,即b
23、yteshortcharintlongfloatdouble; 显式转化正好相反,当数据类型的标识范围由大到小的顺序时,必须采用显式转化,否则编译器会报错。 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 Holiday(); myHol
24、iday.GetWeekDays (Richie, Holiday.WeekDays.Wednesday); 1.枚举(Enum,Enumerator 的缩写)是一组已命名的数值常量 ,用于定义具有一组特定值的数据类型,以 enum 关键字声明:Wednesday = 2枚举(续)枚举(续) C# 中的枚举包含与值关联的数字 默认情况下,将 0 值赋给枚举的第一个元素,然后对每个后续的枚举元素按 1 递增 在初始化过程中可重写默认值 枚举不能定义自己的方法、属性或事件, 枚举不能实现接口。public enum WeekDaysMonday=1,Tuesday=2,Wednesday=3,Th
25、ursday=4,Friday=52.结构结构结构是几个数据组成的数据结构,它可以包含方法。 结构声明的语法规则如下:访问修饰符 struct 结构名 :实现的接口 结构体 ;其中,内容是可选的,访问修饰符可以是public、private等关键字。结构体的类型可以相同,也可以不同,甚至可以是其他的结构类型。结构(续)结构(续) 定义: struct Point_self short x,y; struct RectArea Point_self LeftTop; Point_self RightBottoms; public void Drawing() 引用分量 p1.x=5; p1.y=
26、10; p2.x=p1.x; p2.y=p1.y+5; 说明职员信息的结构2.5 数组与集合数组与集合1.数组一维数组: 说明:int MyIntArray; Point MyPointArray; 创建:int MyIntArray=new int5; Point MyPointArray= new PointarraySize; 初始化: String MyFreandPhone= “0288540233”,”02885412222”,”01088774563”; 访问数组的元素 :从0开始 MyIntArray1=10 Console.writeline(MyFreandPhon1);
27、多维数组: 多维数组说明: int, MyMatrix; int, My3Darray; 多维数组创建:设 Length ,width 是常量 int, MyMatrix= new intlength, width; 多维数组初始化: int, MyMatrix=1,2,3,4,4,3,2,1,9,8,7,6; 多维数组元素引用: MyMatrix2,3 3行4列的元素 数组(续)数组(续)2.数组运算: 数组元素的遍历:是指全部访问数组中的元素一次且仅一次,C#提供了foreach语句以实现数组的遍历功能,使用foreach语句可以访问数组中的每个元素而不需要知道每个元素的下标。 查找数组元
28、素:在数组中查找元素,可以有两种结果,一是从整个数组中寻找与给定值相同的元素,二是判断数组中是否含有与给定值相同的元素。最常用查找方法有:顺序检索、二分检索、使用System.Array.IndexOf方法检索。 数组排序:将数组中的元素值按递增或递减的次序排列。数组排序的算法有很多,常用的有选择法、冒泡法、插入法、合并排序等。 数组中元素的插入和删除 ;集合集合集合是指一组类似的对象, C#提供了强大的集合操作能力。集合类似于数组,但是可以用笔数组更灵活、更有效的方式处理集合中的数据项。 1. 一般集合一般集合是常见的集合数据结构,包括以下几种: 列表(ArrayList):一个一维的动态数
29、组,可以装载一组相似的数据元素; 队列(Quene):先进先出的列表; 堆栈(Stack):先进后出的列表; 哈希表(Hashtable):集合中的每个元素都是一个对的列表; 字典(DictionaryEntry):一个对。集合(续)集合(续)2.常见集合操作列表(ArrayList) :C#提供了实现列表(ArrayList)的常用属性和方法,其说明如下所示:Capacity:获取或设置ArrayList可包含的元素数Count:获取ArrayList中实际包含的元素数Item:获取或限制指定索引处的元素Add/AddRange:将对象添加到ArrayList的结尾处Clear:从Array
30、List中移除所有元素Index/IndexRange:将元素插入ArrayList的指定索引处Remove/RemoveRange:从ArrayList中移除特定对象Sort:对ArrayList或其中一部分的元素进行排序队列(Queue):C#提供了实现队列(Queue)的常用属性和方法,其说明如下所示:Count:获取Queue中实际包含的元素数Clear:从Queue中移除所有元素Enqueue:入队操作Dequeue:出队操作堆栈(Stack):C#提供了实现堆栈(Stack)的常用属性和方法,其说明如下所示:Count:获取Stack中实际包含的元素数Clear:从Stack中移除
31、所有元素Push:入栈操作Pop:出栈操作第第3章章 程序控制结构程序控制结构重点内容重点内容 了解顺序结构 理解与应用if和switch分支选择语句 理解与应用while、do-while和for循环语句 理解与应用break和continue控制转向语句3.1 顺序结构顺序结构顺序结构就是各语句按出现的先后次序执行。程序的执行过程是:先执行语句A,然后执行语句B,最后执行语句C。3.2 分支选择结构分支选择结构分支结构,顾名思义,是指程序进入分支结构后,面临走哪一条路、执行哪一条分支的选择。选择是通过对某一个条件进行测试后做出的,条件往往由关系或逻辑表达式来描述。if语句语句1. 简单if
32、语句简单if语句只在条件为真时执行一个分支,当条件为假时不做任何操作,其语法规则如下:if(布尔表达式)语句(组)其执行的流程右图所示。2. if-else语句当指定布尔表达式为真时执行一个分支,当条件为假时执行另一个分支,其语法规则如下:if(布尔表达式)语句(组)else语句(组)其执行的流程右图所示。if语句(续)语句(续)3. 嵌套if语句if语句中包含其他if语句,则内层的if语句嵌套在外层if语句中。内层if语句又可以包含其他的if语句,这种嵌套的深度没有限制,其语法规则如下:if(布尔表达式1)语句(组)else if(布尔表达式2)语句(组)else语句(组)其执行的流程图右图
33、所示。嵌套if语句可以实现多重选择,但是使用嵌套if语句时,太多层的if语句容易引起混乱,而且一定要注意if与else的匹配。【例4-6】求分段函数的值。设有一个数学函数的表达式为:程序流程如图所示。010001xxxy开始开始输入变量输入变量x输出结果输出结果x0?y1结束结束YesNoX0?y0y1YesNoswitch语句语句 witch语句实现多重条件选择,其语法规则如下:switch(表达式)case 表达式值1:语句块1;break;case 表达式值2:语句块2;break;default:语句块;break;其中,每个可能的分支都对应着一个case语句,switch判断表达式的
34、值符合哪一个case语句中的表达式值,就执行这个case语句对应的分支,其执行的流程图所示。switch语句(续)语句(续)使用switch语句必须注意以下规则: 表达式必须能计算出一个char、byte、short或int型值; switch表达式的值与case表达式值必须是相同的数据类型; 关键字break语句是可选的,编写break语句可以避免编程错误,提高代码的可维护性; 关键字default语句是可选的。3.3 循环结构循环结构当程序需要不停执行某种功能,直到达到某种条件才停止,可以采用循环结构实现。循环中要重复执行的语句块称为循环体,每个循环包含一个循环条件,它是控制循环体执行的布
35、尔表达式,每循环一次后都要重新计算循环条件。若条件为真,重复执行循环体,若条件为假,终止循环。C#提供了4种循环语句:for循环语句、while循环语句、do-while循环语句和foreach循环语句。for循环语句循环语句 for循环语句是最常见的一种循环结构,一般情况下,它使用一个变量来控制循环体的执行次数和终止条件,其语法规则如下:for(初始化操作;循环条件;每次循环后的操作)语句块; /循环体for语句小括号中的初始化操作、循环条件和每次循环后的操作都是用分号隔开,通常初始化操作初始化循环条件中的变量,每次循环后的操作增加或减少这个变量,而循环条件检验这个变量是否达到终止值,其执行
36、的流程如图所示。while循环语句循环语句 while循环语句是另一种常用的循环结构,它对于循环次数有限但又不知道具体次数的情况相当有效,其语法规则如下。while(循环条件)语句块; /循环体while循环语句的功能是:当给定的循环条件为真时,执行循环体,当给定的循环条件为假时,则终止循环。while循环语句不用知道循环体的循环次数,相比if循环语句更加灵活,其程序流程如图所示。使用while循环语句时,应该注意以下规则: while循环语句先对循环条件进行计算,然后才决定是否执行循环体,只有在循环条件为真时才执行循环体。如果条件从开始就不成立,则一次循环体也不执行; 当循环条件第一次出现为
37、假时,循环才能终止。do-while循环语句循环语句 do-while循环语句是while循环语句的变体,它跟while循环语句类似,当循环条件为真时,循环体就会不断地重复执行,当循环条件为假时,则终止循环、退出循环语句,其语法规则如下:do语句块; /循环体while(表达式);do-while循环语句是先执行循环体后进行循环条件判断,所以do-while循环语句至少执行一次循环体,其程序流程如图所示。 foreach循环语句循环语句 foreach循环语句是一条新语句,该语句为数组或对象集合中的每个元素重复一个嵌入语句组,它用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不
38、可预知的副作用其语法规则如下:foreach(类型 变量名 in 集合对象)语句块; /循环体嵌入语句为数组或集合中的每一个元素继续执行。当集合中的所有元素完成循环后,终止并退出循环。常用算法常用算法 1. 累加、连乘在循环结构中,最常用的算法时累加和连乘。累加是在原有的基础上一次一次地每次加一个数;连乘则是在原有乘的基础上一次一次地每次乘以一个数。【例3.7】求自然对数e的近似值,要求其误差小于0.00001,近似公式为e=1+1/1!+1/2!+1/3!+1/n!。 (程序见教材例3.7)2.求素数素数,又称为质数,是一个大于2的整数,并且只能被1和本身整除,而不能被其他整数整除的数。判别
39、某数n是否为素数的方法很多,最简单的是从素数的定义求解,其算法思想是:对于m从i=2,3,n-1判别n能否被i整除,只要有一个能整除,n不是素数;否则n是素数。【例3.8】求1000以内的素数。(程序见教材例3.8)3.4 控制转向的语句控制转向的语句C#为程序控制结构提供了4种不同的控制跳转语句:break、continue、return和共同语句。在前面的循环结构中,为了提供程序效率,需要强制跳出循环,就必须使用控制跳转语句。break语句语句break语句是用于立刻终止语句的执行。在循环语句中,break语句用于包含它的最内层循环。同样地,它还可以用于中断if语句和switch语句。当程
40、序执行到break语句,程序跳转到北终止执行的语句后,其语法规则如下:break;continue语句语句continue语句与break语句一样,可以实现跳转。当程序遇到continue语句后,结束当前进行的这次循环,将程序控制转移到循环体尾部,以便进行下一次循环条件判断。continue语句与break语句的区别是,break语句终止整个循环的执行,而continue语句只终止当前这一次循环的执行,其他的循环可以继续进行,其语法规则如下:continue;return语句语句return语句是终止包含它的方法的执行,并将控制返回到主调函数继续执行,它返回时可附带一个可选值。如果方法为voi
41、d类型,则可以省略return语句,其语法规则如下:return;goto语句语句goto语句属于无条件跳转语句,C#语言支持代码行加上标签,这样就可使用goto语句直接跳转到标签代表的语句上。goto语句一个好处就是可以保证程序存在唯一的出口,避免了过于庞大的if嵌套,但是由于它是无条件跳转,可读性差,所以建议只用在多重循环的跳出,其它情况尽量不用,其语法规则如下:goto 标签;goto语句(续)语句(续)【例4-10】goto语句的简单应用。using System;class Program static void Main(string args) goto h; w:Console
42、 .WriteLine (world!); return ; h:Console .Write (hello ); goto w; 程序的运行效果如图所示常用算法实例常用算法实例1.穷举算法穷举也称为枚举,是最常用的算法之一,它的基本思想是一一列举各种可能进行测试,从中找出符合条件的解。计算机能够实现高速运算,是由于它借助于循环结构实现穷举,它比人工操作更为有效。【例3.9】用穷举算法,在5行中显示自然数中的前50个素数,并按一行十个素数输出。namespace _3._9 class Program static void Main(string args) int count = 0, n
43、umber = 2; bool isPrime = true; Console.WriteLine(自然数中前50个素数列表为:); while (count 50) isPrime = true; /判断是否为素数 for (int j = 2; j = (int)(Math.Sqrt(number); j+)/减小穷举的规模 if (number % j = 0) isPrime = false; break; if (isPrime=true) count = count +1; if (count % 10 = 0) Console.WriteLine(number); else Co
44、nsole.Write(number + ); number+; 程序运行结果如图所示。常用算法实例(续)常用算法实例(续)2.迭代算法迭代就是不断由已知值推出新值,直到求解为止。显然,迭代算法是利用计算机的高速运算能力和循环程序来实现的。一般来说迭代由3个环节组成:迭代初始值迭代公式迭代终止条件【例3.10】用迭代算法计算:20+21+22+263。namespace _3._10 class Program static void Main(string args) float t = 1, s = 0;/迭代初始条件 for (int i = 0; i “逐语句”开始单步执行程序,程序首
45、先暂停在主函数的第一行,使用快捷键F10或F11单步执行程序。F10与F11的区别是:F10可以跳过一行代码中所调用的方法。 2.设置断点:单VS 2008提供了设置断点解决大规模程序差错。在设置断点时,首先把光标放置指定的地方,使用快捷键F9或Ctrl+B,或者选择“调试”“新建断点”,如图下所示。设置断点后,选中这个断点,右键单击该断点,选择“条件”选项,即可出现右图所示的设置“断点条件”窗口。设置断点条件完成后,单击调试按钮或使用快捷键F5,运行程序,当程序运行到指定的断点位置,并满足断点暂停条件时,代码会暂停运行,此时就可以使用单步执行方式来仔细观察程序的运行状态,找出程序的错误地点。
46、4.3 捕获异常捕获异常C#中可以使用try-catch语句来捕获程序抛出的异常,其语法规则如下所示:try处理代码;catch(异常) /捕获异常捕获异常;4.4 异常处理异常处理当出现异常后,C#用try-catch语句捕获异常,它还提供了对异常处理的内建支持,即通过try-catch语句、try-catch-finally句语和throw语句实现结构化、统一化的类型安全的异常处理。try-catch语句语句在try-catch语句中,try语句会捕获到程序出现的异常,然后将程序控制转移到相应的catch语句中。如果try语句没有遇到任何异常,则程序直接执行try-catch语句后面的代码
47、。一个try-catch语句中,可以使一个try语句后匹配一个或多个catch语句,程序根据try语句指定的异常类型与catch语句中指定的异常类型匹配关系,执行相应的catch语句。try-catch-finally语句语句在try-catch-finally语句中,无论是否出现异常,是否有catch语句,finally语句一定会执行,其语法规则如下所示:try处理代码;catch(异常) /捕获异常捕获异常;finally代码块;throw语句语句throw语句用于抛出在程序执行期间出现异常情况的信号。throw语句通常与try-catch或者try-catch-finally语句配合使用
48、。开发人员可以使用throw语句显示抛出异常(即开发人员自定义的异常)。不捕捉异常的后果不捕捉异常的后果捕捉C#的标准异常是有副作用的:它避免了异常的程序终止。捕捉一个异常时,必须由某些地方的代码片来捕捉。通常,如果程序不捕捉异常,那么将由C#运行时系统来捕捉异常。此时存在一个问题,运行时系统将报告错误并终止程序的运行。4.5 常用异常常用异常在C#中,异常用类来表示。所有异常类都必须从内部异常类Exception派生而来,而Exception是System名字空间的一部分。因此,所有异常都是Exception的子类。SystemException和ApplicationException都是
49、从Exception派生而来,它们支持C#定义的两类常规异常:C#运行时系统(即通用语言运行时CLR)产生的异常,以及应用程序产生的异常。SystemException和ApplicationException都未给Exception添加新内容,它们只是定义两个不同异常层次结构的顶层。C#定义了许多内部异常,它们都是从System.Exception派生而来。例如,试图以0为除数时,产生的DivideByZeroException异常。System名字空间定义了一些标准的内部异常。产生运行时错误时,CLR产生这些异常,所以它们都是从SystemException派生而来。C#定义的常用标准异常
50、如下所示。第第5章章 C#面向对象程序设计技术面向对象程序设计技术重点内容重点内容 理解面向对象编程的特点 掌握类与对象、接口 掌握抽象类与抽象方法 理解密封类与密封方法 理解迭代器、分部类和索引器 掌握运算符重载5.1 类与对象类与对象在比较传统的面向过程的应用程序开发中,程序是由一系列过程或函数的模块组成的可执行的实体,每个模块执行某个特定的功能,面向过程编程能很好地解决小型的、具体的问题;但面对复杂的大系统,它却无法胜任,因而迫使人们去寻求解决大型的复杂系统的新方法。在这种背景下,产生了面向对象的编程技术。面向对象编程面向对象编程面向对象编程(Object-Oriented Progra