-
Notifications
You must be signed in to change notification settings - Fork 62
Open
Description
Considering the following example, how many iterations do we expect? Currently, we determine the loop-terminating predicate depending on whether or not the STEP
variable is positive or negative upon entering the loop, however there are alternative approaches which drastically change the behaviour.
FUNCTION main : DINT
VAR
i, step, temp, iteration: DINT;
END_VAR
step := 1;
iteration := 0;
FOR i := 3 TO 10 BY step DO
step := (step + 1) * -2;
// i: 3, -1, 5, -9, 17
// step: -4, 5, -14, 26
iteration := iteration + 1;
END_FOR
main := iteration;
END_FUNCTION
We should determine how for-loops behave in codesys when the statement parameters are changed in the loop-body and reevaluate our approach taking those findings into consideration.
Original discussion:
Originally posted by @mhasel in #1248 (comment)