3.7 控制流语句
在补充探讨了布尔表达式之后,让我们继续研究C#支持的其他控制流语句。正如前面说过的那样,有经验的程序员应该已经熟悉了许多语句,所以你可以快速浏览本节的内容,寻找C#特有的信息。尤其注意一下foreach循环,它对许多程序员来说是新的。
3.7.1 while和do/while循环
到目前为止,你学习的都是如何写只执行一遍的程序。但是,计算机的众多重要能力之一就是能多次执行相同的操作。为此,需要创建一个指令循环。本节讨论的第一个指令循环是while循环。while语句的常规形式如下:
while(boolean-expression) |
只要布尔表达式(boolean-expression)求值为true,计算机就会反复执行语句(statement)。如果求值为false,就从statement之后的那一行语句执行。代码清单3-40用一个斐波那契计算器演示了while语句的用法。
代码清单3-40 while循环示例
class FibonacciCalculator System.Console.Write("Enter a positive integer:");// decimal.Parse convert the ReadLine to a decimal. // Initialize current and previous to 1, the first // While the current Fibonacci number in the series is System.Console.WriteLine( |
斐波那契数(Fibonacci number)是斐波那契数列(Fibonacci series)的一个成员,这个数列中的所有数都是数列中前两个数之和。数列最开头两个数是1和1。在代码清单3-40中,提示用户输入一个整数。接着,使用一个while循环来发现比用户输入的数大的第一个斐波那契数。
初学者主题:何时使用while循环
在本章剩余的部分中,会讲到造成一个代码块反复执行的其他循环结构。应该理解如何选择正确的循环结构。while只有在条件为true的前提下才会循环,for主要用于循环0~n次的情况,do/while类似于while循环,区别在于它至少会循环一次。
do/while循环与while循环非常相似,只是它用于需要循环1~n次,而且n在循环开始之前无法确定的情况。do/while循环的一个典型应用就是反复提示用户输入。代码清单3-41是从tic-tac-toe程序中提取出来的。
代码清单3-41 do/while循环示例
// Repeatedly request player to move until they // Request a move from the current player. // Check the current player's input. } while (!valid); |
在代码清单3-41中,我们在每一次迭代(iteration)或循环开始的时候都将valid设为false。接着,程序提示并获取用户输入的数。本程序这部分被省略了,接下来的操作是检查输入是否正确。如果正确,就将true赋给valid。由于代码使用的是do/while语句,而不是while语句,所以至少会提示用户输入一次。
do/while循环的常规形式如下:
do |
和所有控制流语句一样,在常规形式中一般不使用代码块。但是,在可以使用单个语句的地方,通常都能使用代码块。换言之,可以用多个语句来取代常规形式中的单个语句。
| 回书目 上一节 下一节 |
|
||||
| · 龙芯要做中国的“奔腾” · 2008年上半年IT技术图.. · 虚拟化的“赤壁之战” · 服务器节能与绿色IT · 微软出价446亿美元收购.. · 脉冲无线电uwb专题 · 802.11n:下一代的无线.. · 云计算时代来临 |
· IT工程师该不该考CCIE.. · 浏览器的战国时代 · 2008年上半年全国软考.. · 无线网络环境 · 无线网状网(MESH) · 无线重中之重:安全问题 · 网络故障排除宝典 · Windows Server 2008专.. |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · 无线网状网(MESH) · Windows远程桌面应用 · C#技术开发指南 |
· Apache技术专题 · Windows集群服务应用 · C#技术开发指南 · 文档格式标准开战 OOXM.. · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 解析35岁技术人的价值.. |
|||