Loops/Downward for
From Rosetta Code
Write a for loop which writes a countdown from 10 to 0.
[edit] Ada
for I in reverse 0..10 loop
Put_Line(Integer'Image(I));
end loop;
[edit] ALGOL 68
Works with: ALGOL 68 version Standard - no extensions to language used Works with: ALGOL 68G version Any - tested with release mk15-0.8b.fc9.i386 Works with: ELLA ALGOL 68 version Any (with appropriate job cards) - tested with release 1.8.8d.fc9.i386
FOR i FROM 10 BY -1 TO 0 DO
print((i,new line))
OD
As a common extension the DOWNTO is sometimes included to optimise the loop termination logic. The DOWNTO is available in Marcel's ALGOL 68G and Cambridge ALGOL 68C.
FOR i FROM 10 DOWNTO 0 DO
print((i,new line))
OD
[edit] AmigaE
PROC main()
DEF i
FOR i := 10 TO 0 STEP -1
WriteF('\d\n', i)
ENDFOR
ENDPROC
[edit] AutoHotkey
x := 10
While (x >= 0)
{
output = %output%`n%x%
x--
}
MsgBox % output
}
[edit] AWK
BEGIN {
for(i=10; i>=0; i--) {
print i
}
}
[edit] BASIC
FOR i = 10 TO 0 STEP -1
PRINT i
NEXT i
[edit] Befunge
55+>:.:v
^ -1_@
[edit] C
int i;
for(i = 10; i >= 0; --i)
printf("%d\n",i);
[edit] C++
for(int i = 10; i >= 0; --i)
std::cout << i << "\n";
[edit] C#
for (int i = 10; i >= 0; i--)
{
Console.WriteLine(i);
}
[edit] ColdFusion
With tags:
<cfloop index = "i" from = "10" to = "0" step = "-1">
#i#
</cfloop>
With script:
<cfscript>
for( i = 10; i <= 0; i-- )
{
writeOutput( i );
}
</cfscript>
[edit] Common Lisp
(loop for i from 10 downto 1 do
(print i))
[edit] D
for(int i = 10; i >= 0; --i) writefln(i)
Foreach Range Statement since D2.003
foreach_reverse(i ; 0..10+1) writefln(i) ;
[edit] dc
does not use GNU extensions
[]s. is a comment
c clears the stack
[~...]p s. to print strings
l<register>x executes the macro
uses the macro f - [p] to print, this can be replaced by any complex expressions.
c
[macro s(swap) - (a b : b a)]s.
[Sa Sb La Lb] ss
[macro d(2dup) - (a b : a b a b)]s.
[Sa d Sb La d Lb lsx] sd
[macro m(for) - ]s.
[lfx 1 - ldx !<m ] sm
0 10 ldx [p] sf !<m
q
Using it
|dc < ./for.dc
10
9
...
0
[edit] E
for i in (0..10).descending() { println(i) }
[edit] Factor
11 iota <reversed> [ . ] each
[edit] FALSE
10[$0>][$." "1-]#.
[edit] Forth
Unlike the incrementing 10 0 DO-LOOP, this will print eleven numbers. The LOOP words detect crossing the floor of the end limit.
: loop-down 0 10 do i . -1 +loop ;
[edit] Fortran
Works with: Fortran version 90 and later
DO i = 10, 0, -1
WRITE(*, *) i
END DO
[edit] Haskell
import Control.Monad
forM_ [10,9..0] print
[edit] IDL
Using a loop (with an "increment of minus one" ):
for i=10,0,-1 do print,i
But in IDL one would rarely use loops (for anything) since practically everything can be done with vectors/arrays.
The "IDL way of doing things" for the countdown requested in the task would probably be this:
print,10-indgen(11)
[edit] J
J is array-oriented, so there is very little need for loops. For example, one could satisfy this task this way:
,. i. -11
J does support loops for those times they can't be avoided (just like many languages support gotos for those time they can't be avoided).
3 : 0 ] 11
for_i. i. - y do.
i 1!:2 ]2
end.
i.0 0
)
Though it's rare to see J code like this.
[edit] Java
for(i = 10; i >= 0; --i){
System.out.println(i);
}
[edit] JavaScript
for (var i=10; i>=0; --i) print(i);
[edit] Lisaac
10.downto 0 do { i : INTEGER;
i.print;
'\n'.print;
};
[edit] Logo
If the limit is less than the start, then FOR decrements the control variable. Otherwise, a fourth parameter could be given as a custom increment.
for [i 10 0] [print :i]
[edit] Lua
for i=10,0,-1 do
print(i)
end
[edit] M4
define(`for',
`ifelse($#,0,``$0'',
`ifelse(eval($2 $3),1,
`pushdef(`$1',$2)$5`'popdef(`$1')$0(`$1',eval($2+$4),$3,$4,`$5')')')')dnl
for(`x',`10',`>=0',`-1',`x
')
[edit] Mathematica
Mathematica provides several ways to iterate over a range of numbers, small subtle differences are amongst them. 3 possible implementations are (exactly the same output):
Using For:
For[i = 10, i >= 0, i--, Print[i]]
Using Do:
Do[Print[i], {i, 10, 0, -1}]
Using Scan:
Scan[Print, Range[10, 0, -1]]
[edit] MAXScript
for i in 10 to 0 by -1 do print i
[edit] Metafont
for i = 10 step -1 until 0: show i; endfor
end
The basic set of macros for Metafont defines downto, so that we can write
for i = 10 downto 0: show i; endfor end
[edit] Modula-3
FOR i := 10 TO 0 BY -1 DO
IO.PutInt(i);
END;
[edit] Oberon-2
FOR i := 10 TO 0 BY -1 DO
Out.Int(i,0);
END;
[edit] OCaml
for i = 10 downto 0 do
Printf.printf "%d\n" i
done
[edit] Octave
for i = 10:-1:0
% ...
endfor
[edit] Oz
for I in 10..0;~1 do
{Show I}
end
[edit] Pascal
for i := 10 downto 0 do
writeln(i);
[edit] Perl
foreach (reverse 0..10) {
print "$_\n";
}
[edit] Perl 6
Works with: Rakudo version commit 9792a2e49e7e5cec9392e9b1c86208d935585835
for 10 ... 0 {
.say;
}
[edit] PHP
for ($i = 10; $i >= 0; $i--)
echo "$i\n";
or
foreach (range(10, 0) as $i)
echo "$i\n";
[edit] PicoLisp
(for (I 10 (ge0 I) (dec I))
(println I) )
or:
(mapc println (range 10 0))
[edit] Pike
int main(){
for(int i = 10; i >= 0; i--){
write(i + "\n");
}
}
[edit] PL/I
do i = 10 to 0 by -1;
put skip list (i);
end;
[edit] Pop11
lvars i;
for i from 10 by -1 to 0 do
printf(i, '%p\n');
endfor;
[edit] PowerShell
for ($i = 10; $i -ge 0; $i--) {
$i
}
Alternatively, the range operator might be used as well which simply returns a contiguous range of integers:
10..0
[edit] PureBasic
For i=10 To 0 Step -1
Debug i
Next
[edit] Python
for i in xrange(10, -1, -1):
print i
[edit] R
for(i in 10:0) {print(i)}
[edit] REBOL
for i 10 0 -1 [print i]
[edit] REXX
do i = 10 to 0 by -1
say i
end
[edit] Ruby
10.downto(0) do |i|
puts i
end
[edit] Scheme
(do ((i 10 (- i 1)))
((< i 0))
(display i)
(newline))
[edit] Slate
10 downTo: 1 do: [| :n | print: n]
[edit] Smalltalk
10 to: 1 by: -1 do:[:aNumber |
aNumber display.
Character space display.
]
[edit] SNUSP
++++++++++>++++++++++!/- @!\=@\.@@@-@-----# atoi
\n counter #\?>.</ \ @@@+@+++++# itoa
loop
[edit] Tcl
for {set i 10} {$i >= 0} {incr i -1} {
puts $i
}
# puts "We have liftoff!"
[edit] TI-89 BASIC
Local i
For i, 10, 0, –1
Disp i
EndFor
[edit] UnixPipes
yes \ |cat -n |head -n 10 | tac
[edit] V
10
[0 >]
[dup puts pred]
while
[edit] Vedit macro language
for (#1 = 10; #1 >= 0; #1--) {
Num_Type(#1)
}
[edit] Visual Basic .NET
For i = 10 To 0 Step -1
Console.WriteLine(i)
Next







