Difference between revisions of "while"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " " to " ")
m (Some wiki formatting)
 
(5 intermediate revisions by the same user not shown)
Line 24: Line 24:
 
|gr1= Program Flow
 
|gr1= Program Flow
  
|descr= Repeats [[Code]] while condition is [[true]]. A part of [[while]] [[do]] construct.
+
|descr= Repeats [[Code]] while the given condition is [[true]]. A part of [[while]]-[[do]] construct.
  
|s1= '''while''' condition
+
|s1= [[while]] condition
  
 
|p1= condition: [[Code]]
 
|p1= condition: [[Code]]
Line 34: Line 34:
 
|x1= <code>[[while]] {a < b} [[do]] {a = a + 1};</code>
 
|x1= <code>[[while]] {a < b} [[do]] {a = a + 1};</code>
  
|x2= A practical example: Repair all members of a group to such a level that they are able to stand up: <code>{
+
|x2= A practical example: Repair all members of a group to such a level that they are able to stand up:
    [[while]] {![[canStand]] [[Magic Variables|_x]] && [[alive]] [[Magic Variables|_x]]} [[do]] {
+
<code>{
        [[Magic Variables|_x]] [[setDamage]] ([[damage]] [[Magic Variables|_x]] - 0.01);
+
[[if]] ([[alive]] [[Magic Variables#x|_x]]) [[then]]
    };
+
{
 +
[[while]] { [[not]] [[canStand]] [[Magic Variables#x|_x]] } [[do]]
 +
{
 +
[[Magic Variables|_x]] [[setDamage]] ([[damage]] [[Magic Variables|_x]] - 0.01);
 +
};
 +
};
 
} [[forEach]] [[units]] [[group]] unitname;</code>
 
} [[forEach]] [[units]] [[group]] unitname;</code>
  
Line 43: Line 48:
 
}}
 
}}
  
<dl class="command_description">
+
{{Note
<dt></dt>
+
|user= Kronzky
<dd class="notedate">Posted on May 14, 2008</dd>
+
|timestamp= 20080514084000
<dt class="note">[[User:Kronzky|Kronzky]]</dt>
+
|text= The boolean code that is used to evaluate the while condition can be preceded by code that executes a regular command.
<dd class="note">The boolean code that is used to evaluate the while condition can be preceded by code that executes a regular command.
 
 
<code>[[while]] {_a =_a + 1; _a < 10} [[do]] {...}</code>
 
<code>[[while]] {_a =_a + 1; _a < 10} [[do]] {...}</code>
</dl>
+
}}
<dl class="command_description">
+
 
<dt></dt>
+
{{Note
<dd class="notedate">Posted on August 30, 2014 - 08:12 (UTC)</dd>
+
|user= Killzone Kid
<dt class="note">[[User:Killzone Kid|Killzone Kid]]</dt>
+
|timestamp= 20140830081200
<dd class="note">
+
|text= In [[Scheduler#Unscheduled_Environment|non-scheduled environment]], [[while]] [[do]] loop is limited to 10,000 iterations, after which it exits even if condition is still [[true]]. In [[Scheduler#Unscheduled_Environment|scheduled environment]] no such limit exists.
In [[Scheduler#Unscheduled_Environment|non-scheduled environment]], [[while]] [[do]] loop is limited to 10,000 iterations, after which it exits even if condition is still [[true]]. In [[Scheduler#Unscheduled_Environment|scheduled environment]] no such limit exists.
+
}}
</dd>
 
</dl>
 

Latest revision as of 22:28, 21 September 2021

Hover & click on the images for description

Description

Description:
Repeats Code while the given condition is true. A part of while-do construct.
Groups:
Program Flow

Syntax

Syntax:
while condition
Parameters:
condition: Code
Return Value:
While Type

Examples

Example 1:
while {a < b} do {a = a + 1};
Example 2:
A practical example: Repair all members of a group to such a level that they are able to stand up: { if (alive _x) then { while { not canStand _x } do { _x setDamage (damage _x - 0.01); }; }; } forEach units group unitname;

Additional Information

See also:
Control StructureswaitUntilfordo

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on May 14, 2008 - 08:40 (CEST)
Kronzky
The boolean code that is used to evaluate the while condition can be preceded by code that executes a regular command. while {_a =_a + 1; _a < 10} do {...}
Posted on Aug 30, 2014 - 08:12 (CEST)
Killzone Kid
In non-scheduled environment, while do loop is limited to 10,000 iterations, after which it exits even if condition is still true. In scheduled environment no such limit exists.