Loops/For with a specified step: Difference between revisions
Zig version with for-loop added
(Added solution for Action!) |
(Zig version with for-loop added) |
||
(43 intermediate revisions by 25 users not shown) | |||
Line 26:
=={{header|11l}}==
<
print(i)</
{{out}}
Line 41:
;Basic - Algol style
The opcode BXH uses 3 registers, one for index one for step and one for limit.
<
LOOPFORS CSECT
USING LOOPFORS,R12
Line 60:
XDEC DS CL12 temp for edit
YREGS
END LOOPFORS</
{{out}}
<pre>
Line 67:
;Basic - Fortran style
The opcode BXLE uses 3 registers, one for index one for step and one for limit.
<
LA R3,BUF idx=0
LA R5,5 from 5
Line 76:
LA R3,4(R3) idx=idx+4
BXLE R5,R6,LOOPJ next j
XPRNT BUF,80 print buffer</
;Structured Macros
<
LA R3,BUF idx=0
LA R5,5 from 5
Line 89:
AR R5,R6 i=i+step
ENDDO , next i
XPRNT BUF,80 print buffer</
;Structured Macros HLASM
<
LA R3,BUF idx=0
DO FROM=(R5,5),TO=(R7,25),BY=(R6,5) for i=5 to 25 step 5
Line 98:
LA R3,4(R3) idx=idx+4
ENDDO , next i
XPRNT BUF,80 print buffer</
=={{header|6502 Assembly}}==
This loop loads from an array and writes each element to memory addresses $D000, $D002, $D004, $D006, $D008, $D00A, $D00C, $D00E, in ascending order.
<
define ArrayPointerHi $01
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 147:
bpl loop_fill ;if destination index equals #$FF, we are done.
brk ;end of program</
{{out}}
Line 156:
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<syntaxhighlight lang="aarch64 assembly">
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program loopstep64.s */
Line 209:
/* for this file see task include a file in language AArch64 assembly */
.include "../includeARM64.inc"
</syntaxhighlight>
=={{header|Action!}}==
<
BYTE i
Line 219:
PrintF("%B ",i)
OD
RETURN</
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/For_with_a_specified_step.png Screenshot from Atari 8-bit computer]
Line 233:
Looper_3 most closely adheres to the requirements of this task, and achieves this by using a second range for the indices.
<
use Loopers;
Line 297:
end Loopers;
</syntaxhighlight>
=={{header|Agena}}==
Tested with Agena 2.9.5 Win32
<
print( i )
od</
=={{header|Aime}}==
<
i = 0;
Line 314:
}
o_newline();</
=={{header|ALGOL 60}}==
Line 357:
=={{header|ALGOL W}}==
<
for i := 3 step 2 until 9 do write( i )
end.</
=={{header|ALGOL-M}}==
<
INTEGER I;
FOR I := 1 STEP 3 UNTIL 19 DO
WRITE( I );
END</
=={{header|AppleScript
<
log i
end repeat</
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<syntaxhighlight lang="arm assembly">
/* ARM assembly Raspberry PI */
Line 516:
</syntaxhighlight>
=={{header|Arturo}}==
<
print i
]</
{{out}}
<pre>0
Line 531:
=={{header|AutoHotkey}}==
<
iterations := 5
step := 10
Line 541:
MsgBox, % A_Index
}
ExitApp</
=={{header|Avail}}==
<
Note the <code>0 to 100 by 7</code> segment isn't a fixed part of the loop syntax, but a call to the <code>_to_by_</code> method, which returns a tuple of integers in a range separated by a particular step size.
=={{header|AWK}}==
<
for (i= 2; i <= 8; i = i + 2) {
print i
}
print "Ain't never too late!"
}</
−
Line 561:
This example increments by 2:
<
Disp I▶Dec,i
I++
End</
=={{header|Bait}}==
<syntaxhighlight lang="bait">
fun main() {
// Print all single digit odd numbers
for i := 1; i < 10; i += 2 {
println(i)
}
}
</syntaxhighlight>
=={{header|BASIC}}==
==={{header|Applesoft BASIC}}===
<
==={{header|BaCon}}===
This prints all odd digits:
<
FOR i = 1 TO 10 STEP 2
PRINT i
NEXT</
==={{header|Basic|QuickBasic}}===
{{works with|QuickBasic|4.5}}
<
print i; ", ";
next i
print "who do we appreciate?"</
==={{header|BASIC256}}===
<
print i; " ";
next i
end</
==={{header|BBC BASIC}}===
<
PRINT n
NEXT</
{{out}}
<pre>
Line 602 ⟶ 612:
8
</pre>
==={{header|Chipmunk Basic}}===
{{works with|Chipmunk Basic|3.6.4}}
<syntaxhighlight lang="qbasic">10 for i = 1 to 21 step 2
20 print i;
30 next i</syntaxhighlight>
==={{header|Commodore BASIC}}===
<
20 PRINT I
30 NEXT</
<
For i As Integer = 1 To 21 Step 2
Line 615 ⟶ 631:
Next
Print
Sleep</
==={{header|Gambas}}===
'''[https://gambas-playground.proko.eu/?gist=cdd9b10b64ac4d78b75c364061f25641 Click this link to run this code]'''
<
Dim siCount As Short
Line 650 ⟶ 642:
Next
End</
<pre>Gambas is great!
Gambas is great!
Gambas is great!
Line 660 ⟶ 652:
Gambas is great!
Gambas is great!
Gambas is great!</pre>
==={{header|GW-BASIC}}===
{{works with|BASICA}}
{{works with|PC-BASIC|any}}
<syntaxhighlight lang="qbasic">10 FOR I = 1 TO 21 STEP 2
20 PRINT I;
30 NEXT I</syntaxhighlight>
==={{header|IS-BASIC}}===
<
110 PRINT I
120 NEXT</
==={{header|Liberty BASIC}}===
<syntaxhighlight lang="lb">for i = 2 to 8 step 2
print i; ", ";
next i
print "who do we appreciate?"
end</syntaxhighlight>
==={{header|Microsoft Small Basic}}===
<
TextWindow.WriteLine(i)
EndFor</syntaxhighlight>
==={{header|Minimal BASIC}}===
{{works with|QBasic}}
{{works with|QuickBasic}}
{{works with|Applesoft BASIC}}
{{works with|BASICA}}
{{works with|Chipmunk Basic}}
{{works with|GW-BASIC}}
{{works with|MSX BASIC}}
{{works with|Just BASIC}}
{{works with|Liberty BASIC}}
{{works with|Run BASIC}}
{{works with|Yabasic}}
<syntaxhighlight lang="qbasic">10 FOR I = 1 TO 21 STEP 2
20 PRINT I; " ";
30 NEXT I
40 END</syntaxhighlight>
==={{header|MSX Basic}}===
<syntaxhighlight lang="qbasic">10 FOR I = 1 TO 21 STEP 2
20 PRINT I;
30 NEXT I</syntaxhighlight>
==={{header|NS-HUBASIC}}===
<
20 PRINT I
30 NEXT</
{{out}}
<pre> 1 3 5 7 9 11 13 15 17 19 21</pre>
==={{header|PureBasic}}===
<
Debug i
Next i</
{{out}}
<pre>-15
-10
-5
0
5
10
15
20
25</pre>
Decrementing with step
<syntaxhighlight lang="purebasic">For i = 10 To 0 Step -2
Debug i
Next ; i is optional</syntaxhighlight>
{{out}}
<pre>10
8
6
4
2
0</pre>
==={{header|QB64}}===
<
Print i%
Next 'To be more explicit use "Next i%"
</syntaxhighlight>
{{out}}
A newline is inserted automatically after the Print statement
<pre>0
2
4
6
8
10</pre>
We can also decrement with stepping
<syntaxhighlight lang="qbasic">For i% = 10 to 0 Step -2
Print i%
Next i </syntaxhighlight>
{{out}}
<pre>10
8
6
4
2
9</pre>
==={{header|QBasic}}===
{{works with|QBasic|1.1}}
{{works with|QuickBasic|4.5}}
<syntaxhighlight lang="qbasic">FOR i = 1 TO 21 STEP 2
PRINT i;
NEXT i</syntaxhighlight>
==={{header|Quite BASIC}}===
<syntaxhighlight lang="qbasic">10 FOR I = 1 TO 21 STEP 2
20 PRINT I; " ";
30 NEXT I</syntaxhighlight>
==={{header|Run BASIC}}===
<
print i; ", ";
next i
print "who do we appreciate?"</
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?</pre>
Line 727 ⟶ 783:
Notice how the ampersand (&) is used to concatenate the variable with the text instead of a semicolon.
<
PRINT n & "..";
NEXT n
PRINT "who do we appreciate?"
END</
==={{header|TI-83 BASIC}}===
Prints numbers from 0 to 100 stepping by 5.
<
:Disp I
:End</
==={{header|TI-89 BASIC}}===
<
For i, 0, 100, 5
Disp i
EndFor</
==={{Header|Tiny BASIC}}===
<syntaxhighlight lang="qbasic"> REM TinyBasic does not have a for-loop construct.
REM Equivalent using conditional jump:
LET i = 1
10 IF i > 21 THEN GOTO 20
PRINT i
LET i = i + 2
GOTO 10
20 END</syntaxhighlight>
==={{header|True BASIC}}===
<syntaxhighlight lang="qbasic">
FOR i = 1 TO 21 STEP 2
PRINT i; " ";
NEXT i
END
</syntaxhighlight>
{{out}}
<pre>1 3 5 7 9 11 13 15 17 19 21</pre>
Since TrueBasic does not distinguish between integer or real values, we can increment using decimal values as well
<syntaxhighlight lang="qbasic">FOR i = 1 TO 5 STEP .5
PRINT i
NEXT i
END</syntaxhighlight>
{{out}}
<pre>1
1.5
2
2.5
3
3.5
4
4.5
5</pre>
==={{header|Visual Basic}}===
{{works with|Visual Basic|VB6 Standard}}
<
For i = 2 To 8 Step 2
Debug.Print i;
Next i
Debug.Print
End Sub</
{{out}}
<pre> 2 4 6 8 </pre>
==={{header|Visual Basic .NET}}===
{{works with|Visual Basic .NET|.NET Core 3.0}}
<
Module Program
Sub Main()
Line 776 ⟶ 859:
WriteLine("who do we appreciate?")
End Sub
End Module</
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?</pre>
{{works with|Visual Basic .NET|2011}}
<
Private Sub FormPG_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer, buffer As String
Line 792 ⟶ 873:
Debug.Print(buffer)
End Sub
End Class</
{{out}}
<pre>2 4 6 8 </pre>
==={{header|XBasic}}===
{{works with|Windows XBasic}}
<syntaxhighlight lang="xbasic">PROGRAM "forby"
DECLARE FUNCTION Entry()
Line 810 ⟶ 888:
NEXT i%
END FUNCTION
END PROGRAM</syntaxhighlight>
==={{header|Yabasic}}===
<
print i, " ";
next i
print
end</
==={{header|ZX Spectrum Basic}}===
<
20 PRINT l; ", ";
30 NEXT l
40 PRINT "Who do we appreciate?"</
=={{header|Batch File}}==
<
for /l %%A in (1,2,10) do (
echo %%A
)</
{{Out}}
<pre>>Sample.BAT
Line 842 ⟶ 919:
=={{header|bc}}==
<
i
}</
=={{header|Befunge}}==
{{trans|C}}
<
@_^#`9:+2<</
=={{header|C}}==
This prints all odd digits:
<
for(i = 1; i < 10; i += 2)
printf("%d\n", i);</
=={{header|C sharp|C#}}==
<
class Program {
Line 869 ⟶ 946:
Console.WriteLine("who do we appreciate?");
}
}</
=={{header|C++}}==
This prints all odd digits:
<
std::cout << i << std::endl;</
=={{header|C3}}==
Print all odd digits:
<syntaxhighlight lang="c3">for (int i = 1; i < 10; i += 2) io::printfn("%d", i);</syntaxhighlight>
=={{header|Ceylon}}==
<
for(i in (2..8).by(2)) {
Line 883 ⟶ 964:
}
print("who do we appreciate?");
}</
=={{header|Chapel}}==
<
// Can be set on commandline via --N=x
config const N = 3;
Line 893 ⟶ 974:
writeln(i);
}
</syntaxhighlight>
{{out}}
<pre>
Line 910 ⟶ 991:
=={{header|ChucK}}==
Chuck style
<syntaxhighlight lang="c">
SinOsc s => dac;
Line 918 ⟶ 999:
100::ms => now;
}
</syntaxhighlight>
General purpose style:
<syntaxhighlight lang="c">
for (0 => int i; i < 2000; 5 +=> i )
{
<<< i >>>;
}
</syntaxhighlight>
=={{header|Clojure}}==
The first example here is following the literal specification, but is not idiomatic Clojure code.
The second example achieves the same effect without explicit looping, and would (I think) be viewed as better code by the Clojure community.
<
(println i)
(when (< i 10)
Line 936 ⟶ 1,017:
(doseq [i (range 0 12 2)]
(println i))</
=={{header|CLU}}==
<syntaxhighlight lang="clu">% This prints all odd digits
start_up = proc ()
po: stream := stream$primary_output()
for i: int in int$from_to_by(1, 10, 2) do
stream$putl(po, int$unparse(i))
end
end start_up</syntaxhighlight>
=={{header|COBOL}}==
<
PROGRAM-ID. Display-Odd-Nums.
Line 952 ⟶ 1,044:
GOBACK
.</
=={{header|ColdFusion}}==
<
<cfloop from="0" to="99" step="3" index="i">
<Cfoutput>#i#</Cfoutput>
</cfloop>
</syntaxhighlight>
=={{header|Common Lisp}}==
<
(format t "~{~S, ~}who do we appreciate?~%" (loop for i from 2 to 8 by 2 collect i))
</syntaxhighlight>
{{out}}
Line 972 ⟶ 1,064:
=== Using DO ===
<
(do ((n 0 (incf n (+ (random 3) 2)))) ; Initialize to 0 and set random step-value 2, 3 or 4
((> n 20)) ; Break condition
(print n)) ; On every loop print value
</syntaxhighlight>
{{out}}
Line 992 ⟶ 1,084:
=={{header|D}}==
<
void main() {
Line 1,002 ⟶ 1,094:
foreach (i; iota(1, 10, 2))
writeln(i);
}</
{{out}}
<pre>1
Line 1,016 ⟶ 1,108:
=={{header|Dao}}==
<
# max value: 9
# step: 2
for( i = 1 : 2 : 9 ) io.writeln( i )</
=={{header|Dart}}==
<syntaxhighlight lang="dart">main() {
for (int i = 1; i <= 21; i += 2) print(i);
}</syntaxhighlight>
=={{header|Delphi}}==
Line 1,025 ⟶ 1,122:
It would have to be simulated using something like a While loop.
<
{$APPTYPE CONSOLE}
Line 1,037 ⟶ 1,134:
Inc(i, 2);
end;
end.</
{{out}}
<pre>2
Line 1,045 ⟶ 1,142:
=={{header|Dragon}}==
<
show ", " + i
}
showln "who do we appreciate?"</
=={{header|DWScript}}==
<
for i := 2 to 8 step 2 do
PrintLn(i);</
{{out}}
Line 1,061 ⟶ 1,158:
6
8</pre>
=={{header|Dyalect}}==
<syntaxhighlight lang="dyalect">//Prints odd numbers from 1 to 10
for i in 1^2..10 {
print(i)
}</syntaxhighlight>
=={{header|E}}==
There is no step in the standard numeric range object (a..b and a..!b) in E, which is typically used for numeric iteration.
An ordinary while loop can of course be used:
<
while (i <= 8) {
print(`$i, `)
i += 2
}
println("who do we appreciate?")</
A programmer frequently in need of iteration with an arbitrary step should define an appropriate range object:
<
def range {
to iterate(f) {
Line 1,090 ⟶ 1,193:
print(`$i, `)
}
println("who do we appreciate?")</
The least efficient, but perhaps convenient, solution is to iterate over successive integers and discard undesired ones:
<
print(`$i, `)
}
println("who do we appreciate?")</
=={{header|EasyLang}}==
<syntaxhighlight lang="easylang">
# Prints even numbers from 0 to 100
for i = 0 step 2 to 100
print i
.
</syntaxhighlight>
=={{header|EchoLisp}}==
Steps may be integers, float, rationals.
<
(for ((i (in-range 0 15 2))) (write i))
0 2 4 6 8 10 12 14
Line 1,110 ⟶ 1,221:
(for ((x (in-range 0 15 PI))) (write x))
0 3.141592653589793 6.283185307179586 9.42477796076938 12.566370614359172
</syntaxhighlight>
=={{header|Ela}}==
<
for m s n | n > m = do return ()
Line 1,121 ⟶ 1,232:
for m s (n+s)
_ = for 10 2 0 ::: IO</
{{out}}
Line 1,132 ⟶ 1,243:
=={{header|Elena}}==
ELENA
<
{
for(int i := 2
{
console.writeLine
}
}</
=={{header|Elixir}}==
<
def for_step(n, step) do
IO.inspect Enum.take_every(1..n, step)
Line 1,148 ⟶ 1,259:
end
Loops.for_step(20, 3)</
{{out}}
Line 1,155 ⟶ 1,266:
</pre>
or
<
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]</
=={{header|EMal}}==
<syntaxhighlight lang="emal">
for int i = 2; i <= 8; i+= 2 do write(i + ", ") end
writeLine("who do we appreciate?")
</syntaxhighlight>
{{out}}
<pre>
2, 4, 6, 8, who do we appreciate?
</pre>
=={{header|Erlang}}==
<
%% for_loop/4 by Bengt Kleberg.
-module(loop_step).
Line 1,176 ⟶ 1,297:
for_loop( I+Step, End, Step, Do );
for_loop( _I, _End, _Step, _Do ) -> ok.
</syntaxhighlight>
{{out}}
Line 1,184 ⟶ 1,305:
=={{header|ERRE}}==
<syntaxhighlight lang="erre">
FOR N=2 TO 8 STEP 1.5 DO
PRINT(N)
END FOR
</syntaxhighlight>
{{out}}
<pre>
Line 1,200 ⟶ 1,321:
=={{header|Euphoria}}==
<syntaxhighlight lang="euphoria">
for i = 1 to 10 by 2 do
? i
end for
</syntaxhighlight>
As a note, <code>? something</code> is shorthand for:
<syntaxhighlight lang="euphoria">
print(1, something)
puts(1, "\n")
</syntaxhighlight>
<code>print()</code> differs from <code>puts()</code> in that <code>print()</code> will print out the actual <code>sequence</code> it is given.
Line 1,216 ⟶ 1,337:
=={{header|F_Sharp|F#}}==
<
printf "%d, " i
printfn "done"</
{{out}}
Line 1,226 ⟶ 1,347:
=={{header|Factor}}==
Prints odd digits.
<
=={{header|FALSE}}==
<
=={{header|Fantom}}==
<
class Main
{
Line 1,245 ⟶ 1,366:
}
}
</syntaxhighlight>
=={{header|FBSL}}==
<
DIM n AS INTEGER
Line 1,257 ⟶ 1,378:
PRINT ", who will we obliterate?"
PAUSE
</syntaxhighlight>
=={{header|Fermat}}==
<
{{out}}<pre>1 14 27 40 53 66 79 92</pre>
=={{header|FOCAL}}==
If a <tt>FOR</tt> statement has three parameters, they are (in order) the start, the step, and the end; if only two parameters are supplied, they are taken to be the start and the end. The step is then set to 1.
<
=={{header|Forth}}==
<
9 2 do
i .
2 +loop
." who do we appreciate?" cr ;</
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
<
print *, i
end do</
{{works with|Fortran|77 and later}}
<
INTEGER I
Line 1,290 ⟶ 1,411:
STOP
END</
=={{header|Frink}}==
<
for a = 1 to 100 step 5
println[a]
</syntaxhighlight>
All values may have units of measure, in which case a specified step is required:
<
for a = 1 km to 3 km step 1 meter
println[a]
</syntaxhighlight>
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">
Str15 s(11)
long i
s(0) = "Somewhere"
s(2) = " over"
s(4) = " the"
s(6) = " rainbow" + chr$(13)
s(8) = "Bluebirds"
s(10) = " fly."
for i = 0 to 10 step 2
print s(i);
next
HandleEvents
</syntaxhighlight>
{{out}}
<pre>Somewhere over the rainbow
Bluebirds fly.</pre>
=={{header|GML}}==
<syntaxhighlight lang="gml">for(i = 0; i < 10; i += 2)
show_message(string(i))</syntaxhighlight>
=={{header|GAP}}==
# Use a range [a, b .. c], where the step is b-a (b is the value following a), and c-a must be a multiple of the step.
<
Print(i, "\n");
od;
Line 1,316 ⟶ 1,463:
9
11
</syntaxhighlight>
=={{header|Go}}==
This prints all odd digits:
<
fmt.Printf("%d\n", i)
}</
=={{header|Groovy}}==
"for" loop:
<
print "${i} "
}
println "Who do we appreciate?"</
"each() method:
Though technically not a loop, most Groovy programmers would use the slightly more terse "each()" method on the collection itself, instead of a "for" loop.
<
print "${it} "
}
println "Who do we appreciate?"</
{{out}}
Line 1,347 ⟶ 1,490:
=={{header|Haskell}}==
<
main = do forM_ [2,4..8] (\x -> putStr (show x ++ ", "))
putStrLn "who do we appreciate?"</
=={{header|Haxe}}==
While Haxe's for-loop does not allow you to directly specify the step size, it is easy to create an iterator that allows you to do that.
<
var end:Int;
var step:Int;
Line 1,376 ⟶ 1,519:
Sys.println('WHOM do we appreciate? GRAMMAR! GRAMMAR! GRAMMAR!');
}
}</
{{out}}
Line 1,382 ⟶ 1,525:
=={{header|hexiscript}}==
<
println i
endfor</
=={{header|HicEst}}==
<
WRITE() i
ENDDO</
=={{header|HolyC}}==
This prints all odd digits:
<
for (i = 1; i < 10; i += 2)
Print("%d\n", i);</
=={{header|Hy}}==
<
=={{header|Icon}} and {{header|Unicon}}==
Icon and Unicon accomplish loop stepping through the use of a generator, the ternary operator to-by, and the every clause which forces a generator to consume all of its results.
Because to-by is an operator it has precedence (just higher than assignments) and associativity (left) and can be combined with other operators.
<syntaxhighlight lang="python">
every 1 to 10 by 2 # the simplest case that satisfies the task, step by 2
every 1 to 10 # no
every EXPR1 to EXPR2 by EXPR3 do EXPR4 # general case - EXPRn can be complete expressions including other generators such as to-by, every's do is optional
steps := [2,3,5,7] # a list
Line 1,417 ⟶ 1,560:
every writes( (TO_BY_EXPR) | "\n", " " ) # if you want to see how any of these work
</syntaxhighlight>
The ability to combine to-by arbitrarily is quite powerful.
Yet it can lead to unexpected results. In cases of combined to-by operators the left associativity seems natural where the by is omitted.
In cases where the by is used it might seem more natural to be right associative.
If in doubt parenthesize.
=={{Header|Insitux}}==
<syntaxhighlight lang="insitux">
(for i (range 0 10 2)
(print i)
(continue))
;or
(loop 5 i
(print (* i 2)))
</syntaxhighlight>
=={{header|Io}}==
<
write(i,", ")
)
write("who do we appreciate?")</
=={{header|J}}==
<
2 4 6 8 who do we appreciate?</
Note that an expression of the form <code>(start, step) (p. i.) count</code> will generate the specified numbers (<code>p.</code> is J's polynomial primitive, <code>i.</code> is J's index generator). So, to generate the above sequence of integers we could have used:
<syntaxhighlight lang=J> 0 2 (p. i.) 5
0 2 4 6 8</syntaxhighlight>
Or, using an "actual" for loop:
<
r=.$0
for_n. 2 * >: i.4 do.
Line 1,442 ⟶ 1,602:
' who do we appreciate?' ,~ ":n
)
2 4 6 8 who do we appreciate?</
That said, note also that J's '''steps''' verb lets us specify how many steps to take:
<
_8 _7 _6 _5 _4 _3 _2 _1 0 1 2 3 4 5 6 7 8
i:8j8
_8 _6 _4 _2 0 2 4 6 8</
Or, if we prefer, we could borrow the definition of <code>thru</code> from the [[Loops/Downward_for#J|Downward for]] task and then filter for the desired values:
<
Example use:
<
2 4 6 8 10 12 14 16 18 20
(#~ 0 = 3&|) 1 thru 20
3 6 9 12 15 18
(#~ 1 = 3&|) 1 thru 20
1 4 7 10 13 16 19</
And, of course, like filtering in any language, this approach supports non-constant step sizes, either by applying a function to each argument individually:
<
2 3 5 7 11 13 17 19</
Or, by inserting a combining function between each value:
<syntaxhighlight lang="j"> (-&{.,])/ 1 thru 20
_10 11 _9 12 _8 13 _7 14 _6 15 _5 16 _4 17 _3 18 _2 19 _1 20</syntaxhighlight>
Other structural approaches can also be viable...
=={{header|Java}}==
<
System.out.print(i + ", ");
}
System.out.println("who do we appreciate?");</
=={{header|JavaScript}}==
<
i;
for (i = 2; i <= 8; i += 2) {
Line 1,482 ⟶ 1,649:
}
output += 'who do we appreciate?';
document.write(output);</
In a functional idiom of JavaScript, however, we will only be able to compose this computation within the superordinate expressions of our program if it has the the form of an expression returning a value, rather than that of a statement which fires off side-effects but returns no value.
Line 1,488 ⟶ 1,655:
Following the example of languages like Haskell and J on this page, we can begin by generating the stepped series as an expression. In functional JavaScript we will typically replace a state-changing loop with a non-mutating map or fold, writing, for example, something like:
<
// range(iMin, iMax)
// range(iMin, iMax, dI)
Line 1,508 ⟶ 1,675:
console.log(
range(2, 8, 2).join(', ') + ', who do we appreciate ?'
);</
Output:
Line 1,514 ⟶ 1,681:
=={{header|jq}}==
To generate the stream: 2,4,6,8:<
def range(m;n;step): range(0; ((n-m)/step) ) | m + (. * step);
range(2;9;2)</
'''Example''':
<
(""; . + "\($i), ") +
"whom do we appreciate?"</
=={{header|Julia}}==
<
print(i, ", ")
end
println("whom do we appreciate?")</
=={{header|Kotlin}}==
<
fun main(args: Array<String>) {
for (i in 1 .. 21 step 2) print("$i ")
}</
{{out}}
Line 1,545 ⟶ 1,712:
=={{header|Lambdatalk}}==
<
{def loops_for_with_a_specified_step
{lambda {:a :b :step}
Line 1,560 ⟶ 1,727:
{S.map {lambda {:i} :i} {S.serie 0 9 2}}
-> 0 2 4 6 8
</syntaxhighlight>
=={{header|Lang5}}==
<
: >>say.(*) . ;
1 10 2 <range> >>say.</
=={{header|langur}}==
<
writeln .i
}</
{{out}}
Line 1,580 ⟶ 1,747:
=={{header|Lasso}}==
<
loop_count
'\r' // for formatting
^}</
=={{header|LDPL}}==
<syntaxhighlight lang="ldpl"># Display the even numbers up to twenty.
data:
i is number
procedure:
for i from 0 to 21 step 2 do
display i lf
repeat</syntaxhighlight>
{{out}}
<pre>
0
2
4
6
8
10
12
14
16
18
20
</pre>
=={{header|LIL}}==
The '''inc''' command accepts a value to add to the variable, 1 if not specified.
<
{{out}}
<pre># for {set i 1} {$i < 15} {inc i 3} {print $i}
Line 1,599 ⟶ 1,791:
=={{header|Lingo}}==
Lingo loops don't support a "step" parameter, so it has to be implemented manually:
<
repeat with i = 0 to 10
put i
i = i + (step-1)
end repeat</
{{out}}
<pre>
Line 1,613 ⟶ 1,805:
=={{header|Lisaac}}==
<
i.print;
'\n'.print;
};</
=={{header|LiveCode}}==
<
put n after loopn
if n is not 10 then put comma after loopn
end repeat
put loopn</
Output<syntaxhighlight lang
=={{header|Logo}}==
<
=={{header|Lua}}==
<
for i=2,9,2 do
print(i)
end
</syntaxhighlight>
{{out}}
Line 1,651 ⟶ 1,843:
For this task we use single float numbers, and we make the loop one time from lower to higher value, and one time form higher to lower value.
<syntaxhighlight lang="m2000 interpreter">
Module LoopFor {
Locale 1036
Line 1,672 ⟶ 1,864:
}
LoopFor
</syntaxhighlight>
{{Out}}
<pre>
Line 1,679 ⟶ 1,871:
</pre>
===Iterator step 2===
<syntaxhighlight lang="m2000 interpreter">
a=("A", "B", "C", "D", "E", "F", "Z")
k=Each(a)
Line 1,695 ⟶ 1,887:
}
Print
</syntaxhighlight>
{{out}}
<pre>
Line 1,703 ⟶ 1,895:
=={{header|M4}}==
<
`ifelse($#,0,``$0'',
`ifelse(eval($2<=$3),1,
Line 1,710 ⟶ 1,902:
for(`x',`1',`5',`3',`x
')
</syntaxhighlight>
{{out}}
Line 1,719 ⟶ 1,911:
=={{header|Maple}}==
<
i;
end do;</
{{out}}
<pre>
Line 1,731 ⟶ 1,923:
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">Do[
Print[i],
{i, 1, 20, 4}]</
{{out}}
<pre>1
Line 1,743 ⟶ 1,935:
=={{header|MATLAB}} / {{header|Octave}}==
<
printf('%d\n',k)
end; </
A vectorized version of the code is
<
=={{header|Maxima}}==
<
/* 1
3
5
7 */</
=={{header|MAXScript}}==
<
Output:
<syntaxhighlight lang="maxscript">
0
2
Line 1,769 ⟶ 1,961:
10
OK
</syntaxhighlight>
=={{header|min}}==
Printing the even numbers in <tt>[0,10)</tt>:
{{works with|min|0.19.6}}
<
=={{header|MiniScript}}==
<
print i
end for</
{{out}}
Line 1,789 ⟶ 1,981:
=={{header|МК-61/52}}==
<syntaxhighlight lang="text">1 П0 ИП0 3 + П0 1 0 - x#0
02 С/П</
In this example, the step is 3, the lowest value is 1 and the upper limit is 10.
=={{header|Modula-2}}==
<
IMPORT InOut;
Line 1,806 ⟶ 1,998:
InOut.WriteLn
END
END ForBy.</
=={{header|Modula-3}}==
<
IO.Put(Fmt.Int(i) & " ");
END;</
=={{header|MUMPS}}==
<
.WRITE $CHAR(I)," "</
{{out}}
<pre>A D G J M P S V Y \ _ b e h k n q t w z</pre>
=={{header|Nemerle}}==
<
<
=={{header|NetRexx}}==
<
options replace format comments java crossref savelog symbols nobinary
Line 1,833 ⟶ 2,025:
say i_.format(3, 1) || '\0'
end i_
say</
{{out}}
<pre>D:\>java lst
Line 1,844 ⟶ 2,036:
The increment step of the Never ''for'' expression can be simple or complex and need not be contiguous.
<
=={{header|NewLISP}}==
<
(println i))</
=={{header|Nim}}==
<syntaxhighlight lang="nim">
for n in 5 .. 9: # 5 to 9 (9-inclusive)
echo n
echo "" # spacer
for n in 5 ..< 9: # 5 to 9 (9-exclusive)
echo n
echo "" # spacer
for n in countup(0, 16, 4): # 0 to 16 step 4
echo n
echo "" # spacer
for n in countdown(16, 0, 4): # 16 to 0 step -4
echo n
</syntaxhighlight>
{{out}}
<pre>
5
6
7
8
9
5
6
7
8
0
4
8
12
16
16
12
8
4
0
</pre>
=={{header|N/t/roff}}==
Works with gnu nroff. Example from groff manual, with minimal modifications.
<syntaxhighlight lang="nroff">
.nr a 0 3
.while (\na < 19) \{\
\n+a
.\}
</syntaxhighlight>
{{out}}
<pre>3 6 9 12 15 18 21
</pre>
=={{header|Nu}}==
Here <code>each {}</code> is used to convert from a range to a list, so that it can be consumed by <code>every</code>
<syntaxhighlight lang="nu">
for i in (0..10 | each {} | every 2) {print $i}
</syntaxhighlight>
{{out}}
<pre>
0
2
4
6
8
10
</pre>
=={{header|Oberon-2}}==
Works with oo2c Version 2
<
MODULE LoopForStep;
IMPORT
Line 1,875 ⟶ 2,134:
END
END LoopForStep.
</syntaxhighlight>
Output:
<pre>
Line 1,889 ⟶ 2,148:
=={{header|Objeck}}==
<
for(i := 0; i < 10; i += 2;) {
i->PrintLine();
};
</syntaxhighlight>
=={{header|OCaml}}==
<
let rec aux i =
if i <= b then begin
Line 1,913 ⟶ 2,172:
6
8
- : unit = ()</
=={{header|Octave}}==
<
disp(i)
endfor</
=={{header|Oforth}}==
<
=={{header|Openscad}}==
<
for ( l = [3:2:9] ) {
echo (l);
}
echo ("on a double white line.");</
=={{header|Oz}}==
<
{System.show I}
end
{System.show done}
</syntaxhighlight>
=={{header|Panda}}==
Panda doesn't natively have a number generator with steps, so let's add it.
<
t=to.minus(from).divide(step)
0..t.times(step).plus(from)
/test it for(1 6 2) -> 1 3 5
for(1 3 5)</
=={{header|PARI/GP}}==
<
The <code>forstep</code> construct is actually more powerful.
For example, to print numbers with last digit relatively prime to 10:
<
=={{header|Pascal}}==
Line 1,960 ⟶ 2,219:
=={{header|Perl}}==
<
print "$i, ";
}
print "who do we appreciate?\n";</
=={{header|Phix}}==
{libheader|Phix/basics}}
<!--<
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">2</span> <span style="color: #008080;">to</span> <span style="color: #000000;">8</span> <span style="color: #008080;">by</span> <span style="color: #000000;">2</span> <span style="color: #008080;">do</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%d, "</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"who do we appreciate?\n"</span><span style="color: #0000FF;">)</span>
<!--</
=={{header|Phixmonti}}==
<syntaxhighlight lang="Phixmonti">/# Rosetta Code problem: https://rosettacode.org/wiki/Loops/For_with_a_specified_step
by Galileo, 11/2022 #/
include ..\Utilitys.pmt
( 2 8 2 ) for print ", " print endfor
"who do we appreciate?" print</syntaxhighlight>
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?
=== Press any key to exit ===</pre>
=={{header|PHP}}==
<
foreach (range(2, 8, 2) as $i)
echo "$i, ";
echo "who do we appreciate?\n";
?></
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?</pre>
=={{header|PicoLisp}}==
<
(printsp N) )</
=={{header|Pike}}==
<
for(int i = 2; i <= 16; i=i+2) {
write(i + "\n");
}
}</
=={{header|PILOT}}==
One of the advantages of needing to create loops manually by using conditional jumps is that a step of any integer is just as easy as a step of one.
<
C :i = 1
*Loop
Line 2,002 ⟶ 2,273:
C :i = i + 2
J ( i < 10 ) :*Loop
END:</
=={{header|PL/I}}==
<syntaxhighlight lang="pl/i">
declare (n, i) fixed binary;
Line 2,012 ⟶ 2,283:
put skip list (i);
end;
</syntaxhighlight>
=={{header|Plain English}}==
Plain English has only one type of loop: an infinite loop that can be given a conditional break or exit. So there is nothing particularly special about this.
<syntaxhighlight lang="plainenglish">
To run:
Start up.
Put 0 into a number.
Loop.
If the number is greater than 50, break.
Convert the number to a string.
Write the string to the console.
Add 5 to the number.
Repeat.
Wait for the escape key.
Shut down.</syntaxhighlight>
=={{header|PowerShell}}==
<
$i
}</
=={{header|Prolog}}==
If you need a stepping iterator, write one:
<
for(Lo,Hi,Step,Val) :- Step>0, plus(Lo,Step,V), V=<Hi, !, for(V,Hi,Step,Val).
example :-
for(0,10,2,Val), write(Val), write(' '), fail.
example.</
<pre>?- example.
0 2 4 6 8 10
true.</pre>
Adding the following two rules lets you go backwards too:
<
for(Hi,Lo,Step,Val) :- Step<0, plus(Hi,Step,V), Lo=<V, !, for(V,Lo,Step,Val).</
=={{header|Python}}==
{{works with|Python|2.x}}
<
print "%d," % i,
print "who do we appreciate?"</
{{works with|Python|3.x}}
<
print("%d, " % i, end="")
print("who do we appreciate?")</
{{out}}
Line 2,052 ⟶ 2,338:
The step size is specified within the loop, giving many possibilities.
<syntaxhighlight lang="quackery">
20 times [ i^ echo sp
2 step ]
Line 2,061 ⟶ 2,347:
1 56 times [ i^ echo sp
i^ swap step ]
cr</
{{Out}}
Line 2,071 ⟶ 2,357:
=={{header|R}}==
<
cat(a, ", ")
}
cat("who do we appreciate?\n")</
Here the loop may be done implicitly by first concatenating the string and then printing:
<
=={{header|Racket}}==
<
#lang racket
Line 2,088 ⟶ 2,374:
(printf "~a, " i))
(printf "who do we appreciate?~n")
</syntaxhighlight>
=={{header|Raku}}==
Line 2,116 ⟶ 2,402:
Probably the most straightforward way to do this is with a sequence. With at least two values on the left-hand side, the sequence operator (<code>...</code>) can infer an arithmetic series. (With at least three values, it can infer a geometric sequence, too.)
<syntaxhighlight lang="raku"
print "$_, ";
}
say 'whom do we appreciate?';</
But there is nothing constraining the sequence to a constant step. Here's one with a ''random'' step.
<syntaxhighlight lang="raku"
{{out|Sample output}}
Line 2,146 ⟶ 2,432:
For that matter, the iterated object doesn't need to contain numbers.
<syntaxhighlight lang="raku"
=={{header|Raven}}==
List of numbers:
<
"who do we appreciate?\n" print</
Range:
<
"who do we appreciate?\n" print</
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?
Line 2,161 ⟶ 2,447:
=={{header|REBOL}}==
<
prin rejoin [i ", "]]
print "who do we appreciate?"</
{{out}}
Line 2,170 ⟶ 2,456:
=={{header|REXX}}==
===version 1===
<
say x
end</
{{out}}
<pre>
Line 2,185 ⟶ 2,471:
===version 2===
<
say thing
end</
'''output''' is the same as above.
<br><br>
===version 3===
<
Say v
End
Say '('v'**2) is greater than 30 (30.25)'</
{{output}}
<pre>1
Line 2,205 ⟶ 2,491:
we use step keyword to define step length
in this example we print Even numbers between 0 and 10
<
for i = 0 to 10 step 2 see i + nl next
</syntaxhighlight>
{{out}}
Line 2,219 ⟶ 2,505:
we can use step with double values as well:
<
for i = 0 to 10 step 0.5 see i + nl next
</syntaxhighlight>
{{out}}
<pre>
Line 2,247 ⟶ 2,533:
</pre>
=={{header|RPL}}==
Specific increment is given as an argument to the <code>STEP</code> instruction at the end of each loop. Usually, it is a constant value, but it could be a variable if it makes sense.
≪ 1 10 '''FOR''' j
j
2 '''STEP'''
≫
=={{header|Ruby}}==
<
puts "who do we appreciate?"</
or:
<
puts "who do we appreciate?"</
or:
<
print "#{n}, "
end
puts "who do we appreciate?"</
or:
<syntaxhighlight lang="ruby">for n in 2.step(by: 2, to: 8)
print "#{n}, "
end
puts "who do we appreciate?"</syntaxhighlight>
{{out}}
<pre>
Line 2,266 ⟶ 2,563:
For Rust 1.28 and later:
<
for i in (2..=8).step_by(2) {
print!("{}", i);
}
println!("who do we appreciate?!");
}</
An alternative which also works in earlier versions of Rust:
<
let mut i = 2;
while i <= 8 {
Line 2,281 ⟶ 2,578:
}
println!("who do we appreciate?!");
}</
=={{header|Salmon}}==
<
print(x, ", ");;
print("who do we appreciate?\n");</
=={{header|SAS}}==
<
do i=1 to 10 by 2;
put i;
end;
run;</
=={{header|Sather}}==
See [[Loops/For#Sather]]: the implementation for <code>for!</code> allows to specify a step, even though the built-in <code>stepto!</code> can be used; an example of usage could be simply:
<
loop
i := for!(1, 50, 2);
Line 2,303 ⟶ 2,600:
-- i := 1.stepto!(50, 2);
#OUT + i + "\n";
end;</
(Print all odd numbers from 1 to 50)
=={{header|Scala}}==
<
Alternatively:
<
=={{header|Scheme}}==
The built-in ''for''-like form in Scheme is the ''do'' form:
<
((>= i 9)) ; exit condition
(display i) ; body
(newline))</
Some people prefer to use the recursive-style and more flexible _named let_ form:
<
(cond ((< i 9)
(display i)
(newline)
(loop (+ i 2)))))) ; tail-recursive call, won't create a new stack frame</
You can add to the language by wrapping the loop in a function:
<
(let loop ((i start))
(cond ((< i end)
Line 2,340 ⟶ 2,637:
(lambda (i)
(display i)
(newline)))</
... or in a macro, which allows for making the <code>(lambda)</code> implicit:
<
(syntax-rules ()
((for-loop index start end step body ...)
Line 2,354 ⟶ 2,651:
(for-loop i 2 9 2
(display i)
(newline))</
{{out}}
Line 2,364 ⟶ 2,661:
=={{header|Scilab}}==
{{works with|Scilab|5.5.1}}
<syntaxhighlight lang="text">for i=1:2:10
printf("%d\n",i)
end</
{{out}}
<pre>1
Line 2,375 ⟶ 2,672:
=={{header|Seed7}}==
<syntaxhighlight lang="python">
$ include "seed7_05.s7i";
const proc: main is func
Line 2,381 ⟶ 2,679:
var integer: number is 0;
begin
for number range
writeln(number);
end for;
writeln; # spacer
for number range 10 downto 0 step 2 do
writeln(number);
end for;
end func;
</syntaxhighlight>
{{out}}
<pre>
0
2
4
6
8
10
10
8
6
4
2
0
</pre>
=={{header|Sidef}}==
'''for(;;)''' loop:
<
say i
}</
'''for-in''' loop:
<
say i
}</
'''.each''' method:
<
say i
}</
=={{header|Simula}}==
<
integer i;
for i:=5 step 5 until 25 do outint(i, 5)
end</
=={{header|Slate}}==
<
inform: 'enough with the cheering already!'.</
=={{header|Smalltalk}}==
<
Transcript show: i; show ', '
].
Transcript showCr: 'enough with the cheering already!'</
=={{header|Spin}}==
Line 2,424 ⟶ 2,747:
{{works with|HomeSpun}}
{{works with|OpenSpin}}
<
_clkmode = xtal1 + pll16x
_clkfreq = 80_000_000
Line 2,440 ⟶ 2,763:
waitcnt(_clkfreq + cnt)
ser.stop
cogstop(0)</
{{out}}
<pre>
Line 2,447 ⟶ 2,770:
=={{header|SPL}}==
<
#.output(n)
<</
=={{header|SSEM}}==
Implementing loops with a step other than one is precisely as easy (or as fiddly) as implementing loops with a step equal to one. This example program uses a loop to perform integer division. It should be run with the dividend in storage location 21 and the divisor in storage location 22. To show that it works, we shall ask the machine to count from 387 in steps of -5 and to halt with the accumulator showing the number of times it has done so before producing a negative result.
<
00101000000001100000000000000000 1. c to 20
00101000000000100000000000000000 2. -20 to c
Line 2,477 ⟶ 2,800:
10100000000000000000000000000000 22. 5
00000000000000000000000000000000 23. 0
10110000000000000000000000000000 24. 13</
After executing 1,012 instructions, the computer halts with the correct quotient—77—in the accumulator.
=={{header|Stata}}==
<
display "`i'"
}
Line 2,489 ⟶ 2,812:
5
7
9</
=={{header|Swift}}==
This prints all odd digits:
<
print(i)
}</
Alternately (removed in Swift 3):
<
print(i)
}</
=={{header|Tailspin}}==
Tailspin uses streams not loops
<
1..9:3 -> !OUT::write
</syntaxhighlight>
{{out}}
<pre>
Line 2,512 ⟶ 2,835:
=={{header|Tcl}}==
<
puts -nonewline "$i, "
}
puts "enough with the cheering already!"</
=={{header|TorqueScript}}==
<
{
echo(%i);
}</
=={{header|TUSCRIPT}}==
<
$$ MODE TUSCRIPT
LOOP i=2,9,2
PRINT i
ENDLOOP
</syntaxhighlight>
{{out}}
<pre>
Line 2,543 ⟶ 2,866:
==={{header|Bourne Shell}}===
{{works with|Bourne Shell}}
<
while test $x -le 8; do
echo $x
x=`expr $x + 2` || exit $?
done</
{{works with|Bourne Shell}}
{{libheader|jot}}
<
==={{header|
<syntaxhighlight lang="ksh">x=0
while (((x += 2) <= 8))
do
print -r "$x"
done</syntaxhighlight>
{{works with|ksh93}}
<syntaxhighlight lang="ksh">for x in {2..8..2}
do
print -r "$x"
done</syntaxhighlight>
===Bourne Again Shell===
{{works with|Bourne Again SHell|3}}
<
printf "%d, " $x
done</
{{works with|Bourne Again SHell|4}}
Bash v4.0+ has inbuilt support for setting up a step value
<
do
echo $x
done</
==={{header|C Shell}}===
{{libheader|jot}}
<
echo $x
end</
=={{header|Ursa}}==
{{trans|Python}}
<
for (set i 2) (< i 9) (set i (int (+ i 2)))
out i ", " console
end for
out "who do we appreciate?" endl console</
=={{header|Vala}}==
<
stdout.printf("%d\n", i);</
=={{header|VAX Assembly}}==
<
50 D4 0002 2 clrf r0 ;init to 0.0
0004 3 loop:
Line 2,605 ⟶ 2,926:
000B 6
04 000B 7 ret
000C 8 .end main</
=={{header|VBA}}==
<
For i = 2 To 8 Step 2
Debug.Print i;
Next i
Debug.Print
End Sub</
{{out}}
<pre>
Line 2,620 ⟶ 2,941:
=={{header|VBScript}}==
<
For i = 2 To 8 Step 2
buffer = buffer & i & " "
Next
WScript.Echo buffer</
{{out}}
<pre>2 4 6 8</pre>
Line 2,630 ⟶ 2,951:
=={{header|Vedit macro language}}==
This prints all odd digits in range 1 to 9:
<
Num_Type(#1)
}</
=={{header|Verilog}}==
Imprime todos los números impares
<syntaxhighlight lang="verilog">
module main;
integer i;
Line 2,647 ⟶ 2,968:
end
endmodule
</syntaxhighlight>
=={{header|Vim Script}}==
<
echo i
endfor</
{{Out}}
Line 2,661 ⟶ 2,982:
8
10</pre>
=={{header|V (Vlang)}}==
This prints all odd digits:
<syntaxhighlight lang="v (vlang)">for i := 1; i<10; i+=2 {
println(i)
}</syntaxhighlight>
=={{header|Vorpal}}==
<
i.print()
}</
=={{header|Wart}}==
<
prn i</
=={{header|Wren}}==
There is currently no direct way to incorporate a step into a ''for'' loop but we can simulate it by declaring a second variable at the start of the loop which maps the loop variable to the value we want or we can simply use a ''while'' loop instead.
<
for (i in 1..10) {
var j = 2*i - 1
Line 2,687 ⟶ 3,014:
k = k + 2
}
System.print()</
{{out}}
<pre>
Line 2,695 ⟶ 3,022:
</pre>
<br>
{{libheader|Wren-
A further and more general approach is to use a wrapper class (such as the one in the above module) which can iterate over any sequence in a stepped fashion using Wren's ''iterator protocol''.
<
// Print odd numbers under 20.
Line 2,705 ⟶ 3,032:
// Print first plus every third element thereafter.
for (i in Stepped.new(1..20, 3)) System.write("%(i) ")
System.print()</
{{out}}
Line 2,718 ⟶ 3,045:
thus a step by 2 can be implemented like this:
<
int I;
[for I:= 2 to 8 do
Line 2,725 ⟶ 3,052:
];
Text(0, "who do we appreciate?");
]</
{{out}}
Line 2,733 ⟶ 3,060:
=={{header|zkl}}==
<
[1..10,3].pump(Console.println)</
{{out}}
<pre>
Line 2,747 ⟶ 3,074:
</pre>
A few others:
<
(0).pump(10,Console.println,fcn(n){if(n%2)return(Void.Skip); n})</
=={{
<syntaxhighlight lang="zig">
const std = @import("std");
pub fn main() !void {
const stdout_wr = std.io.getStdOut().writer();
var i: u8 = 1;
while (i < 10) : (i += 2)
try stdout_wr.print("{d}\n", .{i});
}
</syntaxhighlight>
===With for-loop===
<syntaxhighlight lang="zig">
const std = @import("std");
const stdout = @import("std").io.getStdOut().writer();
pub fn main() !void {
for (1..10) |n| {
if (n % 2 == 0) continue;
try stdout.print("{d}\n", .{n});
}
}
</syntaxhighlight>
{{out}}
<pre>
1
3
5
7
9
</pre>
|