单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,3,章 控制语句,3.1,语句简介,3.2,选择语句,3.3,循环语句,3.4,跳转语句,3.5,习题,3.1,语句简介,C#,语言的语句必须以,“,;,”,为结束符。,int,i;/,声明语句,;/,空语句,i=10;/,表达式语句(赋值语句),C#,语言中不是所有的表达式加,“,;,”,都能组成语句,例:,10+5;/,错误,不是语句,一般来说,只有赋值表达式、自增表达式、自减表达式、方法调用表达式和对象创建表达式加上分号才能组成表达式语句。,3.1,语句简介(续),语句块,是指由,0,条或多条语句用括号,“,”,括起来组成的复合语句。,C#,语言中,可以把它看成一条语句。,上述语句在程序中是如何执行的?,都按出现的前后顺序执行,。,C#,中可以控制程序的执行流程的语句有?,选择语句、循环语句、跳转语句,3.2,选择语句,3.2.1,if语句,3.2.2,switch语句,3.2.1 if,语句,if,语句根据布尔表达式的值来选择要执行的语句,形式,1,:,if(,布尔表达式,),语句,1,如果布尔表达式的值为,true,,执行语句,1,;否则执行后面的语句,例:,if(i%2=0),i=i/2;,3.2.1 if,语句(续),形式,2,:,if(,布尔表达式,),语句,1,else,语句,2,如果布尔表达式的值为,true,,执行语句,1,;否则执行语句,2,例:,if(f,-,int(f,)=0.5),f=(,int)f,+1;,else,f=(,int)f,;,3.2.1 if,语句(续),形式,3,:,if,语句的嵌套,if(,布尔表达式,1),语句1,else if(布尔表达式2),语句2,else if(布尔表达式3),语句3,else,语句n,3.2.1 if,语句(续),形式,3,:执行流程,从上往下地计算相应的布尔表达式,如果结果为真则执行相应语句,跳过,if_else,if,框架的剩余部分,直接执行,if_else,if,框架的下一条语句;,如果结果为假,则继续往下计算相应的布尔表达式,直到所有的条件表达式都不成立,则执行这个语句的最后部分,else,所对应的语句,或者如果没有,else,语句就什么也不做。,例,3-1 if,语句,源代码,运 行,/,MyIfElse.cs,using System;,class,MyIfElse,static void Main(),Console.Write,(,你的成绩是多少,?(0100)?);,string,str,=,Console.ReadLine,();,int,grade=,Int32.Parse(str);/,此语句的作用?,if(grade,100|grade=90),Console.WriteLine,(,你的成绩是优!,);,else,if(grade,=80),Console.WriteLine,(,你的成绩是良!,);,else,if(grade,=60),Console.WriteLine,(,你的成绩是及格!,);,else,Console.WriteLine,(,你的成绩是不及格,必须补考,!);,3.2.1 if,语句(续),讨论,If,语句的布尔表达式可以是:,布尔变量,关系表达式,条件逻辑表达式,布尔常量,什么时候需要使用嵌套的,if,语句?,有多与一个条件判断时可以嵌套使用,if,;,if,语句嵌套太深程序难于理解,怎么办?,3.2.2 switch,语句,形式:,switch,(控制表达式),case,常量表达式,1,:语句,1,;,case,常量表达式,2,:语句,2,;,;,case,常量表达式,n,:语句,n,;,default,:语句,n+1,;,3.2.2 switch,语句(续),执行流程,首先计算,switch,后的控制表达式,然后将结果值一一与,case,后的常量表达式值比较,如果找到相匹配的,case,,程序就执行相应的语句序列,直到遇到跳转语句(如,break,),,switch,语句执行结束;,如果找不到匹配的,case,,就归结到,default,处,执行它的语句序列,直到遇到跳转语句为止;当然如果没有,defaul,,则不执行任何操作,3.2.2 switch,语句(续),C#,的,switch,语句需要注意以下几点:,switch,语句的控制表达式必须是,整数类型,(,如,char,、,sbyte,、,byte,、,ushort,、,short,、,uint,、,int,、,ulong,、,long),、,字符串类型或枚举类型,,,case,常量表达式必须是与控制表达式类型相兼容,,case,常量表达式的值必须互异,不能有重复。,只要某个,case,或,defult,分支后有任何语句,那么该分支必须以跳转语句结束这个语句序列,通常选用,break,语句作为跳转,也可以用,goto,转向语句等。,default,与随后的语句,n+1,可以没有,并且也可以不放在最后。,3.2.2 switch,语句(续),例:下面的代码是错误的,switch(str,),case“song and,dancs,”:,Console.WriteLine(“Song,”);,case“,dancs,”:,Console.WriteLine(“Dance,”);,break;,default:,break;,下面的代码是正确的,switch(str,),case“song and,dancs,”:,Console.WriteLine(“Song,”);,goto,case“dance”;,case“,dancs,”:,Console.WriteLine(“Dance,”);,break;,default:,break;,下面的代码是正确的,switch(str,),case“song and,dancs,”:,case“,dancs,”:,Console.WriteLine(“Dance,”);break;,default:,break;,3.2.2 switch,语句(续),例,3-2,用,switch,语句实现例,3-1,的功能,源代码,运 行,/,MySwitch.cs,using System;,class,MySwitch,static void Main(),Console.Write,(,你的成绩是多少,?(0100)?);,string,str,=,Console.ReadLine,();,int,grade=Int32.Parse(str);,if(grade,100|grade0),Console.WriteLine,(,输入错误,!);,else,switch(grade/10),case 10:,case 9:,Console.WriteLine,(,你的成绩是优,!);,break;,case 8:,Console.WriteLine,(,你的成绩是良,!);,break;,case 7:,case 6:,Console.WriteLine,(,你的成绩是及格,!);,break;,default:,Console.WriteLine,(,你的成绩是不及格,必须补考,!);,break;,/*/,课堂练习分别用,if,语句和,switch,实现,using System;,class,MySwitch,static void,Main(string,args,),Console.WriteLine,(,请选择要显示的内容,);,Console.WriteLine(1.,开发环境,);,Console.WriteLine(2.,编程语言,);,Console.WriteLine(3.,项目类型,);,Console.WriteLine(4.,退出,);,string i=,Console.ReadLine,();,if(i=1),Console.WriteLine(Microsoft,Visual Studio);,else if(i=2),Console.WriteLine(c,sharp,语言,);,else if(i=3),Console.WriteLine,(,控制台应用程序,);,/*/,using System;,class,MySwitch,static void,Main(string,args,),Console.WriteLine,(,请选择要显示的内容,);,Console.WriteLine(1.,开发环境,);,Console.WriteLine(2.,编程语言,);,Console.WriteLine(3.,项目类型,);,Console.WriteLine(4.,退出,);,string i=,Console.ReadLine,();,swtich(i,),case 1:,Console.WriteLine(Microsoft,Visual Studio);break;,case 2:,Console.WriteLine(c,sharp,语言,);break;,case 3:,Console.WriteLine,(,控制台应用程序,);break;,/*/,实现简易计算器,using System;,class,Caculator,static void,Main(string,args,),string,str,oper,;,double op1,op2,result=0.0;,Console.Write,(,请输入操作数,1,:,);,str,=,Console.ReadLine,();,op1=,double.Parse(str,);,Console.Write,(,请输入操作数,2,:,);,str,=,Console.ReadLine,();,op2=,double.Parse(str,);,Console.Write,(,请输入操作符,(+,、,-,、*、,/),:,);,oper,=,Console.ReadLine,();,switch(,oper,),case+:,result=op1+op2;Console.WriteLine(op1+oper+op2+=+result);,break;,case-:,result=op1-op2;Console.WriteLine(op1+oper+op2+=+result);,break;,case*:,result=op1*op2;Console.WriteLine(op1+oper+op2+=+result);,break;,case/:,result=op1/op2;Console.WriteLine(op1+oper+op2+=+result);,break;,default:,Console.WriteLine,(,未知的运算符,);,break;,/*/,3.3,循环语句,3.3.1,while语句,3.3.2 do-,while语句,3.3.3,for语句,(,foreach,语句),3.3.1 while,语句,形式:,while(,布尔表达式,),循环语句,执行流程如图,例,3-3 while,语句,计算,1,到,100,的累加和,源代码,布尔表达式,循环语句,开始,结束,true,false,/,MyWhile.cs,using System;,class,MyWhile,static void Main(),int,i=1;,int,sum=0;,while(i,=100),sum+=i;,i+;,Console.WriteLine(Sum,=+sum);,3.3.2 do-while,语句,形式:,do,循环语句,while(,布尔表达式,),;,执行流程如图,注意:分号不可缺少。,布尔表达式,循环语句,开始,结束,true,false,3.3.3 for,语句,形式:,for,(