《结构控制流程》PPT课件

上传人:san****019 文档编号:22961554 上传时间:2021-06-03 格式:PPT 页数:38 大小:393.31KB
返回 下载 相关 举报
《结构控制流程》PPT课件_第1页
第1页 / 共38页
《结构控制流程》PPT课件_第2页
第2页 / 共38页
《结构控制流程》PPT课件_第3页
第3页 / 共38页
点击查看更多>>
资源描述
第3章 结构控制流程 主要内容lC#中选择控制语句的类型l几种循环结构的定义、使用以及特点l几种跳转语句的使用 流程控制语句分类l在C#语言中,流程控制语句主要分为以下几类:l选择结构控制语句:If 语句、Switch语句。l循环结构控制语句:Do循环语句、While循环语句、for循环语句、Foreach语句等。l跳转控制语句:Break语句、Continue语句、Goto语句、Return语句。 3.1 选择结构控制语句 l主要包括If 语句以及Switch语句 If语句lIf语句有3种基本形式:单条选择、如果/否则、多情形选择。 1.单条选择If语句单条选择的If语句是最简单的If语句,基本语法如下:if(boolean expression) ; 该语句必须以关键字If开始,之后,括号内为布尔表达式。该表达式必须计算出一个True或者False值。若为True,则执行If后 面的大括号中的语句,否则,就跳过这些大括号中的语句。 If语句l 2.如果/否则If语句如果/否则If语句的基本语法如下:if(boolean expression) 语句体A;else 语句体B; 这个语句和第一种很类似,根据If语句后面括号内的值,若为True,则执行语句体A,否则就执行语句体B。 If语句l 3.多情形选择If语句l多情形选择的If语句实际上是第2种形式的嵌套。在选择的时候常常是有多种情况,这些情况有不同的指令。基本语法为:l if(boolean expression1)l l 语句体A; l l else if(boolean expression2)l l 语句体B;l l else if(boolean expression3)l l 语句体C;l l l else l l 语句体N;l 程序执行时,首先判断If语句后面括号中的expression1,若值为True,则执行语句体A语句,若值为False,就跳向下一个语句,判断Else If语句后面的expression2,若为True,就执行语句体B语句,否则就继续向下,若到最后的Else语句之前还没有遇到语句为True的,就要执行Else语句后面大括号中的语句体N了。 Switch语句 lSwitch语句非常类似于If语句,因为它也是根据测试的值来有条件地执行代码。实际上,每一个由Switch语句组成的代码,都可以用If语句进行改写。但是,Switch语句也有它特殊的地方,它可以一次将测试变量与多个值进行比较,而不仅仅是测试一个条件。这种测试仅限于离散的值,而不是像“小于10”这样的子句。 Switch语句 l Switch语句的基本语法为: switch (switch_expression) case value1 : statement1; break; case value2 : statement2; break; case valueN : statementN; break; default 要记住两个主要规则。首先,switch_expression必须是(或者能够隐式地转换为)Sbyte、Byte 、Short、 Ushort 、Int、 Uint 、Long 、Ulong 、Char、 String类型或者在这些类型上的一个枚举。其次,必须为每个Case语句添加一个Break语句。在执行Switch语句的过程中,先把Switch后面括号内的表达式 switch_expression依次与case后面的表达式进行比较,如果遇到匹配的,则就执行为该匹配提供的语句。如果没有匹配的,就执行Default部分中的代码。Break语句的作用是中断当前Switch语句的运行,而执行该结构后面的语句。没有break这个关键字的时候,程序则会发生意想不到的错误。 Switch语句的控制结构图 Switch语句使用的一个小例子l例 :从键盘中一次输入2个操作数(整数)以及一个算术运算符(+,*,/ 之一),计算其结果。 程序代码l新建一个控制台应用程序l using System;l using System.Collections.Generic;l using System.Text;l namespace switchExamplel l class Programl l static void Main(string args)l l int firstData;l int secondData;l string sopertaor;l double result=0;l bool flag=false;l Console.WriteLine(请输入第1个数:);l firstData = int.Parse( Console.ReadLine(); l Console.WriteLine(请输入运算符号,必须是加(+)、减(-)、乘(*)、除(/)中的一种);l sopertaor = Console.ReadLine().Trim();l Console.WriteLine(请输入第2个数:);l secondData = int.Parse(Console.ReadLine(); 程序代码l dol l switch (sopertaor)l l case +: result = firstData + secondData; l flag = true;l break;l case -: result = firstData - secondData;l flag = true;l break;l case *: result = firstData * secondData;l flag = true;l break;l case /:l if (secondData = 0)l l Console.WriteLine(被除数不能为0,请重新输入被除数:); l secondData = int.Parse(Console.ReadLine();l l elsel l result = firstData / secondData;l flag = true;l l l break;l default: Console.WriteLine(运算符输入错误!请重新输入运算符);l sopertaor = Console.ReadLine().Trim();l break; l l while (flag = false);l Console.WriteLine(012的结果3,firstData,sopertaor,secondData,result);l Console.ReadLine();l l l 运行结果 3.2 循环结构 l循环结构可以实现一个程序模块的重复执行,它对于我们简化程序,更好地组织算法有着重要的意义。C#为我们提供了若干种循环语句,分别适用于不同的情形,下面依次介绍之。 3.2.1 While循环l While循环语句可以有条件地将内嵌语句执行0遍或者若干遍,基本语法为:while(boolean expression) embeded-statement;l While循环语句执行时,先判断while后面括号内的语句的值,当为False时,不执行大括号内的嵌入程序段,若为True 时,进入循环,执行循环内程序段一遍后,再次判断条件是否满足,若满足就一直执行下去,一直到不满足为止,跳出循环,继续后面的语句。 3.2.2Do循环 l程序中使用循环时,第一次不检查条件是否满足,直接进入循环,第二次以后才检查条件是否满足,条件为True时,才能进入循环。这时候,我们便需要使用Do循环。 Do循环的基本语法格式为:do embeded-statement; while(boolean expression); 3.2.3For循环 l在程序的设计过程中,若希望从某个值开始,每执行指定的程序段一次,便将该数值增加(减少)一个单位,如果结果始终比终值小(大),便继续执行该程序段,一直到不满足终值才离开该程序段。这时,我们就可以使用For循环语句。 For循环语句的基本语法为: for(initializer;condition;iterator) statement; 其中Initializer,Condition,Iterator这3个项都是可选项。Initializer为循环控制变量作初始化,循环控制变量可以有一个或多个(用逗号隔开);Condition为循环控制条件,Iterator为按规律改变循环控制变量的值,也可以有一个或多个(用逗号隔开)。 l例:使用For循环语句,写一个冒泡排序法(从小到大排列)。 程序代码 :l using System;l using System.Collections.Generic;l using System.Text;l namespace forExampleMPl l class Programl l static void Main(string args)l l int myArray = new int 10, 8, 3, 5, 6, 7, 4, 6, 9 ; l / 取长度最长的词组 - 冒泡法l for (int j = 1; j myArray.Length; j+)l l for (int i = 0; i myArrayi+1 ,则 myArrayi 上浮一位l if (myArrayi myArrayi + 1)l l int temp = myArrayi;l myArrayi = myArrayi + 1;l myArrayi + 1 = temp;l l l Console.WriteLine(冒泡法排序后结果是:); for (int k = 0; k myArray.Length; k+) Console.Write(myArrayk.ToString()+,); Console.ReadLine(); 3.2.4Foreach语句 lForeach语句是在C#中新引入的,C和C+中没有这个语句,而Visual Basic的程序员应该对它不陌生。它表示收集一个集合中的各元素,并针对各个元素执行内嵌语句。 Foreach语句的基本语法格式为: foreach(type identifier in expression) statement; 关于Foreach语句的几点说明l首先,变量用来逐一存放数组元素内容,故该变量声明的类型要和数组的类型一致,且必须声明后才能使用;其次,数组内元素的个数决定循环内程序段重复执行的次数;最后,每次进入循环,会依次将数组元素内容指定给变量,当所有元素都读完后,系统就会离开Foreach循环。 Foreach语句的一个例子l例使用Foreach循环语句输出一个数组的所有元素值。 l using System;l using System.Collections.Generic;l using System.Text;l namespace foreachExamplel l class Program l l static void Main(string args)l l int index = 1;l string myArray = new string6 Pirlo, Ronaldo, Beckham, Kaka, Owen, Henry ;l foreach (string arr in myArray)l l Console.WriteLine(第0个球员的名字是:1,index+,arr);l l Console.ReadLine();l l l 运行结果 3.2.5 死循环 l可以通过编写错误代码或错误的设计,定义永远不终止的循环,即所谓的无限循环。下面的代码就是一个死循环的例子。while (true) /statement;l当然,死循环代码也是有用的,比如说,我们可以使用跳转语句(Break等)退出这样的循环。 3.3 跳转语句 l跳转语句包括:Break语句、Continue语句、Goto语句和Return语句。 3.3.1 Break与Continue语句 l可以使用Break语句终止当前的循环或者它所在的条件语句。然后,控制被传递到循环或条件语句的嵌入语句后面的代码行。Break语句的语法极为简单,它没有括号和参数,只要将以下语句放到你希望跳出循环或条件语句的地方即可: break; Break语句例子l下面的代码是一个Break语句的简单例子:l int i = 9;l while (i = 0)l Console.WriteLine(0, i);l i-;l l else l l break;l l l运行结果:9、8、7、6、5、4、3、2、1、0 Continue 语句l若循环语句中有Continue关键字,则会使程序在某些情况下部分被执行,而另一部分不执行。在While循环语句中,在嵌入语句遇到Continue指令时,程序就会无条件地跳至循环的顶端测试条件,待条件满足后再进入循环。而在Do循环语句中,在嵌入语句遇到Continue指令时,程序流程会无条件地跳至循环的底部测试条件,待条件满足后再进入循环。这时在Continue语句后的程序段将不被执行。 Continue语句例子l例:输出1-10这10个数之间的奇数 。l int i = 1;l while (i= 10)l l if (i % 2 = 0)l l i+;l continue; l l Console.Write (i.ToString()+”,”);l i+;l l 本程序的输出结果为 1,3,5,7,9, 3.3.2 Goto语句 lGoto语句可以跳出循环,到达已经标识好的位置上。 一个goto语句使用的小例子l例 : 使用Goto语句参与数据的查找。 程序代码:l using System;l using System.Collections.Generic;l using System.Text; l namespace gotoExamplel l class Programl l static void Main(string args)l l int x = 200, y = 4;l int count = 0;l string, array = new stringx, y;l / Initialize the array:l for (int i = 0; i x; i+)l for (int j = 0; j y; j+) l arrayi, j = (+count).ToString();l / Read input:l Console.Write(Enter the number to search for: );l / Input a string:l string myNumber = Console.ReadLine();l / Search:l for (int i = 0; i x; i+)l l for (int j = 0; j y; j+)l l if (arrayi, j.Equals(myNumber)l l goto Found;l l l 程序代码 Console.WriteLine(The number 0 was not found., myNumber); goto Finish; Found: Console.WriteLine(The number 0 is found., myNumber); Finish: Console.WriteLine(End of search.); Console.ReadLine(); 运行结果: 3.3.3 Return语句lReturn语句是函数级的,遇到Return该方法必定返回,即终止不再执行它后面的代码。 Return语句的一个例子l例 一个关于return跳转语句的简单例子。l程序代码:l using System;l using System.Collections.Generic;l using System.Text;l namespace returnExamplel l class Program l l static void Main(string args)l l Console.WriteLine(Add(1, 2);l return;l Console.WriteLine(cant be reached);l l static int Add(int a, int b)l l return a + b;l l l 运行结果分析l上述的代码运行出错,错误描述为:“检测到无法访问的代码”,并且在Console.WriteLine(cant be reached);这句代码中提示,这说明Return语句已经阻止了后面语句的运行。 小结 l本章绝大多数内容都在讲解如何在C#中使用各种选择和循环语句。读者们以前在其他的程序语言里都接触这个东西,但是一定要留意它们在C#语言中与别的语言中的不同点。使用if语句时,别忘记了一定要用布尔表达式,尤为重要的是,要确保条件语句的短路不阻止重要代码的运行,switch 语句支持字符串标签。循环语句部分,我们可以在各种循环语句之间转化,但是每种循环语句在执行某一定特定任务时,效率不同,要选好合适的循环语句。几种跳转语句的使用可以给我们的程序带来方便,但是在使用goto语句时,要谨慎。 谢谢!
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!