车载测试CAPL编程:循环结构(1):while循环
目录
while循环
语法结构
- 关键字
while+ 小括号()中的条件表达式 + 花括号{}中的循环主体while (条件表达式) { // 循环主体语句(0到多条) }
执行流程
- 判断条件:先判断小括号内的条件表达式是否成立(非0为成立,0为不成立)。
- 执行主体:若条件成立,执行花括号内的循环主体;执行完毕后,返回步骤1再次判断条件。
- 退出循环:若条件不成立,直接退出循环,执行后续语句。
- 注意:若首次判断条件不成立,循环主体一次都不执行。
条件表达式特点
- 可以是关系/逻辑表达式(如
i <= 3、a > 5 && b < 10),也可以是变量或字面量(如a、10,非0即成立)。- 示例:
while(a)中,若a=10(非0)则条件成立;若a=0则不成立。
- 示例:
避免死循环
- 循环主体中需包含修改条件表达式的语句(如变量自增
i++),否则可能导致条件始终成立,形成死循环。
示例:输出1-3
int i = 1;
while(i <= 3) {
write("i的值为%d", i); // 输出i的值
i++; // 修改条件变量,避免死循环
}
write("程序结束");
- 执行结果:输出
i的值为1、i的值为2、i的值为3,然后输出程序结束。 - 条件判断次数:4次(i=1、2、3时成立,i=4时不成立)。
do-while循环
语法结构
- 关键字
do+ 花括号{}中的循环主体 +while(条件表达式);(注意末尾分号)do { // 循环主体语句 } while (条件表达式);
执行流程
- 执行主体:先执行一次循环主体。
- 判断条件:执行完毕后,判断条件表达式是否成立。
- 循环或退出:若条件成立,返回步骤1再次执行主体;否则退出循环。
- 核心区别:与
while循环相比,do-while至少执行一次循环主体。
- 核心区别:与
示例:输出0-4
int j = 0;
do {
write("j的值为%d", j); // 输出j的值
j++; // 修改条件变量
} while(j < 5);
write("程序结束");
- 执行结果:输出
j的值为0、j的值为1、j的值为2、j的值为3、j的值为4,然后输出程序结束。
while与do-while对比
- 初始条件不成立时:
while循环:主体一次不执行。do-while循环:主体执行一次后退出。- 示例:若
i=100,while(i <= 3)不执行主体;do-while(j < 5)中j=100时,先输出j的值为100,再退出。
循环控制关键字:break与continue
break:强制退出循环
- 作用:在循环主体中遇到
break时,立即终止整个循环,跳出循环结构,执行后续语句。 - 示例:打印1-10,遇7中断
int i = 0; while(i < 10) { i++; if(i == 7) { break; // 遇7时强制退出循环 } write("i的值为%d", i); } write("程序结束");- 执行结果:输出
1、2、3、4、5、6,然后输出程序结束(跳过7-10)。
- 执行结果:输出
continue:跳过当前循环剩余部分
- 作用:在循环主体中遇到
continue时,跳过当前循环中continue后的语句,直接进入下一次条件判断。 - 示例:打印1-10,跳过7
int i = 0; while(i < 10) { i++; if(i == 7) { continue; // 遇7时跳过后续输出 } write("i的值为%d", i); } write("程序结束");- 执行结果:输出
1、2、3、4、5、6、8、9、10,跳过7。
- 执行结果:输出
综合示例
示例1:计算1-100的连续自然数之和
int i = 1;
int sum = 0;
while(i <= 100) {
sum += i; // 累加i到sum
i++;
}
write("1-100的和为%d", sum); // 结果:5050
示例2:计算1-100的连续偶数之和
int i = 2; // 从偶数2开始
int sum = 0;
while(i <= 100) {
sum += i;
i += 2; // 每次递增2(保证i为偶数)
}
write("1-100的偶数和为%d", sum); // 结果:2550
示例3:判断一个数是否为素数(质数)
- 素数定义:只能被1和自身整除的大于1的整数。
- 思路:穷举2到n-1之间的数,若存在能整除n的数,则n不是素数;否则是素数。
int n = 13; // 待判断的数
int i = 2;
int isPrime = 1; // 标记是否为素数,1-是,0-否
while(i < n) {
if(n % i == 0) { // 若n能被i整除
write("%d不是素数,能被%d整除", n, i);
isPrime = 0;
break; // 找到除数,无需继续判断
}
i++;
}
if(isPrime && i == n) { // 循环正常结束(i增长到n),且未找到除数
write("%d是素数", n);
}
- 执行结果:n=13时输出
13是素数;n=121时输出121不是素数,能被11整除。
AI 总结
本文主要讲解了CAPL编程中的两种循环结构(while 和 do-while)及循环控制关键字(break、continue)。while 循环先判断条件后执行主体,可能一次不执行;do-while 先执行主体后判断条件,至少执行一次。break 用于强制退出循环,continue 用于跳过当前循环剩余部分。通过示例演示了循环在数值累加、素数判断等场景的应用,强调了避免死循环的关键是修改条件变量。这些内容是CAPL自动化测试中实现重复逻辑的基础。
2853

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



