您好,欢迎访问三七文档
主讲:倪步喜第3章控制流程《C#程序设计教程》C#程序设计教程书名:C#程序设计教程书号:978-7-111-56027-2作者:倪步喜主编出版社:机械工业出版社第3章控制流程3.1分支结构1.if语句2.单步调试3.switch语句3.2循环结构1.while循环语句2.一维数组初步3.break和continue语句4.do…while循环语句5.for循环语句3.3巩固训练3.4穷举法3.5本章小结3.1分支结构——if语句(1)单分支if语句语法如下:if(条件){语句序列}说明:只有条件成立,语句序列才被执行;条件如果“语句序列”只有一条语句,“{}”可以省略。若是不成立,那么语句序列不被执行。例如:if(Score100){Console.WriteLine(输入数据错误!);}3.1分支结构——if语句【实例3-1】从键盘输入两个整数,要求从小到大输出它们。1usingSystem;2classProgram3{4staticvoidMain(string[]args)5{6inta,b,t;7Console.Write(a=);8a=int.Parse(Console.ReadLine());9Console.Write(b=);10b=int.Parse(Console.ReadLine());11if(ab)12{t=a;a=b;b=t;}//交换两变量的值13Console.WriteLine({0}{1},a,b);14}15}3.1分支结构——if语句(2)二分支if语句语法如下:if(条件){语句序列1}//当条件成立时执行else{语句序列2}//当条件不成立时执行例如:if(Score100|Score0)return;//终止本方法的执行并将控制返回给调用方法elseConsole.WriteLine(数据正确);3.1分支结构——if语句【实例3-2】从键盘输入一个整数,判断其是奇数还是偶数。1usingSystem;2classProgram3{4staticvoidMain(string[]args)5{6intn;7Console.Write(n=);8n=Convert.ToInt32(Console.ReadLine());9if(0==n%2)10Console.WriteLine(偶数);11else12Console.WriteLine(奇数);13}14}3.1分支结构——if语句(3)多分支if语句即多选一if语句,语法格式如下:if(条件1){语句序列1}//当满足条件1时执行,不再判断条件2,本if语句执行结束elseif(条件2){语句序列2}//否则,当满足条件2时执行,然后,本if语句执行结束elseif(条件3){语句序列3}//否则,当满足条件3时执行…//还可以加任意个“elseif(条件){语句序列}”else{语句序列n+1}//当所有条件都不满足时执行3.1分支结构——if语句【实例3-3】检查输入字符是否是小写字符、大写字符或数字,如果都不是,则输出“输入字符不是字母字符,也不是数字”。1usingSystem;2classProgram3{4staticvoidMain()5{6Console.Write(输入一个字符:);7charc=(char)Console.Read();8if(char.IsUpper(c))9{10Console.WriteLine(大写字母);11}12elseif(char.IsLower(c))13{14Console.WriteLine(小写字母);15}16elseif(char.IsDigit(c))17{18Console.WriteLine(数字);19}20else21{22Console.WriteLine(输入字符不是字母字符,也不是数字);23}24}25}3.1分支结构——单步调试单步调试是最常见的调试方法之一。单步调试即一步一步跟踪程序执行的流程,在单步执行过程中,程序员可以监视变量值的变化,观察变量的值与预期的值是否一致,这样可以帮助发现程序中的逻辑错误。【实例3-4】编写一个评价成绩的程序,成绩与评价之间关系如表所示。调试运行程序,观察程序的单步执行过程,观察程序中相关变量的值。成绩评价小于0,或大于100成绩数据错误0≦成绩60不好,要努力啊!60≦成绩80一般般,要更上一层楼。80≦成绩90良好,不错不错!90≦成绩≦100优秀,满意满意!!!3.1分支结构——单步调试程序主要代码如下所示。6staticvoidMain(string[]args)7{8doubleScore;9Console.Write(请输入成绩:);10Score=Convert.ToDouble(Console.ReadLine());11if(Score0|Score100)12Console.WriteLine(输入数据错误!);13elseif(Score=0&Score60)14Console.WriteLine(不好,要努力啊!);15elseif(Score=60&Score80)16Console.WriteLine(一般般,要更上一层楼。);17elseif(Score=80&Score90)18Console.WriteLine(良好,不错不错!);19else20Console.WriteLine(优秀,满意满意!!!);21Console.ReadKey();22}3.1分支结构——单步调试开始调试前,首先要准备好测试数据,做到心中有数,测试用例考虑了边界数据。测试数据预期结果-1数据输入错误!0不好,要努力啊!59.5不好,要努力啊!60一般般,要更上一层楼。79.5一般般,要更上一层楼。80良好,不错不错!89.5良好,不错不错!90优秀,满意满意!!!100优秀,满意满意!!!101数据输入错误!#$%^任意数据输入错误!3.1分支结构——单步调试单步调试的执行过程因人而异,下面是本实例单步调试执行的一种情形。(1)按F10功能键,启动单步执行。此时,程序调试状态如图所示。图中黄色箭头于第7行处。黄色箭头指示将要执行的下一条语句。3.1分支结构——单步调试(2)再按一次F10,黄色箭头如图所示。程序执行跳过了“doubleScore;”语句,因为该语句用来声明变量,是非执行性语句。(3)再按两次F0功能键,单步执行第10行,程序要求从键盘读取数据,程序员此时在控制台窗口中输入测试数据-1并回车后,调试状态如下图所示。本步骤要注意,当黄色箭头在“ReadLine()”行上时,不能在控制台窗口上输入-1。因为此时还未执行第10行,读键盘功能的“ReadLine()”方法尚未被执行。3.1分支结构——单步调试(4)在变量Score上右击,在弹出的快捷菜单中选择【添加监视】,便可以将Score变量添加到监视窗口,如图所示。监视图中所示的变量Score值为-1.0,类型为double,正和预期的一致。在监视窗口中,可以编辑变量的值,以察看新值下后续的执行过程,但此处不人为更改变量Score的值。(5)继续按一次F10功能键,执行状态如下图所示。第11行中的条件成立,即将执行第12行。3.1分支结构——单步调试(6)继续按一次F10功能键,下一个要执行的语句是“Console.ReadKey();”,执行状态如下图所示。此时,多选一if语句已经结束执行。(7)继续按F10功能键,单步执行后续过程。3.1分支结构——单步调试在单步执行过程中,还可以进行其他的操作,常见的操作说明如下:1)按F11功能键,逐语句执行。它与F10功能键的区别是会进入到自定义方法内部去执行。在调试本实例时,F10与F11没有区别。2)按Shift+F11组合键,跳出由F11进入的方法。3)按F9功能键,在光标所在行设置或取消断点,调试运行时,会在断点处暂停运行。4)按F5功能键,连续调试运行,但会在断点处暂停。5)按Shift+F5组合键,停止调试。6)按Ctrl+F10组合键,运行到光标处。但事先选择的光标位置很关键,若光标处于一个不可能到达的分支上时,执行过程不会暂停于光标处,而会继续执行。7)拖动黄色箭头,更改下一步要执行的语句。但是,这可能导致预料不到的运行结果。8)选择【调试】|【快速监视】命令,在打开的快捷监视对话框中监视一个表达式的值。如图所示,图中监视一个逻辑表达式的值,其值为true。3.1分支结构——switch语句1)switch语句格式当一个表达式有多个取值情形时,可以用switch语句测试表达式的值等于何种情形的值。switch语句的语法如下:switch(表达式){case可能性的值1:语句序列1break;case可能性的值2:语句序列2break;//还可以加任意个类似上方的case段[default:语句序列n+1break;]}3.1分支结构——switch语句1)switch语句格式在使用switch语句时,必须要注意以下几方面的规定:(1)表达式的类型可以是sbyte、byte、short、ushort、uint、long、ulong、char、bool、string或枚举类型。(2)每个case中的常量表达式必须属于或能隐式转换成(1)中所指类型。(3)如果有两个或两个以上的case标签中的常量表达式相同,编译时将会报错。2)switch语句执行过程当执行switch语句时,先计算表达式的值,然后将表达式的值与case后面“可能性的值”逐个匹配,如果与某个“可能性的值”匹配成功,则进入相对应的case代码段执行,如果匹配都不成功,则进入default部分执行。当执行到break语句时,就终止执行当前的switch语句。【实例35】将实例3_4用switch语句实现。3.2循环结构1.while循环语句2.一维数组初步3.break和continue语句4.do…while循环语句5.for循环语句1.while循环语句while循环的语法:while(条件){语句块}只要给定的条件为真,while循环语句会重复执行语句块。语句块中必须要有改变条件的措施与方法,使最终能从循环执行中退出来。【实例3-6】编程求1+2+3++…+100的和。分析:可以设计一个100次的循环,每次循环把一个加数累计到和中。因此,可设计一个计数变量i来控制循环的退出。思路如下:i=1;//初值while(i=100)//终值{//把i累加到和中,因为每次循环计数变量的值与表达式中的加数相同。i++;//这就是改变循环条件的措施。步长为1}1.while循环语句本例代码如下:1usingSystem;2classProgram3{4staticvoidMain(string[]args)5{6inti=1,s=0;7while(i=100)8{9s+=i;10i++;11}12Console.WriteLine(s=+s.ToString());13}14}说明:本例循环控制中,计数变量的初值为1,终值为100,每次循环计数变量的步长值为1。2.一维数组初步一维数组由包含若干相同类型的数组元素(简称元素)组成,这些元素可以通过索引进行访问。元素的个数称为数组的长度。数组中的每个元素都具有唯一的索引与其相对应,元素的索引从零开始。一维数组的数组元素的索引只有一个,所有数组元素可排成连续的一行或一列。数组变量是引用类型,System.Array类是所有数组的基类,该类有Length属性,表示数组长度。数组变量位于栈(stack)中,而它引用的数组(即数组实例)在堆(heap)中。数组实例需要使用new关键字来创建。2.一维数组初步1)声明数组语法:类型[]数组变量名;如:int[]candidates=newint[3];上面定义了整型数组变量candidates,如图3-9所示。它引用一个具有三个整型元素的数组,这三个元素是candidates[0]、ca
本文标题:C#程序设计教程
链接地址:https://www.777doc.com/doc-4681005 .html