有人可以用最简单的术语解释什么是 "for" 循环吗?

Can someone explain what a "for" loop is in the simplest terms possible?

我正在尝试学习编码,但我无法理解 "for" 循环中发生的事情。

if/else if/else 语句很简单。

if (this is true) {
do this.

else [otherwise, but] if (this is true) {
do that.

else
do this.

"while" 和 "do/while" 循环也很简单。

while (this is is true) {
do this.

do this {
}

while (this is true).

现在,我知道 "for" 循环的结构:(开始、结束、递增)。我什至可以做一个解决基本问题的方法。但是,我不知道计算机是什么 "thinking." 我不能像其他人那样用基本的英语术语表达它。任何帮助将不胜感激。

基本上计算机正在寻找一个值列表,然后说 "whatever you put in your loop, I'm going to do once for each item in this list"。就这样 "for".

令人困惑的是,您通常看不到计算机正在使用的 "list"。 for 循环的格式因编程语言而异,但在您的情况下,请考虑您正在使用的示例:

for (x = 0, x < 4, x ++){
    print(x)
} 

你可以认为有一个数字列表,从 0 开始到 4,步长为 1。

所以计算机在思考"for each value in the list of values 0,1,2,3, I'm going to do what's in the loop"。

基础知识

For 循环是数字上下文中 while 循环的简写形式。

而不是这样写:

x = 0;
while (x < 5) {
  x++;
}

你可以这么写:

for (x = 0; x < 5; x++)

语法

哦,还有部分如下:

for (start; condition; increment)

它们的含义如下:

  1. 开始或初始化为初始变量
  2. 条件的作用类似于while语句中括号中的部分; for 的主体将继续执行,直到它变为 false。
  3. 增量或更新是变量的变化方式;没有它,循环会无限期地运行。

for 循环仅仅意味着您在指示程序重复执行一个动作。

有什么动作?随心所欲。

你做了多少次? Forfor 循环指定的次数。

你这样做是为了什么?这也是您指定的内容。

示例:

for(i in 1:nrow(x)){
  x[i,3] <- "A"
}

这是 R 中的一个 for 循环。它表示对于名为 x 的对象的第 1 行到最后一行,使第 3 列字符 "A".

动作是<- "A",意思是给字符A赋值。

做多少次? 1:nrow(x)

要做什么? x[i,3]

另一个例子:

for(i in 1:10){
    a[i] <- TRUE
 }

这里的动作是赋值TRUE

做的次数是(for)1到10次(即1、2、3、4、5、6、7、8、9、10)。

要做什么?对象 a.

的元素

A for 循环只是 while 循环的通用结构的便利符号。

考虑一个结构如下的 while 循环(一个非常常见的用例):

int i = 0;
while (i < size) {
    float value = arrayOfValues[i];

    // do something with the value

    i = i + 1;
}


下面的 for 循环做同样的事情,但它只是稍微简化了代码,并将 i 的范围缩小到某些语言中的循环,例如 java.

for(int i = 0; i < size; i = i + 1){
    float value = arrayOfValues[i];

    // do something with the value
}


在某些语言中(例如 java),符号有更进一步的简化,如下所示:

for(float value:arrayOfValues){
    // do something with the value
}

在 C++ 中,for 结构的工作方式与 while 非常相似。 for 循环在 () 中有三个字段。它们是初始化,测试(这是暂时工作的部分)和增量字段。

第一次遇到for循环时,会进行初始化,但只进行一次;之后就再也没有执行过。

然后测试条件,如果为真则执行循环体。

最后执行增量字段。通常人们会输入一个变量增量,如 x++ 或类似的东西,但它可以是有效的语句。

在 while 语法中做与 for 循环相同的事情是可能的:

int index = 0;
while( index < count )
{
  do_stuff();
  index++;
}

在 for 循环中它看起来像这样:

for( int index = 0 ; index < count ; index++ )
{
  do_stuff();
}

在许多编程语言中,for 循环是各种常用循环场景的简写形式,可以通过变量、if 语句和 while 循环的组合来完成,尽管更冗长。

每种语言都定义了自己的 for 循环语义(或者根本没有 for 循环),但是许多语言都实现了两种非常常见的类型:

"setup"、"condition"、"update"循环,常用于迭代一定次数,更新一个变量为跟踪您在迭代中的位置。在 C 风格的语言中(例如 C/C++、Java、Javascript)它看起来像这样:

for (setup; condition; update) 语句;

这可以用这样的 while 循环来表示:

setup;
while (condition) {
    statement;
    update;
}

在英文中,你可以认为是:

Perform these { setup } steps.
While { condition } is true: perform { statement } and { update }. 

如前所述,这通常用于迭代一定次数:

for (int i=0; i<10; i++) doSomethingWith(i);

iterate collectionfor each 循环用于对元素集合中的每个元素执行某些操作,例如列表,数组或映射/关联数组。这种循环样式的语法在不同语言之间不太一致,但通常采用 for (element in collection) statement;

这样的形式

例如,在 Java 中,遍历集合采用以下形式:

for (Type obj : collectionOfObj) statement;

它的英文内容是这样的:

for each thing in { collectionOfObj }, assign the thing to a variable named { obj } of type { Type } and then execute { statement }.

许多语言对于 for 循环的功能有不同的语法或略有不同的规则。某些语言旨在允许程序员使用语言本身构建不同的循环结构。我建议您仔细阅读您正在使用的语言的结构,如果您理解 while 和 if,您将可以轻松地习惯 for 的各种形式,因为您需要使用它们。

所有"loops"都是一样的。 "while" 循环可以替换为 "for" 循环。

int i = 0;
while (i < 10){
do something;
i++;

}

和"for"循环是 对于 (i = 0; i < 10; i++) 做某事;