for循环 && while循环

关于for循环和while循环的深入理解 —— konux

很多新人弄不懂for循环和while循环的用法,在这里特地做一个解释

for循环:


上面这玩意就是for循环


首先我们来讲讲循环到底是个啥?

循环其实就是重复运行某个动作组,如果有重复的动作需要运行,一些萌新可能会这么写:


这就是在一个区域内放10个随机位置的墙,但这样写很显然非常麻烦且不简洁

所以引入for循环就可以这样写,这种写法的效果和上面的等价


看!是不是简洁且省力不少?


ic循环的组成:

循环分为两个部分:循环体和循环动作

循环体就是上图中的函数,这个函数提供了一个全局变量 i 和类迭代器【后文介绍】

循环动作就是循环中要执行的动作,如上图中的创建墙1


for循环用程序(C++)表示是这样的:

for(int i = 0; i < 10; i++)
{
//这里写循环中的动作;
}

当然了,看到代码也不用怕,这里只是为了让你清楚具体的原理,我们后面将一步步分析


首先看括号内部的第一句【int i = 0,指的是创建一个整数变量 i 并给其赋一个初值为0(什?不知道变量?建议去看文档中的变量教程)

第二句【i < 10,这里是循环体的运行条件,即当i < 10这个条件满足时,就会执行循环,若一旦 i >= 10,那么循环就会跳出来,从而循环终止

第三句【i++】,这句话表示变量 i 自增 1 ,即 i = i + 1 ,且这个语句会每循环一次就运行一次(在循环条件满足的情况下)


函数运行逻辑:


还是使用这个图,你需要记住,下标从0到 n 表示这个循环执行 n 次

那么为什么会这样呢?为什么不是n + 1次?或者n - 1次?

我们直接过一遍程序的运行逻辑就明白了


首先程序运行到这个for循环,然后就会有一个变量 i ,它的值刚开始为0

循环第1次:然后直接运行下面的创建墙1的动作

接着 i 会自增1(【类迭代器】如果 i 从下标 a 到下标b,且a > b,那么i 会自减1),即 i 变成了0+1,然后判断 i < 10是否成立,若成立则运行下面的动作,否则就跳出循环

循环第2次:运行创建墙1的动作

i 自增 1,即 i = 2,i < 10成立,继续运行下面的动作

循环第3次:......

...

循环第10次:运行创建墙1的动作

i 自增 1,即 i = 10,判断 i < 10是否成立,这里显然不成立,所以循环跳出,至此,循环就运行完毕


注意:

值得注意的是,由于循环中的 i 是一个变量,所以它的值可以被获取,在循环动作中可以借助 i 的值的变化来写一些动作,但是建议新手不要盲目更改 i 的值,否则可能会导致死循环,如下图:


循环每执行一次,i 都会先减1再加1,相当于这个全局变量 i 的值一直都是 0 ,很显然不可能 >=2 ,那么这个循环会一直运行下去,游戏直接由于死循环而崩溃


还有就是循环嵌套的问题,如果for循环套用for循环,记住不要使用同一变量名



while循环:

while循环也是一种循环,和for循环不同的是,while循环以条件当做跳出循环的标准,而for循环通常以运行次数当做跳出的标准

若动作循环次数已知,那么用for循环,若已经跳出循环的条件且不知道循环次数,那么用while循环


while循环程序原型:

while(bool) //括号里填循环条件
{
//循环动作;
}


但是在这里其实并不推荐使用while循环,因为for循环也可以构造while循环的模型

show my code:


其实就是构造一个死循环,如果条件满足则跳出循环