Net面向对象程序设计-4-使用决策语句-2010-2011-2 - 副本_第1页
Net面向对象程序设计-4-使用决策语句-2010-2011-2 - 副本_第2页
Net面向对象程序设计-4-使用决策语句-2010-2011-2 - 副本_第3页
Net面向对象程序设计-4-使用决策语句-2010-2011-2 - 副本_第4页
Net面向对象程序设计-4-使用决策语句-2010-2011-2 - 副本_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 12第第4章章 使用决策语句使用决策语句After completing this chapter, you will be able to:Declare Boolean variables.Use Boolean operators to create expressions whose outcome is either true or false.Write if statements to make decisions based on the result of a Boolean expression.Write switch statements to make more

2、complex decisions.234.1 声明布尔变量声明布尔变量C#中提供一个名为bool的数据类型,该类型的变量只能容纳两个值之一:true或false示例:bool areYouReady;areYouReady = true;Console.WriteLine(areYouReady); / writes True to the console44.2使用布尔操作符使用布尔操作符6个主要的比较操作符个主要的比较操作符Math Notation C# Syntax Name Example Category Explanation Greater-than x yx y Relat

3、ional Returns truetrue if x x is greater than y y; otherwise, returns falsefalse = Greater-than-or-equal-to x = yx = y Relational Returns truetrue if x x is greater than or equal to y y; otherwise, returns falsefalse Less-than x yx y Relational Returns truetrue if x x is less than y y, otherwise; re

4、turns falsefalse = Less-than-or-equal-to equal to x = yx 0); 可以在if语句内使用bool类型变量例如:04: if (isPositive) 05: WriteLine(The account has a positive balance); 比较操作符可以组合包含数字表达式的操作数6提示:新手常犯的一个错误是在合并两个测试的时候,只对percent命名一次percent = 0 & = 0 & percent = 0) & (percent = 100)可使用圆括号提高可读性7当两个不同类型的值用比较操作符

5、进行比较时,若算术二元操作符连接了两个值,编译器严格遵循与隐式转换和类型提升相同的规则。84.2.3 短路求值短路求值一个逻辑操作符仅能用于布尔类型表达式,并且总是返回一个布尔类型值;故逻辑操作符的另一个常用术语是布尔操作符。3个常用的逻辑操作符个常用的逻辑操作符逻辑操逻辑操作符作符 其它术语其它术语C#符号符号 操作数个数操作数个数Example AND 逻辑乘法& 2 (binary) (53) & (1020)(53) & (1020) OR 逻辑加法 | | 2 (binary) (mass 1000)(mass 1000) NOT 逻辑取负! ! 1 (una

6、ry) !(mass 8000)!(mass 8000) 逻辑与操作符:逻辑与操作符:&真值表真值表子表达式子表达式1的值的值子表达式子表达式2的值的值子表达式子表达式1的值的值&子表达式子表达式2的值的值Example falsefalse falsefalse falsefalse (510) & (1010) & (102)(5=2) & (102) truetrue falsefalse falsefalse (5!=0) & (3!=3)(5!=0) & (3!=3) truetrue truetrue truetrue (74

7、) & (94) & (910) | (1010) | (102)(5=2) | (102) truetrue falsefalse (5!=0) | (3!=3)(5!=0) | (3!=3) truetrue truetrue (74) | (94) | (9 20) /Valid !10 20 /Invalid 应尽量避免使用!操作符12有时,根本没必要将两个操作数都求值出来例如:(percent = 0) & (percent = 100)(percent 100)如果能小心的设计使用了条件逻辑操作符的表达式,既可以通过避免不必要的工作来提升代码的性能技巧:将容

8、易计算、简单的布尔表达式放到条件逻辑操作符的左边,将复杂的表达式放到右边。 1301: using System;02:03: class CharacterCounter04: 05: public static void Main()06: 07: string myText;08: int charCount = 0;09: char ch;10: int index = 0;11:12: Console.WriteLine(Enter some text);13: myText = Console.ReadLine();14: while (index myText.Length)15

9、: 16: ch = myTextindex;17: if (!char.IsWhiteSpace(ch)18: charCount+;19: index+;20: 21: Console.WriteLine(Number of non-white-space characters: 0:N0 , charCount);22: 23: 144.3 使用使用if语句来做出决策语句来做出决策if语句的语法格式if ( booleanExpression ) statement1;else statement2;if语句中的表达式必须放在一对圆括号中表达式必须是布尔表达式表达式必须是布尔表达式,C#

10、 中不允许其他的形式,否则,编译器会报错C#允许在代码中包含所谓的空语句,一个空语句,不做任何事,仅有一个分号。如果将空语句错误地放在if语句布尔表达式右边括号的后面,它的存在就舍导致非常隐秘的措误。15例如:例如:防止缩进的错误:防止缩进的错误:16缩进样式缩进样式样式1:if () 样式2:if () 样式3:if () 17If(number0)if(number%3=0)Console.WriteLine(“”);elseConsole.WriteLine(“”);18在if-else语句中,else总是与同一块中的最近未匹配if配对If(number0)if(number%3=0)C

11、onsole.WriteLine(“”);elseConsole.WriteLine(“”);19范例:范例:2001: using System;03: class BalanceAssessment04: 05: public static void Main()06: 07: decimal balance;09: Console.Write(Enter balance: );10: balance = Convert.ToDecimal(Console.ReadLine();11: if(balance = 5000)12: 13: if(balance = 20000)14: 15:

12、 /5000 = balance = 2000016: Console.WriteLine(5000 = balance = 60000)21: 22: if(balance = 75000)23: /60000 = balance = 7500024: Console.WriteLine(60000 = balance 7500027: Console.WriteLie(balance 75000. Category C);28: 29: else30: /20000 balance 6000031: Console.WriteLine(20000 balance 60000. Catego

13、ry C);32: 33: 34: else35: /balance 500036: Console.WriteLine(balance 5000. Category C);37: 38: 21多分支多分支if-else语句语句编写嵌套if-else结构的标准化系统-多分支if-else语句只有从一个决策符号出发的false箭头才能与另一个决策符号相连。每个从决策符号出发的true箭头与一个动作符号相连,并且从动作符号出发移到程序的下一个语句。using System;class PreMultibranch public static void Main() decimal balance;

14、 Console.Write(Enter balance: ); balance = Convert.ToDecimal(Console.ReadLine(); if(balance 5000) Console.WriteLine(balance 5000. Category C); else if(balance = 20000) Console.WriteLine(5000 = balance = 20000. Category A); else if(balance 60000) Console.WriteLine(20000 balance 60000. Category C); el

15、se if(balance = 75000) Console.WriteLine(60000 = balance = 75000 ); else Console.WriteLine(Balance is in category C); 23标准缩进样式的标准缩进样式的if-else程序程序01: using System;02:03: class MultibranchBalanceAssessment04: 05: public static void Main()06: 07: decimal balance;08:09: Console.Write(Enter balance: );10

16、: balance = Convert.ToDecimal(Console.ReadLine();11: if(balance 5000)12: Console.WriteLine(balance 5000. Category C);13: else if(balance = 20000)14: Console.WriteLine(5000 = balance = 20000. Category A);15: else if(balance 60000)16: Console.WriteLine(20000 balance 60000. Category C);17: else if(bala

17、nce = 75000)18: Console.WriteLine(60000 = balance 75000. Category C);21: 22: 24建议:当构建多分支支else语句时,可使用if-else来发现错误。技巧:要避免太深的嵌套if-else语句。在许多情况下,程序员理解多于3到4级的嵌套if-else语句就会感到吃力。深度嵌套可以通过下面方法来避免:重新设计布尔表达式。这一过程可以使用逻缉操作符来完成。将代码分解成更简单的方法。25编写课本编写课本71页练习页练习264.4使用使用switch语句语句有些时候,在嵌套使用if语句时,所有if语句看起来都非常相似,因为它们都

18、在对一个完全相同的表达式进行求值,例如:if (day = 0)dayName = Sunday;else if (day = 1)dayName = Monday;else if (day = 2)dayName = Tuesday;else if (day = 3).elsedayName = Unknown;通常,可以将嵌套的if语句改写成switch语句,提高程序的运行效率274.1.1理解理解switch语法语法switch ( controllingExpression )case constantExpression :statementsbreak;case constantE

19、xpression :statementsbreak;.default :statementsbreak;284.2.2遵守遵守switch语句规则语句规则只能将switch语句用于基本数据类型,例如,int或string,对于其他的任何类型(float,double),只能用if语句case标签必须是常量表达式,如果需要在运行时计算case标签,则必须使用if语句case标签必须具有唯一性,即不允许两个case标签具有相同的值可以连续写一些列case标签,指定在多种情况下都运行相同的语句,这样,最后一个case之后的所有代码将使用于所有case如果两个case之间有额外的代码,同时没有使用b

20、reak跳出,则不能从第一个标签贯穿,编译器报错switch (trumps)case Hearts :case Diamonds :color = Red; break;case Clubs :color = Black;case Spades :color = Black;break;29switch语句规则语句规则1一个switch部分可以包含0或多个语句,只有包含0个语句的switch部分才允许流程控制继续(穿越)执行下一个switch部分。通过连续放置0语句case部分,可以让多个常量都对应执行相同的语句01: switch(letter)02: 03: case a:04: cas

21、e A:05: Console.WriteLine(The letter is either a or A);06: break;07: case b:08: case B:09: case c:10: case C:11: Console.WriteLine(The letter is either b, B, c or C);12: break;13: default:14: Console.WriteLine(Invalid input);15 break;16: 30switch语句规则语句规则2如果case部分有一个或多个语句,流程控制就决不能到达此部分的结尾。01: switch(

22、letter)02: 03: case a:04: Console.WriteLine(You typed the letter: a);05: Console.WriteLine(a is for apple);06: case b:07: Console.WriteLine(You typed the letter: b);08: Console.WriteLine(b is for boat);09: break; 产生编译器错误!3101: using System;03: class IceCreamManufacturer04: 05: public static void Main()06: 07: const decimal BareMinimumCost = 1.2m;08: const decimal StandardCost = 1.5m;09: const decimal MumboCost = 2.1m;10: int iceCreamType;11: decimal totalCost;12:13: Console

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论