While loop

From LabVIEW Wiki
Jump to: navigation, search
Object information
Owning palette(s) Structures palette
Type Structure
Requires Basic Development Environment
Icon Functions Palette - Programming - Structures - While Loop.png
Components of a While Loop

A While Loop is a primitive structure that repeats the code within its subdiagram until a Boolean condition is met. The code within its subdiagram is executed at least once. It runs endlessly if the condition is not met.

Usage

Boolean condition

Conditional terminal right-click menu

A Boolean value must be connected to the conditional terminal Conditional Terminal of the loop. The condition can be changed at the conditional terminal, via the right-click menu options "Stop if True" and "Continue if True", or by clicking on the terminal.

Icon Condition Description
Stop if True Stop if True (default) Stops if the Boolean condition is True
Continue if True Continue if True Stops if the Boolean condition is False

A loop that never meets its condition is called an infinite loop.

Infinite loop

An infinite loop is a loop where the stop condition is never met. The simplest form of infinite loop is achieved by wiring a False constant to the conditional terminal.

While Loop - Infinite Loop.png


A common reason for infinite loops: Wiring Boolean values from outside the loop

Infinite loops will never stop and can cause a program to be unresponsive to user input. Most cases of infinite loops are not intentional and the result of bugs. A typical mistake is wiring a Boolean value from outside the loop to the conditional terminal. Since input tunnels are evaluated before the first iteration, the Boolean value always stays the same. This causes the While Loop to execute its subdiagram exactly once if the Boolean value is True and endlessly if the Boolean value is False.

Execution speed

While Loops execute as fast as possible and therefore can be a cause for high CPU load. For this reason While Loops should be throttled by using the Wait (ms) function with a delay time that is appropriate for the task.

While Loop - Limit Execution Speed.png

The delay can be set to 0 ms, which makes the loop execute as fast as possible without clogging the CPU.

Note that limiting the execution speed does not guarantee that the loop is executed at exact intervals. The loop can still execute slower if the code takes longer to execute, or the operating system pauses execution. Use Timed Loops for time-critical tasks.

Nomenclature controversy

Strictly speaking the While Loop is a Do While Loop, because the stop condition is checked at the end of a loop, which requires the subdiagram to execute at least once. A "real" While Loop, however, would first check the stop condition and execute the subdiagram only if the condition is not met. This can be confusing to programmers that are familiar with other programming languages and that are new to LabVIEW.

Best practice

  • Use For Loops if the number of iterations is predictable or can be calculated.
  • Use Wait (ms) to limit the execution speed of a While Loop.

Tips and tricks

  • Wire an error cluster to the conditional terminal to terminate the loop on an error.

History

Version Change(s)
LabVIEW 2018 More info to come.

See also

External Links