自学内容网 自学内容网

CAPL语言设计(3)——流程控制

if条件语句

CAPL中的if语句有以下两种形式

if一般格式

if (表达式)语句;

例如:

if (count < 50) count++;

if与else格式

if (表达式)语句1;else语句2;

例如:

if (x < y)  min = x;  else  min = y;

switch语句

在编写程序时,经常会碰到按不同情况分转的多路问题,这时可用嵌套if-else语句来实现,但if-else-if语句使用不方便,而且容易出错。对于这种情况,switch语句成了最便捷的方式。

switch语句格式为:

switch (表达式)
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;case 常量表达式n:语句n;
default:语句n+1;
}

执行switch语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。例如:

switch (component) {
case (1):
getValue (comp_1, value); break;
case (2):
getValue (comp_2, value); break;
default:
write ("error: wrong parameter (%d)", component; stop());
break;
}

while循环语句

CAPL中while循环提供了以下两种格式供用户使用。

while循环的一般形式为:

while (表达式)语句;

while循环表示当条件为真时,便执行语句,知道条件为假才结束循环,并继续执行循环程序外的后续语句。例如:

while (pos < msg.DLC) {
sum_even += msg.byte (pos++);
sum_odd += msg.byte (pos++);
}

do-while循环

do
循环体语句;
while (表达式);

do-while循环与while循环的区别在于:它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。当有许多语句参加循环时,要用 {} 将这些语句括起来。例如:

do{
sum = sum += array[i];
}while (i < 100 && sum <= 1000);

for循环语句

for循环语句使用最为灵活,不仅可以用于循环次数确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它可以完全取代while语句,它的一般形式为:

for (<初始化>; <条件表达式>; <增量>)语句;

参数说明:

  • 初始化:总是一个赋值语句,它用来给循环控制变量赋初值;
  • 条件表达式:是一个关系表达式,他决定什么时候退出循环;
  • 增量:定义循环控制变量,每循环一次后按什么方式变化。

这三个部分之间用 ; 分开,例如:

for (i = 0; i < 100; i ++) sum += array[i];

上述例子中先给 i 赋初值0,判断 i 是否小于100,若是则执行语句,然后值增加1再重新判断,直到条件为假,即 i 大于等于100时,结束循环。

这里我们需要注意以下几点:

  • for循环中语句可以为语句体,但要用 {} 将参加循环的语句括起来;
  • for循环中的“初始化”、“条件表达式”和“增量”都是选择项,即可以省略,但 ; 不能省略。
    – 省略了初始化,表示不对循环控制变量赋初值;
    – 省略了条件表达式,表示不做其他处理时便成为死循环;
    – 省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。

break语句

break语句通常用在循环语句和switch语句中使用。当break用于开关语句switch中的时候,可使程序跳出switch而执行switch以后的语句,如果没有break语句,则将成为一个死循环而无法退出。

当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句连在一起,即满足条件时便跳出循环。

for (i = 0; i < 100; i ++) {
if (array[i] == 0) continue;
array [i] = 1/array[i];
}
…
all_valid = 1;
len = elCount (is_valid);
for (i = 0; i < len; i ++) {
if (isvalid[i] == 0){
all_valid = 0;
break;
}
}

这里需要强调的是,在多层循环中,一个break语句只向外跳一层。另外,goto语句在CAPL中不被支持,我们需要特别注意。

return语句

CAPL函数的返回值是由函数体中的return语句实现返回的。
return语句的一般格式为:

return 表达式;

return语句一般放在函数体的最后,用于结束函数的执行,返回调用函数。若它带有表达式(该表达式可以用一对小括号括起来),系统会将它转换为在函数头中定义的类型,因而要求表达式的类型与定义中的函数值类型一致。若一个不带表达式的return语句放在函数的最后,则可以省略。

double sqr (double x){
return (x * x);
}

一个函数中可以有多个return语句,但实际运行时只能有一个return语句起作用。


原文地址:https://blog.csdn.net/weixin_43360025/article/details/140561940

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!