Syntax:
For counter = start To end [Step increment] ... program code ... <condition> Exit For ... Next
Command Availability:
Available on all microcontrollers.
Explanation:
The For command is ideal for situations where a piece of code needs to
be run a set number of times, and where it is necessary to keep track of
how many times the code has run. When the For command is first executed,
counter
is set to start
. Then, each successive time the program
loops, increment
is added to counter
, until counter
is equal to
end
. Then, the program continues beyond the Next.
Step
and increment
are optionals. If Step is not specified, GCBASIC
will increment counter
by 1 each time the code is run.
Step is an integer value. Step value can positive of negative. When using advanced variable you must cast the step value as an integer, see the example below.
increment
can be a positive or negative constant or an integer.
The Exit For
is optional and can be used to exit the loop upon a specific
condition.
Warning
#define USELEGACYFORNEXT
to enable legacy FOR-NEXT support.
The GCBASIC compiler was revised in 2021 to improve the handling of the FOR-NEXT support.
You can revert to the legacy FOR-NEXT support by using #DEFINE USELEGACYFORNEXT
but using this legacy support will cause your program to operate incorrectly.
The use of #DEFINE USELEGACYFORNEXT
is NOT recommended.
Examples.
Example 1:
'This code will flash a green light 6 times. #chip 16F88, 8 #define LED PORTB.0 Dir LED Out For LoopCounter = 1 to 6 PulseOut Led, 1 s Wait 1 s Next
Example 2:
'This code will flash alternate LEDS until the switch is pressed. #chip 16F88, 8 #define LED1 PORTB.0 Dir LED1 Out #define LED2 PORTB.2 Dir LED2 Out #define SWITCH1 PORTA.0 Dir SWITCH1 In main: PulseOut LED1, 1 s For LoopCounterOut = 1 to 250 PulseOut LED2, 4 Ms if switch = On then Exit For Next Set LED2 OFF goto main
Example 3:
This example show casting the step value as an integer. The step value in this example is the integer value of 2.
#script // Create a constant Pi = 22/7 #endscript Dim myCircumference, myRadius as Single Dim myDiameter as Single Alias myCircumference_E, myCircumference_U, myCircumference_H, myCircumference HserPrintCRLF For MyRadius = 0.5 to 10.5 step [integer]2 myCircumference=myRadius * Pi * 2 HSerPrint "myRadius = " + ltrim(SingleToString(myRadius)) HSerPrintStringCRLF " myCircumference = " + ltrim(SingleToString(myCircumference)) next
For more help, see Repeat