# The "While" Loop

A "While" Loop is used to repeat a specific block of code an unknown number of times, until a condition is met. For example, if we want to ask a user for a number between 1 and 10, we don't know how many times the user may enter a larger number, so we keep asking "while the number is not between 1 and 10". If we (or the computer) knows exactly how many times to execute a section of code (such as shuffling a deck of cards) we use a for loop.

# The While Loop

The while loop is used to repeat a section of code an unknown number of times until a specific condition is met. For example, say we want to know how many times a given number can be divided by 2 before it is less than or equal to 1. If we know a specific number, such as 32, we can say 5 times, but for a given symbolic variable "NUMBER" which represents any number in the world, how many times is not known a priori (before hand). In this case, we could use a while loop to determine that answer:

The "pseudocode" for such an algorithm is: while the number is bigger than one keep dividing it by two. additionally, keep a count of how many times we do the division.

## Pseudocode

```            ```
get our number
set our initial count to 0
while our number is greater than 1
divide the number by 2
increase our count by 1
end
```
```

## Matlab

```            ```
count = 0;
while (number > 1)
number = number / 2; %  must "move" toward end of loop
count  = count + 1;
end
```
```

## C, C++, or Java

```            ```
int count = 0;
while (number > 1)
{
number = number / 2;
count++; // the same as count = count + 1;
}
```
```

## Actionscript

```            ```
var count:int = 0;
while (number > 1)
{
number = number / 2;
count++; // the same as count = count + 1;
}
```
```

## Why While Loops?

1. Like all loops, "while loops" execute blocks of code over and over again.

2. The advantage to a while loop is that it will go (repeat) as often as necessary to accomplish its goal.

3. Generic Syntax:

```            ```
while ( condition is true )
do something
% Note: the "something" should eventually result
% in the condition being false
end
```
```
4. Infinite loops:

If the action inside the loop does not modify the variables being tested in the loops condition, the loop will "run" forever. For example:

```            ```
while ( y < 10 )
x = x + 1;
end
```
```
```            ```
while (  true )
printf('hello');
end
```
```

## Example 1: How to assure proper input

1. Ask the user to input a value.
2. while the input is incorrect.
3. ask the user to input another value.
4. go back to line 2 (the while)

## Matlab

```            ```
% MATLAB
%
% Using a while loop to ask the user to input a number
% between 1 and 10 (inclusive).
%
%   Variables:
%        value  : variable to store the input
%

value = input ('Please Enter a Number between 1 and 10 (1-10)');

while ( value < 1 || value > 10)

value = input ('Enter a Number between 1 and 10 (1-10)');

end % while
```
```

## C

```            ```
/*
* C
* Using a while loop to ask the user to input a number
* between 1 and 10 (inclusive).
*
*   Variables:
*        value  : variable to store the input
*/
printf("Please Enter a Number between 1 and 10 (1-10): ");
scanf("%d", &value);

while ( value < 1 || value > 10)
{

printf("Enter a Number between 1 and 10 (1-10): ");
scanf("%d", &value);

}

```
```

# Design Pattern:

A design pattern is the syntax that you have to memorize in order to do well in programming and on tests.

The design pattern for a while loop is:

## Matlab

```            ```
while ( some condition is true )
% Do this code
% Something here should modify the condition above
end
```
```

## C, Java, or Actionscript

```            ```
while ( some condition is true )
{
// Do this code
// Something here should modify the condition above
}
```
```