有人可以用最简单的术语解释什么是 "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)
它们的含义如下:
- 开始或初始化为初始变量
- 条件的作用类似于while语句中括号中的部分; for 的主体将继续执行,直到它变为 false。
- 增量或更新是变量的变化方式;没有它,循环会无限期地运行。
for
循环仅仅意味着您在指示程序重复执行一个动作。
有什么动作?随心所欲。
你做了多少次? For 次 for
循环指定的次数。
你这样做是为了什么?这也是您指定的内容。
示例:
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 collection 或 for 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++)
做某事;
我正在尝试学习编码,但我无法理解 "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)
它们的含义如下:
- 开始或初始化为初始变量
- 条件的作用类似于while语句中括号中的部分; for 的主体将继续执行,直到它变为 false。
- 增量或更新是变量的变化方式;没有它,循环会无限期地运行。
for
循环仅仅意味着您在指示程序重复执行一个动作。
有什么动作?随心所欲。
你做了多少次? For 次 for
循环指定的次数。
你这样做是为了什么?这也是您指定的内容。
示例:
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 collection 或 for 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++) 做某事;