第十六章--控制循环

第十六章--控制循环


16.1--选择循环的种类

1.在大多数语言中,你只能用到少数几种循环:

(1)计数循环:执行次数一定。

(2)连续求值的循环:预先并不知道将要执行多少次,它会在每次迭代时检查是否应该结束。

(3)无限循环:一旦启动就一直执行下去。

(4)迭代器循环:对容器类里面的每个元素执行一次操作。


2.什么时候使用while循环

(1)如果你不知道循环要执行多少次,那么就使用while循环。

(2)对于在开始处进行检测的循环,可以使用while循环(或模拟while循环)。

(3)当你需要一个灵活的循环,但是该循环至少需要至少执行一次。这种情况下,可以用在结尾处做检测的循环(或模拟这样的while循环)。


3.什么时候用待退出的循环

带退出的循环就是终止条件出现在循环中间的循环。

(1)正常的带退出循环。使用场合:如果把循环条件检测放在循环开始或结束处,那就需要写出一个半循环的代码,此时可用带退出的循环。

 在使用这种循环的时候,请注意下面细节:

 *把所有的退出条件放在一处。

 *用注释来阐明操作意图。

 *待退出的循环也是单入单出得结构化控制结构,也是一种首选的循环控制。

(2)非正常的带退出的循环。如利用goto语句直接跳到循环体中。如果你的语言不支持break命令,那么可以使用goto来模拟break,但是goto使用要谨慎。


4.何时使用for循环

(1)如果你需要一个执行次数固定的循环,那么for循环就是一个很好的选择。

(2)可以用for循环来执行那些不需要循环内部控制的简单操作。如递增递减。

(3)不要在for循环里通过直接修改下标值的方式迫使它终止,在这种情况下应该该改用while循环。

(4)for循环就是为了简单的用途,复杂的最好用while。


5.何时使用foreach循环

foreach循环或其等价物很适用于对数组或者其他容器的各项元素执行操作。


16.2--循环控制

1.循环会出现的错误大致有下面几种:

(1)忽略或错误地对循环执行初始化;

(2)忽略了对累加变量或者其他与循环有关的变量执行初始化;

(3)不正确的嵌套;

(4)不正确的循环终止;

(5)忽略或者错误地增加了循环变量的值;

(6)用不正确的循环下标访问素组元素;

解决方法大致有两种:一是减少能影响该循环各种因素的数量,简化,简化,再简化!二是把循环内部当做一个子程序看待--把控制尽可能放在循环体外。


2.进入循环

在代码进入循环时,使用下述指导原则:

(1)只从一个位置进入循环。

(2)把初始化代码紧放在循环前面。

(3)用while(true)表示无限循环。

(4)在适当的情况下多使用for循环。

(5)在while循环更适用的时候,不要使用for循环。


3.处理好循环体

下面讲解如何处理循环体:

(1)用“{”和“}”把循环体中的语句括起来。

(2)避免空循环。

(3)把循环内务操作要么放在循环的开始,要么放在循环的末尾。

(4)一个循环只做一件事。


4.退出循环

(1)设法确认循环能够终止。

(2)使循环终止条件看起来很明显。

(3)不要为了终止循环而胡乱改动for循环的下标。

(4)避免出现依赖于循环下标最终取值的代码。

(5)考虑使用安全计数器。


5.提前退出循环

(1)考虑在while循环中使用break语句而不用布尔标记。

(2)小心那些有很多break散布其中的循环。

(3)在循环开始处用continue进行判断。

(4)如果语言支持,请使用待标号break结构。

(5)使用break和continue时要小心谨慎。break就使阅读代码的人必须去读循环体,才能理解循环是如何控制的。


6.检查端点

对于一个简单的循环,通常要注意三种情况:开始的情况,任意选择的中间情况,以及最终的情况。在你创建循环的时候,应在脑海里运行这三种循环情况,以确认该循环不会出现任何off-by-one(偏差一)错误。可以通过手工计算来检查。


7.使用循环变量

下面是使用循环变量的一些指导原则:

(1)用整数或者枚举类型表示数组和循环的边界。

(2)在嵌套循环中使用有意义的变量名来提高其可读性。

(3)用有意义的名字来避免循环下标串话。习惯性使用i,j,k有可能会导致下标串话。

(4)把循环下标变量的作用域限制在循环体。


8.循环应该有多长

(1)循环要尽可能地短,以便能够一目了然。

(2)把嵌套限制在3层以内。

(3)把长循环的内容移到子程序里。

(4)要让长循环格外清晰。


16.3--轻松创建循环--由内而外

一般的处理过程:

(1)在注释里写下循环体需要执行的操作步骤。

(2)在还没有编写整个循环之前,尽可能多地把循环体内的注释转化成代码。

(3)在数组中加入下标。

(4)给现有语句外面加上一层循环。

(5)写出必要的初始化代码。


16.4--循环和数组的关系

循环和数字关系密切,很多情况下,循环就是用来操纵数组的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值