While loop: Difference between revisions
m Logmanoriginal moved page While Loop to Functions Palette/Programming/Structures/While Loop: This page explains an element from the Functions Palette |
m Logmanoriginal moved page While Loop structure to While loop: Only the first word in a title should start with a capital letter |
||
| (8 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
== | {{TOCright}} | ||
{{LabVIEW Palette Object Information|palette=Functions Palette/Programming/Structures{{!}}Structures palette|type=structure|icon=Functions Palette - Programming - Structures - While Loop.png}} | |||
[[File:While Loop - Components.png|thumb|Components of a While Loop]] | |||
A '''While Loop''' is a primitive [[Functions Palette/Programming/Structures|structure]] that repeats the code within its [[Subdiagram|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 === | |||
[[File:While Loop - Conditional Terminal - Right Click Menu.png|thumb|Conditional terminal right-click menu]] | |||
A Boolean value must be connected to the conditional terminal [[File:Conditional Terminal - Stop if True.png|frameless|border|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. | |||
{| class="wikitable" | |||
! Icon | |||
! Condition | |||
! Description | |||
|- | |||
| [[File:Conditional Terminal - Stop if True.png|frameless|border|Stop if True]] | |||
| Stop if True (default) | |||
| Stops if the Boolean condition is [[File:BooleanTrue2010.png|frameless|border|True]] | |||
|- | |||
| [[File:Conditional Terminal - Continue if True.png|frameless|border|Continue if True]] | |||
| Continue if True | |||
| Stops if the Boolean condition is [[File:BooleanFalse2010.png|frameless|border|False]] | |||
|} | |||
A loop that never meets its condition is called an [[#Infinite loop|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 [[File:BooleanFalse2010.png|frameless|border|False]] constant to the conditional terminal. | |||
[[File:While Loop - Infinite Loop.png|frameless|border]] | |||
[[Category: | [[File:While Loop - Infinite Loop - Beginner Mistake 1.png|thumb|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 [[File:BooleanTrue2010.png|frameless|border|True]] and endlessly if the Boolean value is [[File:BooleanFalse2010.png|frameless|border|False]]. | |||
=== Execution speed === | |||
While Loops execute as fast as possible and therefore can be a cause for high [[Wikipedia:CPU|CPU]] load. For this reason While Loops should be throttled by using the [[Functions Palette/Programming/Timing/Wait (ms)|Wait (ms)]] function with a delay time that is appropriate for the task. | |||
[[File:While Loop - Limit Execution Speed.png|frameless|border]] | |||
The delay can be set to <tt>0 ms</tt>, 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 [[Wikipedia:Operating system|operating system]] pauses execution. Use [[Functions Palette/Programming/Structures/Timed Structures/Timed Loop|Timed Loops]] for time-critical tasks. | |||
=== Nomenclature controversy === | |||
Strictly speaking the While Loop is a [[Wikipedia:Do while loop|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 [[Functions Palette/Programming/Structures/For Loop|For Loops]] if the number of iterations is predictable or can be calculated. | |||
* Use [[Functions Palette/Programming/Timing/Wait (ms)|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 == | |||
{{ambox|text=History information is needed. What changes have occurred over previous versions?}} | |||
{| class="wikitable" | |||
! Version | |||
! Change(s) | |||
|- | |||
|[[File:LV2018.png|frameless|border|64x64px|LabVIEW 2018|link=LabVIEW 2018]] | |||
|More info to come. | |||
|} | |||
== See also == | |||
* [[WhileLoop class]] | |||
* [[Timed Loop structure|Timed Loops]] | |||
== External Links == | |||
{{ambox|text=Add links to external resources that would also help.}} | |||
[[Category:Structures Palette]] | |||
[[Category:While Loop]] | |||
Latest revision as of 15:01, 7 May 2023
| Object information | |
|---|---|
| Owning palette(s) | Structures palette |
| Type | Structure |
| Requires | Basic Development Environment |
| Icon | |

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

A Boolean value must be connected to the 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 (default) | Stops if the Boolean condition is | |
| Continue if True | Stops if the Boolean condition is |
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
constant to the conditional terminal.

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
and endlessly if the Boolean value is
.
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.
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
| |
History information is needed. What changes have occurred over previous versions? |
| Version | Change(s) |
|---|---|
| More info to come. |
See also
External Links
| |
Add links to external resources that would also help. |

