选择循环的种类
我们在选择哪种循环作为控制结构时,需要根据循环的灵活度和检查位置做判断
语言 | 循环的种类 | 灵活度 | 检查位置 |
---|---|---|---|
C,C++,C#,Java | For | 灵活 | 开始 |
While | 灵活 | 开始 | |
do-while | 灵活 | 结尾 | |
foreach | 严格(对容器类中的每个元素都要执行) | 开始 |
note:
- 灵活度:循环的次数是否是一定的?是否需要在每次迭代时检查循环有没有完成?
- 检查位置:在检查位置前面的部分至少会执行到一次
while 的使用
注意这样一个事实,如果在一次循环体的执行过程中,就算执行到中间处条件变为假,也不会立即跳出这个循环,剩余的代码还是会执行。执行完后再次在入口处检查条件,发现条件为假,从而退出循环。
也就是只在入口处做检测,若检测通过,则可完整执行一次循环体里的过程
带有退出的循环·使用
带有退出的循环(Loop-with-exit)里,终止条件出现在循环的中间。
(其实也就是终止条件的检测放在何处的问题,若检测通过,则可完整执行一次后面的代码)
在 C++、C、Java 中可以用结构化的 while 和 break 来模拟
toNote
(有了一个很好的想法,黑白块)
作用:消除重复代码,容易维护(重复代码的弊端是在修改时可能会忘了另一个地方)
for 循环的使用
for 循环是执行次数固定的循环,应该用 for 循环来执行不需要循环内部控制的简单操作
for 循环就是为了简单的用途,无需在循环内部做任何事情去控制它,更复杂的情况请用 while
- 何谓简单用途?
- 简单的递增递减,如对某容器内的元素进行迭代
- 何谓复杂的情况?
- 要在循环内部做一些事情来控制循环,如设置条件从而跳出循环
所以,如果想在内部控制循环,不要通过在 for 循环里直接修改下标这一方式,而是改用 while 循环
深入阅读:“Writing Solid Code”
foreach 循环的使用
适用于对数组或其他容器的各项元素进行操作,优势在于消除了人工进行算术处理的出错可能