Looping in C++ Nita Arora (KHMS)
The Increment and Decrement Operators Introduction to Loops: The  while  Loop Using the  while  loop for Input Validation Counters The  do-while  loop The  for  loop Keeping a Running Total 5-
Sentinels Nested Loops Breaking Out of a Loop The  continue  Statement Creating Good Test Data 5-
++  adds one to a variable val++;   is the same as  val   = val + 1; --  subtracts one from a variable val--;   is the same as   val = val – 1; can be used in prefix mode (before) or  postfix mode (after) a variable 5-
++val  and  --val  increment or decrement the variable,  then  return the new value of the variable.  It is this returned  new value  of the variable that is used in any other operations within the same statement  5-
int x = 1, y = 1; x = ++y;  // y is incremented to 2 // Then 2 is assigned to x cout << x  << &quot;  &quot; << y; // Displays 2  2 x = --y;  // y is decremented to 1 // Then 1 is assigned to x cout << x << &quot;  &quot; << y; // Displays 1 1  5-
val++  and  val--  return the old value of the variable,  then  increment or decrement the variable It is this returned  old   value  of the variable that is used in any other operations within the same statement  5-
int x = 1, y = 1; x = y++;  // y++ returns a 1 first // The 1 is assigned to x // then y is incremented to 2 cout << x  << &quot;  &quot; << y; // Displays 1  2 x = y--;  // y-- returns a 2 // The 2 is assigned to x // then y is decremented to 1 cout << x << &quot;  &quot; << y; // Displays 2 1 5-
Can be used in arithmetic expressions result = num1++ + --num2; Must  be applied to something that has a location in memory. Cannot have  result   =   (num1   +   num2)++; // Illegal Can be used in relational expressions  if (++num > limit)‏ prefix- and postfix-operations will cause different comparisons  5-
5- Loop : part of program that may execute more than once (i.e., it repeats)‏ while  loop format: while ( condition )‏ {  statement(s) ; } The  {}  can be omitted if there is only one statement in the body of the loop No  ;   here
while ( condition )‏ {   statement(s) ; } condition  is evaluated if it is true, the  statement(s)  are executed, and then  condition  is evaluated again if it is false, the loop is exited 5-
5- true statement(s)‏ false condition
int val = 5; while (val >= 0)‏ {  cout << val << &quot;  &quot;; val--; } produces output: 5  4  3  2  1  0 5-
while  is a  pretest loop  ( condition  is evaluated  before  the loop executes)  ( Entry Control Loop ) If the condition is initially false, the statement(s) in the body of the loop are  never  executed If the condition is initially true, the statement(s) in the body continue to be executed until the condition becomes false 5-
The loop must contain code to allow  condition  to eventually become  false   so the loop can be exited Otherwise, you have an  infinite loop  (i.e., a loop that does not stop)‏ Example infinite loop: x = 5; while (x > 0)  // infinite loop because cout << x;  // x is always  > 0 5-
Loops are an appropriate structure for validating user input data Prompt and read in the data. Use a  while  loop to test if data is valid. Enter the loop only if data is  not  valid. Inside the loop, prompt the user to re-enter the data.  The loop will not be exited until valid data has been entered. 5-
cout << &quot;Enter a number (1-100) and&quot; << &quot; I will guess it. &quot;; cin  >> number; while (number < 1 || number > 100)‏ {  cout << &quot;Number must be between 1 and 100.&quot; << &quot; Re-enter your number. &quot;; cin  >> number; } // Code to use the valid number goes here. 5-
Counter : variable that is incremented or decremented each time a loop repeats Can be used to control execution of the loop ( loop control variable )‏ Must be  initialized  before entering loop May be  incremented/decremented  either inside the loop or in the loop test 5-
Program can be written so that  user input  determines loop repetition Can be used when program processes a list of items, and user knows the number of items User is prompted before loop.  Their input is used to control the number of repetitions 5-
int num, limit; cout << &quot;Table of squares
&quot;; cout << &quot;How high to go? &quot;; cin  >> limit; cout << &quot;

number square
&quot;; num = 1;  // loop control variable while (num <= limit)‏ {  cout << setw(5) << num << setw(6)‏   << num*num << endl; num++; } 5-
do-while : a  post test loop  ( condition  is evaluated  after  the loop executes)‏ Format: do {  1 or more statements;   } while ( condition ); 5- Notice the required  ;
5- statement(s)‏ condition false true
Loop always executes  at least  once Execution continues as long as  condition  is  true ;  The loop is exited when  condition  becomes  false Useful in menu-driven programs to bring user  back  to menu to make another choice 5-
5- Pretest loop that executes zero or more times Useful for counter-controlled loop Format: for(  initialization ;  test ;  update  )‏ {  1 or more statements; }   No  ;  goes here Required  ;
for( initialization ;  test ;  update )‏ {  // {} may be omitted statement(s) ;  // if loop body contains }  // only 1 statement Perform   initialization Evaluate   test  expression :  (a) If  true ,  execute   statement(s)‏ (b) If  false ,  terminate  loop execution Execute  update , then re-evaluate  test  expression 5-
5- true statement(s)‏ false test initialization code update code
int sum = 0, num; for (num = 1; num <= 10; num++)‏ sum += num; cout << &quot;Sum of numbers 1 – 10 is &quot; << sum << endl; 5-
If  test  is false  the first time it is evaluated, the body of the loop will  not  be executed The  update  expression can  increment  or  decrement  by any amount Variables used in the initialization section should  not  be modified in the body of the loop 5-
Can define variables in initialization code Their scope is the  for  loop Initialization code, test, or update code can contain more than one statement Separate statements with commas Example: for (int sum = 0, num = 1; num <= 10; num++)‏ sum += num; 5-
Can omit  initialization  if already done int sum = 0, num = 1; for (; num <= 10; num++)‏   sum += num; Can omit  update  if done in loop for (sum = 0, num = 1; num <= 10;)‏   sum += num++; Can omit  test  – may cause an infinite loop    for (sum = 0, num = 1; ; num++)‏   sum += num; 5-
running total : accumulated sum of numbers from each repetition of loop accumulator : variable that holds running total int sum = 0, num = 1; // sum is the while (num <= 10)  // accumulator {   sum += num;   num++; } cout << &quot;Sum of numbers 1 – 10 is &quot; << sum << endl; 5-
Sentinel : value in a list of values that indicates end of data Special value that cannot be confused with a valid value,  e.g. ,  -999  for a test score Used to terminate input when user may not know how many values will be entered 5-
int total = 0; cout << &quot;Enter points earned &quot; << &quot;(or -1 to quit): &quot;; cin  >> points; while (points != -1) // -1 is sentinel { total += points;  cout << &quot;Enter points earned: &quot;; cin  >> points; } 5-
while : pretest loop (loop body may not be executed at all)‏ do-while : post test loop (loop body will always be executed at least once)‏ for : pretest loop (loop body may not be executed at all); has initialization and update code; is useful with counters or if precise number of repetitions is known 5-
A  nested loop  is a loop inside the body of another loop Example: for (row   =   1; row   <=   3; row++)‏ {  for (col   =   1; col   <=   3; col++)‏ {  cout << row * col << endl; } } 5- inner loop outer loop
Inner loop  goes through all its repetitions for each repetition of outer loop Inner loop  repetitions complete sooner than outer loop Total number  of repetitions for inner loop is product of number of repetitions of the two loops.  In previous example, inner loop repeats 9 times 5-
Can use  break  to terminate execution of a loop Use sparingly  if at all – makes code harder to understand When  used in an inner loop ,  terminates that loop only  and goes back to outer loop 5-
Can use  continue  to go to end of loop and prepare for next repetition while  and  do-while  loops go to test and repeat the loop if test condition is true for  loop goes to update step, then tests, and repeats loop if test condition is true Use sparingly – like  break , can make Program logic hard to follow 5-
When  testing a program, the quality of the test data is more important than the quantity.  Test  data should show how different parts of the program execute Test  data should evaluate how program handles: normal  data data that is at the  limits  of the valid range invalid  data 5-
Write a Program which takes a single integer &quot;height&quot; and displays a &quot;pyramid&quot; of this height made up of of &quot;*&quot; characters on the screen. The program, should be able to reproduce the following example output: This program prints a 'pyramid' shape of a specified height on the screen. how high would you like the pyramid?:  37   Pick another height (must be between 1 and 30):5    **    ****  ******  ********  ********** Question 1
Question 2 &quot;For&quot; loops can always be re-written as &quot;while&quot; loops, and vice-versa. Are the following two programs equivalent, and what is their output? Explain your answer, and run the programs to check. Program (a): #include <iostream.h> int main() { int count = 1;  for (; count <= 5 ; count++)  {  int count = 1;  cout << count << &quot;
&quot;;  }  return 0;  }  Program (b): #include <iostream>  int main()  {  int count = 1;  while (count <= 5)  {  int count = 1;  cout << count << &quot;
&quot;;  count++;  } return 0; }