Loops/For with a specified step: Difference between revisions

m
syntax highlighting fixup automation
(add Zig example)
m (syntax highlighting fixup automation)
Line 26:
 
=={{header|11l}}==
<langsyntaxhighlight lang="11l">L(i) (1..9).step(2)
print(i)</langsyntaxhighlight>
 
{{out}}
Line 41:
;Basic - Algol style
The opcode BXH uses 3 registers, one for index one for step and one for limit.
<langsyntaxhighlight lang="360asm">* Loops/For with a specified step 12/08/2015
LOOPFORS CSECT
USING LOOPFORS,R12
Line 60:
XDEC DS CL12 temp for edit
YREGS
END LOOPFORS</langsyntaxhighlight>
{{out}}
<pre>
Line 67:
;Basic - Fortran style
The opcode BXLE uses 3 registers, one for index one for step and one for limit.
<langsyntaxhighlight lang="360asm">* == Fortran style ============== test at the end
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</langsyntaxhighlight>
;Structured Macros
<langsyntaxhighlight lang="360asm">* == Algol style ================ test at the beginning
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</langsyntaxhighlight>
;Structured Macros HLASM
<langsyntaxhighlight lang="360asm">* == Fortran style ============== test at the end
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</langsyntaxhighlight>
=={{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.
 
<langsyntaxhighlight lang="6502asm">define ArrayPointerLo $00 ;define some helpful labels.
define ArrayPointerHi $01
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 147:
bpl loop_fill ;if destination index equals #$FF, we are done.
 
brk ;end of program</langsyntaxhighlight>
 
{{out}}
Line 156:
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<syntaxhighlight lang="aarch64 assembly">
<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>
</lang>
 
=={{header|Action!}}==
<langsyntaxhighlight Actionlang="action!">PROC Main()
BYTE i
 
Line 219:
PrintF("%B ",i)
OD
RETURN</langsyntaxhighlight>
{{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.
 
<langsyntaxhighlight lang="ada">with Loopers;
use Loopers;
 
Line 297:
end Loopers;
 
</syntaxhighlight>
</lang>
 
=={{header|Agena}}==
Tested with Agena 2.9.5 Win32
<langsyntaxhighlight lang="agena">for i from 2 to 8 by 2 do
print( i )
od</langsyntaxhighlight>
 
=={{header|Aime}}==
<langsyntaxhighlight lang="aime">integer i;
 
i = 0;
Line 314:
}
 
o_newline();</langsyntaxhighlight>
 
=={{header|ALGOL 60}}==
Line 357:
 
=={{header|ALGOL W}}==
<langsyntaxhighlight lang="algolw">begin
for i := 3 step 2 until 9 do write( i )
end.</langsyntaxhighlight>
 
=={{header|ALGOL-M}}==
<langsyntaxhighlight lang="algol">BEGIN
INTEGER I;
FOR I := 1 STEP 3 UNTIL 19 DO
WRITE( I );
END</langsyntaxhighlight>
 
=={{header|AppleScript}}==
 
<langsyntaxhighlight AppleScriptlang="applescript">repeat with i from 2 to 10 by 2
log i
end repeat</langsyntaxhighlight>
 
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<syntaxhighlight lang="arm assembly">
<lang ARM Assembly>
 
/* ARM assembly Raspberry PI */
Line 516:
 
 
</syntaxhighlight>
</lang>
 
=={{header|Arturo}}==
<langsyntaxhighlight lang="rebol">loop 0..10 .step:2 'i [
print i
]</langsyntaxhighlight>
{{out}}
<pre>0
Line 531:
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight AutoHotkeylang="autohotkey">SetBatchLines, -1
iterations := 5
step := 10
Line 541:
MsgBox, % A_Index
}
ExitApp</langsyntaxhighlight>
 
=={{header|Avail}}==
<langsyntaxhighlight Availlang="avail">For each i from 0 to 100 by 7 do [Print: “i” ++ " is a multiple of 7!\n";];</langsyntaxhighlight>
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}}==
 
<langsyntaxhighlight lang="awk">BEGIN {
for (i= 2; i <= 8; i = i + 2) {
print i
}
print "Ain't never too late!"
}</langsyntaxhighlight>
 
Line 561:
 
This example increments by 2:
<langsyntaxhighlight lang="axe">For(I,0,10)
Disp I▶Dec,i
I++
End</langsyntaxhighlight>
 
=={{header|BASIC}}==
==={{header|Applesoft BASIC}}===
<langsyntaxhighlight lang="qbasic">FOR I = 2 TO 8 STEP 2 : PRINT I; ", "; : NEXT I : PRINT "WHO DO WE APPRECIATE?"</langsyntaxhighlight>
 
==={{header|BaCon}}===
This prints all odd digits:
<langsyntaxhighlight lang="freebasic">
FOR i = 1 TO 10 STEP 2
PRINT i
NEXT</langsyntaxhighlight>
 
==={{header|Basic|QuickBasic}}===
{{works with|QuickBasic|4.5}}
<langsyntaxhighlight lang="qbasic">for i = 2 to 8 step 2
print i; ", ";
next i
print "who do we appreciate?"</langsyntaxhighlight>
 
==={{header|BASIC256}}===
<langsyntaxhighlight BASIC256lang="basic256">for i = 1 to 21 step 2
print i; " ";
next i
end</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
<langsyntaxhighlight lang="bbcbasic"> FOR n = 2 TO 8 STEP 1.5
PRINT n
NEXT</langsyntaxhighlight>
{{out}}
<pre>
Line 604:
 
==={{header|Commodore BASIC}}===
<langsyntaxhighlight lang="qbasic">10 FOR I = 1 TO 10 STEP 2
20 PRINT I
30 NEXT</langsyntaxhighlight>
 
==={{header|FreeBASIC}}===
<langsyntaxhighlight lang="freebasic">' FB 1.05.0 Win64
 
For i As Integer = 1 To 21 Step 2
Line 615:
Next
Print
Sleep</langsyntaxhighlight>
 
==={{header|FutureBasic}}===
<langsyntaxhighlight lang="futurebasic">
include "ConsoleWindow"
 
Line 634:
print s(i);
next
</syntaxhighlight>
</lang>
Output:
<pre>
Line 643:
==={{header|Gambas}}===
'''[https://gambas-playground.proko.eu/?gist=cdd9b10b64ac4d78b75c364061f25641 Click this link to run this code]'''
<langsyntaxhighlight lang="gambas">Public Sub Main()
Dim siCount As Short
 
Line 650:
Next
 
End</langsyntaxhighlight>
<pre>
Gambas is great!
Line 665:
 
==={{header|IS-BASIC}}===
<langsyntaxhighlight ISlang="is-BASICbasic">100 FOR I=1 TO 10 STEP 2
110 PRINT I
120 NEXT</langsyntaxhighlight>
 
==={{header|Liberty BASIC}}===
<syntaxhighlight lang="lb">
<lang lb>
for i = 2 to 8 step 2
print i; ", ";
Line 676:
print "who do we appreciate?"
end
</syntaxhighlight>
</lang>
 
==={{header|Microsoft Small Basic}}===
<langsyntaxhighlight lang="microsoftsmallbasic">
For i = 0 To 100 Step 2
TextWindow.WriteLine(i)
EndFor
</syntaxhighlight>
</lang>
 
==={{header|NS-HUBASIC}}===
<langsyntaxhighlight NSlang="ns-HUBASIChubasic">10 FOR I=1 TO 10 STEP 2
20 PRINT I
30 NEXT</langsyntaxhighlight>
 
{{out}}
Line 696:
 
==={{header|PureBasic}}===
<langsyntaxhighlight PureBasiclang="purebasic">For i = -15 To 25 Step 5
Debug i
Next i</langsyntaxhighlight>
{{out}}
<pre>
Line 713:
 
Decrementing with step
<langsyntaxhighlight PureBasiclang="purebasic">For i = 10 To 0 Step -2
Debug i
Next ; i is optional</langsyntaxhighlight>
{{out}}
<pre>
Line 727:
 
==={{header|QB64}}===
<langsyntaxhighlight Qbasiclang="qbasic">For i% = 0 to 10 Step 2
Print i%
Next 'To be more explicit use "Next i%"
</syntaxhighlight>
</lang>
{{out}}
A newline is inserted automatically after the Print statement
Line 743:
 
We can also decrement with stepping
<langsyntaxhighlight Qbasiclang="qbasic">For i% = 10 to 0 Step -2
Print i%
Next i
</syntaxhighlight>
</lang>
{{out}}
 
Line 759:
 
==={{header|Run BASIC}}===
<langsyntaxhighlight lang="runbasic">for i = 2 to 8 step 2
print i; ", ";
next i
print "who do we appreciate?"</langsyntaxhighlight>
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?</pre>
Line 769:
Notice how the ampersand (&) is used to concatenate the variable with the text instead of a semicolon.
 
<langsyntaxhighlight lang="qbasic">FOR n = 2 TO 8 STEP 2
PRINT n & "..";
NEXT n
PRINT "who do we appreciate?"
END</langsyntaxhighlight>
 
==={{header|TI-83 BASIC}}===
Prints numbers from 0 to 100 stepping by 5.
<langsyntaxhighlight lang="ti83b">:For(I,0,100,5
:Disp I
:End</langsyntaxhighlight>
 
==={{header|TI-89 BASIC}}===
<langsyntaxhighlight lang="ti89b">Local i
For i, 0, 100, 5
Disp i
EndFor</langsyntaxhighlight>
 
==={{header|True BASIC}}===
<syntaxhighlight lang="qbasic">
<lang Qbasic>
FOR i = 1 TO 21 STEP 2
PRINT i; " ";
NEXT i
END
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 800:
Since TrueBasic does not distinguish between integer or real values, we can increment using decimal values as well
 
<syntaxhighlight lang="qbasic">
<lang Qbasic>
FOR i = 1 TO 5 STEP .5
PRINT i
NEXT i
END
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 821:
==={{header|Visual Basic}}===
{{works with|Visual Basic|VB6 Standard}}
<langsyntaxhighlight lang="vb">Sub MyLoop()
For i = 2 To 8 Step 2
Debug.Print i;
Next i
Debug.Print
End Sub</langsyntaxhighlight>
{{out}}
<pre>
Line 834:
==={{header|Visual Basic .NET}}===
{{works with|Visual Basic .NET|.NET Core 3.0}}
<langsyntaxhighlight lang="vbnet">Imports System.Console
Module Program
Sub Main()
Line 842:
WriteLine("who do we appreciate?")
End Sub
End Module</langsyntaxhighlight>
{{out}}
<pre>
Line 849:
 
{{works with|Visual Basic .NET|2011}}
<langsyntaxhighlight lang="vbnet">Public Class FormPG
Private Sub FormPG_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer, buffer As String
Line 858:
Debug.Print(buffer)
End Sub
End Class</langsyntaxhighlight>
{{out}}
<pre>
Line 866:
==={{header|XBasic}}===
{{works with|Windows XBasic}}
<langsyntaxhighlight lang="xbasic">
PROGRAM "forby"
 
Line 877:
END FUNCTION
END PROGRAM
</syntaxhighlight>
</lang>
 
==={{header|Yabasic}}===
<langsyntaxhighlight Yabasiclang="yabasic">for i = 1 to 21 step 2
print i, " ";
next i
print
end</langsyntaxhighlight>
 
==={{header|ZX Spectrum Basic}}===
<langsyntaxhighlight lang="basic">10 FOR l = 2 TO 8 STEP 2
20 PRINT l; ", ";
30 NEXT l
40 PRINT "Who do we appreciate?"</langsyntaxhighlight>
 
=={{header|Batch File}}==
<langsyntaxhighlight lang="dos">@echo off
for /l %%A in (1,2,10) do (
echo %%A
)</langsyntaxhighlight>
{{Out}}
<pre>>Sample.BAT
Line 908:
 
=={{header|bc}}==
<langsyntaxhighlight lang="bc">for (i = 2; i <= 10; i += 2) {
i
}</langsyntaxhighlight>
 
=={{header|Befunge}}==
{{trans|C}}
<langsyntaxhighlight lang="befunge">1 >:.55+,v
@_^#`9:+2<</langsyntaxhighlight>
 
=={{header|C}}==
This prints all odd digits:
<langsyntaxhighlight lang="c">int i;
for(i = 1; i < 10; i += 2)
printf("%d\n", i);</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
 
<langsyntaxhighlight lang="csharp">using System;
class Program {
Line 935:
Console.WriteLine("who do we appreciate?");
}
}</langsyntaxhighlight>
 
=={{header|C++}}==
This prints all odd digits:
<langsyntaxhighlight lang="cpp">for (int i = 1; i < 10; i += 2)
std::cout << i << std::endl;</langsyntaxhighlight>
 
=={{header|Ceylon}}==
<langsyntaxhighlight lang="ceylon">shared void run() {
for(i in (2..8).by(2)) {
Line 949:
}
print("who do we appreciate?");
}</langsyntaxhighlight>
 
=={{header|Chapel}}==
<langsyntaxhighlight lang="chapel">
// Can be set on commandline via --N=x
config const N = 3;
Line 959:
writeln(i);
}
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 976:
=={{header|ChucK}}==
Chuck style
<syntaxhighlight lang="c">
<lang c>
SinOsc s => dac;
 
Line 984:
100::ms => now;
}
</syntaxhighlight>
</lang>
General purpose style:
<syntaxhighlight lang="c">
<lang c>
for (0 => int i; i < 2000; 5 +=> i )
{
<<< i >>>;
}
</syntaxhighlight>
</lang>
 
=={{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.
<langsyntaxhighlight Clojurelang="clojure">(loop [i 0]
(println i)
(when (< i 10)
Line 1,002:
 
(doseq [i (range 0 12 2)]
(println i))</langsyntaxhighlight>
 
=={{header|CLU}}==
<langsyntaxhighlight lang="clu">% This prints all odd digits
 
start_up = proc ()
Line 1,013:
stream$putl(po, int$unparse(i))
end
end start_up</langsyntaxhighlight>
 
=={{header|COBOL}}==
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Display-Odd-Nums.
 
Line 1,029:
 
GOBACK
.</langsyntaxhighlight>
 
=={{header|ColdFusion}}==
<langsyntaxhighlight lang="cfm">
<cfloop from="0" to="99" step="3" index="i">
<Cfoutput>#i#</Cfoutput>
</cfloop>
</syntaxhighlight>
</lang>
 
=={{header|Common Lisp}}==
<langsyntaxhighlight lang="lisp">
(format t "~{~S, ~}who do we appreciate?~%" (loop for i from 2 to 8 by 2 collect i))
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,049:
 
=== Using DO ===
<langsyntaxhighlight lang="lisp">
(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>
</lang>
 
{{out}}
Line 1,069:
 
=={{header|D}}==
<langsyntaxhighlight lang="d">import std.stdio, std.range;
 
void main() {
Line 1,079:
foreach (i; iota(1, 10, 2))
writeln(i);
}</langsyntaxhighlight>
{{out}}
<pre>1
Line 1,093:
 
=={{header|Dao}}==
<langsyntaxhighlight lang="dao"># first value: 1
# max value: 9
# step: 2
for( i = 1 : 2 : 9 ) io.writeln( i )</langsyntaxhighlight>
 
=={{header|Delphi}}==
Line 1,102:
It would have to be simulated using something like a While loop.
 
<langsyntaxhighlight Delphilang="delphi">program LoopWithStep;
{$APPTYPE CONSOLE}
Line 1,114:
Inc(i, 2);
end;
end.</langsyntaxhighlight>
{{out}}
<pre>2
Line 1,122:
 
=={{header|Dragon}}==
<langsyntaxhighlight lang="dragon">for(i = 2, i <= 8,i += 2){
show ", " + i
}
showln "who do we appreciate?"</langsyntaxhighlight>
 
=={{header|DWScript}}==
<langsyntaxhighlight Delphilang="delphi">var i : Integer;
 
for i := 2 to 8 step 2 do
PrintLn(i);</langsyntaxhighlight>
 
{{out}}
Line 1,140:
 
=={{header|Dyalect}}==
<langsyntaxhighlight lang="dyalect">//Prints odd numbers from 1 to 10
for i in 1^2..10 {
print(i)
}</langsyntaxhighlight>
 
=={{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:
<langsyntaxhighlight lang="e">var i := 2
while (i <= 8) {
print(`$i, `)
i += 2
}
println("who do we appreciate?")</langsyntaxhighlight>
 
A programmer frequently in need of iteration with an arbitrary step should define an appropriate range object:
 
<langsyntaxhighlight lang="e">def stepRange(low, high, step) {
def range {
to iterate(f) {
Line 1,173:
print(`$i, `)
}
println("who do we appreciate?")</langsyntaxhighlight>
 
The least efficient, but perhaps convenient, solution is to iterate over successive integers and discard undesired ones:
 
<langsyntaxhighlight lang="e">for i ? (i %% 2 <=> 0) in 2..8 {
print(`$i, `)
}
println("who do we appreciate?")</langsyntaxhighlight>
 
=={{header|EchoLisp}}==
Steps may be integers, float, rationals.
<langsyntaxhighlight lang="lisp">
(for ((i (in-range 0 15 2))) (write i))
0 2 4 6 8 10 12 14
Line 1,193:
(for ((x (in-range 0 15 PI))) (write x))
0 3.141592653589793 6.283185307179586 9.42477796076938 12.566370614359172
</syntaxhighlight>
</lang>
 
=={{header|Ela}}==
 
<langsyntaxhighlight lang="ela">open monad io
for m s n | n > m = do return ()
Line 1,204:
for m s (n+s)
_ = for 10 2 0 ::: IO</langsyntaxhighlight>
 
{{out}}
Line 1,216:
=={{header|Elena}}==
ELENA 4.x
<langsyntaxhighlight lang="elena">public program()
{
for(int i := 2, i <= 8, i += 2 )
Line 1,222:
console.writeLine:i
}
}</langsyntaxhighlight>
 
=={{header|Elixir}}==
<langsyntaxhighlight lang="elixir">defmodule Loops do
def for_step(n, step) do
IO.inspect Enum.take_every(1..n, step)
Line 1,231:
end
 
Loops.for_step(20, 3)</langsyntaxhighlight>
 
{{out}}
Line 1,238:
</pre>
or
<langsyntaxhighlight lang="elixir">iex(1)> Stream.iterate(1, &(&1+2)) |> Enum.take(10)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]</langsyntaxhighlight>
 
=={{header|Erlang}}==
<langsyntaxhighlight lang="erlang">%% Implemented by Arjun Sunel
%% for_loop/4 by Bengt Kleberg.
-module(loop_step).
Line 1,259:
for_loop( I+Step, End, Step, Do );
for_loop( _I, _End, _Step, _Do ) -> ok.
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,267:
 
=={{header|ERRE}}==
<syntaxhighlight lang="erre">
<lang ERRE>
FOR N=2 TO 8 STEP 1.5 DO
PRINT(N)
END FOR
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 1,283:
=={{header|Euphoria}}==
 
<syntaxhighlight lang="euphoria">
<lang Euphoria>
for i = 1 to 10 by 2 do
? i
end for
</syntaxhighlight>
</lang>
As a note, <code>? something</code> is shorthand for:
<syntaxhighlight lang="euphoria">
<lang Euphoria>
print(1, something)
puts(1, "\n")
</syntaxhighlight>
</lang>
 
<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,299:
 
=={{header|F_Sharp|F#}}==
<langsyntaxhighlight lang="fsharp">for i in 2..2..8 do
printf "%d, " i
printfn "done"</langsyntaxhighlight>
 
{{out}}
Line 1,309:
=={{header|Factor}}==
Prints odd digits.
<langsyntaxhighlight lang="factor">1 10 2 <range> [ . ] each</langsyntaxhighlight>
 
=={{header|FALSE}}==
<langsyntaxhighlight lang="false">2[$9\>][$.", "2+]#"who do we appreciate!"</langsyntaxhighlight>
 
=={{header|Fantom}}==
 
<langsyntaxhighlight lang="fantom">
class Main
{
Line 1,328:
}
}
</syntaxhighlight>
</lang>
 
=={{header|FBSL}}==
<langsyntaxhighlight lang="qbasic">#APPTYPE CONSOLE
 
DIM n AS INTEGER
Line 1,340:
PRINT ", who will we obliterate?"
PAUSE
</syntaxhighlight>
</lang>
 
=={{header|Fermat}}==
<langsyntaxhighlight lang="fermat">for i = 1 to 100 by 13 do !i;!' '; od</langsyntaxhighlight>
{{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.
<langsyntaxhighlight lang="focal">FOR I = 1,3,10; TYPE I, !</langsyntaxhighlight>
 
=={{header|Forth}}==
<langsyntaxhighlight lang="forth">: test
9 2 do
i .
2 +loop
." who do we appreciate?" cr ;</langsyntaxhighlight>
 
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
<langsyntaxhighlight lang="fortran">do i = 1,10,2
print *, i
end do</langsyntaxhighlight>
 
{{works with|Fortran|77 and later}}
<langsyntaxhighlight lang="fortran"> PROGRAM STEPFOR
INTEGER I
 
Line 1,373:
 
STOP
END</langsyntaxhighlight>
 
=={{header|Frink}}==
<langsyntaxhighlight lang="frink">
for a = 1 to 100 step 5
println[a]
</syntaxhighlight>
</lang>
 
All values may have units of measure, in which case a specified step is required:
<langsyntaxhighlight lang="frink">
for a = 1 km to 3 km step 1 meter
println[a]
</syntaxhighlight>
</lang>
 
=={{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.
<langsyntaxhighlight lang="gap">for i in [1, 3 .. 11] do
Print(i, "\n");
od;
Line 1,399:
9
11
</syntaxhighlight>
</lang>
 
=={{header|GML}}==
<langsyntaxhighlight GMLlang="gml">for(i = 0; i < 10; i += 2)
show_message(string(i))</langsyntaxhighlight>
 
=={{header|Go}}==
This prints all odd digits:
<langsyntaxhighlight lang="go">for i := 1; i < 10; i += 2 {
fmt.Printf("%d\n", i)
}</langsyntaxhighlight>
 
=={{header|Groovy}}==
"for" loop:
<langsyntaxhighlight lang="groovy">for(i in (2..9).step(2)) {
print "${i} "
}
println "Who do we appreciate?"</langsyntaxhighlight>
 
"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.
<langsyntaxhighlight lang="groovy">(2..9).step(2).each {
print "${it} "
}
println "Who do we appreciate?"</langsyntaxhighlight>
 
{{out}}
Line 1,430:
 
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">import Control.Monad (forM_)
main = do forM_ [2,4..8] (\x -> putStr (show x ++ ", "))
putStrLn "who do we appreciate?"</langsyntaxhighlight>
 
=={{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.
 
<langsyntaxhighlight lang="haxe">class Step {
var end:Int;
var step:Int;
Line 1,459:
Sys.println('WHOM do we appreciate? GRAMMAR! GRAMMAR! GRAMMAR!');
}
}</langsyntaxhighlight>
 
{{out}}
Line 1,465:
 
=={{header|hexiscript}}==
<langsyntaxhighlight lang="hexiscript">for let i 0; i <= 50; let i (i + 5)
println i
endfor</langsyntaxhighlight>
 
=={{header|HicEst}}==
<langsyntaxhighlight lang="hicest">DO i = 1, 6, 1.25 ! from 1 to 6 step 1.25
WRITE() i
ENDDO</langsyntaxhighlight>
 
=={{header|HolyC}}==
This prints all odd digits:
<langsyntaxhighlight lang="holyc">U8 i;
for (i = 1; i < 10; i += 2)
Print("%d\n", i);</langsyntaxhighlight>
 
=={{header|Hy}}==
<langsyntaxhighlight lang="clojure">(for [i (range 1 10 2)] (print i))</langsyntaxhighlight>
 
=={{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="icon">
<lang Icon>
every 1 to 10 by 2 # the simplest case that satisfies the task, step by 2
 
Line 1,500:
 
every writes( (TO_BY_EXPR) | "\n", " " ) # if you want to see how any of these work
</syntaxhighlight>
</lang>
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.
Line 1,507:
 
=={{header|Io}}==
<langsyntaxhighlight Iolang="io">for(i,2,8,2,
write(i,", ")
)
write("who do we appreciate?")</langsyntaxhighlight>
 
=={{header|J}}==
<langsyntaxhighlight Jlang="j"> ' who do we appreciate?' ,~ ": 2 * >: i.4
2 4 6 8 who do we appreciate?</langsyntaxhighlight>
 
Or, using an actual for loop:
 
<langsyntaxhighlight Jlang="j"> 3 :0''
r=.$0
for_n. 2 * >: i.4 do.
Line 1,525:
' who do we appreciate?' ,~ ":n
)
2 4 6 8 who do we appreciate?</langsyntaxhighlight>
 
That said, note also that J's '''steps''' verb lets us specify how many steps to take:
 
<langsyntaxhighlight Jlang="j"> i:8
_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</langsyntaxhighlight>
 
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:
 
<langsyntaxhighlight Jlang="j"> thru=: <./ + i.@(+*)@-~</langsyntaxhighlight>
 
Example use:
 
<langsyntaxhighlight Jlang="j"> (#~ 0 = 2&|) 1 thru 20
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</langsyntaxhighlight>
 
And, of course, like filtering in any language, this approach supports non-constant step sizes:
 
<langsyntaxhighlight Jlang="j"> (#~ 1&p:) 1 thru 20
2 3 5 7 11 13 17 19</langsyntaxhighlight>
 
=={{header|Java}}==
<langsyntaxhighlight lang="java">for(int i = 2; i <= 8;i += 2){
System.out.print(i + ", ");
}
System.out.println("who do we appreciate?");</langsyntaxhighlight>
 
=={{header|JavaScript}}==
<langsyntaxhighlight lang="javascript">var output = '',
i;
for (i = 2; i <= 8; i += 2) {
Line 1,565:
}
output += 'who do we appreciate?';
document.write(output);</langsyntaxhighlight>
 
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,571:
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:
 
<langsyntaxhighlight JavaScriptlang="javascript">// range(iMax)
// range(iMin, iMax)
// range(iMin, iMax, dI)
Line 1,591:
console.log(
range(2, 8, 2).join(', ') + ', who do we appreciate ?'
);</langsyntaxhighlight>
 
Output:
Line 1,597:
 
=={{header|jq}}==
To generate the stream: 2,4,6,8:<langsyntaxhighlight lang="jq"># If your version of jq does not have range/3, use this:
def range(m;n;step): range(0; ((n-m)/step) ) | m + (. * step);
 
range(2;9;2)</langsyntaxhighlight>
'''Example''':
<langsyntaxhighlight lang="jq">reduce range(2;9;2) as $i
(""; . + "\($i), ") +
"whom do we appreciate?"</langsyntaxhighlight>
 
=={{header|Julia}}==
<langsyntaxhighlight lang="julia">for i in 2:2:8
print(i, ", ")
end
println("whom do we appreciate?")</langsyntaxhighlight>
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.0.6
 
fun main(args: Array<String>) {
for (i in 1 .. 21 step 2) print("$i ")
}</langsyntaxhighlight>
 
{{out}}
Line 1,628:
 
=={{header|Lambdatalk}}==
<langsyntaxhighlight lang="scheme">
{def loops_for_with_a_specified_step
{lambda {:a :b :step}
Line 1,643:
{S.map {lambda {:i} :i} {S.serie 0 9 2}}
-> 0 2 4 6 8
</syntaxhighlight>
</lang>
 
=={{header|Lang5}}==
<langsyntaxhighlight lang="lang5">: <range> over iota swap * rot + tuck swap <= select ; : tuck swap over ;
: >>say.(*) . ;
1 10 2 <range> >>say.</langsyntaxhighlight>
 
=={{header|langur}}==
<langsyntaxhighlight lang="langur">for .i = 1; .i < 10; .i += 2 {
writeln .i
}</langsyntaxhighlight>
 
{{out}}
Line 1,663:
 
=={{header|Lasso}}==
<langsyntaxhighlight Lassolang="lasso">loop(-to=100, -from=1, -by=2) => {^
loop_count
'\r' // for formatting
^}</langsyntaxhighlight>
 
=={{header|LIL}}==
The '''inc''' command accepts a value to add to the variable, 1 if not specified.
<langsyntaxhighlight lang="tcl">for {set i 1} {$i < 15} {inc i 3} {print $i}</langsyntaxhighlight>
{{out}}
<pre># for {set i 1} {$i < 15} {inc i 3} {print $i}
Line 1,682:
=={{header|Lingo}}==
Lingo loops don't support a "step" parameter, so it has to be implemented manually:
<langsyntaxhighlight lang="lingo">step = 3
repeat with i = 0 to 10
put i
i = i + (step-1)
end repeat</langsyntaxhighlight>
{{out}}
<pre>
Line 1,696:
 
=={{header|Lisaac}}==
<langsyntaxhighlight Lisaaclang="lisaac">1.to 9 by 2 do { i : INTEGER;
i.print;
'\n'.print;
};</langsyntaxhighlight>
 
=={{header|LiveCode}}==
<langsyntaxhighlight LiveCodelang="livecode">repeat with n = 0 to 10 step 2
put n after loopn
if n is not 10 then put comma after loopn
end repeat
put loopn</langsyntaxhighlight>
Output<syntaxhighlight lang LiveCode="livecode">0,2,4,6,8,10</langsyntaxhighlight>
 
=={{header|Logo}}==
<langsyntaxhighlight lang="logo">for [i 2 8 2] [type :i type "|, |] print [who do we appreciate?]</langsyntaxhighlight>
 
=={{header|Lua}}==
<langsyntaxhighlight lang="lua">
for i=2,9,2 do
print(i)
end
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,734:
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">
<lang M2000 Interpreter>
Module LoopFor {
Locale 1036
Line 1,755:
}
LoopFor
</syntaxhighlight>
</lang>
{{Out}}
<pre>
Line 1,762:
</pre>
===Iterator step 2===
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
a=("A", "B", "C", "D", "E", "F", "Z")
k=Each(a)
Line 1,778:
}
Print
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 1,786:
 
=={{header|M4}}==
<langsyntaxhighlight M4lang="m4">define(`for',
`ifelse($#,0,``$0'',
`ifelse(eval($2<=$3),1,
Line 1,793:
for(`x',`1',`5',`3',`x
')
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,802:
 
=={{header|Maple}}==
<langsyntaxhighlight Maplelang="maple">for i from 2 to 8 by 2 do
i;
end do;</langsyntaxhighlight>
{{out}}
<pre>
Line 1,814:
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">Do[
<lang Mathematica>Do[
Print[i],
{i, 1, 20, 4}]</langsyntaxhighlight>
{{out}}
<pre>1
Line 1,826:
=={{header|MATLAB}} / {{header|Octave}}==
 
<langsyntaxhighlight Matlablang="matlab"> for k = 0:10:100,
printf('%d\n',k)
end; </langsyntaxhighlight>
 
A vectorized version of the code is
 
<langsyntaxhighlight Matlablang="matlab"> printf('%d\n',0:10:100); </langsyntaxhighlight>
 
=={{header|Maxima}}==
<langsyntaxhighlight lang="maxima">for i: 1 step 2 thru 10 do print(i);
/* 1
3
5
7 */</langsyntaxhighlight>
 
=={{header|MAXScript}}==
<langsyntaxhighlight MAXScriptlang="maxscript">for i = 0 to 10 by 2 do format "%\n" i</langsyntaxhighlight>
Output:
<syntaxhighlight lang="maxscript">
<lang MAXScript>
0
2
Line 1,852:
10
OK
</syntaxhighlight>
</lang>
 
=={{header|min}}==
Printing the even numbers in <tt>[0,10)</tt>:
{{works with|min|0.19.6}}
<langsyntaxhighlight lang="min">0 (dup 10 >=) 'pop (puts 2 +) () linrec</langsyntaxhighlight>
 
=={{header|MiniScript}}==
<langsyntaxhighlight MiniScriptlang="miniscript">for i in range(1,20,4)
print i
end for</langsyntaxhighlight>
 
{{out}}
Line 1,872:
 
=={{header|МК-61/52}}==
<syntaxhighlight lang="text">1 П0 ИП0 3 + П0 1 0 - x#0
02 С/П</langsyntaxhighlight>
 
In this example, the step is 3, the lowest value is 1 and the upper limit is 10.
 
=={{header|Modula-2}}==
<langsyntaxhighlight lang="modula2">MODULE ForBy;
IMPORT InOut;
 
Line 1,889:
InOut.WriteLn
END
END ForBy.</langsyntaxhighlight>
 
=={{header|Modula-3}}==
<langsyntaxhighlight lang="modula3">FOR i := 1 TO 100 BY 2 DO
IO.Put(Fmt.Int(i) & " ");
END;</langsyntaxhighlight>
 
=={{header|MUMPS}}==
<langsyntaxhighlight MUMPSlang="mumps">FOR I=65:3:122 DO
.WRITE $CHAR(I)," "</langsyntaxhighlight>
{{out}}
<pre>A D G J M P S V Y \ _ b e h k n q t w z</pre>
 
=={{header|Nemerle}}==
<langsyntaxhighlight Nemerlelang="nemerle">for (i = 2; i <= 8; i +=2)</langsyntaxhighlight>
<langsyntaxhighlight Nemerlelang="nemerle">foreach (i in [2, 4 .. 8])</langsyntaxhighlight>
 
=={{header|NetRexx}}==
<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref savelog symbols nobinary
 
Line 1,916:
say i_.format(3, 1) || '\0'
end i_
say</langsyntaxhighlight>
{{out}}
<pre>D:\>java lst
Line 1,927:
The increment step of the Never ''for'' expression can be simple or complex and need not be contiguous.
 
<langsyntaxhighlight lang="fsharp">for (i = 0; i < 10; i += 3)</langsyntaxhighlight>
 
=={{header|NewLISP}}==
<langsyntaxhighlight NewLISPlang="newlisp">(for (i 0 10 2)
(println i))</langsyntaxhighlight>
 
=={{header|Nim}}==
<langsyntaxhighlight lang="nim">for x in countup(1, 10, 4): echo x</langsyntaxhighlight>
{{out}}
<pre>10
Line 1,943:
=={{header|Oberon-2}}==
Works with oo2c Version 2
<langsyntaxhighlight lang="oberon2">
MODULE LoopForStep;
IMPORT
Line 1,958:
END
END LoopForStep.
</syntaxhighlight>
</lang>
Output:
<pre>
Line 1,972:
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="objeck">
for(i := 0; i < 10; i += 2;) {
i->PrintLine();
};
</syntaxhighlight>
</lang>
 
=={{header|OCaml}}==
<langsyntaxhighlight lang="ocaml"># let for_step a b step fn =
let rec aux i =
if i <= b then begin
Line 1,996:
6
8
- : unit = ()</langsyntaxhighlight>
 
=={{header|Octave}}==
<langsyntaxhighlight lang="octave">for i = 1:2:10
disp(i)
endfor</langsyntaxhighlight>
 
=={{header|Oforth}}==
 
<langsyntaxhighlight Oforthlang="oforth"> 1 100 2 step: i [ i println ]</langsyntaxhighlight>
 
=={{header|Openscad}}==
 
<langsyntaxhighlight lang="openscad">/* Loop from 3 to 9 in steps of 2 */
 
for ( l = [3:2:9] ) {
echo (l);
}
echo ("on a double white line.");</langsyntaxhighlight>
 
=={{header|Oz}}==
<langsyntaxhighlight lang="oz">for I in 2..8;2 do
{System.show I}
end
{System.show done}
</syntaxhighlight>
</lang>
 
=={{header|Panda}}==
Panda doesn't natively have a number generator with steps, so let's add it.
<langsyntaxhighlight lang="panda">fun for(from,to,step) type integer,integer,integer->integer
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)</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
<langsyntaxhighlight lang="parigp">forstep(n=1,10,2,print(n))</langsyntaxhighlight>
 
The <code>forstep</code> construct is actually more powerful.
For example, to print numbers with last digit relatively prime to 10:
<langsyntaxhighlight lang="parigp">forstep(n=1,100,[2,4,2,2],print(n))</langsyntaxhighlight>
 
=={{header|Pascal}}==
Line 2,043:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">for($i=2; $i <= 8; $i += 2) {
print "$i, ";
}
print "who do we appreciate?\n";</langsyntaxhighlight>
 
=={{header|Phix}}==
{libheader|Phix/basics}}
<!--<langsyntaxhighlight Phixlang="phix">-->
<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>
<!--</langsyntaxhighlight>-->
 
=={{header|PHP}}==
<langsyntaxhighlight lang="php"><?php
foreach (range(2, 8, 2) as $i)
echo "$i, ";
echo "who do we appreciate?\n";
?></langsyntaxhighlight>
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?</pre>
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">(for (N 1 (> 10 N) (+ N 2))
(printsp N) )</langsyntaxhighlight>
 
=={{header|Pike}}==
<langsyntaxhighlight lang="pike">int main() {
for(int i = 2; i <= 16; i=i+2) {
write(i + "\n");
}
}</langsyntaxhighlight>
 
=={{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.
<langsyntaxhighlight lang="pilot">R : Prints the odd numbers less than 10.
C :i = 1
*Loop
Line 2,085:
C :i = i + 2
J ( i < 10 ) :*Loop
END:</langsyntaxhighlight>
 
=={{header|PL/I}}==
<syntaxhighlight lang="pl/i">
<lang PL/I>
declare (n, i) fixed binary;
 
Line 2,095:
put skip list (i);
end;
</syntaxhighlight>
</lang>
 
=={{header|PowerShell}}==
<langsyntaxhighlight lang="powershell">for ($i = 0; $i -lt 10; $i += 2) {
$i
}</langsyntaxhighlight>
 
=={{header|Prolog}}==
If you need a stepping iterator, write one:
<langsyntaxhighlight lang="prolog">for(Lo,Hi,Step,Lo) :- Step>0, Lo=<Hi.
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.</langsyntaxhighlight>
<pre>?- example.
0 2 4 6 8 10
true.</pre>
Adding the following two rules lets you go backwards too:
<langsyntaxhighlight lang="prolog">for(Hi,Lo,Step,Hi) :- Step<0, Lo=<Hi.
for(Hi,Lo,Step,Val) :- Step<0, plus(Hi,Step,V), Lo=<V, !, for(V,Lo,Step,Val).</langsyntaxhighlight>
 
=={{header|Python}}==
{{works with|Python|2.x}}
<langsyntaxhighlight lang="python">for i in xrange(2, 9, 2):
print "%d," % i,
print "who do we appreciate?"</langsyntaxhighlight>
 
{{works with|Python|3.x}}
<langsyntaxhighlight lang="python">for i in range(2, 9, 2):
print("%d, " % i, end="")
print("who do we appreciate?")</langsyntaxhighlight>
 
{{out}}
Line 2,135:
The step size is specified within the loop, giving many possibilities.
 
<syntaxhighlight lang="quackery">
<lang Quackery>
20 times [ i^ echo sp
2 step ]
Line 2,144:
1 56 times [ i^ echo sp
i^ swap step ]
cr</langsyntaxhighlight>
 
{{Out}}
Line 2,154:
 
=={{header|R}}==
<langsyntaxhighlight Rlang="r">for(a in seq(2,8,2)) {
cat(a, ", ")
}
cat("who do we appreciate?\n")</langsyntaxhighlight>
 
Here the loop may be done implicitly by first concatenating the string and then printing:
 
<langsyntaxhighlight Rlang="r">cat(paste(c(seq(2, 8, by=2), "who do we appreciate?\n"), collapse=", "))</langsyntaxhighlight>
 
=={{header|Racket}}==
 
<langsyntaxhighlight lang="racket">
#lang racket
 
Line 2,171:
(printf "~a, " i))
(printf "who do we appreciate?~n")
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
Line 2,199:
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" perl6line>for 2, 4 ... 8 {
print "$_, ";
}
say 'whom do we appreciate?';</langsyntaxhighlight><!-- "Whom" is infinitely more amusing. -->
 
But there is nothing constraining the sequence to a constant step. Here's one with a ''random'' step.
 
<syntaxhighlight lang="raku" perl6line>.say for rand, *+rand-.5 ... *.abs>2</langsyntaxhighlight>
 
{{out|Sample output}}
Line 2,229:
For that matter, the iterated object doesn't need to contain numbers.
 
<syntaxhighlight lang="raku" perl6line>.say for <17/32 π banana 👀 :d(7) 🦋>;</langsyntaxhighlight>
 
=={{header|Raven}}==
List of numbers:
<langsyntaxhighlight Ravenlang="raven">[ 2 4 6 8 ] each "%d, " print
"who do we appreciate?\n" print</langsyntaxhighlight>
 
Range:
<langsyntaxhighlight Ravenlang="raven">2 10 2 range each "%d, " print
"who do we appreciate?\n" print</langsyntaxhighlight>
{{out}}
<pre>2, 4, 6, 8, who do we appreciate?
Line 2,244:
 
=={{header|REBOL}}==
<langsyntaxhighlight REBOLlang="rebol">for i 2 8 2 [
prin rejoin [i ", "]]
print "who do we appreciate?"</langsyntaxhighlight>
 
{{out}}
Line 2,253:
=={{header|REXX}}==
===version 1===
<langsyntaxhighlight lang="rexx"> do x=1 to 10 by 1.5
say x
end</langsyntaxhighlight>
{{out}}
<pre>
Line 2,268:
 
===version 2===
<langsyntaxhighlight lang="rexx"> do thing=1 by 3/2 to 10
say thing
end</langsyntaxhighlight>
'''output''' is the same as above.
<br><br>
 
===version 3===
<langsyntaxhighlight lang="rexx">Do v=1 by 3/2 While v**2<30
Say v
End
Say '('v'**2) is greater than 30 (30.25)'</langsyntaxhighlight>
{{output}}
<pre>1
Line 2,288:
we use step keyword to define step length
in this example we print Even numbers between 0 and 10
<langsyntaxhighlight lang="ring">
for i = 0 to 10 step 2 see i + nl next
</syntaxhighlight>
</lang>
 
{{out}}
Line 2,302:
 
we can use step with double values as well:
<langsyntaxhighlight lang="ring">
for i = 0 to 10 step 0.5 see i + nl next
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,331:
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">2.step(8,2) {|n| print "#{n}, "}
puts "who do we appreciate?"</langsyntaxhighlight>
or:
<langsyntaxhighlight lang="ruby">(2..8).step(2) {|n| print "#{n}, "}
puts "who do we appreciate?"</langsyntaxhighlight>
or:
<langsyntaxhighlight lang="ruby">for n in (2..8).step(2)
print "#{n}, "
end
puts "who do we appreciate?"</langsyntaxhighlight>
{{out}}
<pre>
Line 2,349:
 
For Rust 1.28 and later:
<langsyntaxhighlight lang="rust">fn main() {
for i in (2..=8).step_by(2) {
print!("{}", i);
}
println!("who do we appreciate?!");
}</langsyntaxhighlight>
 
An alternative which also works in earlier versions of Rust:
<langsyntaxhighlight lang="rust">fn main() {
let mut i = 2;
while i <= 8 {
Line 2,364:
}
println!("who do we appreciate?!");
}</langsyntaxhighlight>
 
=={{header|Salmon}}==
<langsyntaxhighlight Salmonlang="salmon">for (x; 2; x <= 8; 2)
print(x, ", ");;
print("who do we appreciate?\n");</langsyntaxhighlight>
 
=={{header|SAS}}==
<langsyntaxhighlight lang="sas">data _null_;
do i=1 to 10 by 2;
put i;
end;
run;</langsyntaxhighlight>
 
=={{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:
<langsyntaxhighlight lang="sather"> i :INT;
loop
i := for!(1, 50, 2);
Line 2,386:
-- i := 1.stepto!(50, 2);
#OUT + i + "\n";
end;</langsyntaxhighlight>
 
(Print all odd numbers from 1 to 50)
 
=={{header|Scala}}==
<langsyntaxhighlight lang="scala">for (i <- 2 to 8 by 2) println(i)</langsyntaxhighlight>
 
Alternatively:
<langsyntaxhighlight lang="scala">(2 to 8 by 2) foreach println</langsyntaxhighlight>
 
=={{header|Scheme}}==
The built-in ''for''-like form in Scheme is the ''do'' form:
 
<langsyntaxhighlight lang="scheme">(do ((i 2 (+ i 2))) ; list of variables, initials and steps -- you can iterate over several at once
((>= i 9)) ; exit condition
(display i) ; body
(newline))</langsyntaxhighlight>
 
Some people prefer to use the recursive-style and more flexible _named let_ form:
 
<langsyntaxhighlight lang="scheme">(let loop ((i 2)) ; function name, parameters and starting values
(cond ((< i 9)
(display i)
(newline)
(loop (+ i 2)))))) ; tail-recursive call, won't create a new stack frame</langsyntaxhighlight>
 
You can add to the language by wrapping the loop in a function:
 
<langsyntaxhighlight lang="scheme">(define (for-loop start end step func)
(let loop ((i start))
(cond ((< i end)
Line 2,423:
(lambda (i)
(display i)
(newline)))</langsyntaxhighlight>
 
... or in a macro, which allows for making the <code>(lambda)</code> implicit:
 
<langsyntaxhighlight lang="scheme">(define-syntax for-loop
(syntax-rules ()
((for-loop index start end step body ...)
Line 2,437:
(for-loop i 2 9 2
(display i)
(newline))</langsyntaxhighlight>
 
{{out}}
Line 2,447:
=={{header|Scilab}}==
{{works with|Scilab|5.5.1}}
<syntaxhighlight lang="text">for i=1:2:10
printf("%d\n",i)
end</langsyntaxhighlight>
{{out}}
<pre>1
Line 2,458:
 
=={{header|Seed7}}==
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
 
const proc: main is func
Line 2,467:
writeln(number);
end for;
end func;</langsyntaxhighlight>
 
=={{header|Sidef}}==
 
'''for(;;)''' loop:
<langsyntaxhighlight lang="ruby">for (var i = 2; i <= 8; i += 2) {
say i
}</langsyntaxhighlight>
 
'''for-in''' loop:
<langsyntaxhighlight lang="ruby">for i in (2 .. (8, 2)) {
say i
}</langsyntaxhighlight>
 
'''.each''' method:
<langsyntaxhighlight lang="ruby">2.to(8).by(2).each { |i|
say i
}</langsyntaxhighlight>
 
=={{header|Simula}}==
<langsyntaxhighlight lang="simula">begin
integer i;
for i:=5 step 5 until 25 do outint(i, 5)
end</langsyntaxhighlight>
 
=={{header|Slate}}==
<langsyntaxhighlight lang="slate">2 to: 8 by: 2 do: [| :i | Console ; i printString ; ', '].
inform: 'enough with the cheering already!'.</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
<langsyntaxhighlight lang="smalltalk">2 to: 8 by: 2 do: [ :i |
Transcript show: i; show ', '
].
Transcript showCr: 'enough with the cheering already!'</langsyntaxhighlight>
 
=={{header|Spin}}==
Line 2,507:
{{works with|HomeSpun}}
{{works with|OpenSpin}}
<langsyntaxhighlight lang="spin">con
_clkmode = xtal1 + pll16x
_clkfreq = 80_000_000
Line 2,523:
waitcnt(_clkfreq + cnt)
ser.stop
cogstop(0)</langsyntaxhighlight>
{{out}}
<pre>
Line 2,530:
 
=={{header|SPL}}==
<langsyntaxhighlight lang="spl">> n, 1..10,2
#.output(n)
<</langsyntaxhighlight>
 
=={{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.
<langsyntaxhighlight lang="ssem">10101000000000100000000000000000 0. -21 to c
00101000000001100000000000000000 1. c to 20
00101000000000100000000000000000 2. -20 to c
Line 2,560:
10100000000000000000000000000000 22. 5
00000000000000000000000000000000 23. 0
10110000000000000000000000000000 24. 13</langsyntaxhighlight>
After executing 1,012 instructions, the computer halts with the correct quotient—77—in the accumulator.
 
=={{header|Stata}}==
<langsyntaxhighlight lang="stata">forvalues i=1(2)10 {
display "`i'"
}
Line 2,572:
5
7
9</langsyntaxhighlight>
 
=={{header|Swift}}==
This prints all odd digits:
<langsyntaxhighlight lang="swift">for i in stride(from: 1, to: 10, by: 2) {
print(i)
}</langsyntaxhighlight>
Alternately (removed in Swift 3):
<langsyntaxhighlight lang="swift">for var i = 1; i < 10; i += 2 {
print(i)
}</langsyntaxhighlight>
 
=={{header|Tailspin}}==
Tailspin uses streams not loops
<langsyntaxhighlight lang="tailspin">
1..9:3 -> !OUT::write
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,595:
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">for {set i 2} {$i <= 8} {incr i 2} {
puts -nonewline "$i, "
}
puts "enough with the cheering already!"</langsyntaxhighlight>
 
=={{header|TorqueScript}}==
 
<langsyntaxhighlight TorqueScriptlang="torquescript">for(%i = 0; %i < 201; %i += 2)
{
echo(%i);
}</langsyntaxhighlight>
 
=={{header|TUSCRIPT}}==
<langsyntaxhighlight lang="tuscript">
$$ MODE TUSCRIPT
LOOP i=2,9,2
PRINT i
ENDLOOP
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,626:
==={{header|Bourne Shell}}===
{{works with|Bourne Shell}}
<langsyntaxhighlight lang="bash">x=2
while test $x -le 8; do
echo $x
x=`expr $x + 2` || exit $?
done</langsyntaxhighlight>
{{works with|Bourne Shell}}
{{libheader|jot}}
<langsyntaxhighlight lang="bash">for x in `jot - 2 8 2`; do echo $x; done</langsyntaxhighlight>
 
==={{header|Korn Shell}}===
{{works with|Korn Shell}}
<langsyntaxhighlight lang="bash">x=2
while [[$x -le 8]]; do
echo $x
((x=x+2))
done</langsyntaxhighlight>
{{works with|Korn Shell}}
<langsyntaxhighlight lang="bash">x=2
while ((x<=8)); do
echo $x
((x+=2))
done</langsyntaxhighlight>
 
===Bourne Again Shell===
{{works with|Bourne Again SHell|3}}
<langsyntaxhighlight lang="bash">for (( x=2; $x<=8; x=$x+2 )); do
printf "%d, " $x
done</langsyntaxhighlight>
 
{{works with|Bourne Again SHell|4}}
Bash v4.0+ has inbuilt support for setting up a step value
<langsyntaxhighlight lang="bash">for x in {2..8..2}
do
echo $x
done</langsyntaxhighlight>
 
==={{header|C Shell}}===
{{libheader|jot}}
<langsyntaxhighlight lang="csh">foreach x (`jot - 2 8 2`)
echo $x
end</langsyntaxhighlight>
 
=={{header|Ursa}}==
{{trans|Python}}
<langsyntaxhighlight lang="ursa">decl int i
for (set i 2) (< i 9) (set i (int (+ i 2)))
out i ", " console
end for
out "who do we appreciate?" endl console</langsyntaxhighlight>
 
=={{header|Vala}}==
<langsyntaxhighlight lang="vala">for (int i = 1; i < 10; i += 2)
stdout.printf("%d\n", i);</langsyntaxhighlight>
 
=={{header|VAX Assembly}}==
<langsyntaxhighlight VAXlang="vax Assemblyassembly"> 0000 0000 1 .entry main,0
50 D4 0002 2 clrf r0 ;init to 0.0
0004 3 loop:
Line 2,688:
000B 6
04 000B 7 ret
000C 8 .end main</langsyntaxhighlight>
 
=={{header|VBA}}==
<langsyntaxhighlight lang="vb">Sub MyLoop()
For i = 2 To 8 Step 2
Debug.Print i;
Next i
Debug.Print
End Sub</langsyntaxhighlight>
{{out}}
<pre>
Line 2,703:
 
=={{header|VBScript}}==
<langsyntaxhighlight lang="vb">buffer = ""
For i = 2 To 8 Step 2
buffer = buffer & i & " "
Next
WScript.Echo buffer</langsyntaxhighlight>
{{out}}
<pre>2 4 6 8</pre>
Line 2,713:
=={{header|Vedit macro language}}==
This prints all odd digits in range 1 to 9:
<langsyntaxhighlight lang="vedit">for (#1 = 1; #1 < 10; #1 += 2) {
Num_Type(#1)
}</langsyntaxhighlight>
 
 
=={{header|Verilog}}==
Imprime todos los números impares
<syntaxhighlight lang="verilog">
<lang Verilog>
module main;
integer i;
Line 2,730:
end
endmodule
</syntaxhighlight>
</lang>
 
 
=={{header|Vim Script}}==
<langsyntaxhighlight lang="vim">for i in range(2, 10, 2)
echo i
endfor</langsyntaxhighlight>
 
{{Out}}
Line 2,747:
=={{header|Vlang}}==
This prints all odd digits:
<langsyntaxhighlight lang="vlang">for i := 1; i<10; i+=2 {
println(i)
}</langsyntaxhighlight>
 
=={{header|Vorpal}}==
<langsyntaxhighlight lang="vorpal">for(i = 2, i <= 8, i = i + 2){
i.print()
}</langsyntaxhighlight>
 
=={{header|Wart}}==
<langsyntaxhighlight lang="wart">for i 2 (i <= 8) (i <- i+2)
prn i</langsyntaxhighlight>
 
=={{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.
<langsyntaxhighlight lang="ecmascript">// Print odd numbers under 20.
for (i in 1..10) {
var j = 2*i - 1
Line 2,776:
k = k + 2
}
System.print()</langsyntaxhighlight>
{{out}}
<pre>
Line 2,786:
{{libheader|Wren-trait}}
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''.
<langsyntaxhighlight lang="ecmascript">import "/trait" for Stepped
 
// Print odd numbers under 20.
Line 2,794:
// Print first plus every third element thereafter.
for (i in Stepped.new(1..20, 3)) System.write("%(i) ")
System.print()</langsyntaxhighlight>
 
{{out}}
Line 2,807:
thus a step by 2 can be implemented like this:
 
<langsyntaxhighlight XPL0lang="xpl0">include c:\cxpl\codes;
int I;
[for I:= 2 to 8 do
Line 2,814:
];
Text(0, "who do we appreciate?");
]</langsyntaxhighlight>
 
{{out}}
Line 2,822:
 
=={{header|zkl}}==
<langsyntaxhighlight lang="zkl">foreach n in ([1..10,4]) {println(n)}
[1..10,3].pump(Console.println)</langsyntaxhighlight>
{{out}}
<pre>
Line 2,836:
</pre>
A few others:
<langsyntaxhighlight lang="zkl">fcn loop(i=0){println(i); if(i<10)return(self.fcn(i+2))}
(0).pump(10,Console.println,fcn(n){if(n%2)return(Void.Skip); n})</langsyntaxhighlight>
 
=={{header|Zig}}==
<langsyntaxhighlight lang="zig">const std = @import("std");
 
pub fn main() !void {
Line 2,847:
while (i < 10) : (i += 2)
try stdout_wr.print("{d}\n", .{i});
}</langsyntaxhighlight>
 
{{omit from|GUISS}}
10,333

edits