For循环
- 更新时间2023-02-17
- 阅读时长5分钟
For循环
执行子程序框图n次。
循环计数接线端提供当前的循环计数,取值范围为0至n-1。
输入/输出
循环计数
当前循环次数。第一个迭代的循环计数始终从零开始。
如需保存大于2,147,483,647的循环次数,可使用表示更大范围整数的移位寄存器。

循环总数
For循环内部代码执行的次数。如将0或负数连接至总数接线端,循环不执行。
该接线端也返回循环次数。

隧道
数据进出结构通过的点。
隧道也可具有以下类型的功能︰
保持终值—通过循环边框传递数据。
自动索引值—
对于单个循环计数,如隧道为输入,则处理数组中的单个元素;如隧道为输出,则添加累加数组的一段数据。右键单击隧道,选择,启用隧道的自动索引。
连接值—按顺序添加输入数组的全部元素,组成与输入数组维度相同的输出数组。隧道连接数组的方式与创建数组节点相同。 选中隧道并单击项选项卡上的条件复选框,可配置用于任意隧道类型的条件输出。如用于隧道的条件输入为TRUE,该循环写入相应的值进隧道。如用于隧道的条件输入为FALSE,该循环不写入相应的值进隧道。

移位寄存器
一对接线端,将值从循环的一次循环计数传递到下一次计数。第一次初始循环计数之后,左侧移位寄存器返回从右侧移位寄存器接收的前一次计数的值。
关于将上一次循环计数的数据传递至当前循环计数的详细信息,见获取上一次循环计数的数据。

创建移位寄存器
在循环中添加一对移位寄存器,可将当前迭代中的数据传递到下一次迭代。
Examples
下图显示了隧道和移位寄存器在零循环计数后的输出值。

| 输出 | 前面板显示控件 | 说明 |
|---|---|---|
| A |
![]() |
如For循环循环计数零次,For循环的输出隧道传递该隧道数据类型的默认值。 |
| B |
![]() |
任意输出移位寄存器传输连线值至左侧移位寄存器的输入。 |
| C |
![]() |
如输入的移位寄存器永不包含值,输出的移位寄存器将传递该移位寄存器数据类型的默认值。 |
- 简单For循环
- 循环隧道模式
Programming Patterns
- 按照设定的次数重复执行代码
- 为数组中每个元素重复操作
控制循环定时
关于控制循环执行速度的详细信息,见循环定时。
获取上一次循环计数的数据
关于将上一次循环计数的数据传递至当前循环计数的详细信息,见获取上一次循环计数的数据。
零计数循环后,隧道和移位寄存器的行为
如直接连线数据至循环计数为零的For循环,所有连线至输出隧道的输出接线端显示该数据类型的默认值。全部连线至输出移位寄存器的输出接线端显示连线至输入移位寄存器的数据。如输入的移位寄存器不包含值,输出移位寄存器将显示该移位寄存器数据类型的默认值。详细信息见范例章节。
带自动索引输入隧道的For循环的循环计数行为
通过自动索引启用时不连线值至总数接线端,循环自动为数组中的每个元素执行一次循环计数。
启用自动索引时,连线值至总数接线端将导致For循环使用下列两者的最小值来判定循环总数值:总数接线端和输入数组大小。例如,进入循环的自动索引数组包含10个元素,总数接线端的连线值为15,则循环执行10次。
使用多个自动索引输入隧道,For循环可同时处理多个数组元素。此时,循环使用最小数组大小判定循环总数的值。例如,两个自动索引数组进入循环,数组分别包含10个和20个元素,这时该循环仍将只执行10次,循环将处理第一个数组的所有元素,仅处理第二个数组中的前10个元素。
用于数组的For循环的自动索引行为
设置隧道为自动索引值时,循环对数组的索引作用表现为,一维数组进入循环时,隧道提取其中的标量值;二维数组进入循环时,隧道提取其中的一维数组。输出隧道的情况正好相反。标量元素在输出隧道上按顺序累积形成一维数组,一维数组累积形成二维数组,依此类推。
对于二维数组,索引发生在行边界,而非列边界。


