for循环的构成
在编程中,for
循环是一种基本的控制结构,用于重复执行一段代码块固定次数或遍历一个可迭代对象(如列表、元组、字典、集合或字符串等)。for
循环的构成因编程语言的不同而有所差异,但大多数现代编程语言都支持for
循环,并且其结构有相似之处。以下是C++语言中for
循环的构成示例:
在 C 和 C++ 中,for 循环通常包括初始化、条件检查和迭代部分
// 遍历一个数组
int arr[4] = {1, 2, 3, 4};
for(int i = 0; i < 4; ++i){ // 从0循环到3(数组下标)
cout << arr[i] <<" ";
}
// 将会输出 1 2 3 4
// 固定次数的循环
for(int i = 1; i <= 10; ++i){ // 从1循环到10
cout << i <<" ";
}
// 将会输出 1 2 3 4 5 6 7 8 9 10
尽管不同编程语言中for
循环的具体语法可能有所不同,但它们的基本结构通常包括:
- 初始化部分
设置循环控制变量(通常是一个计数器) - 条件检查
在每次迭代开始时评估一个条件,如果条件为真,则继续执行循环体;否则,退出循环 - 迭代部分
- 在每次迭代结束时更新循环控制变量
此外,许多现代编程语言还提供了其他类型的循环结构(如while
循环和do-while
循环)以及专门用于遍历集合的语法(如Python
的for item in iterable
和C#
的foreach
),不过我们今天只学习C++
的for
循环
for循环的特性
for
循环是编程中一种非常基础且强大的控制结构,其特性可以归纳为以下几点:
基本特性
- 重复性
for
循环允许代码块重复执行,直到满足特定的终止条件 - 结构化
for
循环通常包含初始化、条件检查和迭代三个主要部分,这些部分共同确保循环的正确执行 - 灵活性
for
循环可以用于多种场景,包括遍历数组、列表、字符串等可迭代对象,以及执行固定次数的迭代
遍历特性
-
可迭代对象遍历
在许多编程语言中,for
循环特别适用于遍历可迭代对象,如数组、列表、元组、字典、集合和字符串等
遍历过程中,循环变量会依次指向可迭代对象中的每个元素 -
键值对遍历(在支持字典等键值对数据结构的语言中)
对于字典等包含键值对的数据结构,for 循环可以方便地遍历其中的键、值或键值对。
控制特性
- 条件控制
for
循环的执行依赖于条件表达式的值。只要条件表达式为真,循环就会继续执行;否则,循环将终止。 - 迭代控制
迭代部分负责更新循环控制变量,以确保每次迭代都能正确地访问可迭代对象的下一个元素(或执行下一次迭代)。 - 提前终止
在某些情况下,可以使用break
语句提前终止for
循环。
也可以使用continue
语句跳过当前迭代,直接开始下一次迭代。
嵌套特性
- 嵌套使用
for
循环可以嵌套在其他for
循环或其他类型的循环结构中,以实现更复杂的控制流程。
嵌套循环时,需要注意循环变量的命名和作用域,以避免冲突和错误。
执行效率
- 高效性
for
循环通常具有较高的执行效率,特别是在处理大量数据时。
通过合理的循环设计和优化,可以进一步提高for
循环的执行效率。
语言特性差异
语法差异
- 不同编程语言中 for 循环的语法可能有所不同,但基本结构和原理是相似的。
- 在学习新的编程语言时,需要了解该语言中 for 循环的具体语法和特性。
功能扩展
- 一些编程语言可能提供了对
for
循环的扩展或特殊用法,如Python
中的for...else
结构或C#
中的foreach
循环等。
综上所述
for
循环具有重复性、结构化、灵活性、遍历特性、控制特性、嵌套特性以及高效性等基本特性。这些特性使得for
循环成为编程中不可或缺的控制结构之一。
for循环的典型例子
说到循环,很多人都会想起高斯小时候做过的1 + 2 + 3 + …… + 100,这也是for循环最典型的代表,今天我们将以这个例子来学习for循环。
控制循环与整理思路
从一加到一百,就要循环一百次。
同时,求和的变量还要每轮自加自增一,或是说加上目前循环的次数
为了方便,我们可以将循环变量(也就是i
)作为每次增加的数
那么,循环变量就要从1
自加一到100
之后,求和变量每次增加i
就好了
开干
编程实现
首先,写好编程专用头文件和main函数:
#include<bits/stdc++.h>
#define int long long // 宏命令,可省略
using namespace std;
signed main(){ // 因为将int定义为“long long”,mian函数返回值类型要改变
}
然后是求和和循环时间:
int n = 0; // 定义求和变量和初始化(初始化尤为重要,小心)
for(int i = 1; i <= 100; ++i){
n = n + i; // 不断加上i
}
最后输出验证:
cout << n;
放完整代码:
#include<bits/stdc++.h>
#define int long long // 宏命令,可省略
using namespace std;
signed main(){ // 因为将int定义为“long long”,mian函数返回值类型要改变
int n = 0; // 定义求和变量和初始化(初始化尤为重要,小心)
for(int i = 1; i <= 100; ++i){
n = n + i; // 不断加上i
}
cout << n;
}
目标:输出5050
程序解释
开始,n等于零
进入循环,i = 1
,判断 i <= 100
为真,进入
此时,i
是1
,(n = n + i
) = (n = 0 + 1
)
第二次循环,i = 2
,判断 i <= 100
为真,进入
此时,i
是2
,(n = n + i
) = (n = 1 + 2
),运算完后 n = 3
第三次循环,i = 3
,判断 i <= 100
为真,进入
此时,i
是3
,(n = n + i
) = (n = 3 + 3
),运算完后 n = 6
第四次循环,i = 4
,判断 i <= 100
为真,进入
此时,i
是4
,(n = n + i
) = (n = 6 + 4
),运算完后 n = 10
第五次循环,i = 5
,判断 i <= 100
为真,进入
此时,i
是2
,(n = n + i
) = (n = 10 + 5
),运算完后 n = 15
……
第一百零一次循环,i = 101
,判断 i <= 100
为假,不进入,退出循环
此时,n
等于 5050
,输出
看程序输出
每轮输出(n + i = ?)
最后输出最终结果(5050)
看到这里,相信你已经掌握了for循环了,再见