Loops/While: Difference between revisions

From Rosetta Code
Content added Content deleted
(Specified the value type per discussion. Shouldn't mess anything up.)
m (Added some more syntax highlighting...whoever keeps putting that "pre language=" stuff in is really wrong)
Line 22: Line 22:


=={{header|C}}==
=={{header|C}}==
<pre language="c">int i = 1024;
<c>int i = 1024;
while(i > 0) {
while(i > 0) {
printf("%d\n", i);
printf("%d\n", i);
i /= 2;
i /= 2;
}</pre>
}</c>


=={{header|Forth}}==
=={{header|Forth}}==
Line 43: Line 43:


=={{header|JavaScript}}==
=={{header|JavaScript}}==
var n = 1024;
<javascript>var n = 1024;
while (n>0) {
while (n>0) {
print(n);
print(n);
n/=2;
n/=2;
}</javascript>
}


=={{header|Logo}}==
=={{header|Logo}}==

Revision as of 17:34, 26 April 2008

Task
Loops/While
You are encouraged to solve this task according to the task description, using any language you may know.

Start an integer value at 1024. Loop while it is greater than 0. Print the value (with a newline) and divide it by two each time through the loop.

Ada

<ada> declare

  I : Integer := 1024;

begin

  while I > 0 loop
     Put_Line(Integer'Image(I));
     I := I / 2;
  end loop;

end; </ada>

BASIC

Works with: QuickBasic version 4.5

<qbasic>i = 1024 while i > 0

  print i
  i = i / 2

wend</qbasic>

C

<c>int i = 1024; while(i > 0) {

 printf("%d\n", i);
 i /= 2;

}</c>

Forth

: halving ( n -- )
  begin  dup 0 >
  while  cr dup .  2/
  repeat drop ;
1024 halving

Java

<java>int i = 1024; while(i > 0){

  System.out.println(i);
  i >>= 1; //also acceptable: i /= 2;

}</java>

JavaScript

<javascript>var n = 1024; while (n>0) {

print(n);
n/=2;

}</javascript>

make "n 1024
while [:n > 0] [print :n  make "n :n / 2]

OCaml

<ocaml>let n = ref 1024;; while !n > 0 do

 Printf.printf "%d\n" !n;
 n := !n / 2

done;;</ocaml>

Pascal

<pascal> program divby2(output);

var

 i: integer;

begin

 i := 1024;
 while i > 0 do
   begin
     writeln(i);
     i := i div 2
   end

end. </pascal>

Perl

<perl>$n = 1024; while ($n > 0) {

   print "$n\n";
   $n >>= 1; # also acceptable: use integer; $n /= 2;

}</perl>

Python

<python>n = 1024 while n > 0:

   print n
   n = n / 2</python>

UnixPipes

(echo 1024>p.res;tail -f p.res) | while read a ; do
   test $a -gt 0 && (expr $a / 2  >> p.res ; echo $a) || exit 0
done


V

1024 [0 >] [
   dup puts
   2 / >int
] while