资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章,流程控制,课程目标,理解编程中解决流程问题的基本方法 if和if/else选择结构的用法 switch/case的使用 运用循环控制while、dowhile、for、foreach编程 跳转控制语句break、continue的作用 掌握异常处理,体验,要求用户输入1100之间的数字,此后程序随机产生两个1100之间的数字。 如果用户输入的数字在这两个随机数间,程序提示成功通关,否则程序提示通关失败。,常用流程控制语句,选择控制:if、else、switch、case 循环控制:while、do、for、foreach 跳转语句:break、continue 异常处理:try、catch、finally,选择结构 3-1,语法:if ()else ,选择结构用于根据表达式的值执行语句,if else,语法:if ()else if ()else ,示例,举一个例子,设有一个数学函数的表达式为:-1 (x0),/部分运行代码 if(x0)y = 1; elseif(x=0)y = 0;elsey = -1; ,选择结构 3-2,语法: switch (选择变量) case 值1: break; case 值2: break;case 值3: break;.default : ,switchcase,假设考查课程的成绩按优秀、良好、中等、及格和不及格分为五等,分别用4、3、2、1、0来表示,但实际的考卷为百分制,分别对应的分数为90-100、80-90、60-80、60分以下。,下面的程序将考卷成绩x转换为考查课成绩y。 代码如下: int x = int(x/10); switch(x) case 10:y=4; break; case 9: y=4; break; case 8: y=3; break; case 7: y=2; break; case 6: y=1; break; default: y=0; ,switchcase 的其他特性,选择结构 3-3,各个 case 标签不必连续,也不必按特定顺序排列 default 标签可位于 switchcase 结构中的任意位置 default 标签不是必选的,但使用 default 标签是一个良好的编程习惯 每两个 case 标签之间的语句数不限,循环结构,循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真。 循环结构的类型 while 循环 do 循环 for 循环 foreach 循环,while 循环 2-1,打印出变量的值,增加变量值,while (seat =1000),1,2,1000,输出11000,如何实现呢?,while 循环反复执行指定的语句,直到指定的条件为真 语法 :while (条件) / 语句 break 语句可用于退出循环 continue 语句可用于跳过当前循环并开始下一循环,while 循环 2-2,dowhile 循环 2-1,do,打印出变量的值,增加变量值,while (seat = 1000),1,2,1000,先必须输出1,然后再到1000,如何实现呢?,dowhile 循环 2-2,dowhile 循环与 while 循环类似,二者区别在于 dowhile 循环中即使条件为假时也至少执行一次该循环体中的语句。 语法 : do / 语句 while (条件),for 循环,for 循环要求只有在对特定条件进行判断后才允许执行循环 这种循环用于将某个语句或语句块重复执行预定次数的情形 语法 : for (初始值; 条件; 增/减) /语句 ,foreach 循环 2-1,foreach 循环用于遍历整个集合或数组 语法:foreach (数据类型 元素(变量) in 集合或者数组)/语句,foreach 循环,static void Main(string args) / 存放字母的个数 int countLetters = 0;/ 存放数字的个数int countDigits = 0;/ 存放标点符号的个数int countPunctuations = 0;/ 用户提供的输入 string input;Console.WriteLine(“请输入一个字符串 “);input = Console.ReadLine();/ 声明 foreach 循环以遍历输入的字符串中的每个字符。 foreach(char chr in input)/ 检查字母if(char.IsLetter(chr)countLetters+;/ 检查数字if(char.IsDigit(chr)countDigits+;/ 检查标点符号if(char.IsPunctuation(chr)countPunctuations+;Console.WriteLine(“字母的个数为: 0“, countLetters);Console.WriteLine(“数字的个数为: 0“, countDigits);Console.WriteLine(“标点符号的个数为: 0“, countPunctuations); ,为所有计数器设置初始值,接受输入,对输入的每一个 字符都进行循环,使用了所有输入的字符 之后,循环自动终止,异常,网上银行,张三转帐25000到李四的帐面上,0,20,000,数据库,系统将查询发送到数据库中,tranfer_money() sendquery(); .,余额 20000-25000,程序崩溃,拒绝交易,“C#”中的异常,C# 中引发异常的条件,异常可以以两种不同的方式引发:throw语句无条件,即时的抛出异常。C#语句和表达式执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常。例如,整数除法操作分母为零时将抛出一个System.DivideByZeroException异常。,C# 中的异常处理语句,异常是由try语句来处理的 try语句提供了一种机制来捕捉块执行过程中发生的异常 以下是它的三种的形式: try-catch try-finally try-catch-finally,Try语句具体格式,try / Code to try here. catch (System.Exception ex) / Code to handle exception here. try / Code to try here. finally / Code to execute after try here. ,try / Code to try here. catch (System.Exception ex) / Code to handle exception here. finally / Code to execute after try (and possibly catch) here. ,System.Exception 3-1,System.Exception 3-2,try 和 catch 块 3-1,try /程序代码 catch (IOException E) /错误处理代码 ,I/O 设备可以生成错误,try 和 catch 块 3-2,try /程序代码 catch( E) /错误处理代码 ,可处理系统中的任何一种异常,System.Exception,try 和 catch 块 3-3,if (UserInput 100) throw new InvalidNumberInput(UserInput + “不是有效输入(请输入 1 和 100 之间的数字)”); ,throw 可用来引发自定义异常“InvalidNumberInput”,使用 finally,try /程序代码 catch /错误处理代码 finally /finally 代码 ,无论控制流如何都会执行,多重 catch 块 2-1,try /程序代码 catch (IOException E) /错误处理代码 catch (OutOfMemoryException E) /错误处理代码 ,用于捕捉两种异常的“catch”块,多重 catch 块 2-2,public class MyCustomException : System.ApplicationException public MyCustomException(string message):base(message) try quotient = dividend /divisor; catch(MyCustomExeption ex) Console.WriteLine(ex.Message); ,. . if(divisor = 0)throw new MyCustomException(“除数不能为零“); ,示例-建立自定义异常3-1,using System;namespace Exceptions /用户定义异常class OverdrawnException : ApplicationException/余额public double Balance;public OverdrawnException(string message, double balance) : base(message)this.Balance = balance;,示例-建立自定义异常3-2,class SavingsAccountprivate int accountNumber;private double balance;public SavingsAccount(int accountNumber, double balance)this.accountNumber = accountNumber;this.balance = balance;/支出public void Withdraw(double amount)balance -= amount;if (balance 0)/透支throw new OverdrawnException(“透支“, balance);,示例-throw自定义异常3-3,class SavingsAccountTest static void Main()trySavingsAccount account = new SavingsAccount(12345, 2000);/支出account.Withdraw(3000);catch (OverdrawnException e) Console.WriteLine(e.Message); Console.WriteLine(e.Balance); Console.Read(); ,总结,理解编程中解决问题的基本技巧 if和if/else选择结构的用法 switch/case的使用 运用循环控制while、dowhile、for、foreach编程 跳转控制语句break、continue的作用 掌握异常处理,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号