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

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

  • if条件语句
    • if一般格式
    • if与else格式
  • switch语句
  • while循环语句
    • while循环的一般形式为:
    • do-while循环
  • for循环语句
  • break语句
  • return语句

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语句起作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WordPress插件】Media folder汉化版-媒体文件夹-v5.1.2

WP媒体文件夹(WP Media folder)是一个真正的节省图片加载时间的插件&#xff0c;你可以管理文件和图片&#xff0c;从本地WordPress媒体管理器。该插件还包括一个增强版的WordPress图库管理器&#xff0c;主题 NextGEN图库导入器。 【WordPress插件】Media folder汉化版-媒…

Jetson-AGX-Xavier gstreamer UDP推拉流

Jetson-AGX-Xavier gstreamer UDP推拉流 安装nvidia-jetpack 使用硬件编解码 sudo apt-get install nvidia-jetpackgstreamer UDP 推流 gst-launch-1.0 v4l2src device"/dev/video4" ! video/x-raw, format(string)UYVY, width(int)1920, height(int)1080 ! nvvid…

C++的STL简介

0.STL简介 C的STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的一部分&#xff0c;它提供了一套通用的类和函数模板&#xff0c;用于处理数据结构和算法。STL的主要组件包括&#xff1a; 容器分配器算法迭代器适配器仿函数 容器 容…

数据库系统概论:事务与并发一致性问题

随着网络应用的普及&#xff0c;数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面&#xff0c;旨在提高系统的吞吐量和响应时间&#xff0c;以满足多用户同时访问数据库的需求。然而&#xff0c;这…

JAVA IO中的缓冲流,PrintStream类和PrintWriter以及System.in获取用户输入流详解

1.缓冲流 在java中&#xff0c;缓x冲流&#xff08;Buffered Streams&#xff09;是非常有用的&#xff0c;它们属于处理流的一种&#xff0c;用于提高原始数据流&#xff08;如文件流&#xff0c;网络流&#xff09;的读取和写入效率。 Java 的缓冲流是对字节流和字符流的一种…

白骑士的PyCharm教学基础篇 1.1 PyCharm简介

系列目录 上一篇&#xff1a;无内容 什么是PyCharm&#xff1f; PyCharm 是由 JetBrains 开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为 Python 编程语言设计。它提供了强大的代码编辑、调试、测试和部署功能&#xff0c;使得 Python 开发更加高效和便…

Linux NFS服务搭建及使用

一、NFS 服务器介绍 nfs &#xff08; Network File System &#xff09;即网络文件系统&#xff0c;其基于 UDP/IP使用 nfs 能够在不同计算机之间通过网络进行文件共享&#xff0c;能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 二、NFS 服务器的特点 …

阿里云服务器 篇四:404页面模板

文章目录 系列文章tsParticles 404 Templates安装方法效果展示更多系列文章 阿里云服务器 篇一:申请和初始化 阿里云服务器 篇二:搭建静态网站 阿里云服务器 篇三:提交搜索引擎收录 阿里云服务器 篇四:404页面模板 tsParticles 404 Templates 官网:https://github.com/…

Websocket自动消息回复服务端工具

点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发…

【源码阅读】osproxy对象存储分布式代理(2)--初始化底层服务和日志器

文章目录 初始化底层服务函数返回类型APPRedis newLangGoConfig()函数initLangGoConfig()函数 初始化日志器 上一章【源码阅读】osproxy对象存储分布式代理&#xff08;1&#xff09;下一章 这部分涉及了对于底层服务的初始化和日志器的初始化两部分 // 初始化底层服务&#x…

d3d12.dll 文件缺失如何解决?五种修复丢失问题的方法

d3d12.dll 文件缺失如何解决&#xff1f;它为什么会不见呢&#xff1f;今天&#xff0c;我们将探讨 d3d12.dll 文件的重要性、原因以及丢失时的解决策略。本文将全面介绍 d3d12.dll 文件&#xff0c;并提供五种修复丢失问题的方法。 d3d12.dll文件是什么的详细介绍 d3d12.dll …

6 回归集成:xgb、lgb、cat

这个代码是从kaggle上拷贝过来的&#xff1a; 如何使用三个树模型模块化训练&#xff1b;文本特征如何做&#xff0c;如何挖掘&#xff1b;时间特征的处理&#xff1b;模型权重集成&#xff1b; import pandas as pd import math import numpy as np import joblib import…

【JS逆向课件:第八课:异常处理】

异常处理 首先我们要理解什么叫做**"异常”**&#xff1f; 在程序运行过程中&#xff0c;总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的&#xff1a; 比如语法错误、调用错误&#xff0c;甚至逻辑错误。 还有一些错误&#xff0c;则是不可预料的错误…

vst 算法R语言手工实现 | Seurat4 筛选高变基因的算法

1. vst算法描述 &#xff08;1&#xff09;为什么需要矫正 image source: https://ouyanglab.com/singlecell/basic.html In this panel, we observe that there is a very strong positive relationship between a gene’s average expression and its observed variance. I…

OpenAI 推出 GPT-4o mini,一种更小、更便宜的人工智能模型

OpenAI 最近推出了新型人工智能模型 GPT-4o mini&#xff0c;以其较小体积和低成本受到关注。这款模型在文本和视觉推理任务上性能优越&#xff0c;且比现有小型模型更快、更经济。GPT-4o mini 已向开发者和消费者发布&#xff0c;企业用户将在下周获得访问权限。 喜好儿网 在…

ubuntu22.04下YOLOv5 TensorRT模型部署

目录 Ubuntu22.04环境配置 1.1 安装工具链和opencv 1.2 安装Nvidia相关库 1.2.1 安装Nvidia显卡驱动 1.2.2 安装 cuda11.7 安装cuDNN 下载下载 tensorrt 下载仓库TensorRT-Alpha并设置 从yolov5源码中导出onnx文件 ​编辑 利用tensorrt编译onnx模型 编译执行yolov5-t…

spring 中的字节码文件访问 -- classreading 包

位于 spring-core 模块下的 org.springframework.core.type.classreading 包提供了读取类中元数据的功能。其实就是在不加载类的情况下&#xff0c;获取 class 文件中定义的类的相关信息&#xff1a;类名、接口、注解、方法及其注解、字段及其注解等。方便 spring 进行类型或指…

牛客0718B——Arraylist 和LinkedList static修饰变量和方法

目录 Q1:currentTimeMillis是什么&#xff1f; Q2:比较Arraylist 和LinkedList的查找时间 3、相关对比Vector和Arraylist 底层扩容的原理: Q4:static修饰静态代码块 修改1&#xff1a; 修改2&#xff1a; 修改3&#xff1a; 修改1&#xff1a; 修改2&#xff1a; Q5…

入坑树莓派(2)——树莓派4B与手机蓝牙通信

入坑树莓派(2)——树莓派4B与手机蓝牙通信 1、引言 在入坑树莓派(1)中已经搞掂了可视化问题。现在继续开展下一步,尝试与手机通信,一开始是想弄wifi连接的,但发现基于wifi的APP比较难弄,为了降低开发的难度,又因为树莓派板子自带蓝牙模块,所以直接选用蓝牙连接手机…

LabVIEW多串口通信

随着现代工业控制对数据采集和处理效率的要求不断提升&#xff0c;传统的单串口通信已无法满足多通道数据传输与大规模数据存取的需求。开发一种基于LabVIEW的多串口通信及数据存储系统&#xff0c;以提升数据处理速度和存储效率&#xff0c;保障生产线的稳定运行显得尤为重要。…