Loops/Downward for

From Rosetta Code

Jump to: navigation, search
Loops/Downward for is a programming task. Visitors like you are encouraged to solve it according to the task description, using any language they may happen to know.
Add to BlogMarksAdd to del.icio.usAdd to diggAdd to NewsvineAdd to redditAdd to Slashdot

Write a for loop which writes a countdown from 10 to 0.

Contents

[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
Personal tools
Google AdSense