清华大学VisualC#2000程序设计第三章.ppt_第1页
清华大学VisualC#2000程序设计第三章.ppt_第2页
清华大学VisualC#2000程序设计第三章.ppt_第3页
清华大学VisualC#2000程序设计第三章.ppt_第4页
清华大学VisualC#2000程序设计第三章.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

第3章 程序流程控制 本章要点: 选择结构及if、switch语句 循环结构及循环语句 跳出循环 异常处理及try-catch-finally语句,3.1 选择结构程序设计,3.1.1 if语句 if语句是最常用的选择语句,它根据布尔表达式的值来判断是否执行后面的内嵌语句。if语句的基本语法格式为: if (布尔表达式) 真值运算; else /可选项 假值运算 当布尔表达式的值为真,则执行if后面的内嵌语句”真值运算”。为假时执行else后面的内嵌语句“假值运算”,不是所有的if语句都有else匹配,如果仅有if子句则:当布尔表达式为真时执行”真值运算”,否则,当前if语句结束,继续执行if后面的语句。,3.1 选择结构程序设计,3.1.1 if语句 如果if或else之后的内嵌语句只包含一条执行语句,则嵌套部分的大括号可以省略,如果包含了两条以上的执行语句,对嵌套部分一定要加上大括号,表示嵌套部分的多条语句为一个语句块,要么全执行要么全不执行。if语句可以嵌套使用,即在判断之中又有判断。 If语句中,如果有else子句,则else与在它前面离它最近且没有其它else与之对应的if相搭配,,3.1 选择结构程序设计,3.1.2 switch语句 if语句只能处理从两者间选择之一,当要实现几种可能之一时,C#语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁,它的一般格式为: switch(表达式) case value1: 内嵌语句块1 case value2; 内嵌语句块2 default: 内嵌语句块N ,3.1 选择结构程序设计,3.1.2 switch语句 switch语句的控制类型,即其中控制表达式(expression)的数据类型可以是sbyte、byte、short、ushort、uint、long、ulong、char、string或枚举类型(enum-type)。每个case标签中的常量表达式(value)必须属于或能隐式转换成控制类型,如果有两个或两个以上case标签中的常量表达式值相同,编译时将会报错。switch语句中最多只能有一个default标签。,3.1 选择结构程序设计,3.1.2 switch语句 在使用switch语句时有几点需要注意的是: (1) 不允许遍历 C和C+语言允许switch语句中case标签后不出现break语句,但C#不允许这样,它要求每个case标签项后使用break语句或跳转语句goto,即不允许从一个case自动遍历到其它case,否则编译时将报错。 (2) 允许任意排列switch语句中的case项而不会影响switch语句的执行结果。 (3) 每个switch项都以break、goto、case或goto default结束,事实上任何一种不导致“遍历”效果的语句都是允许的。如 throw 和 return 语句同样可以达到不“遍历”。,3.2 循环结构程序设计,3.2.1 for语句 for循环语句是C#中使用频率最高的循环语句,在事先知道循环次数的情况下,使用for循环语句是比较方便的。For循环语句的格式为: for(初始条件;结束条件;循环变量迭代器) 循环体 其中“初始条件”、“结束条件”、“循环变量迭代器”这三项都是可选项。“初始条件”为循环控制变量做初始化,循环控制变量可以有一个或多个(用逗号隔开)。“结束条件”为循环控制条件,也可以有一个或多个语句。“循环变量迭代器”按规律改变循环控制变量的值。初始化、循环控制条件和循环控制都是可选的,如果忽略了条件,则产生一个死循环,要用跳转语句break或goto才能退出。,3.2 循环结构程序设计,3.2.2 foreach语句 foreach语句是在C#中新引入的,它表示遍历一个集合中的各元素,并针对各个元素执行内嵌语句。foreach语句的语法格式为: foreach(type identifier in expression)embedded-statement 循环变量由类型type和标识符identifier声明,且表达式expression与集合相对应。循环变量代表循环正在处理的集合元素。在循环体内不能赋一个新值给循环变量,也不能把它当作ref或out参数。,3.2 循环结构程序设计,3.2.3 while语句 while语句有条件地将循环体内的语句执行0遍或若干遍。其语法格式为: While (布尔表达式) embedded-statement 该语句的执行过程是: (1) 计算布尔表达式布尔表达式的值; (2) 当布尔表达式的值为真时,执行循环体内语句embedded-statement一遍,程序转至第1步; (3) 直到布尔表达式的值为假时while循环结束。如果首次判断布尔表达式的值即为假,则embedded-statement不被执行。while语句中允许使用break等跳转语句结束循环,执行后续语句;也可以用continue语句来停止内嵌语句的执行,继续进行while循环。,3.2 循环结构程序设计,3.2.4 do-while语句 do-while语句与while语句框架上相似,不同之处在于,它将循环体内的语句至少执行一次。其语法格式为: do embedded-statement while(布尔表达式) 该语句按如下顺序执行: (1) 先执行内嵌语句embedded-statement一遍; (2) 计算布尔表达式布尔表达式的值,为true则回到第一步,为false则终止do循环。 在do-while循环语句同样允许用break语句和continue语句实现与while语句中相同的功能。 无论使用for循环、do循环还是while循环都要小心循环的边界值。它是绝大部分错误的根源,同时要准确判断业务逻辑,正确选择不同的循环类型。,3.2 循环结构程序设计,3.2.5 跳出循环 当循环条件不满足时循环自动就结束了,如在循环体内遇到特定的情况需要在循环条件满足的情况下终止循环,就需要用到中断循环语句。C#为此提供了4个命令。分别是: Break:立即终止循环,并跳转到循环后面第一行代码执行 Continue:立即终止当次的循环(并不影响循环的继续执行)。 Return:用来返回到当前函数被调用的地方。如果return语句放在循环体内,当满足条件时执行return语句返回,循环自动结束 。 Goto:可以跳出循环,到已标记好的位置上。,3.3 异常处理结构,3.3.1 异常的产生 C#在两种情况下会产生异常: (1) 在C#语句和表达式的处理过程中激发了某个异常的条件,使得操作无法正常结束,引发异常。 (2) 使用throw语句手动抛掷异常 C#中的System.Exception类是所有异常的基本类型。这个类有几个值得注意的特性,这些特性由所有的异常类共享:Message是一个只读特性,它包含了人们可读的对该异常发生原因的描述。InnerException是一个只读特性,它包含了该异常的“内层异常”。如果它不是null,就表示当前异常是在响应另一个异常时发生的。引起当前异常的那个异常可以在InnerException特性中得到。,3.3 异常处理结构,3.3.2 处理异常 在代码中对异常进行处理,一般要使用三个代码块: Try块的代码是程序中可能出现错误的操作部分。 catch块的代码是用来处理各种错误的部分(可以有多个)。必须正确排列捕获异常的catch子句,范围小的Exception放在前面的catch。即如果Exception之间存在继承关系,就应把子类的Exception放在前面的catch子句中。 Finally块的代码用来清理资源或执行要在try块末尾执行的其他操作(可以省略)。且无论是否产生异常,Finally块都会执行。,3.3 异常处理结构,3.3.2 处理异常 异常是由try_catch_finally语句块组合来处理的,执行异常处理过程通常有以下三种可能的形式: (1) try-catch(s) (2) try-finally (3) try-catch(s)-finally 当异常发生时,系统将搜寻最近的能够处理该异常的catch从句,这由异常的运行期类型来决定。首先,在当前方法中搜寻封

温馨提示

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

评论

0/150

提交评论