您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Net面向对象程序设计-4-使用决策语句-2010-2011-2
112第4章使用决策语句Aftercompletingthischapter,youwillbeableto:DeclareBooleanvariables.UseBooleanoperatorstocreateexpressionswhoseoutcomeiseithertrueorfalse.WriteifstatementstomakedecisionsbasedontheresultofaBooleanexpression.Writeswitchstatementstomakemorecomplexdecisions.234.1声明布尔变量C#中提供一个名为bool的数据类型,该类型的变量只能容纳两个值之一:true或false示例:boolareYouReady;areYouReady=true;Console.WriteLine(areYouReady);//writesTruetotheconsole44.2使用布尔操作符6个主要的比较操作符MathNotationC#SyntaxNameExampleCategoryExplanationGreater-thanxyRelationalReturnstrueifxisgreaterthany;otherwise,returnsfalse=Greater-than-or-equal-tox=yRelationalReturnstrueifxisgreaterthanorequaltoy;otherwise,returnsfalseLess-thanxyRelationalReturnstrueifxislessthany,otherwise;returnsfalse=Less-than-or-equal-toequaltox=yRelationalReturnstrueifxislessthanory;otherwise,returnsfalse===Equal-tox==yEqualityReturnstrueifxisequaltoy;otherwise,returnsfalse!=Not-equal-tox!=yEqualityReturnstrueifxisnotequaltoy;otherwise,returnsfalse5可以用一个bool类型变量保存布尔表达式的结果例如:01:boolisPositive;02:decimalbalance=100;03:isPositive=(balance0);可以在if语句内使用bool类型变量例如:04:if(isPositive)05:WriteLine(Theaccounthasapositivebalance);比较操作符可以组合包含数字表达式的操作数6提示:新手常犯的一个错误是在合并两个测试的时候,只对percent命名一次percent=0&&=100//thisstatementwillnotcompile使用圆括号有助于避免这种类型的错误,同时也有助于澄清表达式,例如:validPercentage=percent=0&&percent=100validPercentage=(percent=0)&&(percent=100)可使用圆括号提高可读性84.2.3短路求值一个逻辑操作符仅能用于布尔类型表达式,并且总是返回一个布尔类型值;故逻辑操作符的另一个常用术语是布尔操作符。3个常用的逻辑操作符逻辑操作符其它术语C#符号操作数个数ExampleAND逻辑乘法&&2(binary)(53)&&(1020)OR逻辑加法||2(binary)(mass800)||(distance1000)NOT逻辑取负!1(unary)!(mass8000)逻辑与操作符:&&真值表子表达式1的值子表达式2的值子表达式1的值&&子表达式2的值Examplefalsefalsefalse(510)&&(103)falsetruefalse(5==2)&&(102)truefalsefalse(5!=0)&&(3!=3)truetruetrue(74)&&(910)10逻辑或操作符:真值表子表达式1的值子表达式2的值子表达式1的值||子表达式2的值Examplefalsefalse(510)||(103)falsetrue(5==2)||(102)truefalse(5!=0)||(3!=3)truetrue(74)||(910)11逻辑非操作符!操作符不改变表达式的值,它只改变由此表达式生成的值!的优先级比所有的算术或比较操作符都高。所以,在对一个布尔表达式取反之前,必须将包含其他操作符的布尔表达式放在圆括号中例如:!(1020)//Valid!1020//Invalid应尽量避免使用!操作符12有时,根本没必要将两个操作数都求值出来例如:(percent=0)&&(percent=100)(percent0)||(percent100)如果能小心的设计使用了条件逻辑操作符的表达式,既可以通过避免不必要的工作来提升代码的性能技巧:将容易计算、简单的布尔表达式放到条件逻辑操作符的左边,将复杂的表达式放到右边。144.3使用if语句来做出决策if语句的语法格式if(booleanExpression)statement1;elsestatement2;if语句中的表达式必须放在一对圆括号中表达式必须是布尔表达式,C#中不允许其他的形式,否则,编译器会报错C#允许在代码中包含所谓的空语句,一个空语句,不做任何事,仅有一个分号。如果将空语句错误地放在if语句布尔表达式右边括号的后面,它的存在就舍导致非常隐秘的措误。15例如:防止缩进的错误:16缩进样式样式1:if(Boolean_expression){statements}样式2:if(Boolean_expression){statements}样式3:if(Boolean_expression){statements}21多分支if-else语句编写嵌套if-else结构的标准化系统--多分支if-else语句只有从一个决策符号出发的false箭头才能与另一个决策符号相连。每个从决策符号出发的true箭头与一个动作符号相连,并且从动作符号出发移到程序的下一个语句。usingSystem;classPreMultibranch{publicstaticvoidMain(){decimalbalance;Console.Write(Enterbalance:);balance=Convert.ToDecimal(Console.ReadLine());if(balance5000)Console.WriteLine(balance5000.CategoryC);elseif(balance=20000)Console.WriteLine(5000=balance=20000.CategoryA);elseif(balance60000)Console.WriteLine(20000balance60000.CategoryC);elseif(balance=75000)Console.WriteLine(60000=balance=75000);elseConsole.WriteLine(BalanceisincategoryC);}}23标准缩进样式的if-else程序01:usingSystem;02:03:classMultibranchBalanceAssessment04:{05:publicstaticvoidMain()06:{07:decimalbalance;08:09:Console.Write(Enterbalance:);10:balance=Convert.ToDecimal(Console.ReadLine());11:if(balance5000)12:Console.WriteLine(balance5000.CategoryC);13:elseif(balance=20000)14:Console.WriteLine(5000=balance=20000.CategoryA);15:elseif(balance60000)16:Console.WriteLine(20000balance60000.CategoryC);17:elseif(balance=75000)18:Console.WriteLine(60000=balance=75000.CategoryB);19:else20:Console.WriteLine(balance75000.CategoryC);21:}22:}24建议:当构建多分支支else语句时,可使用if-else来发现错误。技巧:要避免太深的嵌套if-else语句。在许多情况下,程序员理解多于3到4级的嵌套if-else语句就会感到吃力。深度嵌套可以通过下面方法来避免:重新设计布尔表达式。这一过程可以使用逻缉操作符来完成。将代码分解成更简单的方法。25编写课本71页练习264.4使用switch语句有些时候,在嵌套使用if语句时,所有if语句看起来都非常相似,因为它们都在对一个完全相同的表达式进行求值,例如:if(day==0)dayName=Sunday;elseif(day==1)dayName=Monday;elseif(day==2)dayName=Tuesday;elseif(day==3)...elsedayName=Unknown;通常,可以将嵌套的if语句改写成switch语句,提高程序的运行效率274.1.1理解switch语法switch(controllingExpression){caseconstantExpression:statementsbreak;caseconstantExpression:statementsbreak;...default:statementsbreak;}284.2.2遵守switch语句规则只能将switch语句用于基本数据类型,例如,int或string,对于其他的任何类型(float,double),只能用if语句case标签必须是常量表达式,如果需要在运行时计算case标签,则必须使用if语句case标签必须具有唯一性,即不允许两个case标签具有相同的值可以连续写一些列case标签,指定在多种情况下都运行相同的语句,这样,最后一个case之后的所有代码将使用于所有case如果两个case之间有额外的代码,同时没有使用break跳出,则不能从第一个标签贯穿,编译器报错switch(trumps){caseHearts:caseDiamonds:color=Red;break;caseClubs:color=Black;caseSpades:color=Black;break;}29switch语句规则1一个switch部分可以包含0或多个语句,只有包含0个语句的switch部分才允许流程控制继续(穿越)执行下一个switch部分。通过连续放置0语句case部分,可以让多个常量都对应执行相同的语句01:switch(letter)02:{03:case'a':04:case'A':05:Console.WriteLine(TheletteriseitheraorA);06:break;07:case'b':08:case'B':09:case'c':10:case'C':11:Console.WriteLine(Theletteriseitherb,B,corC);12:break;13:default:14:Console.WriteLine(Invalidinput);15b
本文标题:Net面向对象程序设计-4-使用决策语句-2010-2011-2
链接地址:https://www.777doc.com/doc-2889596 .html