Skip to content

MATLAB - Break 语句

MATLAB - 循环控制语句:break 和 continue

Section titled “MATLAB - 循环控制语句:break 和 continue”

在 MATLAB 中,循环控制语句改变 for 或 while 循环的标准执行流程。两个主要的控制语句是 break 和 continue。了解如何以及何时使用它们对于编写高效且可读的代码至关重要。

break 语句完全终止它所在的最内层 for 或 while 循环的执行。循环中 break 语句之后的任何语句都不会被执行。控制流会立即传递到该循环之后的语句。

+-----------------+
| Loop Entry |
+-------+---------+
|
+-------v---------+
| Condition Check |
+-------+---------+
| (True)
+-------v---------+
| Loop Body Stmts |
+-------+---------+
|
+-------v---------+
| if (break_cond) | --(True)--> To statement after loop
+-------+---------+
| (False)
+-------v---------+
| Remainder of |
| Loop Body |
+-------+---------+
|
+---------------------> Back to Condition Check

示例:查找超出阈值的第一个值

Section titled “示例:查找超出阈值的第一个值”

假设您正在监视一个数据流,并且需要在某个值超过 15 时立即停止。带有 break 语句的 while 循环非常适合此场景。

创建一个脚本文件并输入以下现代、注释良好的代码:

% 演示 'break' 语句的现代 MATLAB 脚本
a = 10; % 初始化起始值
% 当 'a' 小于 20 时循环
while a < 20
fprintf('Current value of a: %d\n', a);
% 检查退出条件
if a > 15
disp('Threshold exceeded. Terminating loop with break.');
break; % 立即退出循环
end
a = a + 1; % 递增 a
end
disp('Execution continues after the loop.');
fprintf('Final value of a is: %d\n', a);

运行该文件时,它将显示以下结果:

Current value of a: 10
Current value of a: 11
Current value of a: 12
Current value of a: 13
Current value of a: 14
Current value of a: 15
Current value of a: 16
Threshold exceeded. Terminating loop with break.
Execution continues after the loop.
Final value of a is: 16

与 break 相反,continue 语句跳过循环的当前迭代,并将控制权传递给下一次迭代。循环体中 continue 语句之后的任何语句都只在该次迭代中被跳过。

让我们使用 for 循环遍历一个数字向量,但只处理奇数,使用 continue 跳过偶数。

% 演示 'continue' 语句的现代 MATLAB 脚本
data = [1, 4, 7, 8, 9, 10, 13];
fprintf('Processing odd numbers in the data vector...\n');
for k = 1:length(data)
currentValue = data(k);
% 检查数字是否为偶数。mod() 函数返回余数。
if mod(currentValue, 2) == 0
fprintf('...Skipping even number: %d\n', currentValue);
continue; % 跳过当前迭代的其余部分,开始下一次迭代
end
% 这部分只对奇数执行
fprintf('Processing odd number: %d\n', currentValue);
end
disp('Loop finished.');

输出清楚地显示了偶数被跳过:

Processing odd numbers in the data vector...
Processing odd number: 1
...Skipping even number: 4
Processing odd number: 7
...Skipping even number: 8
Processing odd number: 9
...Skipping even number: 10
Processing odd number: 13
Loop finished.
  • 清晰性至关重要:break 和 continue 有时会使代码难以理解。如果您的循环逻辑因多个 break 或 continue 语句而变得非常复杂,请考虑将代码重构为函数。函数中的 return 语句通常是比 break 更清晰的替代方案。
  • 嵌套循环:请记住,break 和 continue 仅影响它们所在最内层的循环。它们不会退出嵌套循环。
  • break 与 continue 的区别:最常见的错误是混淆两者。记住:break = 完全退出循环。continue = 跳过当前迭代。