+ All Categories
Home > Documents > 1 Chapter 2 - Control Structures - University of...

1 Chapter 2 - Control Structures - University of...

Date post: 05-Apr-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
61
© 2003 Prentice Hall, Inc. All rights reserved. 1 Chapter 2 - Control Structures Outline 2.11 Assignment Operators 2.12 Increment and Decrement Operators 2.13 Essentials of Counter-Controlled Repetition 2.14 for Repetition Structure 2.15 Examples Using the for Structure 2.16 switch Multiple-Selection Structure 2.17 do/while Repetition Structure 2.18 break and continue Statements 2.19 Logical Operators 2.20 Confusing Equality (==) and Assignment (=) Operators 2.21 Structured-Programming Summary
Transcript
Page 1: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

1

Chapter 2 - Control Structures

Outline2.11 Assignment Operators2.12 Increment and Decrement Operators2.13 Essentials of Counter-Controlled Repetition2.14 for Repetition Structure2.15 Examples Using the for Structure2.16 switch Multiple-Selection Structure2.17 do/while Repetition Structure2.18 break and continue Statements2.19 Logical Operators2.20 Confusing Equality (==) and

Assignment (=) Operators2.21 Structured-Programming Summary

Page 2: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

2

2.11 Assignment Operators

• Assignment expression abbreviations– Addition assignment operator

c = c + 3; abbreviated toc += 3;

• Some statements of the formvariable = variable operator expression;

can be rewritten asvariable operator= expression;

• For example:d -= 4; d = d - 4;e *= 5; e = e * 5;f /= 3; f = f / 3;g %= 9; g = g % 9;

Page 3: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

3

2.12 Increment and Decrement Operators• Increment operator (c++ or ++c)

can be used instead of c += 1• Decrement operator (c-- or --c)

can be used instead of c -= 1– Pre-increment (++c, --c)

• When the operator is used before the variable (++c or --c)• Variable is changed, then the surrounding expression evaluated.

– Post-increment (c++, c--)• When the operator is used after the variable (c++ or c--)• Surrounding expression is evaluated/executed,

then the variable is changed.

Page 4: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

4

2.12 Example Exam Questions (c++ vs ++c)

• Suppose c contains 5. What gets printed?cout << ++c;

• Answer• c is changed to 6,• then (cout << c) is evaluated, and 6 is printed.

• Suppose c contains 5. What gets printed?cout << c++;

• Answer:• 5 is printed.

(cout << c) is evaluated before the increment• c then becomes 6

Page 5: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

5

2.12 Increment and Decrement Operators

• When variable not in expression– Preincrementing and postincrementing have same effect

++c;cout << c;

andc++;cout << c;

are the same

Page 6: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline6

fig02_14.cpp

1 // Fig. 2.14: fig02_14.cpp2 // Preincrementing and postincrementing.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int c; // declare variable1213 // demonstrate postincrement14 c = 5; // assign 5 to c15 cout << c << endl; // print 516 cout << c++ << endl; // print 5 then postincrement17 cout << c << endl << endl; // print 61819 // demonstrate preincrement20 c = 5; // assign 5 to c21 cout << c << endl; // print 522 cout << ++c << endl; // preincrement then print 623 cout << c << endl; // print 6

2425 return 0; // indicate successful termination2627 } // end function main

556

566

Page 7: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline7

fig02_16.cpp(1 of 1)

1 // Fig. 2.16: fig02_16.cpp2 // Counter-controlled repetition.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialization1213 while ( counter <= 10 ) { // repetition condition14 cout << counter << endl; // display counter15 ++counter; // increment1617 } // end while1819 return 0; // indicate successful termination2021 } // end function main

Counter-controlledrepetition requires

12345678910

• Control variable(loop counter)

• Initial value forcontrol variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

Page 8: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline7

fig02_16.cpp(1 of 1)

1 // Fig. 2.16: fig02_16.cpp2 // Counter-controlled repetition.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialization1213 while ( counter <= 10 ) { // repetition condition14 cout << counter << endl; // display counter15 ++counter; // increment1617 } // end while1819 return 0; // indicate successful termination2021 } // end function main

Counter-controlledrepetition requires

12345678910

• Control variable(loop counter)

• Initial value forcontrol variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

Page 9: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline7

fig02_16.cpp(1 of 1)

1 // Fig. 2.16: fig02_16.cpp2 // Counter-controlled repetition.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialization1213 while ( counter <= 10 ) { // repetition condition14 cout << counter << endl; // display counter15 ++counter; // increment1617 } // end while1819 return 0; // indicate successful termination2021 } // end function main

Counter-controlledrepetition requires

12345678910

• Control variable(loop counter)

• Initial value forcontrol variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

Page 10: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline7

fig02_16.cpp(1 of 1)

1 // Fig. 2.16: fig02_16.cpp2 // Counter-controlled repetition.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialization1213 while ( counter <= 10 ) { // repetition condition14 cout << counter << endl; // display counter15 ++counter; // increment1617 } // end while1819 return 0; // indicate successful termination2021 } // end function main

Counter-controlledrepetition requires

12345678910

• Control variable(loop counter)

• Initial value forcontrol variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

Page 11: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline7

fig02_16.cpp(1 of 1)

1 // Fig. 2.16: fig02_16.cpp2 // Counter-controlled repetition.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialization1213 while ( counter <= 10 ) { // repetition condition14 cout << counter << endl; // display counter15 ++counter; // increment1617 } // end while1819 return 0; // indicate successful termination2021 } // end function main

Counter-controlledrepetition requires

12345678910

• Control variable(loop counter)

• Initial value forcontrol variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

Page 12: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

8

2.13 Essentials of Counter-ControlledRepetition

• The declarationint counter = 1;

– Names counter– Declares counter to be an integer– Reserves space for counter in memory– Sets counter to an initial value of 1

Page 13: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

9

2.14 for Repetition Structure

• General format when using for loopsfor ( initialization; LoopContinuationTest;

increment ) statement

• Examplefor( int counter = 1; counter <= 10; counter++ )

cout << counter << endl;

– Prints integers from one to ten

Nosemicolonafter laststatement

Page 14: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline10

fig02_17.cpp(1 of 1)

1 // Fig. 2.17: fig02_17.cpp2 // Counter-controlled repetition with the for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // Initialization, repetition condition and incrementing12 // are all included in the for structure header.1314 for ( int counter = 1; counter <= 10; counter++ )15 cout << counter << endl;1617 return 0; // indicate successful termination1819 } // end function main

12345678910 • Control variable

(loop counter)• Initial value for

control variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

• Modify controlvariable whilelooping(Increment ordecrement)

Page 15: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline10

fig02_17.cpp(1 of 1)

1 // Fig. 2.17: fig02_17.cpp2 // Counter-controlled repetition with the for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // Initialization, repetition condition and incrementing12 // are all included in the for structure header.1314 for ( int counter = 1; counter <= 10; counter++ )15 cout << counter << endl;1617 return 0; // indicate successful termination1819 } // end function main

12345678910 • Control variable

(loop counter)• Initial value for

control variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

• Modify controlvariable whilelooping(Increment ordecrement)

Page 16: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline10

fig02_17.cpp(1 of 1)

1 // Fig. 2.17: fig02_17.cpp2 // Counter-controlled repetition with the for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // Initialization, repetition condition and incrementing12 // are all included in the for structure header.1314 for ( int counter = 1; counter <= 10; counter++ )15 cout << counter << endl;1617 return 0; // indicate successful termination1819 } // end function main

12345678910 • Control variable

(loop counter)• Initial value for

control variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

• Modify controlvariable whilelooping(Increment ordecrement)

Page 17: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline10

fig02_17.cpp(1 of 1)

1 // Fig. 2.17: fig02_17.cpp2 // Counter-controlled repetition with the for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // Initialization, repetition condition and incrementing12 // are all included in the for structure header.1314 for ( int counter = 1; counter <= 10; counter++ )15 cout << counter << endl;1617 return 0; // indicate successful termination1819 } // end function main

12345678910 • Control variable

(loop counter)• Initial value for

control variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

• Modify controlvariable whilelooping(Increment ordecrement)

Page 18: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline10

fig02_17.cpp(1 of 1)

1 // Fig. 2.17: fig02_17.cpp2 // Counter-controlled repetition with the for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // Initialization, repetition condition and incrementing12 // are all included in the for structure header.1314 for ( int counter = 1; counter <= 10; counter++ )15 cout << counter << endl;1617 return 0; // indicate successful termination1819 } // end function main

12345678910 • Control variable

(loop counter)• Initial value for

control variable

• Modify controlvariable whilelooping(Increment ordecrement)

• Condition totest for finalvalue

• Modify controlvariable whilelooping(Increment ordecrement)

Page 19: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

11

2.14 for Repetition Structure

• for loops can usually be rewritten as while loopsinitialization;while ( loopContinuationTest){ statement increment;}

• Initialization and increment– For multiple variables, use comma-separated lists

for (int i = 0, j = 0; j + i <= 10; j++, i++) cout << j + i << endl;

Page 20: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline12

fig02_20.cpp(1 of 1)

fig02_20.cppoutput (1 of 1)

1 // Fig. 2.20: fig02_20.cpp2 // Summation with for.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int sum = 0; // initialize sum1213 // sum even integers from 2 through 10014 for ( int number = 2; number <= 100; number += 2 )15 sum += number; // add number to sum1617 cout << "Sum is " << sum << endl; // output sum18 return 0; // successful termination1920 } // end function main

Sum is 2550

Page 21: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

13

2.15 Examples Using the for Structure

• Program to calculate compound interest• A person invests $1000.00 in a savings account yielding 5 percent

interest. Assuming that all interest is left on deposit in the account,calculate and print the amount of money in the account at the end ofeach year for 10 years. Use the following formula for determiningthese amounts:a = p(1+r)

• p is the original amount invested (i.e., the principal),r is the annual interest rate,n is the number of years anda is the amount on deposit at the end of the nth year

n

Page 22: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline14

fig02_21.cpp(1 of 2)

1 // Fig. 2.21: fig02_21.cpp2 // Calculating compound interest.3 #include <iostream>45 using std::cout;6 using std::endl;7 using std::ios;8 using std::fixed;910 #include <iomanip>1112 using std::setw;13 using std::setprecision;1415 #include <cmath> // enables program to use function pow1617 // function main begins program execution18 int main()19 {20 double amount; // amount on deposit21 double principal = 1000.0; // starting principal22 double rate = .05; // interest rate23

Page 23: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline14

fig02_21.cpp(1 of 2)

1 // Fig. 2.21: fig02_21.cpp2 // Calculating compound interest.3 #include <iostream>45 using std::cout;6 using std::endl;7 using std::ios;8 using std::fixed;910 #include <iomanip>1112 using std::setw;13 using std::setprecision;1415 #include <cmath> // enables program to use function pow1617 // function main begins program execution18 int main()19 {20 double amount; // amount on deposit21 double principal = 1000.0; // starting principal22 double rate = .05; // interest rate23

<cmath> header needed forthe pow function (programwill not compile without it).

Page 24: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline15

fig02_21.cpp(2 of 2)

24 // output table column heads25 cout << "Year" << setw( 21 ) << "Amount on deposit" << endl;2627 // set floating-point number format28 cout << fixed << setprecision( 2 );2930 // calculate amount on deposit for each of ten years31 for ( int year = 1; year <= 10; year++ ) {3233 // calculate new amount for specified year34 amount = principal * pow( 1.0 + rate, year );3536 // output one table row37 cout << setw( 4 ) << year38 << setw( 21 ) << amount << endl;3940 } // end for4142 return 0; // indicate successful termination4344 } // end function main

Year Amount on deposit 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 6 1340.10 7 1407.10 8 1477.46 9 1551.33 10 1628.89

Page 25: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline15

fig02_21.cpp(2 of 2)

24 // output table column heads25 cout << "Year" << setw( 21 ) << "Amount on deposit" << endl;2627 // set floating-point number format28 cout << fixed << setprecision( 2 );2930 // calculate amount on deposit for each of ten years31 for ( int year = 1; year <= 10; year++ ) {3233 // calculate new amount for specified year34 amount = principal * pow( 1.0 + rate, year );3536 // output one table row37 cout << setw( 4 ) << year38 << setw( 21 ) << amount << endl;3940 } // end for4142 return 0; // indicate successful termination4344 } // end function main

Year Amount on deposit 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 6 1340.10 7 1407.10 8 1477.46 9 1551.33 10 1628.89

Sets the field width to at least21 characters. If output lessthan 21, it is right-justified.

Page 26: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline15

fig02_21.cpp(2 of 2)

24 // output table column heads25 cout << "Year" << setw( 21 ) << "Amount on deposit" << endl;2627 // set floating-point number format28 cout << fixed << setprecision( 2 );2930 // calculate amount on deposit for each of ten years31 for ( int year = 1; year <= 10; year++ ) {3233 // calculate new amount for specified year34 amount = principal * pow( 1.0 + rate, year );3536 // output one table row37 cout << setw( 4 ) << year38 << setw( 21 ) << amount << endl;3940 } // end for4142 return 0; // indicate successful termination4344 } // end function main

Year Amount on deposit 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 6 1340.10 7 1407.10 8 1477.46 9 1551.33 10 1628.89

pow(x,y) = x raised to theyth power.

Page 27: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

16

2.16 switch Multiple-Selection Structure

• switch– Test variable for multiple values– Series of case labels and optional default caseswitch ( variable ) {

case value1: // taken if variable == value1 statements break; // necessary to exit switch

case value2:case value3: // taken if variable == value2 or == value3 statements break;

default: // taken if variable matches no other cases statements break;

}

Page 28: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

17

2.16 switch Multiple-Selection Structure

true

false...

case a case a action(s) break

case b case b action(s) break

false

false

case z case z action(s) break

true

true

default action(s)

Page 29: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

182.16 char data type

• Example of switch Multiple-Selection Structure upcoming...– Program to read grades (A-F)– Display number of each grade entered

• First a few details about characters– Single characters typically stored in a char data type

• char a 1-byte integer, so chars can be stored as ints– Can treat character as int or char

• 97 is the numerical representation of lowercase ‘a’ (ASCII)65 is upper case 'A'

• Use single quotes• Cast to int to get numerical representation

cout << "The character (" << 'a' << ") has the value " << static_cast< int > ( 'a' ) << endl;

The character (a) has the value 97

Page 30: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline19

fig02_22.cpp(1 of 4)

1 // Fig. 2.22: fig02_22.cpp2 // Counting letter grades.3 #include <iostream>45 using std::cout;6 using std::cin;7 using std::endl;89 // function main begins program execution10 int main()11 {12 int grade; // one grade13 int aCount = 0; // number of As14 int bCount = 0; // number of Bs15 int cCount = 0; // number of Cs16 int dCount = 0; // number of Ds17 int fCount = 0; // number of Fs1819 cout << "Enter the letter grades." << endl20 << "Enter the EOF character to end input." << endl;21

Enter the letter grades.Enter the EOF character to end input.

• • •

Page 31: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline20

fig02_22.cpp(2 of 4)

22 // loop until user types end-of-file key sequence23 while ( ( grade = cin.get() ) != EOF ) {2425 // determine which grade was input26 switch ( grade ) { // switch structure nested in while2728 case 'A': // grade was uppercase A29 case 'a': // or lowercase a30 ++aCount; // increment aCount31 break; // necessary to exit switch3233 case 'B': // grade was uppercase B34 case 'b': // or lowercase b35 ++bCount; // increment bCount36 break; // exit switch3738 case 'C': // grade was uppercase C39 case 'c': // or lowercase c40 ++cCount; // increment cCount41 break; // exit switch42

•••Enter the EOF character to end input.aBcCAdfCEIncorrect letter grade entered. Entera new grade.DAb^Z

•••

Page 32: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline20

fig02_22.cpp(2 of 4)

22 // loop until user types end-of-file key sequence23 while ( ( grade = cin.get() ) != EOF ) {2425 // determine which grade was input26 switch ( grade ) { // switch structure nested in while2728 case 'A': // grade was uppercase A29 case 'a': // or lowercase a30 ++aCount; // increment aCount31 break; // necessary to exit switch3233 case 'B': // grade was uppercase B34 case 'b': // or lowercase b35 ++bCount; // increment bCount36 break; // exit switch3738 case 'C': // grade was uppercase C39 case 'c': // or lowercase c40 ++cCount; // increment cCount41 break; // exit switch42

•••Enter the EOF character to end input.aBcCAdfCEIncorrect letter grade entered. Entera new grade.DAb^Z

•••

cin.get() uses dot notation(explained chapter 6). Thisfunction gets 1 character from thekeyboard (after Enter pressed),and it is assigned to grade.

cin.get() returns EOF (end-of-file) after the EOFcharacter is input, to indicate theend of data. EOF may be ctrl-d orctrl-z, depending on your OS.

Page 33: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline20

fig02_22.cpp(2 of 4)

22 // loop until user types end-of-file key sequence23 while ( ( grade = cin.get() ) != EOF ) {2425 // determine which grade was input26 switch ( grade ) { // switch structure nested in while2728 case 'A': // grade was uppercase A29 case 'a': // or lowercase a30 ++aCount; // increment aCount31 break; // necessary to exit switch3233 case 'B': // grade was uppercase B34 case 'b': // or lowercase b35 ++bCount; // increment bCount36 break; // exit switch3738 case 'C': // grade was uppercase C39 case 'c': // or lowercase c40 ++cCount; // increment cCount41 break; // exit switch42

•••Enter the EOF character to end input.aBcCAdfCEIncorrect letter grade entered. Entera new grade.DAb^Z

•••

Assignment statements have avalue, which is the same as thevariable on the left of the =.The value of this statement isthe same as the value returnedby cin.get().

This can also be used toinitialize multiple variables:a = b = c = 0;

Page 34: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline20

fig02_22.cpp(2 of 4)

22 // loop until user types end-of-file key sequence23 while ( ( grade = cin.get() ) != EOF ) {2425 // determine which grade was input26 switch ( grade ) { // switch structure nested in while2728 case 'A': // grade was uppercase A29 case 'a': // or lowercase a30 ++aCount; // increment aCount31 break; // necessary to exit switch3233 case 'B': // grade was uppercase B34 case 'b': // or lowercase b35 ++bCount; // increment bCount36 break; // exit switch3738 case 'C': // grade was uppercase C39 case 'c': // or lowercase c40 ++cCount; // increment cCount41 break; // exit switch42

•••Enter the EOF character to end input.aBcCAdfCEIncorrect letter grade entered. Entera new grade.DAb^Z

•••

Compares grade (an int)to the numericalrepresentations of A and a.

Page 35: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline20

fig02_22.cpp(2 of 4)

22 // loop until user types end-of-file key sequence23 while ( ( grade = cin.get() ) != EOF ) {2425 // determine which grade was input26 switch ( grade ) { // switch structure nested in while2728 case 'A': // grade was uppercase A29 case 'a': // or lowercase a30 ++aCount; // increment aCount31 break; // necessary to exit switch3233 case 'B': // grade was uppercase B34 case 'b': // or lowercase b35 ++bCount; // increment bCount36 break; // exit switch3738 case 'C': // grade was uppercase C39 case 'c': // or lowercase c40 ++cCount; // increment cCount41 break; // exit switch42

•••Enter the EOF character to end input.aBcCAdfCEIncorrect letter grade entered. Entera new grade.DAb^Z

•••

break causes switch to end andthe program continues with the firststatement after the switchstructure.

Page 36: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline21

fig02_22.cpp(3 of 4)

43 case 'D': // grade was uppercase D44 case 'd': // or lowercase d45 ++dCount; // increment dCount46 break; // exit switch4748 case 'F': // grade was uppercase F49 case 'f': // or lowercase f50 ++fCount; // increment fCount51 break; // exit switch5253 case '\n': // ignore newlines,54 case '\t': // tabs,55 case ' ': // and spaces in input56 break; // exit switch5758 default: // catch all other characters59 cout << "Incorrect letter grade entered."60 << " Enter a new grade." << endl;61 break; // optional; will exit switch anyway6263 } // end switch6465 } // end while66

•••Enter the EOF character to enaBcCAdfCEIncorrect letter grade enterea new grade.DAb^Z

•••

Page 37: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline21

fig02_22.cpp(3 of 4)

43 case 'D': // grade was uppercase D44 case 'd': // or lowercase d45 ++dCount; // increment dCount46 break; // exit switch4748 case 'F': // grade was uppercase F49 case 'f': // or lowercase f50 ++fCount; // increment fCount51 break; // exit switch5253 case '\n': // ignore newlines,54 case '\t': // tabs,55 case ' ': // and spaces in input56 break; // exit switch5758 default: // catch all other characters59 cout << "Incorrect letter grade entered."60 << " Enter a new grade." << endl;61 break; // optional; will exit switch anyway6263 } // end switch6465 } // end while66

•••Enter the EOF character to enaBcCAdfCEIncorrect letter grade enterea new grade.DAb^Z

•••

This test is necessary becauseEnter is pressed after eachletter grade is input. This addsa newline character that mustbe removed. Likewise, wewant to ignore anywhitespace.

Page 38: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline21

fig02_22.cpp(3 of 4)

43 case 'D': // grade was uppercase D44 case 'd': // or lowercase d45 ++dCount; // increment dCount46 break; // exit switch4748 case 'F': // grade was uppercase F49 case 'f': // or lowercase f50 ++fCount; // increment fCount51 break; // exit switch5253 case '\n': // ignore newlines,54 case '\t': // tabs,55 case ' ': // and spaces in input56 break; // exit switch5758 default: // catch all other characters59 cout << "Incorrect letter grade entered."60 << " Enter a new grade." << endl;61 break; // optional; will exit switch anyway6263 } // end switch6465 } // end while66

•••Enter the EOF character to enaBcCAdfCEIncorrect letter grade enterea new grade.DAb^Z

•••

Notice the default statement, whichcatches all other cases.

Page 39: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline22

fig02_22.cpp(4 of 4)

67 // output summary of results68 cout << "\n\nTotals for each letter grade are:"69 << "\nA: " << aCount // display number of A grades70 << "\nB: " << bCount // display number of B grades71 << "\nC: " << cCount // display number of C grades72 << "\nD: " << dCount // display number of D grades73 << "\nF: " << fCount // display number of F grades74 << endl;7576 return 0; // indicate successful termination7778 } // end function main

•••Totals for each letter grade are:A: 3B: 2C: 3D: 2F: 1

Page 40: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline23

fig02_22.cppoutput (1 of 1)

Enter the letter grades.Enter the EOF character to end input.aBcCAdfCEIncorrect letter grade entered. Enter a new grade.DAb^Z

Totals for each letter grade are:A: 3B: 2C: 3D: 2F: 1

Page 41: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

24

2.17 do/ while Repetition Structure

• Similar to while structure– Makes loop continuation test at end, not beginning– Loop body executes at least once

• Formatdo { statement} while ( condition );

• Conrad's preferred indentation:do{ statement} while ( condition );

true

false

action(s)

condition

Page 42: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline25

fig02_24.cpp(1 of 1)

fig02_24.cppoutput (1 of 1)

1 // Fig. 2.24: fig02_24.cpp2 // Using the do/while repetition structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialize counter1213 do {14 cout << counter << " "; // display counter15 } while ( ++counter <= 10 ); // end do/while1617 cout << endl;1819 return 0; // indicate successful termination2021 } // end function main

1 2 3 4 5 6 7 8 9 10

Page 43: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline25

fig02_24.cpp(1 of 1)

fig02_24.cppoutput (1 of 1)

1 // Fig. 2.24: fig02_24.cpp2 // Using the do/while repetition structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 int counter = 1; // initialize counter1213 do {14 cout << counter << " "; // display counter15 } while ( ++counter <= 10 ); // end do/while1617 cout << endl;1819 return 0; // indicate successful termination2021 } // end function main

1 2 3 4 5 6 7 8 9 10

Notice the preincrement inloop-continuation test.

Page 44: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

26

2.18 break and continue Statements

• break statement– Immediate exit from while, for, do/while, switch– Program continues with first statement after structure

• Common uses– Escape early from a loop– Skip the remainder of switch

Page 45: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline27

fig02_26.cpp(1 of 1)

1 // Fig. 2.26: fig02_26.cpp2 // Using the break statement in a for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {1112 int x; // x declared here so it can be used after the loop1314 // loop 10 times15 for ( x = 1; x <= 10; x++ ) {1617 // if x is 5, terminate loop18 if ( x == 5 )19 break; // break loop only if x is 52021 cout << x << " "; // display value of x2223 } // end for2425 cout << "\nBroke out of loop when x became " << x << endl;

2627 return 0; // indicate successful termination2829 } // end function main

Page 46: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline27

fig02_26.cpp(1 of 1)

1 // Fig. 2.26: fig02_26.cpp2 // Using the break statement in a for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {1112 int x; // x declared here so it can be used after the loop1314 // loop 10 times15 for ( x = 1; x <= 10; x++ ) {1617 // if x is 5, terminate loop18 if ( x == 5 )19 break; // break loop only if x is 52021 cout << x << " "; // display value of x2223 } // end for2425 cout << "\nBroke out of loop when x became " << x << endl;

2627 return 0; // indicate successful termination2829 } // end function main

Exits for structure whenbreak executed.

Page 47: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline27

fig02_26.cpp(1 of 1)

1 // Fig. 2.26: fig02_26.cpp2 // Using the break statement in a for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {1112 int x; // x declared here so it can be used after the loop1314 // loop 10 times15 for ( x = 1; x <= 10; x++ ) {1617 // if x is 5, terminate loop18 if ( x == 5 )19 break; // break loop only if x is 52021 cout << x << " "; // display value of x2223 } // end for2425 cout << "\nBroke out of loop when x became " << x << endl;

2627 return 0; // indicate successful termination2829 } // end function main

Exits for structure whenbreak executed.

1 2 3 4Broke out of loop when x became 5

Page 48: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

28

2.18 break and continue Statements

• continue statement– Used in while, for, do/while– Skips remainder of loop body– Proceeds with next iteration of loop

• while and do/while structure– Loop-continuation test evaluated immediately after thecontinue statement

• for structure– Increment expression executed– Next, loop-continuation test evaluated

Page 49: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline29

fig02_27.cpp(1 of 1)

1 // Fig. 2.27: fig02_27.cpp2 // Using the continue statement in a for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // loop 10 times12 for ( int x = 1; x <= 10; x++ ) {1314 // if x is 5, continue with next iteration of loop15 if ( x == 5 )16 continue; // skip remaining code in loop body1718 cout << x << " "; // display value of x1920 } // end for structure2122 cout << "\nUsed continue to skip printing the value 5"23 << endl;2425 return 0; // indicate successful termination

1 2 3 4 6 7 8 9 10Used continue to skip printing the value 5

2627 } // end function main

Page 50: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc.All rights reserved.

Outline29

fig02_27.cpp(1 of 1)

1 // Fig. 2.27: fig02_27.cpp2 // Using the continue statement in a for structure.3 #include <iostream>45 using std::cout;6 using std::endl;78 // function main begins program execution9 int main()10 {11 // loop 10 times12 for ( int x = 1; x <= 10; x++ ) {1314 // if x is 5, continue with next iteration of loop15 if ( x == 5 )16 continue; // skip remaining code in loop body1718 cout << x << " "; // display value of x1920 } // end for structure2122 cout << "\nUsed continue to skip printing the value 5"23 << endl;2425 return 0; // indicate successful termination

1 2 3 4 6 7 8 9 10Used continue to skip printing the value 5

2627 } // end function main

Skips to next iteration of theloop.

Page 51: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

30

2.19 Logical Operators

Used as conditions in loops, if statements&& (logical AND)

true if both conditions are true

if ( gender == 1 && age >= 65 ) ++seniorFemales;

|| (logical OR)true if either of condition is true

if ( semesterAverage >= 90 || finalExam >= 90 ) cout << "Student grade is A" << endl;

Page 52: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

31

2.19 Logical Operators

! (logical NOT, logical negation)Returns true when its condition is false, & vice versa

if ( !( grade == sentinelValue ) ) cout << "The next grade is " << grade << endl;

Alternative:if ( grade != sentinelValue ) cout << "The next grade is " << grade << endl;

Page 53: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

32

2.20 Confusing Equality (==) andAssignment (=) Operators

• Does not typically cause syntax errors• Expressions that have a value can be used for decision

• Zero = false, nonzero = true

• Assignment statements produce a value• Example

if ( payCode == 4 ) cout << "You get a bonus!" << endl;bonus given only if payCode is 4

• If == was replaced with =if ( payCode = 4 ) cout << "You get a bonus!" << endl;

Paycode set to 4 (no matter what it was before)yields "true" (since 4 is non-zero), so bonus always given

Page 54: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

332.20 lvalues vs. rvalues• lvalues (pronounced "ell values")

– Expressions that can appear on left side of equation– Can be changed (i.e., variables)

x = 4;

– target of an assignment statement;where the data gets stored.

"arrr values" )

Page 55: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

332.20 lvalues vs. rvalues• lvalues (pronounced "ell values")

– Expressions that can appear on left side of equation– Can be changed (i.e., variables)

x = 4;

– target of an assignment statement;where the data gets stored.

• rvalues (pronounced )"arrr values" )

Page 56: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

332.20 lvalues vs. rvalues• lvalues (pronounced "ell values")

– Expressions that can appear on left side of equation– Can be changed (i.e., variables)

x = 4;

– target of an assignment statement;where the data gets stored.

• rvalues (pronounced )"arrr values" )

Page 57: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

332.20 lvalues vs. rvalues• lvalues (pronounced "ell values")

– Expressions that can appear on left side of equation– Can be changed (i.e., variables)

x = 4;

– target of an assignment statement;where the data gets stored.

• rvalues (pronounced )– appear on right side of equation– may be variables, constants, or expressions, e.g.x = 4 ;x = y ;x = y + 4 ;

"arrr values" )

Page 58: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

332.20 lvalues vs. rvalues• lvalues (pronounced "ell values")

– Expressions that can appear on left side of equation– Can be changed (i.e., variables)

x = 4;

– target of an assignment statement;where the data gets stored.

• rvalues (pronounced )– appear on right side of equation– may be variables, constants, or expressions, e.g.x = 4 ;x = y ;x = y + 4 ;

• lvalues can be used as rvalues, but not vice versa(i.e. cannot write 4 = x; or y + 4 = x)

"arrr values" )

Page 59: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

342.21 Structured-Programming Summary• According to Bohm and Jacopini,

all programs can be broken down into

– Sequence

– Selection•if, if/else, or switch• Any selection can be

rewritten as an if statement

– Repetition•while, do/while or for• Any repetition structure can be

rewritten as a while statement

Page 60: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

352.21 Structured-Programming Summary

• Only use single-entry/single-exitcontrol structures

• Easier to understand, test, debug andmodify

• Rules– 1) start with a single rectangle, then

apply rules (2) and (3) in either order,as many times as necessary

– 2) Any rectangle (action) can be replaced bytwo rectangles (actions) in sequence

– 3) Any rectangle (action) can be replaced byany control structure (sequence, if, if/else,switch, while, do/while or for)

Rule 2

Rule 3

Rule 1

Page 61: 1 Chapter 2 - Control Structures - University of Delawareudel.edu/~pconrad/cisc181h/04S/pdf/deitelPdf/DD2.11-thru-2.21.pdf · 1 Chapter 2 - Control Structures Outline 2.11 Assignment

© 2003 Prentice Hall, Inc. All rights reserved.

36

2.21 Structured-Programming Summary

Rule 3

Rule 3Rule 3

Representation of Rule 3 (replacing any rectangle with a control structure)


Recommended