Loops/While: Difference between revisions

From Rosetta Code
Content added Content deleted
(added ocaml)
Line 59: Line 59:
n := !n / 2
n := !n / 2
done;;</ocaml>
done;;</ocaml>

=={{header|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>


=={{header|Perl}}==
=={{header|Perl}}==

Revision as of 18:16, 18 April 2008

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

Start a 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

int i = 1024;
while(i > 0) {
  printf("%d\n", i);
  i /= 2;
}

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

var n = 1024;
while (n>0) {
 print(n);
 n/=2;
}

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>