接下来介绍的第二种循环结构是while循环。while循环的语法为:
请注意,只有expression2(用于计算是否执行循环语句体的表达式)显示为循环结构语法的一个组成部分。显然,你仍然可以编写性能良好的while循环;只是语法结构并没有真正让你面对for循环语法结构的三个条件。实际上,任何for循环都可以很容易地写成while循环。
让我们将上面的for循环改写为while循环:
请注意好的循环表达式的编写。
(1)良好的循环程序的第一个条件是必须将循环控制变量初始化为某个已知状态。对于while循环,必须在进入while循环之前完成此初始化步骤,因为它不是循环语法本身的一部分。这就是为什么在进入while循环之前有一个语句k=0。(www.xing528.com)
(2)良好的循环程序的第二个条件是,必须对控制循环的任何变量(即k)执行某种形式的逻辑运算。while循环确实将expression2作为其语法结构的一部分,while关键字后面的括号中出现的表达式可以看出这一点。在我们的示例中,表达式k<1000是良好的循环的expression2。
(3)良好的循环程序的第三个条件是控制循环的变量的状态必须改变。while循环语法中没有任何东西可以强制你编写,甚至考虑expression3。必须在循环体的语句中提供一些语句,以更改控制while循环的任何变量的状态。在我们的示例中,语句k++变成了expression3。
你应该能够发现,上面给出的示例while循环在功能上等同于使用for循环结构的图5-1中描述的代码。两者之间唯一的区别,是while循环的语法结构对于编写良好的循环所需的表达式来说,没有那么“直截了当”。如果你把这个事实藏在心里,那么你的错误体验就会减少。
如果可以编写一个与for循环几乎相同的while循环,那么应该使用哪一个呢?的确,如果它们在功能上是相同的,为什么还要有一个while循环呢?的确如此:for循环可能更适合于一项特定的工作,比while循环工作更重要。虽然编程中没有什么硬性规定,但我们可以提供一些循环选择决策的指导原则。作为一般规则,如果你必须执行特定数量的任务时,for循环通常是首选。例如,假设你正在编写一个软件在每个工作日结束时,必须在大楼内的所有灯之间循环,并关闭所有的灯。如果大楼里有1500盏灯,那么你知道你的程序代码必须访问每个灯以执行其任务。因为任务执行的数量是已知的,大多数程序员可能会使用for循环编写代码。
现在假设你正在编写一个程序,该程序必须搜索10000个零件的库存列表,正在查找特定的零件号。找到该零件号后,你希望退出循环并使用零件相关的用于其他目的的信息(例如,填写发票)。在这种情况下,你不想访问所有10000个零件记录;一旦找到目标,就要退出搜索你正在寻找的部分。大多数程序员将此类任务编码为while循环。主要原因是,尽管可能存在已知的最大检查项目数(即表达式2),但一旦发现你在寻找什么,你就跳出了循环,因为你并没有访问每一个项目。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。