1 control structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 ·...

42
© 2003 Prentice Hall, Inc. All rights reserved. 1 Control Structures Outline -Introduction -Algorithms -Pseudocode -Control Structures -if Selection Structure -if/else Selection Structure -while Repetition Structure -Formulating Algorithms: Case Study 1 (Counter-Controlled Repetition) -Formulating Algorithms with Top-Down, Stepwise Refinement: Case Study 2 (Sentinel-Controlled Repetition) -Formulating Algorithms with Top-Down, Stepwise Refinement: Case Study 3 (Nested Control Structures)

Upload: others

Post on 19-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

1

Control StructuresOutline

-Introduction-Algorithms-Pseudocode-Control Structures-if Selection Structure-if/else Selection Structure-while Repetition Structure-Formulating Algorithms: Case Study 1 (Counter-Controlled Repetition)-Formulating Algorithms with Top-Down, Stepwise Refinement: Case Study 2 (Sentinel-Controlled Repetition)-Formulating Algorithms with Top-Down, Stepwise Refinement: Case Study 3 (Nested Control Structures)

Page 2: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

2

Introduction

• Before writing a program– Have a thorough understanding of the problem – Carefully plan your approach for solving it

• While writing a program – Know what “building blocks” are available– Use good programming principles

Page 3: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

3

Algorithms

• Computing problems– Solved by executing a series of actions

(statements) in a specific order• Algorithm is a procedure determining

– Actions to be executed – Order to be executed

• Program control– Specifies the order in which statements are

executed in a program

Page 4: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

4

Algorithms

1. Get the number. 2. To begin, set the factorial of the number to

be one. 3. While the number is greater than one

i. Set the factorial to be the factorial multiplied by the number.

ii. Decrement the number. 4. Print out the factorial

• Consider a program to calculate the factorial of a number:

factorial-Algorithm

Page 5: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

5

Pseudocode

• Pseudocode– Artificial, informal language used to develop

algorithms– Similar to everyday English

• Not executed on computers – Used to think out program before coding

• Easy to convert into C++ program– Only executable statements

• No need to declare variables

// find the average of n numbers1. get numbers2. sum = Add (numbers)3. average = sum/n

Page 6: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

6

Pseudocode

// find the factorial of an integerfactorial = 1 while (number > 1)

factorial = factorial * number number = number -1

print factorial

factorial-pseudocode

Page 7: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

7

Control Structures

• Sequential execution– Statements executed in the order they are written

• Transfer of control– Next statement executed not next one in sequence

• 3 control structures (Bohm and Jacopini)– Sequence structure

• Programs executed sequentially by default– Selection structures

• if, if/else, switch

• e.g., perform action if condition is true– Repetition structures

• while, do/while, for

Page 8: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

8

Control Structures

• C++ keywords– Cannot be used as identifiers or variable names

C++ Keywords

Keywords common to the C and C++ programming languages

auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

C++ only keywords

asm bool catch class const_cast delete dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast

static_cast template this throw true try typeid typename using virtual wchar_t

Page 9: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

9

Control Structures

• Flowchart (an alternative to Pseudocode)– Graphical representation of an algorithm– Special-purpose symbols connected by arrows

(flowlines)– Rectangle symbol (action symbol)

• Any type of action– Oval symbol

• Beginning or end of a program, or a section of code (circles)

Page 10: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

10

Control Structures

Actions

transitions

Page 11: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

11

if Selection Structure

• Selection structure– Choose among alternative courses of action– Pseudocode example:

If student’s grade is greater than or equal to 60Print “Passed”

– If the condition is true• Print statement executed, program continues to next

statement– If the condition is false

• Print statement ignored, program continues– Indenting makes programs easier to read

• C++ ignores whitespace characters (tabs, spaces, etc.)• Note: C++ does not ignore white space characters in “”

– Example: cout<<“welcome to\n”;

Page 12: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

12

if Selection Structure

• Translation into C++If student’s grade is greater than or equal to 60

Print “Passed”

if ( grade >= 60 ) cout << "Passed";

• Diamond symbol (decision symbol)– Indicates decision is to be made– Contains an expression that can be true or false

• Test condition, follow path

• if structure – Single-entry/single-exit

Page 13: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

13

if Selection Structure

• Flowchart of pseudocode statement

A decision can be made on any expression.

zero - false

nonzero - true

Guard condition

if: single entry-single

exit structure

Page 14: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

14

if/else Selection Structure

• if– Performs action if condition true. Otherwise, action is

skipped• if/else

– Different actions if conditions true or false• Pseudocode

if student’s grade is greater than or equal to 60print “Passed”

elseprint “Failed”

• C++ codeif ( grade >= 60 )

cout << "Passed";else

cout << "Failed";

Page 15: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

15

if/else Selection Structure

• Ternary conditional operator (?:)– Three arguments (condition, value if true, value if false)

• Code could be written:cout << ( grade >= 60 ? “Passed” : “Failed” );

• One can also write a conditional expressiongrade >= 60 ? cout << “Passed” : cout << “Failed”;

which reads:if grade is greater than or equal to 60,

cout<<“Passed”; otherwise, cout<<“Failed”

Condition Value if true Value if falseConditional expression with actions to execute

Page 16: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

16

if/else Selection Structure

action state

Page 17: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

17

if/else Selection Structure

• Nested if/else structures– One inside another, test for multiple cases – Once condition met, other statements skipped

if student’s grade is greater than or equal to 90Print “A”

else if student’s grade is greater than or equal to 80

Print “B”else

if student’s grade is greater than or equal to 70 Print “C”

else if student’s grade is greater than or equal to 60

Print “D”else

Print “F”

Page 18: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

18

if/else Selection Structure

• Example (C++ code)

if ( grade >= 90 ) // 90 and abovecout << "A";

else

if ( grade >= 80 ) // 80-89cout << "B";

else

if ( grade >= 70 ) // 70-79cout << "C";

else

if ( grade >= 60 ) // 60-69cout << "D";

else // less than 60cout << "F";

Page 19: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

19

if/else Selection Structure

• Example (C++ code)

if ( grade >= 90 ) // 90 and abovecout << "A";

else if ( grade >= 80 ) // 80-89cout << "B";

else if ( grade >= 70 ) // 70-79cout << "C";

else if ( grade >= 60 ) // 60-69cout << "D";

else // less than 60cout << "F";

• This form of using if/else is more popular because it avoids deep indentation of the code

Page 20: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

20

if/else Selection Structure

• Compound statement– Set of statements within a pair of bracesif ( grade >= 60 )

cout << "Passed.\n";else {

cout << "Failed.\n";cout << "You must take this course again.\n";

}

– Without braces,cout << "You must take this course again.\n";

will always be executed regardless of whether the grade is less than 60 or not.

• Block– Set of statements within braces

Page 21: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

21

if/else Selection Structure

• If you forget one or both of the braces, a syntax or logic error may occur!!

• Some programmers prefer to put the beginning and ending braces of a block before typing the individual statements within the bracesif (){}else{}

Page 22: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

22

while -- Repetition Structure

• Repetition structure– Action repeated while some condition remains true– Pseudocode

while there are more items on my shopping listPurchase next item and cross it off my list

– while loop repeated until condition becomes false:• Condition is “there are more items on my shopping list”• Action “Purchase next item and cross it off my list”• Action always repeated as long as condition remains true

• Exampleint product = 2;while ( product <= 1000 )

product = 2 * product;

Each repetition of the while multiplies product by 2:Product takes values:

2, 4, 8, 16, 32, 64, 128, 256, 512 and 1024.When product is 1024, the condition becomes false

Page 23: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

23

while -- Repetition Structure

Merge and decision are distinguished by the number of incoming and outgoing arrows

Page 24: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

24

Formulating Algorithms (Counter-Controlled Repetition)

• Counter-controlled repetition– Loop repeated until counter reaches certain value

(predefined value)– Counter defines the number of times a group of

statements will execute• Definite repetition

– Number of repetitions known • Example

A class of ten students took a quiz. The grades (integers in the range 0 to 100) for this quiz are available to you. Determine the class average on the quiz.

Page 25: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

25

Formulating Algorithms (Counter-Controlled Repetition)

• Pseudocode for example: (total and grade are two variables)

Set total to zeroSet grade_counter to oneWhile grade_counter is less than or equal to ten

Input the next gradeAdd the grade into the totalAdd one to the grade_counter

Set the class average to the total divided by tenPrint the class average

• Next: C++ code for this example

Page 26: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

1 // Fig. 4.7: fig04_07.cpp2 // Class average program with counter-controlled repetition.3 #include <iostream>4 5 using std::cout;6 using std::cin;7 using std::endl;8 9 // function main begins program execution10 int main()11 {12 int total; // sum of grades input by user13 int gradeCounter; // number of grade to be entered next14 int grade; // grade value15 int average; // average of grades16 17 // initialization phase18 total = 0; // initialize total19 gradeCounter = 1; // initialize loop counter20

© 2003 Prentice Hall, Inc.All rights reserved.

Outline26

Page 27: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

21 // processing phase22 while ( gradeCounter <= 10 ) { // loop 10 times23 cout << "Enter grade: "; // prompt for input24 cin >> grade; // read grade from user25 total = total + grade; // add grade to total26 gradeCounter = gradeCounter + 1; // increment counter27 }28 29 // termination phase30 average = total / 10; // integer division31 32 // display result33 cout << "Class average is " << average << endl; 34 35 return 0; // indicate program ended successfully36 37 } // end function main

Enter grade: 98Enter grade: 76Enter grade: 71Enter grade: 87Enter grade: 83Enter grade: 90Enter grade: 57Enter grade: 79Enter grade: 82Enter grade: 94Class average is 81 © 2003 Prentice Hall, Inc.

All rights reserved.

Outline27

Page 28: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

28

Formulating Algorithms (Sentinel-Controlled Repetition)

• Suppose problem becomes: Develop a class-averaging program that will process an arbitrary number of grades each time the program is run

– Unknown number of students– How will program know when to end?

• Sentinel value– Indicates “end of data entry”– Loop ends when sentinel input– Sentinel chosen so it cannot be confused with

regular input • -1 in this cases (-1 cannot logically be a grade)

• Sentinel controlled repetition is also known as indefinite repetition

Page 29: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

29

Formulating Algorithms (Sentinel-Controlled Repetition)

• Top-down, stepwise refinement– Begin with pseudocode representation of top

Determine the class average for the quiz– top is a single statement that conveys the overall

function of the program– Divide top into smaller tasks, list in order

Initialize variablesInput, sum and count the quiz gradesCalculate and print the class average

Page 30: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

30

Formulating Algorithms (Sentinel-Controlled Repetition)

• Many programs have three phases– Initialization

• Initializes the program variables– Processing

• Input data, adjusts program variables– Termination

• Calculate and print the final results– Helps break up programs for top-down refinement

Page 31: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

31

Formulating Algorithms (Sentinel-Controlled Repetition)

• Refine the initialization phaseInitialize variables

goes toInitialize total to zeroInitialize counter to zero

• ProcessingInput, sum and count the quiz grades

goes to Input the first grade (possibly the sentinel)While the user has not yet entered the sentinel

Add this grade into the running totalAdd one to the grade counterInput the next grade (possibly the sentinel)

Page 32: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

32

Formulating Algorithms (Sentinel-Controlled Repetition)

• TerminationCalculate and print the class average

goes toIf the counter is not equal to zero

Set the average to the total divided by the counterPrint the average

ElsePrint “No grades were entered”

• Next: C++ program

Page 33: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

1 // Fig. 4.9: fig04_09.cpp2 // Class average program with sentinel-controlled repetition.3 #include <iostream>4 5 using std::cout;6 using std::cin;7 using std::endl;8 using std::fixed;9 10 #include <iomanip> // parameterized stream manipulators11 12 using std::setprecision; // sets numeric output precision 13 14 // function main begins program execution15 int main()16 {17 int total; // sum of grades18 int gradeCounter; // number of grades entered19 int grade; // grade value20 21 double average; // number with decimal point for average22 23 // initialization phase24 total = 0; // initialize total25 gradeCounter = 0; // initialize loop counter

© 2003 Prentice Hall, Inc.All rights reserved.

Outline33

Page 34: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

26 27 // processing phase28 // get first grade from user29 cout << "Enter grade, -1 to end: "; // prompt for input30 cin >> grade; // read grade from user31 32 // loop until sentinel value read from user33 while ( grade != -1 ) { 34 total = total + grade; // add grade to total35 gradeCounter = gradeCounter + 1; // increment counter36 37 cout << "Enter grade, -1 to end: "; // prompt for input38 cin >> grade; // read next grade39 40 } // end while41 42 // termination phase43 // if user entered at least one grade ...44 if ( gradeCounter != 0 ) {45 46 // calculate average of all grades entered47 average = static_cast< double >( total ) / gradeCounter;48

© 2003 Prentice Hall, Inc.All rights reserved.

Outline34

Page 35: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

49 // display average with two digits of precision50 cout << "Class average is " << setprecision( 2 )51 << fixed << average << endl;52 53 } // end if part of if/else54 55 else // if no grades were entered, output appropriate message56 cout << "No grades were entered" << endl;57 58 return 0; // indicate program ended successfully59 60 } // end function main

Enter grade, -1 to end: 75Enter grade, -1 to end: 94Enter grade, -1 to end: 97Enter grade, -1 to end: 88Enter grade, -1 to end: 70Enter grade, -1 to end: 64Enter grade, -1 to end: 83Enter grade, -1 to end: 89Enter grade, -1 to end: -1Class average is 82.50

© 2003 Prentice Hall, Inc.All rights reserved.

Outline35

Page 36: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

36

Nested Control Structures

• Problem statementA college has a list of test results (1 = pass, 2 = fail) for 10 students. Write a program that analyzes the results. If more than 8 students pass, print "Raise Tuition".

• Notice that– Program processes 10 results

• Fixed number, use counter-controlled loop– Two counters can be used

• One counts number that passed• Another counts number that fail

– Each test result is 1 or 2• If not 1, assume 2 (this assumption has

consequences!)

Page 37: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

37

Nested Control Structures

• Top level outlineAnalyze exam results and decide if tuition should be

raised • First refinement

Initialize variablesInput the ten quiz grades and count passes and failuresPrint a summary of the exam results and decide if tuition should be raised

• RefineInitialize variables (e.g., counters)

to Initialize passes to zeroInitialize failures to zeroInitialize student counter to one

Page 38: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

38

Nested Control Structures

• RefineInput the ten quiz grades and count passes and failures

to While student counter is less than or equal to ten

Input the next exam result

If the student passedAdd one to passes

ElseAdd one to failures

Add one to student counter

Page 39: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

© 2003 Prentice Hall, Inc. All rights reserved.

39

Nested Control Structures

• RefinePrint a summary of the exam results and decide if

tuition should be raisedto

Print the number of passesPrint the number of failuresIf more than eight students passed

Print “Raise tuition”

• Program next

Page 40: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

1 // Fig. 4.11: fig02_11.cpp2 // Analysis of examination results.3 #include <iostream>4 5 using std::cout;6 using std::cin;7 using std::endl;8 9 // function main begins program execution10 int main()11 {12 // initialize variables in declarations13 int passes = 0; // number of passes14 int failures = 0; // number of failures15 int studentCounter = 1; // student counter16 int result; // one exam result17 18 // process 10 students using counter-controlled loop19 while ( studentCounter <= 10 ) {20 21 // prompt user for input and obtain value from user22 cout << "Enter result (1 = pass, 2 = fail): ";23 cin >> result;24

© 2003 Prentice Hall, Inc.All rights reserved.

Outline40

Page 41: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

25 // if result 1, increment passes; if/else nested in while26 if ( result == 1 ) // if/else nested in while27 passes = passes + 1; 28 29 else // if result not 1, increment failures 30 failures = failures + 1; 31 32 // increment studentCounter so loop eventually terminates33 studentCounter = studentCounter + 1; 34 35 } // end while36 37 // termination phase; display number of passes and failures38 cout << "Passed " << passes << endl; 39 cout << "Failed " << failures << endl;40 41 // if more than eight students passed, print "raise tuition"42 if ( passes > 8 )43 cout << "Raise tuition " << endl; 44 45 return 0; // successful termination46 47 } // end function main

© 2003 Prentice Hall, Inc.All rights reserved.

Outline41

Page 42: 1 Control Structuresusers.encs.concordia.ca/~assi/courses/mech215/mech215... · 2006-09-18 · Control Structures •C ++ keywords – Cannot be used as identifiers or variable names

Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 2Enter result (1 = pass, 2 = fail): 2Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 2Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 2Passed 6Failed 4

Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 2Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Enter result (1 = pass, 2 = fail): 1Passed 9Failed 1Raise tuition

© 2003 Prentice Hall, Inc.All rights reserved.

Outline42