《C#-程序设计教程第3章.ppt》由会员分享,可在线阅读,更多相关《C#-程序设计教程第3章.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 流程控制语句流程控制语句 04 三月 2023第第3 3章章 流程控制语句流程控制语句 3.1 3.1 程序的三种基本结构程序的三种基本结构 3.2 if3.2 if语句语句 3.3 switch3.3 switch语句语句 3.4 while3.4 while语句语句 3.5 do3.5 dowhilewhile语句语句 3.6 for3.6 for语句语句 3.7 break3.7 break和和continuecontinue语句语句 程序的三种常用结果分别是:顺序结构、程序的三种常用结果分别是:顺序结构、分支结构和循环结构。在分支结构和循环结构。在C#C#中,分支结构采
2、用条件中,分支结构采用条件语句实现,循环结构使用循环语句实现。语句实现,循环结构使用循环语句实现。3.1.1 3.1.1 顺序结构顺序结构顺序结构是指程序执行过程中程序流程按语句顺序依次执顺序结构是指程序执行过程中程序流程按语句顺序依次执行、不发生转移的程序结构。行、不发生转移的程序结构。3.1 3.1 程序的三种结构程序的三种结构 04 三月 20233.1.2 3.1.2 分支结构分支结构 分支结构体现了程序的判断能力,在程序执行中能分支结构体现了程序的判断能力,在程序执行中能根据某些条件是否成立,从若干条语句或语句组中选择一根据某些条件是否成立,从若干条语句或语句组中选择一条或一组来执行
3、。条或一组来执行。分支结构有两路分支结构和多路分支结构,两路分分支结构有两路分支结构和多路分支结构,两路分支结构可用支结构可用if if语句实现,多路分支结构可用嵌套的语句实现,多路分支结构可用嵌套的if if语句和语句和switchswitch语句实现。语句实现。3.1 3.1 程序的三种结构程序的三种结构1 1两路分支两路分支在两种可能的操作中按条件选取一个执行的结构称为两路在两种可能的操作中按条件选取一个执行的结构称为两路分支结构。分支结构。2 2多路分支多路分支在多种可能的操作中按条件选取一个执行的结构称为多路在多种可能的操作中按条件选取一个执行的结构称为多路分支结构。分支结构。3.1
4、 3.1 程序的三种结构程序的三种结构3.1.3 3.1.3 循环结构循环结构 在程序设计中,通常某些程序段需要重复执行若干在程序设计中,通常某些程序段需要重复执行若干次,这样的程序结构称为循环结构。次,这样的程序结构称为循环结构。C#C#中控制循环结构语句包括:中控制循环结构语句包括:whilewhile、do-whiledo-while、forfor和和foreachforeach语句。循环结构有两种形式,即当型循环结语句。循环结构有两种形式,即当型循环结构和直到型循环结构。构和直到型循环结构。3.1 3.1 程序的三种结构程序的三种结构04 三月 20231 1当型循环结构当型循环结构
5、当条件成立时重复执行一个操作直到条件不成立为止的结当条件成立时重复执行一个操作直到条件不成立为止的结构。构。在在图图3-43-4的流程图中,当条件的流程图中,当条件B B成立(为成立(为“真真”)时,重复执)时,重复执行行S S程序段,直到条件程序段,直到条件B B不成立(为不成立(为“假假”)时才停止执行)时才停止执行S S程序程序段,转而执行其他程序段。段,转而执行其他程序段。2 2直到型循环结构直到型循环结构 重复执行一个操作,直到条件不成立为止的结构。重复执行一个操作,直到条件不成立为止的结构。在图在图3-3-5 5中,先执行中,先执行S S程序段,再判断条件程序段,再判断条件B B是
6、否成立,若条件是否成立,若条件B B成立(为成立(为“真真”),再执行),再执行S S程序段,如此重复,直到条件程序段,如此重复,直到条件B B不成立(为不成立(为“假假”)时停止执行)时停止执行S S程序段,转而执行其他程序段。程序段,转而执行其他程序段。3.1 3.1 程序的三种结构程序的三种结构 if if语句是最常用的条件语句。它在条件成立语句是最常用的条件语句。它在条件成立时(也就是时(也就是truetrue时)执行一些指定的操作,而在时)执行一些指定的操作,而在条件不成立的时候(为条件不成立的时候(为falsefalse时)执行另外一些操时)执行另外一些操作。作。if if语句有语
7、句有3 3种形式:种形式:if if、ifelseifelse和和ifelse ifelse ifif,通过它可以实现单分支、双分支和多分支,通过它可以实现单分支、双分支和多分支选择结构。选择结构。3.2 if3.2 if语句语句 1 1用用if if语句实现单分支选择结构语句实现单分支选择结构在在C#C#语言中,用语言中,用if if语句实现单分支选择结构的语句格式及功语句实现单分支选择结构的语句格式及功能如下:能如下:语句格式:语句格式:if(if(布尔表达式布尔表达式)语句块;语句块;执行过程:首先计算表达式的值,当表达式的值为执行过程:首先计算表达式的值,当表达式的值为truetrue
8、时,时,执行后面的语句,否则不执行语句。执行后面的语句,否则不执行语句。3.2 if3.2 if语句语句说明:(1)表达式通常用来表示条件,应为一个布尔值;(2)表达式必须用“()”括起来,括号不能省略;(3)语句只能是单个语句或复合语句,如果是复合的多条语句应用“”和“”号把它们括起来,使之成为语句块。如果没有如果没有,if if的有效范围为表达的有效范围为表达式后的第一条语句。式后的第一条语句。04 三月 20233.2 if3.2 if语句语句2 2用用if if语句实现双分支选择结构语句实现双分支选择结构在在C#C#语言中,用语言中,用if if语句实现双分支选择结构的语句格式及功能如
9、下:语句实现双分支选择结构的语句格式及功能如下:语句格式:语句格式:if(if(布尔表达式布尔表达式)语句块语句块1 1 else else 语句块语句块2 2 执行过程:当表达式的值为执行过程:当表达式的值为truetrue时,执行语句时,执行语句1 1,否则执行语句,否则执行语句2 2。3.2 if3.2 if语句语句在C#语言中,用if语句实现多分支选择结构的语句格式及功能如下:语句格式为:if(布尔表达式1)语句块1 else if(布尔表达式2)语句块2 .else if(布尔表达式n-1)语句块n-1 else 语句块n 3.2 if3.2 if语句语句执行过程:首先判断表达式执行
10、过程:首先判断表达式1 1的值是否为的值是否为truetrue,如果为,如果为truetrue,就执行语句,就执行语句1 1,如果为,如果为falsefalse,则继续判断表达式,则继续判断表达式2 2的值是否为的值是否为truetrue;如果表达式;如果表达式2 2的值为的值为truetrue,就执行语,就执行语句句2 2;否则继续判断表达式;否则继续判断表达式3 3的值,的值,依次类推,直到依次类推,直到找到一个表达式的值为找到一个表达式的值为truetrue并执行后面的语句;如果所并执行后面的语句;如果所有表达式的值为有表达式的值为falsefalse,则执行,则执行elseelse后面
11、的语句后面的语句n n。3.2 if3.2 if语句语句4 4if if语句的嵌套语句的嵌套在在if if语句中又包含一个或多个语句中又包含一个或多个if if语句称为语句称为if if语句的嵌套。语句的嵌套。其一般格式为:if(布尔表达式1)if(布尔表达式2)语句块1 else 语句块2 else if(布尔表达式3)语句块3 else 语句块4 3.2 if3.2 if语句语句if语句嵌套使用时,应当注意else与if的的配对关系。配对的规则是:else总是与其前面最近的还没有配对的if进行配对,除非用花括号表示出其他选择。例如:if(布尔表达式1)if(布尔表达式2)语句块1 else
12、 语句块2 等价于:if(布尔表达式1)if(布尔表达式2)语句块1 else 语句块2 04 三月 2023 如果要改变这种约定,希望else与第一个if配对,则应该用花括号构成复合语句。例如:if(布尔表达式1)if(布尔表达式2)语句块1 else 语句块2 此时,else与第一个if配对。04 三月 2023在在C#C#语言中要实现多分支,还可以通过语言中要实现多分支,还可以通过switchswitch语句来实现。语句来实现。switchswitch语句的格式与功能如下。语句的格式与功能如下。语句格式为:语句格式为:switch(switch(表达式表达式)case case 常量表达
13、式常量表达式1 1:语句:语句1;1;break;break;case case 常量表达式常量表达式2 2:语句:语句2;2;break;break;.case case 常量表达式:语句常量表达式:语句n;n;break;break;default default:语句:语句 n+1;break;n+1;break;3.3 switch3.3 switch语句语句 执行过程:首先计算表达式的值,然后依次将表达式的值与case后常量表达式1、常量表达式2、常量表达式n比较,若与某个case后面的常量表达式值相等,就执行此case后面的语句,直到碰上break或者switch语句结束。brea
14、k语句的作用就是中断当前的匹配过程跳出switch语句;如果没有break语句,则匹配的过程会一直持续到整个switch语句结束。若表达式的值与所有case后面的常量表达式的值都不相同,则执行default后面的“语句n+1”,执行后退出switch语句。04 三月 2023(1)条件表达式与常量表达式只能是整数类型、字符类型或枚举类型表达式;(2)每个case后面的常量表达式的值必须互不相同,从而保证分支选择的唯一性;(3)一个case后可有多个语句,程序自动顺序执行case后的所有语句;一个case后面也可以没有任何语句。(4)default语句总是放在最后,default语句也可以缺省,
15、当default语句缺省后,如果switch后面的表达式值与任一常量表达式都不相等时,将不执行任何语句,直接退出switch语句。(5)从switch语句的执行过程可知,任一switch语句均可用if条件语句来实现,但并不是任何if条件语句均可用switch语句来实现,这是由于switch语句限定了表达式的取值类型,而且switch语句也只能做“值是否相等”的判断,不能在case语句中使用条件。04 三月 2023whilewhile语句实现的循环是当型循环,该类循环先测试循环语句实现的循环是当型循环,该类循环先测试循环条件再执行循环体。条件再执行循环体。whilewhile语句的格式及功能如
16、下:语句的格式及功能如下:语句格式:语句格式:while (while (布尔表达式布尔表达式)语句块语句块;3.4 while3.4 while语句语句 执行过程:首先计算while后面括号内表达式的值,当表达式的值为true时则执行循环体中的语句;然后再检查表达式的值,再执行循环,直到表达式值为false时结束循环,执行循环后面的语句。其特点是“先判断,后执行”04 三月 2023说明:说明:(1 1)表达式称为循环条件表达式,一般为关系表达式或逻辑表达)表达式称为循环条件表达式,一般为关系表达式或逻辑表达式,必须用式,必须用“()”()”括起来;括起来;(2 2)语句称为循环体,可以是单
17、个或复合语句,复合语句应该用)语句称为循环体,可以是单个或复合语句,复合语句应该用花括号括起来;花括号括起来;(3 3)通常进入循环时,括号内部的表达式值为)通常进入循环时,括号内部的表达式值为truetrue,但循环最终,但循环最终都要退出,因此在循环体中应有使循环趋于结束的语句,即能够使都要退出,因此在循环体中应有使循环趋于结束的语句,即能够使表达式的值由表达式的值由truetrue变为变为falsefalse的语句,否则会形成的语句,否则会形成“死循环死循环”。(4 4)由于先判断条件,也许第一次测试条件时,表达式的值就为)由于先判断条件,也许第一次测试条件时,表达式的值就为falsef
18、alse,在这种情况下循环体将一次也不执行。,在这种情况下循环体将一次也不执行。3.4 while3.4 while语句语句 dowhiledowhile语句实现的循环式直到型循环,该类循环先执语句实现的循环式直到型循环,该类循环先执行循环体再测试循环条件。行循环体再测试循环条件。dowhiledowhile语句的格式和功能语句的格式和功能如下:如下:语句格式:do 语句块 while (布尔表达式);3.5 dowhile3.5 dowhile语句语句 执行过程:首先执行循环体内的语句,再对while后面的表达式进行判断,如果表达式的值为true,就再执行循环体内的语句如此循环,直到表达式的
19、值为false时结束循环,执行循环后面的语句。其特点是“先执行,后判断”04 三月 2023说明:说明:(1 1)表达式称为循环条件表达式,一般为关系表达式)表达式称为循环条件表达式,一般为关系表达式或逻辑表达式,必须用或逻辑表达式,必须用“()”()”括起来;括起来;(2 2)语句称为循环体,可以是单个或复合语句,复合)语句称为循环体,可以是单个或复合语句,复合语句应该用花括号括起来;语句应该用花括号括起来;(3 3)dowhiledowhile语句以分号结束;语句以分号结束;(4 4)执行)执行dowhiledowhile语句时,无论一开始表达式的值语句时,无论一开始表达式的值是是true
20、true还是还是falsefalse,循环体内的语句至少执行一次。,循环体内的语句至少执行一次。3.5 dowhile3.5 dowhile语句语句 在循环次数已知的情况下,用for语句来实现循环比较容易,故for语句有时也称计数循环语句。for语句能将循环变量初始化、循环条件以及循环变量的改变都放在同一行语句中。for循环语句的格式和功能如下:语句格式:for (表达式1;表达式2;表达式3)语句块 3.6 for3.6 for语句语句 计算表达式1的值;计算表达式2的值,若表达式2的值为true时,则转到;若表达式2的值为false时,则结束循环;执行循环体语句;计算表达式3的值,返回继续
21、执行。for语句的执行流程如图所示。04 三月 2023for语句可以和下列while语句等效:表达式1;while (表达式2)语句块 表达式3;04 三月 2023说明:说明:(1)(1)表达式表达式1 1称为循环初始化表达式,通常为赋值表达式,简单情况称为循环初始化表达式,通常为赋值表达式,简单情况下为循环变量赋初值;下为循环变量赋初值;(2)(2)表达式表达式2 2称为循环条件表达式,通常为关系表达式或逻辑表达式,称为循环条件表达式,通常为关系表达式或逻辑表达式,简单情况下为循环结束条件;简单情况下为循环结束条件;(3)(3)表达式表达式3 3称为循环变量表达式,通常为赋值表达式,简单
22、情况下称为循环变量表达式,通常为赋值表达式,简单情况下为循环变量的改变。为循环变量的改变。(4)(4)语句部分为循环体,它可以是单个或复合语句。语句部分为循环体,它可以是单个或复合语句。3.6 for3.6 for语句语句(1)for语句中的三个表达式都可省略,但其中的两个分号不能省略;(2)若表达式1省略,则应在for语句之前给循环变量赋初值。例如:i=1;for(;i=n;i+)sum=sum+i;(3)若表达式2省略,则不判断循环条件,循环无终止地进行下去,形成“死循环”,即认为表达式2始终为真,因此表达式2通常不能省略(如果省略,循环体内应有if语句跳出循环);04 三月 2023(4
23、)若表达式3省略,则在循环体中应有能不断修改循环条件的语句。例如:for (i=1;i=n;)sum=sum+i;i+;(5)若省略表达式1和表达式3,只有表达式2,即只给出循环条件。例如:i=1;for (;i=n;)sum=sum+i;i+;此时,for语句和while语句完全相同。上述语句相当于:i=1;while (i=n)sum=sum+i;i+;04 三月 2023(6)表达式1和表达式3可以是一个简单的表达式,也可以是其他表达式,当然可以是逗号表达式,即用逗号“,”隔开的多个简单表达式,它们的运算顺序是从左到右顺序进行。例如:for(sum=0,i=1;i=n;i+)sum=su
24、m+i;由此可见,用for语句比用while语句书写更简洁。04 三月 2023这里对三种循环语句进行比较,分析如下:(1)while与for语句为先判断后执行(当型:可能一次也不执行循环体);dowhile语句是先执行判断(直到型:循环体至少执行一次)。(2)三种语句都是循环条件为真时执行循环体,为假时结束循环。(3)在循环体至少执行一次的情况下,三种循环语句构成的循环结构可以相互转换。实际上,用得最多的是for语句,其次是while语句,而dowhile语句相对于前两种语句则用得较少。循环语句中又包含有循环语句的结构称为循环语句的嵌套。循环语句的嵌套又称多重循环。当一个循环语句的循环体中只
25、含一层循环语句时,称双重循环;若第二层循环语句的循环体中还包含一层循环语句时,称三重循环,等等。三种循环语句可以互相嵌套。04 三月 20231 1breakbreak语句语句break语句在前面学习switch时已经用过,它还可以用来从程序的循环语句中跳出。在执行循环时,有时可能希望在循环体执行到一半时就退出循环,而不是整个循环体执行完毕,等循环条件判断完毕才退出,此时可以使用流程转向语句break。break语句的格式和功能如下:语句格式:break;执行过程:当在循环体中遇到这一语句后就终止对循环的执行,流程直接跳转到当前循环语句的下一语句执行。说明:(1)break语句用于终止最内层的
26、while、do-while、for和switch语句的执行;(2)一般在循环体中并不直接使用break语句,在需要从循环中跳出时,break通常都和一个if语句进行配合使用,在循环体中测试某个条件是否满足,如果if语句的条件成立时,则执行break语句退出循环。3.7 break3.7 break和和continuecontinue语句语句 2 2continuecontinue语句语句continuecontinue语句称为接续语句,它专用于循环结构中,表示本次循环语句称为接续语句,它专用于循环结构中,表示本次循环结束,开始下一次循环。结束,开始下一次循环。continuecontinue
27、语句的格式和功能如下:语句的格式和功能如下:语句格式:语句格式:continue;continue;执行过程:当在循环体中遇到这一语句后停止当前进行的这次循环,执行过程:当在循环体中遇到这一语句后停止当前进行的这次循环,即跳过当前循环的剩余语句块,并把控制返回到当前循环的顶部,即跳过当前循环的剩余语句块,并把控制返回到当前循环的顶部,接着再一次进行循环条件判断,以便于进行下一次循环。接着再一次进行循环条件判断,以便于进行下一次循环。3.7 break3.7 break和和continuecontinue语句语句 2 2continuecontinue语句语句说明:说明:(1 1)与)与brea
28、kbreak语句不同的是,语句不同的是,continuecontinue语句不是终止整个循环语句不是终止整个循环的执行,而仅仅终止当前这一次循环的执行。的执行,而仅仅终止当前这一次循环的执行。(2 2)一般在循环体中并不直接使用)一般在循环体中并不直接使用continuecontinue语句,语句,continuecontinue通通常都和一个常都和一个if if语句进行配合使用,在循环体中测试某个条件是否语句进行配合使用,在循环体中测试某个条件是否满足,如果满足,如果if if语句的条件成立时,则执行语句的条件成立时,则执行continuecontinue语句结束本次语句结束本次循环的执行,
29、进入下一次循环。循环的执行,进入下一次循环。3.7 break3.7 break和和continuecontinue语句语句 2 2continuecontinue语句语句说明:说明:(3 3)在)在whilewhile和和dowhiledowhile循环中,循环中,continuecontinue语句使得程序流程语句使得程序流程直接跳转到循环条件的判断部分,根据条件判断决定是否进行下直接跳转到循环条件的判断部分,根据条件判断决定是否进行下一次循环;在一次循环;在forfor循环中,循环中,continuecontinue语句使得程序流程直接跳转语句使得程序流程直接跳转去执行去执行“表达式表达式3”3”,然后再对循环条件,然后再对循环条件“表达式表达式2”2”进行判断,根进行判断,根据条件判断决定是否进行下一次循环。据条件判断决定是否进行下一次循环。3.7 break3.7 break和和continuecontinue语句语句
限制150内