使用 for 语句创建计数循环
在编程中,
for
语句是一种强大的工具,可用于创建计数循环,实现各种功能。下面将详细介绍
for
语句的多种应用场景及示例代码。
1. 绘制星星
首先,我们来看一个简单的程序,它允许用户输入星星的数量,并在画布上绘制相应数量的星星。
String input;
input = showInputDialog("Enter the number of stars:");
int stars;
stars = int(input);
for (int count = 1; count <= stars; count = count + 1)
{
stroke(255, 255, 255);
point( random(width), random(height) );
}
这个程序的流程如下:
1. 提示用户输入星星的数量。
2. 将用户输入的字符串转换为整数。
3. 使用
for
循环,循环次数为用户输入的星星数量。
4. 在每次循环中,设置笔触颜色为白色,并在画布上随机位置绘制一个点。
2. 计算阶乘
阶乘是一个数学概念,对于一个非负整数
n
,其阶乘
n!
是所有小于或等于
n
的正整数的乘积。我们可以使用
for
语句来计算阶乘。
int integer;
integer = 5;
int factorial;
factorial = 1;
for (int count = 1; count <= integer; count = count + 1)
{
factorial = factorial * count;
println(count + "! = " + factorial);
}
println("Answer: " + integer + "! is " + factorial);
这个程序的执行步骤如下:
1. 初始化变量
integer
为 5,表示要计算 5 的阶乘。
2. 初始化变量
factorial
为 1。
3. 使用
for
循环,从 1 到
integer
进行循环。
4. 在每次循环中,将
factorial
乘以当前的
count
值,并更新
factorial
的值。
5. 打印当前
count
的阶乘结果。
6. 循环结束后,打印最终的阶乘结果。
下面是不同
integer
值的运行结果:
|
integer
值 | 输出结果 |
| ---- | ---- |
| 5 | 1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
Answer: 5! is 120 |
| 6 | 1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
Answer: 6! is 720 |
| 1 | 1! = 1
Answer: 1! is 1 |
| 0 | Answer: 0! is 1 |
需要注意的是,当
integer
为 0 时,
for
循环的条件一开始就为假,循环体不会执行,但由于
factorial
初始化为 1,最终结果仍然正确。
另外,阶乘的值增长非常快,当
integer
超过 16 时,
int
类型可能会溢出。我们可以使用
long
类型来存储更大的阶乘值。
int integer;
integer = 5;
long factorial;
factorial = 1;
for (int count = 1; count <= integer; count = count + 1)
{
factorial = factorial * count;
println(count + "! = " + factorial);
}
println("Answer: " + integer + "! is " + factorial);
3. 嵌套
for
循环
嵌套
for
循环是指在一个
for
循环内部再嵌套一个
for
循环。下面通过几个例子来介绍嵌套
for
循环的应用。
3.1 教室座位示例
假设有一个教室,有 4 行,每行有 6 个座位。我们可以使用嵌套
for
循环来遍历所有座位。
for (int row = 1; row <= 5; row = row + 1)
{
println("Row: " + row);
for (int seat = 1; seat <= 6; seat = seat + 1)
{
print(" Seat " + seat);
}
println(" -- end of row");
}
这个程序的执行流程如下:
1. 外层
for
循环控制行数,从 1 到 5。
2. 在每次外层循环中,打印当前行号。
3. 内层
for
循环控制每行的座位号,从 1 到 6。
4. 在内层循环中,打印当前座位号。
5. 内层循环结束后,打印“ – end of row”表示该行结束。
运行结果如下:
Row: 1
Seat 1 Seat 2 Seat 3 Seat 4 Seat 5 Seat 6 -- end of row
Row: 2
Seat 1 Seat 2 Seat 3 Seat 4 Seat 5 Seat 6 -- end of row
Row: 3
Seat 1 Seat 2 Seat 3 Seat 4 Seat 5 Seat 6 -- end of row
Row: 4
Seat 1 Seat 2 Seat 3 Seat 4 Seat 5 Seat 6 -- end of row
Row: 5
Seat 1 Seat 2 Seat 3 Seat 4 Seat 5 Seat 6 -- end of row
3.2 像素操作示例
我们可以使用嵌套
for
循环来操作画布上的每个像素。
size(300, 200);
for (int row = 0; row < height; row = row + 1)
{
for (int column = 0; column < width; column = column + 1)
{
stroke(random(256), random(256), random(256));
point(column, row);
}
}
这个程序的执行步骤如下:
1. 设置画布大小为 300x200 像素。
2. 外层
for
循环控制行号,从 0 到画布高度。
3. 内层
for
循环控制列号,从 0 到画布宽度。
4. 在每次内层循环中,设置随机笔触颜色,并在当前像素位置绘制一个点。
我们还可以通过修改循环步长和绘制图形来实现不同的效果,例如绘制不同大小的随机颜色方块。
import static javax.swing.JOptionPane.*;
size(300, 200);
String input;
input = showInputDialog("Enter tile size:");
int tile;
tile = int(input);
for (int row = 0; row < height; row = row + tile)
{
for (int column = 0; column < width; column = column + tile)
{
noStroke();
fill(random(256), random(256), random(256));
rect(column, row, tile, tile);
}
}
这个程序的操作步骤如下:
1. 导入
javax.swing.JOptionPane
包。
2. 设置画布大小为 300x200 像素。
3. 提示用户输入方块大小。
4. 将用户输入的字符串转换为整数。
5. 使用嵌套
for
循环,外层循环控制行号,内层循环控制列号,循环步长为用户输入的方块大小。
6. 在每次内层循环中,关闭笔触,设置随机填充颜色,并绘制一个指定大小的方块。
4. 总结
通过以上示例,我们可以看到
for
语句在编程中的强大功能。它可以用于计数、重复执行一组操作、嵌套循环等。在使用
for
语句时,需要注意循环条件和循环变量的更新,以确保循环能够正确执行。同时,对于一些复杂的问题,嵌套
for
循环可以帮助我们更方便地处理。
下面是一个简单的
for
循环使用总结流程图:
graph TD;
A[开始] --> B[初始化循环变量];
B --> C{循环条件是否满足};
C -- 是 --> D[执行循环体];
D --> E[更新循环变量];
E --> C;
C -- 否 --> F[结束];
5. 练习
以下是一些使用
for
语句的练习,你可以尝试完成这些练习来巩固所学知识。
1. 编写
for
语句,在控制台输出:
1
2
3
4
5
6
代码示例:
for (int i = 1; i <= 6; i++) {
println(i);
}
-
编写
for语句,在控制台输出:
2
3
4
5
代码示例:
for (int i = 2; i <= 5; i++) {
println(i);
}
-
编写
for语句,在控制台输出:
2
4
6
8
10
12
代码示例:
for (int i = 2; i <= 12; i += 2) {
println(i);
}
-
编写
for语句,在控制台输出:
5
10
15
20
25
30
代码示例:
for (int i = 5; i <= 30; i += 5) {
println(i);
}
-
编写
for语句,在控制台输出 10 次“Processing”。
for (int i = 0; i < 10; i++) {
println("Processing");
}
-
编写
for语句,在控制台输出:
line: 1
line: 2
line: 3
line: 4
line: 5
line: 6
line: 7
line: 8
line: 9
代码示例:
for (int i = 1; i <= 9; i++) {
println("line: " + i);
}
-
编写
for语句,在控制台输出:
50
45
40
35
30
25
20
15
10
5
0
代码示例:
for (int i = 50; i >= 0; i -= 5) {
println(i);
}
-
编写
for语句,在控制台输出 1 到 6 的整数的平方:
1
4
9
16
25
36
代码示例:
for (int i = 1; i <= 6; i++) {
println(i * i);
}
-
编写
for语句,在控制台输出:
0
20
40
60
80
100
120
140
160
180
200
代码示例:
for (int i = 0; i <= 200; i += 20) {
println(i);
}
-
修改上一个程序,设置画布大小为 200x200 像素,并在
for语句中添加line()函数调用,在画布上绘制指定线段。
代码示例:
size(200, 200);
for (int i = 0; i <= 200; i += 20) {
line(0, i, width, i);
println(i);
}
11 - 15 题涉及到对
line()
函数的不同修改,你可以根据具体要求进行调整。
16. 编写
for
语句,在控制台输出:
30
60
90
120
150
180
代码示例:
for (int i = 30; i <= 180; i += 30) {
println(i);
}
-
修改上一个程序,设置画布大小为 200x200 像素,并在
for语句中添加ellipse()函数调用,在画布上绘制直径为 20 像素的圆。
代码示例:
size(200, 200);
for (int i = 30; i <= 180; i += 30) {
ellipse(i, height / 2, 20, 20);
println(i);
}
-
编写
for语句,在控制台输出:
150
125
100
75
50
代码示例:
for (int i = 150; i >= 50; i -= 25) {
println(i);
}
-
修改上一个程序,设置画布大小为 200x200 像素,并在
for语句中添加rect()函数调用,在画布上绘制正方形。
代码示例:
size(200, 200);
for (int i = 150; i >= 50; i -= 25) {
rect(i, height / 2 - 25 / 2, 25, 25);
println(i);
}
-
编写程序,设置画布大小为 200x200 像素,使用
for语句在画布上随机位置绘制 5 个直径为 20 像素的圆。
代码示例:
size(200, 200);
for (int i = 0; i < 5; i++) {
ellipse(random(width), random(height), 20, 20);
}
-
修改上一个程序,在
for语句中插入fill()函数调用,使每个圆具有随机填充颜色。
代码示例:
size(200, 200);
for (int i = 0; i < 5; i++) {
fill(random(256), random(256), random(256));
ellipse(random(width), random(height), 20, 20);
}
-
修改上一个程序,使
for语句绘制 100 个圆。
代码示例:
size(200, 200);
for (int i = 0; i < 100; i++) {
fill(random(256), random(256), random(256));
ellipse(random(width), random(height), 20, 20);
}
-
编写程序,使用
for循环计算所有正整数到某个数的和。
代码示例:
int number = 5;
int sum = 0;
for (int i = 1; i <= number; i++) {
println(i);
sum += i;
}
println("Total: " + sum);
-
修改上一个程序,让用户输入该数字。
代码示例:
import static javax.swing.JOptionPane.*;
String input = showInputDialog("Enter a number:");
int number = int(input);
int sum = 0;
for (int i = 1; i <= number; i++) {
println(i);
sum += i;
}
println("Total: " + sum);
println("Gauss: " + number * (number + 1) / 2);
通过完成这些练习,你可以更好地掌握
for
语句的使用,提高编程能力。
5. 练习(续)
23. 计算正整数和
编写程序,使用
for
循环计算所有正整数到某个数的和。
int number = 5;
int sum = 0;
for (int i = 1; i <= number; i++) {
println(i);
sum += i;
}
println("Total: " + sum);
操作步骤如下:
1. 定义变量
number
并赋值为 5,表示要计算到 5 的正整数和。
2. 定义变量
sum
并初始化为 0,用于存储累加的和。
3. 使用
for
循环,从 1 到
number
进行循环。
4. 在每次循环中,打印当前的正整数
i
,并将其累加到
sum
中。
5. 循环结束后,打印累加的总和。
24. 用户输入计算正整数和
修改上一个程序,让用户输入该数字。
import static javax.swing.JOptionPane.*;
String input = showInputDialog("Enter a number:");
int number = int(input);
int sum = 0;
for (int i = 1; i <= number; i++) {
println(i);
sum += i;
}
println("Total: " + sum);
println("Gauss: " + number * (number + 1) / 2);
操作步骤如下:
1. 导入
javax.swing.JOptionPane
包,用于弹出输入对话框。
2. 使用
showInputDialog
函数弹出对话框,提示用户输入一个数字,并将用户输入的内容存储在
input
变量中。
3. 将
input
转换为整数类型,存储在
number
变量中。
4. 定义变量
sum
并初始化为 0,用于存储累加的和。
5. 使用
for
循环,从 1 到
number
进行循环。
6. 在每次循环中,打印当前的正整数
i
,并将其累加到
sum
中。
7. 循环结束后,打印累加的总和。
8. 使用高斯公式
number * (number + 1) / 2
计算理论上的总和并打印,用于验证结果。
6. 总结与回顾
6.1
for
语句的核心要点
-
计数功能
:
for循环可以方便地对数字序列进行计数,通过设置合适的初始值、循环条件和步长,能够精确控制计数范围。例如在计算阶乘和输出数字序列的练习中,都充分体现了这一点。 - 重复操作 :可以将一组操作重复执行指定的次数,提高代码的复用性。如绘制星星、绘制图形等示例,通过循环不断执行绘制操作。
-
嵌套循环
:嵌套
for循环可以处理更复杂的任务,如遍历教室座位和操作画布像素。外层循环控制大的范围,内层循环在每个外层循环的迭代中进行更细致的操作。
6.2 注意事项
-
循环条件
:要确保循环条件的正确性,避免出现无限循环或循环次数不足的情况。例如在计算阶乘时,循环条件
count <= integer保证了循环能够正确计算到指定数字的阶乘。 -
数据类型
:对于可能产生较大结果的计算,如阶乘,要注意数据类型的选择,避免数据溢出。可以使用
long类型替代int类型来存储更大的数值。
7. 拓展思考
7.1 优化代码
在实际编程中,可以对代码进行优化,提高代码的性能和可读性。例如,在计算正整数和的程序中,可以使用更简洁的方式,或者添加错误处理机制,防止用户输入非法数据。
7.2 应用场景
for
循环在很多领域都有广泛的应用,如游戏开发中物体的移动和动画效果、数据处理中对数组元素的遍历和计算等。可以根据不同的需求,灵活运用
for
循环来解决实际问题。
8. 练习总结表格
| 练习编号 | 题目描述 | 代码示例 |
|---|---|---|
| 1 | 在控制台输出 1 - 6 |
for (int i = 1; i <= 6; i++) { println(i); }
|
| 2 | 在控制台输出 2 - 5 |
for (int i = 2; i <= 5; i++) { println(i); }
|
| 3 | 在控制台输出 2, 4, 6, 8, 10, 12 |
for (int i = 2; i <= 12; i += 2) { println(i); }
|
| 4 | 在控制台输出 5, 10, 15, 20, 25, 30 |
for (int i = 5; i <= 30; i += 5) { println(i); }
|
| 5 | 在控制台输出 10 次“Processing” |
for (int i = 0; i < 10; i++) { println("Processing"); }
|
| 6 | 在控制台输出 line: 1 - line: 9 |
for (int i = 1; i <= 9; i++) { println("line: " + i); }
|
| 7 | 在控制台输出 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0 |
for (int i = 50; i >= 0; i -= 5) { println(i); }
|
| 8 | 在控制台输出 1 - 6 的整数平方 |
for (int i = 1; i <= 6; i++) { println(i * i); }
|
| 9 | 在控制台输出 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200 |
for (int i = 0; i <= 200; i += 20) { println(i); }
|
| 10 | 设置画布 200x200 像素,绘制指定线段 |
size(200, 200); for (int i = 0; i <= 200; i += 20) { line(0, i, width, i); println(i); }
|
| 16 | 在控制台输出 30, 60, 90, 120, 150, 180 |
for (int i = 30; i <= 180; i += 30) { println(i); }
|
| 17 | 设置画布 200x200 像素,绘制直径 20 像素的圆 |
size(200, 200); for (int i = 30; i <= 180; i += 30) { ellipse(i, height / 2, 20, 20); println(i); }
|
| 18 | 在控制台输出 150, 125, 100, 75, 50 |
for (int i = 150; i >= 50; i -= 25) { println(i); }
|
| 19 | 设置画布 200x200 像素,绘制正方形 |
size(200, 200); for (int i = 150; i >= 50; i -= 25) { rect(i, height / 2 - 25 / 2, 25, 25); println(i); }
|
| 20 | 设置画布 200x200 像素,随机绘制 5 个直径 20 像素的圆 |
size(200, 200); for (int i = 0; i < 5; i++) { ellipse(random(width), random(height), 20, 20); }
|
| 21 | 为上一个程序的圆添加随机填充颜色 |
size(200, 200); for (int i = 0; i < 5; i++) { fill(random(256), random(256), random(256)); ellipse(random(width), random(height), 20, 20); }
|
| 22 | 绘制 100 个带随机颜色的圆 |
size(200, 200); for (int i = 0; i < 100; i++) { fill(random(256), random(256), random(256)); ellipse(random(width), random(height), 20, 20); }
|
| 23 | 计算正整数到某个数的和 |
int number = 5; int sum = 0; for (int i = 1; i <= number; i++) { println(i); sum += i; } println("Total: " + sum);
|
| 24 | 用户输入数字计算正整数和 |
import static javax.swing.JOptionPane.*; String input = showInputDialog("Enter a number:"); int number = int(input); int sum = 0; for (int i = 1; i <= number; i++) { println(i); sum += i; } println("Total: " + sum); println("Gauss: " + number * (number + 1) / 2);
|
9. 流程图回顾
graph TD;
A[开始] --> B[初始化循环变量];
B --> C{循环条件是否满足};
C -- 是 --> D[执行循环体];
D --> E[更新循环变量];
E --> C;
C -- 否 --> F[结束];
这个流程图清晰地展示了
for
循环的执行过程,从初始化循环变量开始,判断循环条件,满足条件则执行循环体并更新循环变量,直到循环条件不满足为止。通过对这个流程的理解,可以更好地编写和调试
for
循环代码。
通过学习和练习
for
循环,你已经掌握了一种强大的编程工具。在今后的编程实践中,要不断运用和拓展这些知识,提高自己的编程水平。
超级会员免费看
1899

被折叠的 条评论
为什么被折叠?



