Loops/While: Difference between revisions

From Rosetta Code
Content added Content deleted
(Added Haskell example)
Line 15: Line 15:
i /= 2;
i /= 2;
}</pre>
}</pre>

=={{header|Haskell}}==

Introducing and especially updating a loop variable requires side effects. So it's simpler to just create a list of the required values, and then loop over it to print them. However, that doesn't really reflect the structure of the imperative solutions.

<pre>
mapM print $ takeWhile (>0) $ iterate (`div` 2) 1024
</pre>


=={{header|Java}}==
=={{header|Java}}==

Revision as of 12:39, 12 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.

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;
}

Haskell

Introducing and especially updating a loop variable requires side effects. So it's simpler to just create a list of the required values, and then loop over it to print them. However, that doesn't really reflect the structure of the imperative solutions.

mapM print $ takeWhile (>0) $ iterate (`div` 2) 1024

Java

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

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

}</java>