《C#.net程序设计课件》(资料全集)c#3_第1页
《C#.net程序设计课件》(资料全集)c#3_第2页
《C#.net程序设计课件》(资料全集)c#3_第3页
《C#.net程序设计课件》(资料全集)c#3_第4页
《C#.net程序设计课件》(资料全集)c#3_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第三三章章 流程控制流程控制C#.net程序设计C#.NET程序设计本章主要内容本章主要内容l选择语句选择语句(if语句和语句和switch语句语句)l循环语句循环语句(while,do-while,for,foreach循环语句循环语句)l跳转语句跳转语句(break,continue,return,goto语句语句)l异常处理异常处理(try-catch-Finally)和和throw语句语句C#.NET程序设计条件选择语句条件选择语句选择语句根据某个条件是否为选择语句根据某个条件是否为 true 来将程序控制权移交给特定的语句流程。来将程序控制权移交给特定的语句流程。选择语句分为选择语

2、句分为if语句和语句和switch语句两种。语句两种。C#.NET程序设计if语句语句if语句是条件选择语句,根据布尔表达式的值选择要执行的语句是条件选择语句,根据布尔表达式的值选择要执行的语句。其常用的表达形式有:语句。其常用的表达形式有:lif(布尔表达式)(布尔表达式) 语句组(块)语句组(块); 或或lif(布尔表达式)(布尔表达式) 语句组(块)语句组(块)1; else 语句组(块)语句组(块)2;l流程图如下流程图如下:条件选择语句条件选择语句C#.NET程序设计if语句语句例:使用if-else条件选择语句对一个浮点数x 进行四舍五入,结果保存到一个整数i 中,代码如下:if

3、(x (int)x = 0.5)/ x (int)x = 0.5条件成立执行代码 i = (int)x + 1; Else / x (int)x = 0.5条件不成立执行代码 i = (int)x; 例:使用if条件选择语句将i除j,结果保存y 中(要判断j不等于0), 代码如下:if (j != 0) y=i/j; 条件选择语句条件选择语句C#.NET程序设计if 语句嵌套语句嵌套 if 语句可以嵌套使用,每一条语句可以嵌套使用,每一条else 与离它最近且与离它最近且没有其它没有其它else与之对应的与之对应的if相搭配。相搭配。 使用使用else if方法处理多个条件形式如下:方法处理多

4、个条件形式如下:if(布尔表达式1) 语句组1; else if(布尔表达式2) 语句组2; else if(布尔表达式n) 语句组n; else 语句组n+1; 条件选择语句条件选择语句例:检查输入字符是否是小写字符、大写字符或数字,或其他。using System;public class IfTest static void Main() Console.Write(Enter a character: ); char c = (char)Console.Read();/读一个字符 if (Char.IsUpper(c) /用于判断c是否为大写字符Console.WriteLine(Ch

5、aracter is uppercase.); else if (Char.IsLower(c) /用于判断c是否为小写字符Console.WriteLine(Character is lowercase.); else if (Char.IsDigit(c) /用于判断c是否为数字 Console.WriteLine(Character is a number.); Else/除字母数字以外的字符 Console.WriteLine(Character is not alphanumeric.); C#.NET程序设计switch语句语句 switch 语句的一般格式为:语句的一般格式为:s

6、witch(控制表达式)(控制表达式) case 常量表达式常量表达式1: 语句组语句组1 break; case 常量表达式常量表达式2: 语句组语句组2 break; case 常量表达式常量表达式n: 语句组语句组n break; default: 语句组语句组n+1 break;条件选择语句条件选择语句C#.NET程序设计switch 语句语句switch 语句的控制类型,即其中控制语句的控制类型,即其中控制表达式的数据类型可以是整数如(表达式的数据类型可以是整数如(byte、short、int、long等),等),char,string 或或枚举类型,每个枚举类型,每个case 标签

7、中的常量表达式标签中的常量表达式(constant-expression)必须属于或能隐式必须属于或能隐式转换成控制类型。转换成控制类型。下面例子说明下面例子说明switch 语句是如何实现语句是如何实现程序的多路分支的。假设考查课的成绩按程序的多路分支的。假设考查课的成绩按优,良,中,及格和不及格分为五等分别优,良,中,及格和不及格分为五等分别用用5、4、3、2、1来表示,但实际的考卷来表示,但实际的考卷为百分制分别对应的分数为为百分制分别对应的分数为90-100、80-89、70-79、60-69、60分以下。下面的程序将分以下。下面的程序将考卷成绩考卷成绩x 转换为考查课成绩转换为考查课

8、成绩y。SwitchSample项目代码如下:项目代码如下:条件选择语句条件选择语句int y;double grade = double.Parse(Console.ReadLine();/控制台输入分数int x = (int)(grade/10); /除,去掉小数点取整。switch(x) case 10:/100/10 =10 case 9: y=5;break; /99-90/10=9 case 8: y=4;break; /80-89/10=8 case 7: y=3;break; /70-79/10=7 case 6: y=2;break; /60-69/10=6 default

9、: y=1;break; /其余Console.WriteLine(百分制0,转换为1, grade, y); switch 语句可以包括任意数目的 case 实例,但是任何两个 case 语句都不能具有相同的值。在每一个 case 块(无论case 语句还是 default 语句)的后面,都必须有一个跳转语句(如 break)。但有一个例外是当 case 语句中没有代码时。如上例:case 10:。如果没有任何 case 表达式与开关值匹配,则控制传递给跟在可选 default 标签后的语句。如果没有 default 标签,则控制传递到 switch 以外。 C#.NET程序设计循环语句循环

10、语句循环语句实现一个程序模块的重复执行。循环语句实现一个程序模块的重复执行。C#提供了四种循环语句提供了四种循环语句:lwhile语句语句ldo-while 语句语句lfor 语句语句lforeach 语句语句它们分别适用于不同的情形。它们分别适用于不同的情形。C#.NET程序设计while 循环语句循环语句lwhile 语句循环执行一个语句或语句块,直到指定的语句循环执行一个语句或语句块,直到指定的表达式计算为表达式计算为 false。while 语句的流程图如下:语句的流程图如下:lwhile 语句的格式为语句的格式为:while(布尔表达式)(布尔表达式) 循环体语句组循环体语句组 使用

11、使用break语句结束语句结束while循环,执行后续语句。使循环,执行后续语句。使用用continue语句停止循环体的执行,重新回到语句停止循环体的执行,重新回到while 循循环表达式判断,开始下一次迭代但不退出循环。环表达式判断,开始下一次迭代但不退出循环。 循环语句循环语句例:使用While循环语句,在给定数组中查找一个指定的值,遇到不等的正数在屏幕显示,找到指定的值就返回数组下标并在屏幕显示找到。未找到返回-1。下面是WhilSample项目的代码: static int Find(int value, int array) int i = -1; while (+i array.L

12、ength) / array.Length是数组长度 if (arrayi = value) Console.WriteLine( 在数组第0个元素找到:1,i, value); break; /找到,结束while循环 if(arrayi=0) continue; /数组元素为负数时,不执行下句回到while循环表达式判断 Console.WriteLine(arrayi); if (i =array.Length) /未找到时i= array.Length i=-1; Console.WriteLine( 在数组未找到:0, value); return i; C#.NET程序设计do-w

13、hile循环语句循环语句ldo-while循环语句循环语句, 语句格式如下:语句格式如下:do 循环体 while(布尔表达式);ldo 语句重复执行括在语句重复执行括在里的一个语句或语句组,里的一个语句或语句组,直到直到while指定的表达式计算为指定的表达式计算为 false。同样允许。同样允许使用使用break语句结束语句结束while循环,和使用循环,和使用continue语句停止循环体的执行开始下一次迭代但不退出语句停止循环体的执行开始下一次迭代但不退出循环。循环。ldo-while 语句与语句与while 语句不同的是:内嵌循环语句不同的是:内嵌循环体语句执行至少一次,例如体语句执

14、行至少一次,例如int x = 0;/如果如果x=6, 输出输出6,do Console.Write (x+”,”); x+; while (x intMax)txtMin.Text = txtMax.Text;txtMax.Text = intMin.ToString();txtResult.Text = GetPrime(intMin, intMax);private string GetPrime(int intMin, int intMax)/程序主要代码程序主要代码 int count = 0; StringBuilder sbResult=new StringBuilder();

15、for (int i = intMin; i = intMax; i+)/对区间内每一个整数循环判断是否是素数 bool blnPrime = true;for (int j = 2; j i / 2 + 1; j+)/判断i是否被2一直到i/2+1整除if (i % j = 0) /出现整除说明不是素数blnPrime = false;break;if (blnPrime) /是素数count+;sbResult.AppendFormat(0, i); sbResult.AppendFormat(共0个素数。, count); return sbResult.ToString();C#.NE

16、T程序设计foreach 语句语句lforeach 语句为数组或对象集合中的每个元素重复执行语句为数组或对象集合中的每个元素重复执行一个循环体。一个循环体。foreach 语句用于循环访问集合以获取所语句用于循环访问集合以获取所需信息,但不应用于更改集合内容,循环变量是一个只需信息,但不应用于更改集合内容,循环变量是一个只读型局部变量读型局部变量,如果试图改变它的值将引发编译时错误,如果试图改变它的值将引发编译时错误,如需要更改集合内容,使用其他循环语句。如需要更改集合内容,使用其他循环语句。lforeach循环语句的格式为循环语句的格式为:lforeach(变量类型(变量类型 循环变量循环变

17、量v in 集合表达式集合表达式e)循环体循环体l其中集合表达式其中集合表达式e是是,可枚举的集合可枚举的集合,指实现指实现System.Collections.IEnumerable接口的一个集合。接口的一个集合。如数组,如数组,ArrayList类等类等, foreach循环收集可枚举的集循环收集可枚举的集合中的各元素。合中的各元素。循环语句循环语句对数组使用 foreach的ForeachSample项目的部分代码如下: int numbers = 4, 5, 6, 1, 2, 3, -2, -1, 0 ;foreach (int i in numbers) System.Console

18、.Write(0 , i);/输出“5 6 1 2 3 -2 -1 0 ”int, numbers2D = new int3, 2 9, 99 , 3, 33 , 5, 55 ;foreach (int i in numbers2D) System.Console.Write(0 , i);/输出“9 99 3 33 5 55 ”C#.NET程序设计跳转语句跳转语句跳转语句有以下几种跳转语句有以下几种:lbreak语句用于终止最内层的语句用于终止最内层的while、do-while、for和和switch等语句的执行。当程序遇到这一语句后,跳出所在循环语句等语句的执行。当程序遇到这一语句后,跳

19、出所在循环语句或或switch语句,执行后面的语句。语句,执行后面的语句。lcontinue语句语句,当程序循环遇到这一语句后,停止当前进行的当程序循环遇到这一语句后,停止当前进行的这次循环并把控制返回到当前循环的的布尔表达式判断是否这次循环并把控制返回到当前循环的的布尔表达式判断是否继续循环,以便于进行下一次循环。继续循环,以便于进行下一次循环。lreturn 语句终止方法的执行并将控制返回给调用该方法的语语句终止方法的执行并将控制返回给调用该方法的语句。不能在句。不能在finally块中使用块中使用return语句。它还可以返回一个可语句。它还可以返回一个可选值,如。选值,如。return

20、 表达式。如果方法为表达式。如果方法为 void 类型,则可以省类型,则可以省略略 return 语句。语句。lgoto 语句将程序控制直接传递给标记语句。语句将程序控制直接传递给标记语句。语法格式为:语法格式为:goto 标号标号; goto case 表达式表达式; goto default;goto语句可用来跳出循环和语句可用来跳出循环和switch语句。它无条件地转移程语句。它无条件地转移程序的执行控制,其转移目的地是一标号,因此要求标号与序的执行控制,其转移目的地是一标号,因此要求标号与goto语句处在同一个方法中。语句处在同一个方法中。lgoto语句例子如下语句例子如下: swit

21、ch (n) case 1: cost += 25; break; case 2: cost += 25; goto case 1;/转到case 1语句 for (int i = 0; i x; i+) for (int j = 0; j y; j+) if (arrayi, j.Equals(myNumber) goto Found;/转到标号Found Console.WriteLine(The number 0 was not found., myNumber);Found: Console.WriteLine(The number 0 is found., myNumber);C#.

22、NET程序设计异常处理异常处理l异常是程序运行程序时遇到的任何错误情况或意外行为。例如数据类型从字符串转换整型int intA = int.Parse(strA);如果strA不是整数的字符串如strA=”A”则有引发FormatException异常。在语句intResult = (int)(100 / intA);如果intA是0,则有引发DivideByZeroException零除数异常。l异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理可能发生的异常,以及在事后清理资源。代码如下: try int intResult = (int)(100 /

23、 intA);catch (DivideByZeroException err) Console.WriteLine(零除数异常);C#.NET程序设计异常处理语句异常处理语句try-catch语句语句 l将可能引发异常的代码节放在将可能引发异常的代码节放在 try 块中,而将处理异常块中,而将处理异常的代码放在的代码放在 catch 块中。块中。catch 块是一系列以关键字块是一系列以关键字 catch 开头的语句,语句后跟异常类型和要执行的操作。开头的语句,语句后跟异常类型和要执行的操作。l如果能确定在如果能确定在try语句块中可能发生的异常类型,那么语句块中可能发生的异常类型,那么ca

24、tch语句可以捕捉相应的异常类型;如果事先并不知语句可以捕捉相应的异常类型;如果事先并不知道道try语句块中会引起哪一种异常,则在语句块中会引起哪一种异常,则在catch语句中可语句中可以忽略异常的类型。以忽略异常的类型。l如果是多个异常,可以用多个如果是多个异常,可以用多个catch语句块,格式如下:语句块,格式如下:try/try语句块catch(类型1 参数1)/针对类型1的异常处理catch (类型2 参数2) / 针对类型2的异常处理catch (类型n 参数n)/针对类型n的异常处理异常处理异常处理static void CopyArray() int array1 = 0, 0

25、; int array2 = 0, 0 ; try Array.Copy(array1, array2, -1); /数组array1拷贝到array2 ,-1是复制长度-错 Console.WriteLine(本语句因上句出错而无发执行); catch (ArgumentOutOfRangeException e) Console.WriteLine(Error: 0, e); /*finally Console.WriteLine(This statement is always executed.); */下面是使用Try-Catch的CopyArray()方法(TryCatch项目):

26、方法执行结果将显示“Error: System.ArgumentOutOfRangeException: 要求非负数。” C#.NET程序设计使用使用Finally块块l异常发生时,执行将终止,并且控制交给最近的异常发生时,执行将终止,并且控制交给最近的异常处理程序。这通常意味着不执行希望总是调异常处理程序。这通常意味着不执行希望总是调用的代码行。有些资源清理(如关闭文件)必须用的代码行。有些资源清理(如关闭文件)必须总是执行,即使有异常发生。为实现这一点,可总是执行,即使有异常发生。为实现这一点,可以使用以使用 Finally 块。块。Finally 块总是执行,不论块总是执行,不论是否有异

27、常发生。是否有异常发生。l格式有两种:格式有两种:try 语句块语句块-finally语句块语句块和和try语句块语句块-catch(s) 语句块语句块-finally语句块语句块。l如上例:如上例:Finally 块注释关闭了,去掉注释就是块注释关闭了,去掉注释就是try-catch-finally,如果去掉,如果去掉catch块就块就是是try finally。异常处理异常处理C#.NET程序设计throw 语句可以以两种不同的方式引发异常:lC#语句和表达式执行过程中激发了某个异常的条件使得操作无法正常结束从而引发异常,如整数除法操作分母为零时将抛出一个System.DivideByZeroException异常等。lthrow 语句无条件主动抛出异常。throw 语句用于在程序执行期间主动发出异常的信号。throw 语句格式:throw; 或 throw expression;其中expression是System.Exception类或派生类的对象。lthrow 语句例子:class MyException : System.Exception throw new MyException();if (s = null) throw new ArgumentNullException();异常处理异常处理下面是包含了各种创建和引发异常及异常处理的TryCatch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论