《程序设计全套3程序流程控制.pptx》由会员分享,可在线阅读,更多相关《程序设计全套3程序流程控制.pptx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 程序流程控制程序流程控制 内容简介 虽然C#是完全的面向对象语言,但在局部的语句块内,仍然要使用结构化程序设计的方法,用控制结构来控制程序的执行流程。结构化程序设计有三种基本控制结构,分别是:顺序结构、选择结构和循环结构。本章将对这三种基本结构的概念及相应的控制语句进行详细介绍。目录3.1 顺序结构顺序结构 3.2 选择结构选择结构3.3 循环结构循环结构3.1 顺序结构 顺序结构的执行特征为:按照语句出现的先后顺序,依次执行。处理实际问题时,往往需要用户输入数据,然后进行相应的处理,最后由程序输出结果。控制台应用程序的输入与输出Windows应用程序的输入与输出3.1.1 赋值语
2、句 赋值语句是程序设计中最基本的语句,由于C#的赋值表达式有多种形式,因此赋值语句也表现出多样性。常用的赋值语句有单赋值语句、复合赋值语句、连续赋值语句。不管是哪种赋值语句,基本格式都是以下两种:【格式1】变量名=表达式【功能】将表达式的值赋值给变量。【格式2】对象名.属性名=表达式【功能】将表达式的值赋值给对象的属性。3.1.1 赋值语句1.1.单赋值语句单赋值语句2.复合赋值语句复合赋值语句3.连续赋值语句连续赋值语句int i=3;int j=i-1;label1.Text=姓名;int x=55;x-=50;label1.Text+=:;string s1,s2,s3;s1=s2=s3
3、=连续赋值;textBox1.Text=textBox2.Text=;3.1.2 输入与输出 输入与输出是应用程序进行数据处理过程中的基本功能。按照应用程序的类型,大致分为控制台、Windows、Web三种应用程序的输入与输出。1 控制台应用程序的输入与输出控制台应用程序的输入与输出2 Windows应用程序的输入与输出应用程序的输入与输出1 控制台应用程序的输入与输出 控制台输入输出,也称为标准输入输出,使用的是标准输入输出设备,即键盘和显示器。控制台应用程序的输入与输出,主要通过Console类的静态方法实现。1.输入方法输入方法 控制台应用程序的数据输入,可以通过Console类的静态方
4、法Read与ReadLine实现。2.输出方法输出方法 控制台应用程序的数据输出,可以通过Console类的静态方法Write与WriteLine实现,两个方法都没有返回值。1 控制台应用程序的输入与输出1.输入方法输入方法 Console类的静态方法Read与ReadLine(1)Read方法方法【格式】Console.Read()【说明】Read方法只能接受一个字符,返回值是int类型;如果输入的字符不是数字,将返回该字符对应的ASCII编码。【示例】int i=Console.Read();char c=(char)Console.Read();1 控制台应用程序的输入与输出1.输入方法
5、输入方法 Console类的静态方法Read与ReadLine(2)ReadLine方法方法【格式】Console.ReadLine()【说明】ReadLine方法接受一行字符(即一个字符串,回车代表输入的结束),返回值是string类型。【示例】string s=Console.ReadLine();2.输出方法输出方法 Console类的静态方法Write与WriteLine(1)Write方法方法【格式1】Console.Write(X)【功能】将参数X指定的数据写入标准输出流(一般指显示器)。【说明】参数X是任意类型的数据。【示例】Console.Write(请输入一个整数:);int
6、 j=int.Parse(Console.ReadLine();Console.Write(输入的整数为:+j);1 控制台应用程序的输入与输出2.输出方法输出方法 Console类的静态方法Write与WriteLine(1)Write方法方法【格式2】Console.Write(格式字符串,表达式列表)【功能】按照格式字符串的约定,输出提示字符和表达式的值。【说明】格式字符串是由双引号括起来的字符串,里面可以包含 括起来的数字,数字从0开始,依次对应表达式列表中的表达式。【示例】int i=5;string s=five;Console.Write(i=0,s=1,i,s);/输出结果为:
7、i=5,s=five1 控制台应用程序的输入与输出2.输出方法输出方法 Console类的静态方法Write与WriteLine(2)WriteLine方法方法【格式1】Console.WriteLine(X)【功能】将指定的X写入标准输出流,并以一个换行符结尾。【格式2】Console.WriteLine(格式字符串,表达式列表)【功能】按照格式字符串的约定,输出提示字符和表达式的值,并以一个换行符结尾。【说明】WriteLine方法的功能与Write方法基本相同,唯一的区别是WriteLine方法调用后要换行。【例例】编写一个控制台应用程序,实现分别输入姓名和年龄后编写一个控制台应用程序,
8、实现分别输入姓名和年龄后再一起输出再一起输出“的年龄是的年龄是岁岁”的功能。的功能。1 控制台应用程序的输入与输出 Windows应用程序的输入与输出,可以通过多种控件实现,如之前介绍过的TextBox、Label、LinkLabel以及下面要介绍的MessageBox(消息框)等。其中,使用频率最高的是TextBox和Label。从操作程序的用户的角度看,TextBox和Label控件的主要区别在于:Label控件是一个只能显示数据的控件,而TextBox控件既可以让用户在其中输入数据,也可以显示输出数据。【例例】编写一个编写一个Windows应用程序,实现分别输入姓名应用程序,实现分别输入
9、姓名和年龄后再一起输出和年龄后再一起输出“的年龄是的年龄是岁岁”的功能。的功能。3.2.2 Windows应用程序的输入与输出 消息框 消息框是一个预定义对话框,用于向用户显示与应用程序相关的信息。只有在用户响应该消息框后,程序才能继续运行下去。1.1.显示消息框显示消息框要显示消息框,必须调用MessageBox类的静态方法Show。【格式】MessageBox.Show(参数列表);消息框可以显示标题、消息、按钮和图标四部分内容,也可以只显示其中的一项或几项。1.显示消息框显示消息框 下面给出几种常用的Show方法。消息框 2.消息框的按钮消息框的按钮 消息框中,除了默认的“确定”按钮,还
10、可以放置其他按钮,这些按钮可以收集用户对消息框中问题的响应。一个消息框中最多可显示3个按钮,可以根据程序要求从MessageBoxButtons枚举的成员中选择。消息框 3.消息框的图标消息框的图标 默认情况下,消息框不显示图标,MessageBoxIcon枚举用于指定消息框中显示什么图标。消息框 4.消息框的返回值消息框的返回值 单击消息框中的某一按钮时,Show方法将返回一个DialogResult枚举值来指示对话框的返回值。【例例】实现通过消息框输出实现通过消息框输出“的年龄是的年龄是岁岁”的功能。的功能。消息框 3.2 选择结构 选择结构也称为分支结构,其特点是:根据给定的条件是否成立
11、,决定从各个可能的分支中执行某一分支的相应操作。选择结构一般分为单分支、双分支、多分支三种。if语句,用于判断特定的条件能否满足,一般用于单分支和双分支选择,也可以用于多分支选择。switch语句常用于多分支选择。3.2.1 if语句 单分支的if语句是最简单的,它根据条件表达式的值决定是否要执行其后的语句块,格式如下:【格式】if(条件表达式)语句块 ;【说明】条件表达式可以是关系表达式、逻辑表达式或布尔常量值(true和false)。“语句块”可以是单语句,也可以是多语句。如果是单语句,大括号可以省略;如果是多语句,分号可以省略。【例例】输入一个整数,求绝对值。程序分析:如果是输入一个整数
12、,求绝对值。程序分析:如果是负数,取反;否则,绝对值是这个数本身。负数,取反;否则,绝对值是这个数本身。双分支的if语句是最常用的,它根据条件表达式的值进行判断,选择其中一个分支执行,格式如下:【格式】if(条件表达式)语句块1 else 语句块2 ;【例例】根据输入的学生成绩根据输入的学生成绩Score的值,显示其是否及的值,显示其是否及格。格。3.2.1 if语句 if语句也可以用于多分支的选择结构,用来对三种或三种以上的情况进行判断。ifelse ifelse语句实际上就是if语句的嵌套,一般格式如下:【格式】if(条件表达式1)语句块1 ;else if(条件表达式2)语句块2 ;/其
13、他分支 else if(条件表达式n)语句块n ;else 语句块n+1 ;3.2.1 if语句 3.2.2 switch语句 使用嵌套的if语句虽然可以实现多分支的选择结构,但if语句每次判断只能有两个分支,当判断的条件较多时,程序的可读性将大大降低。switch语句(也称为开关语句)专门用于多分支的选择结构,其语法更简单,能处理复杂的条件判断。switch语句有一个控制表达式,其分支语句根据控制表达式的值的不同,执行不同的语句块。switch语句的格式如下:【格式】switch(控制表达式)case 常量表达式1:语句块1;break;case 常量表达式2:语句块2;break;/其他分
14、支 case 常量表达式n:语句块n;break;default:语句块n+1;break;3.2.2 switch语句【说明】“控制表达式”可以是sbyte、byte、short、ushort、int、uint、long、ulong、bool、char、string或枚举类型,使用较多的是int和string类型。switch 语句可以包括任意数目的 case块,但是任何两个case语句都不能具有相同的值。“语句块”可以是单语句,也可以是多语句。break语句用于中断选择分支的语句运行,此处用于跳出switch语句。在switch语句中,也可使用goto语句实现语句转移,但应尽量避免使用这种
15、方法。3.2.2 switch语句3.2.2 switch语句【说明】C#不支持从一个case标签显式贯穿到另一个case标签,因此在每一个 case 块(包括default块)的后面都必须有一个跳转语句(如break);但有一个例外,这个例外是当case块中没有代码时,空case标签可以贯穿到另一个case标签,这种情况下多个case语句可以使用同一个语句块进行处理。default标签用来处理不匹配case语句的值,定义default标签可以增强处理相应的异常。【例例】改写输入的学生成绩改写输入的学生成绩Score的值,显示其是否及的值,显示其是否及格。格。3.3 循环语句 C#提供了多种形
16、式的循环语句,包括提供了多种形式的循环语句,包括for语句、语句、foreach语句、语句、while语句和语句和dowhile语句。语句。3.3.1 for语句语句 循环次数可知循环次数可知【格式格式】for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体 ;123445循环体以外的语句循环体以外的语句63.3.1 for语句 1+2+3+100=?int i,sum=0;for(i=1;i=100;i+)sum+=i;int i=1,sum=0;sum+=i;break;if()i=100 i=i+1;3.3.1 for语句【例例】编写一个编写一个Windows应用程序,计算
17、应用程序,计算 a+aa+aaa+aaaa+.+aa.a(n个)个)的值,其中的值,其中a和和n为为19之间的整数。之间的整数。int a,n,num,sum;num=sum=0;a=int.Parse(txtA.Text);n=int.Parse(txtN.Text);for(int i=1;i=n;i+)num=num*10+a;sum+=num;txtSum.Text=sum.ToString();3.3.2 while语句 while语句一般用于语句一般用于循环次数未知循环次数未知的循环结构,也可的循环结构,也可以用于循环次数可知的循环结构。以用于循环次数可知的循环结构。【格式格式】w
18、hile(条件表达式条件表达式)循环体循环体 ;注意:注意:1.循环体可能执行循环体可能执行0次;次;2.while(true)永真循环,要使用永真循环,要使用break语句。语句。3.3.2 while语句【例例】编写一个编写一个Windows应用程序,将所输入整数的应用程序,将所输入整数的各个位上的数字按相反顺序输出。各个位上的数字按相反顺序输出。8639779368aa!=0b=a%10;/7str=str+b.ToString();a=a/10;/8639b=a%10;/9str=str+b.ToString();a=a/10;/8633.3.3 dowhile语句 dowhile语句
19、语句与与while语句非常相似,而语句非常相似,而dowhile语句的测试条件在每一次循环结束时进行判断,因为语句的测试条件在每一次循环结束时进行判断,因为先执行后判断,所以先执行后判断,所以至少执行一次至少执行一次。【格式格式】do 循环体循环体 while(条件表达式条件表达式);注意:注意:最后的分号不能省略,否则会提示错误。最后的分号不能省略,否则会提示错误。continue 与break1.int n=0;m=0;2.for(i=1;i=10;i+)3.4.if(i%2=0)5.continue;6.n+;7.8.for(i=1;i=10;i+)9.10.if(i%2=0)11.br
20、eak;12.m+;13.n=5,m=13.3.4 foreach语句 foreach语句是专用于对数组、集合等数据结构中的每一个元素进行循环操作的语句,通过它可以列举数组、集合中的每个元素,并且通过执行循环可以对每一个元素进行需要的操作。foreach语句一般格式如下:【格式】foreach(类型名 变量名 in 数组或集合名称)循环体;【功能】对数组或集合中的每一个元素(用“变量名”表示),执行循环体中的语句。3.3.4 foreach语句【说明】“变量名”是一个循环变量,在循环中,该变量依次获取数组或集合中各元素的值,所以“类型名”必须与数组或集合的类型一致。循环体可以是单语句,也可以是
21、多语句。如果是单语句,大括号可以省略;如果是多语句,分号可以省略。可以在循环体中的任意位置放置continue或break语句来结束本次循环或退出循环,break和continue语句通常结合if语句使用。【例例】利用利用foreach语句计算数组中的奇数和偶数的个语句计算数组中的奇数和偶数的个数。数。3.3.5 循环的嵌套 如果一个循环(称为“外循环”)语句的循环体内包含另一个或多个循环(称为“内循环”)语句,称为循环的嵌套。内循环中还可以包含循环,形成多层循环。通常把循环体内不含有循环语句的循环叫做单层循环,而把循环体内含有循环语句的循环称为多重循环。在程序设计过程中,常常需要使用循环的嵌
22、套来处理重复操作。而在处理重复操作时,往往又需要根据某一条件改变循环的正常流程。各种循环语句可以互相嵌套,嵌套的层数理论上无限制,但多重循环可能会导致程序的执行速度有所降低。【例例】编写一个编写一个Windows应用程序,输出九九乘法表。应用程序,输出九九乘法表。3.3.6 跳转语句 前面介绍过,可以在循环体中放置break语句来强制终止循环,还可以在循环体中放置continue语句来结束本次循环。break语句和continue语句都是跳转语句,使用跳转语句,可以在循环的中途直接控制流程转移。C#中提供了四种跳转语句:goto、break、continue和return语句。3.3.6 跳转
23、语句 1.goto语句语句 goto(转向)语句可以将程序控制直接转移给由“行标签”标记的语句。但goto语句只能跳转到它所在方法内的行,而且该行必须有goto可以引用的行标签。goto语句的一般用于将控制传递给switch 语句中特定的case标签或的default标签,有时也用于跳出深嵌套循环。但由于goto语句改变了程序的正常流程,使代码的阅读和维护变得更加困难,所以尽量不要使用。而且,用goto语句实现的功能一般都可以利用控制结构实现,因此goto语句很少使用。3.3.6 跳转语句 2.break语句语句 break(终止)语句用于终止最近的循环语句或它所在的switch语句,将程序控
24、制传递给它所终止语句的后续语句。3.continue语句语句 continue(继续)语句只能用于循环结构,可以将程序控制传递给循环语句的下一次循环。也就是说,continue语句的作用是结束本次循环,跳过continue之后的其他循环语句,返回到循环的起始处,并根据循环条件决定是否执行下一次循环。3.3.6 跳转语句 4.return语句语句 return(返回)语句用于终止它所在的方法的执行,并将控制返回给调用方法。return语句通常用于返回方法的调用值并退出类的方法。如果方法有返回类型,应使用“return 表达式;”返回该类型的值;如果方法为void类型,应使用“return;”来退出该方法;如果方法为void类型且“return;”是方法的最后一条语句,则可以省略“return;”。本章小结 本章介绍了C#的if语句、switch语句、while语句、do-while语句、for语句以及foreach语句等流程控制语句。其中for语句是所有循环语句中使用最频繁的语句。对于do-while循环语句来说,无论是否满足条件表达式,它的循环体都至少执行一次;但对于while循环来说,只有满足条件表达式,才能执行循环体。foreach语句是C#特有的循环语句,主要用于遍历数组和集合中的元素。