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 endMatlab
count = 0; while (number > 1) number = number / 2; % must "move" toward end of loop count = count + 1; endC, 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?
Like all loops, "while loops" execute blocks of code over and over again.
The advantage to a while loop is that it will go (repeat) as often as necessary to accomplish its goal.
Generic Syntax:
while ( condition is true ) do something % Note: the "something" should eventually result % in the condition being false endInfinite 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
- Ask the user to input a value.
- while the input is incorrect.
- ask the user to input another value.
- 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) fprintf('Incorrect input, please try again.\n'); value = input ('Enter a Number between 1 and 10 (1-10)'); end % whileC
/* * 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("Incorrect input, please try again.\n"); 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 endC, Java, or Actionscript
while ( some condition is true ) { // Do this code // Something here should modify the condition above }Back to Topics List
Which LOOP should I use???? |
|
The following program fragments print the numbers 1 - 20. Compare the different looping procedures. Remember, there are always MANY possible ways to prepare code!
do-while:
int ctr = 1;
do
{
cout<< ctr++ <<"\n";
}
while (ctr <= 20);
for:
int ctr;
for(ctr=1;ctr<=20; ctr++)
{
cout<< ctr <<"\n";
}
while:
int ctr = 1;
while (ctr < = 20)
{
cout<<
ctr++ <<"\n";
}