SlideShare a Scribd company logo
Chapter 2
Flow of Control
Copyright © 2010 Pearson Addison-
Wesley. All rights reserved
Learning Objectives
•
–
•
–
–
–
•
–
–
Boolean Expressions
Building, Evaluating & Precedence Rules
Branching Mechanisms
if-else
switch
Nesting if-else
Loops
While, do-while, for
Nesting loops
2-2
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Boolean Expressions:
Display 2.1 Comparison Operators
•
–
–
Logical Operators
Logical AND (&&)
Logical OR (||)
2-3
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Evaluating Boolean Expressions
•
–
–
•
–
Data type bool
Returns true or false
true, false are predefined library consts
Truth tables
Display 2.2 next slide
2-4
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Evaluating Boolean Expressions: Display 2.2
Truth Tables
2-5
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Display 2.3
Precedence of Operators (1 of 4)
2-6
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Display 2.3
Precedence of Operators (2 of 4)
2-7
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Display 2.3
Precedence of Operators (3 of 4)
2-8
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Display 2.3
Precedence of Operators (4 of 4)
2-9
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Precedence Examples
•
–
•
•
–
–
•
•
–
–
Arithmetic before logical
x + 1 > 2 || x + 1 < -3 means:
(x + 1) > 2 || (x + 1) < -3
Short-circuit evaluation
(x >= 0) && (y > 1)
Be careful with increment operators!
(x > 1) && (y++)
Integers as boolean values
All non-zero values  true
Zero value  false
2-10
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Branching Mechanisms
•
–
–
if-else statements
Choice of two alternate statements based
on condition expression
Example:
if (hrs > 40)
grossPay = rate*40 + 1.5*rate*(hrs-40);
else
grossPay = rate*hrs;
2-11
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
if-else Statement Syntax
•
•
•
Formal syntax:
if (<boolean_expression>)
<yes_statement>
else
<no_statement>
Note each alternative is only
ONE statement!
To have multiple statements execute in
either branch  use compound statement
2-12
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Compound/Block Statement
•
•
–
•
–
–
Only "get" one statement per branch
Must use compound statement { }
for multiples
Also called a "block" stmt
Each block should have block statement
Even if just one statement
Enhances readability
2-13
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Compound Statement in Action
• Note indenting in this example:
if (myScore > yourScore)
{
cout << "I win!n";
wager = wager + 100;
}
else
{
cout << "I wish these were golf scores.n";
wager = 0;
}
2-14
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Common Pitfalls
•
•
•
–
–
Operator "=" vs. operator "=="
One means "assignment" (=)
One means "equality" (==)
VERY different in C++!
Example:
if (x = 12) Note operator used!
Do_Something
else
Do_Something_Else
2-15
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
The Optional else
•
–
–
–
–
else clause is optional
If, in the false branch (else), you want "nothing" to
happen, leave it out
Example:
if (sales >= minimum)
salary = salary + bonus;
cout << "Salary = %" << salary;
Note: nothing to do for false condition, so there is no
else clause!
Execution continues with cout statement
2-16
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Nested Statements
•
–
–
–
•
if-else statements contain smaller statements
Compound or simple statements (we’ve seen)
Can also contain any statement at all, including
another if-else stmt!
Example:
if (speed > 55)
if (speed > 80)
cout << "You’re really speeding!";
else
cout << "You’re speeding.";
Note proper indenting!
2-17
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Multiway if-else
•
•
–
Not new, just different indenting
Avoids "excessive" indenting
Syntax:
2-18
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Multiway if-else Example
2-19
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
The switch Statement
•
•
•
–
A new stmt for controlling
multiple branches
Uses controlling expression which returns
bool data type (true or false)
Syntax:
Next slide
2-20
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
switch Statement Syntax
2-21
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
The switch Statement in Action
2-22
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
The switch: multiple case labels
•
–
–
–
Execution "falls thru" until break
switch provides a "point of entry"
Example:
case "A":
case "a":
cout << "Excellent: you got an "A"!n";
break;
case "B":
case "b":
cout << "Good: you got a "B"!n";
break;
Note multiple labels provide same "entry"
2-23
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
switch Pitfalls/Tip
•
–
–
•
–
–
–
Forgetting the break;
No compiler error
Execution simply "falls thru" other cases until
break;
Biggest use: MENUs
Provides clearer "big-picture" view
Shows menu structure effectively
Each branch is one menu choice
2-24
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
switch Menu Example
• Switch stmt "perfect" for menus:
switch (response)
{
case "1":
// Execute menu option 1
break;
case "2":
// Execute menu option 2
break;
case 3":
// Execute menu option 3
break;
default:
cout << "Please enter valid response.";
}
2-25
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Conditional Operator
•
–
–
–
–
•
Also called "ternary operator"
Allows embedded conditional in expression
Essentially "shorthand if-else" operator
Example:
if (n1 > n2)
max = n1;
else
max = n2;
Can be written:
max = (n1 > n2) ? N1 : n2;
"?" and ":" form this "ternary" operator
2-26
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Loops
•
–
•
•
–
•
•
–
•
3 Types of loops in C++
while
Most flexible
No "restrictions"
do-while
Least flexible
Always executes loop body at least once
for
Natural "counting" loop
2-27
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
while Loops Syntax
2-28
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
while Loop Example
•
–
Consider:
count = 0; // Initialization
while (count < 3) // Loop Condition
{
cout << "Hi "; // Loop Body
count++; // Update expression
}
Loop body executes how many times?
2-29
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
do-while Loop Syntax
2-30
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
do-while Loop Example
•
–
–
count = 0; // Initialization
do
{
cout << "Hi "; // Loop Body
count++; // Update expression
} while (count < 3); // Loop Condition
Loop body executes how many times?
do-while loops always execute body at least once!
2-31
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
while vs. do-while
•
–
•
•
•
•
•
Very similar, but…
One important difference
Issue is "WHEN" boolean expression is checked
while: checks BEFORE body is executed
do-while: checked AFTER body is executed
After this difference, they’re
essentially identical!
while is more common, due to it’s
ultimate "flexibility"
2-32
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Comma Operator
•
•
•
–
–
•
Evaluate list of expressions, returning
value of the last expression
Most often used in a for-loop
Example:
first = (first = 2, second = first + 1);
first gets assigned the value 3
second gets assigned the value 3
No guarantee what order expressions will
be evaluated.
2-33
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
for Loop Syntax
•
–
for (Init_Action; Bool_Exp; Update_Action)
Body_Statement
Like if-else, Body_Statement can be
a block statement
Much more typical
2-34
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
for Loop Example
•
•
•
•
for (count=0;count<3;count++)
{
cout << "Hi "; // Loop Body
}
How many times does loop body execute?
Initialization, loop condition and update all
"built into" the for-loop structure!
A natural "counting" loop
2-35
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Loop Issues
•
•
Loop’s condition expression can be ANY boolean
expression
Examples:
while (count<3 && done!=0)
{
// Do something
}
for (index=0;index<10 && entry!=-99)
{
// Do something
}
2-36
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Loop Pitfalls: Misplaced ;
•
–
–
•
Watch the misplaced ; (semicolon)
Example:
while (response != 0) ;
{
cout << "Enter val: ";
cin >> response;
}
Notice the ";" after the while condition!
Result here: INFINITE LOOP!
2-37
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Loop Pitfalls: Infinite Loops
•
–
–
–
•
–
Loop condition must evaluate to false at
some iteration through loop
If not  infinite loop.
Example:
while (1)
{
cout << "Hello ";
}
A perfectly legal C++ loop  always infinite!
Infinite loops can be desirable
e.g., "Embedded Systems"
2-38
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
The break and continue Statements
•
–
–
•
–
•
–
•
–
Flow of Control
Recall how loops provide "graceful" and clear flow of
control in and out
In RARE instances, can alter natural flow
break;
Forces loop to exit immediately.
continue;
Skips rest of loop body
These statements violate natural flow
Only used when absolutely necessary!
2-39
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Nested Loops
•
•
–
•
–
–
Recall: ANY valid C++ statements can be
inside body of loop
This includes additional loop statements!
Called "nested loops"
Requires careful indenting:
for (outer=0; outer<5; outer++)
for (inner=7; inner>2; inner--)
cout << outer << inner;
Notice no { } since each body is one statement
Good style dictates we use { } anyway
2-40
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Summary 1
•
–
•
–
–
•
–
–
–
Boolean expressions
Similar to arithmetic  results in true or false
C++ branching statements
if-else, switch
switch statement great for menus
C++ loop statements
while
do-while
for
2-41
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.
Summary 2
•
–
•
–
•
–
–
–
do-while loops
Always execute their loop body at least once
for-loop
A natural "counting" loop
Loops can be exited early
break statement
continue statement
Usage restricted for style purposes
2-42
Copyright © 2010 Pearson Addison-Wesley. All rights
reserved.

More Related Content

Similar to chap2cpp4th.pdf (20)

PDF
Control statements
Kanwalpreet Kaur
 
PPTX
5.pptx fundamental programing one branch
ssuserdde43b
 
PPTX
Cs1123 6 loops
TAlha MAlik
 
PDF
c++ Data Types and Selection
Ahmed Nobi
 
PPT
C++ CH3-P2 using c++ in all other parts.ppt
MutacalimMohamed
 
PPTX
Loops IN COMPUTER SCIENCE STANDARD 11 BY KR
Krishna Raj
 
PDF
4th_Ed_Ch03.pdf
ShifatiRabbi
 
PPTX
Fekra c++ Course #2
Amr Alaa El Deen
 
PDF
L11, Switch, break and continue statements, CSE 202, BN11.pdf
SauravBarua11
 
PPTX
Icom4015 lecture4-f16
BienvenidoVelezUPR
 
PPTX
Synchronization in os.pptx
AbdullahBhatti53
 
PPTX
Oop object oriented programing topics
(•̮̮̃•̃) Prince Do Not Work
 
PPTX
Introduction to VB.NET - UP SITF
John Patrick Oliveros
 
PPTX
Lec 2.pptx programing errors \basic of programing
daoodkhan4177
 
PPT
C++InputOutput.PPT
KamranAli649587
 
PPT
C++filehhjglnkn,jhjgnfcbfshbkh.,lm'\;;.PPT
BayanbekAmantay
 
PDF
C++ L01-Variables
Mohammad Shaker
 
PPTX
Object oriented programming system with C++
msharshitha03s
 
PPTX
Chp4_C++_Control Structures-Part2_Iteration.pptx
ssuser10ed71
 
Control statements
Kanwalpreet Kaur
 
5.pptx fundamental programing one branch
ssuserdde43b
 
Cs1123 6 loops
TAlha MAlik
 
c++ Data Types and Selection
Ahmed Nobi
 
C++ CH3-P2 using c++ in all other parts.ppt
MutacalimMohamed
 
Loops IN COMPUTER SCIENCE STANDARD 11 BY KR
Krishna Raj
 
4th_Ed_Ch03.pdf
ShifatiRabbi
 
Fekra c++ Course #2
Amr Alaa El Deen
 
L11, Switch, break and continue statements, CSE 202, BN11.pdf
SauravBarua11
 
Icom4015 lecture4-f16
BienvenidoVelezUPR
 
Synchronization in os.pptx
AbdullahBhatti53
 
Oop object oriented programing topics
(•̮̮̃•̃) Prince Do Not Work
 
Introduction to VB.NET - UP SITF
John Patrick Oliveros
 
Lec 2.pptx programing errors \basic of programing
daoodkhan4177
 
C++InputOutput.PPT
KamranAli649587
 
C++filehhjglnkn,jhjgnfcbfshbkh.,lm'\;;.PPT
BayanbekAmantay
 
C++ L01-Variables
Mohammad Shaker
 
Object oriented programming system with C++
msharshitha03s
 
Chp4_C++_Control Structures-Part2_Iteration.pptx
ssuser10ed71
 

More from AsiimweGeraldMaserek1 (16)

PDF
OPERATIONAL PLANNING BY ASIIMWE GERALD MAKERERE.pdf
AsiimweGeraldMaserek1
 
PPTX
ASIIMWE GERALD The Production Process Of Yogurt Locally at SFTNB.pptx
AsiimweGeraldMaserek1
 
PPTX
Traditional fermented cereal products.pptx
AsiimweGeraldMaserek1
 
PDF
Equipment development presentation.pdf
AsiimweGeraldMaserek1
 
PPT
chap9 (2).ppt
AsiimweGeraldMaserek1
 
PPTX
Product strategy.pptx
AsiimweGeraldMaserek1
 
PPTX
Product development 1.pptx
AsiimweGeraldMaserek1
 
PPTX
Collection.pptx
AsiimweGeraldMaserek1
 
PPTX
Sampling.pptx
AsiimweGeraldMaserek1
 
PPTX
Foggg.pptx
AsiimweGeraldMaserek1
 
PPTX
Heptix.pptx
AsiimweGeraldMaserek1
 
PPTX
GROUP 3.pptx
AsiimweGeraldMaserek1
 
PPTX
Questions.pptx
AsiimweGeraldMaserek1
 
PPTX
Chief.pptx
AsiimweGeraldMaserek1
 
PPTX
PRESENTATION.pptx
AsiimweGeraldMaserek1
 
PPTX
PRESENTATION(0).pptx
AsiimweGeraldMaserek1
 
OPERATIONAL PLANNING BY ASIIMWE GERALD MAKERERE.pdf
AsiimweGeraldMaserek1
 
ASIIMWE GERALD The Production Process Of Yogurt Locally at SFTNB.pptx
AsiimweGeraldMaserek1
 
Traditional fermented cereal products.pptx
AsiimweGeraldMaserek1
 
Equipment development presentation.pdf
AsiimweGeraldMaserek1
 
chap9 (2).ppt
AsiimweGeraldMaserek1
 
Product strategy.pptx
AsiimweGeraldMaserek1
 
Product development 1.pptx
AsiimweGeraldMaserek1
 
Collection.pptx
AsiimweGeraldMaserek1
 
Sampling.pptx
AsiimweGeraldMaserek1
 
GROUP 3.pptx
AsiimweGeraldMaserek1
 
Questions.pptx
AsiimweGeraldMaserek1
 
PRESENTATION.pptx
AsiimweGeraldMaserek1
 
PRESENTATION(0).pptx
AsiimweGeraldMaserek1
 

Recently uploaded (20)

PPTX
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PPTX
Introduction to Design of Machine Elements
PradeepKumarS27
 
PPTX
Evaluation and thermal analysis of shell and tube heat exchanger as per requi...
shahveer210504
 
PPTX
Depth First Search Algorithm in 🧠 DFS in Artificial Intelligence (AI)
rafeeqshaik212002
 
PPTX
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
PPTX
Damage of stability of a ship and how its change .pptx
ehamadulhaque
 
PPTX
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
PPTX
Day2 B2 Best.pptx
helenjenefa1
 
PPTX
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
PDF
Pressure Measurement training for engineers and Technicians
AIESOLUTIONS
 
PDF
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
PPTX
美国电子版毕业证南卡罗莱纳大学上州分校水印成绩单USC学费发票定做学位证书编号怎么查
Taqyea
 
PPTX
GitOps_Repo_Structure for begeinner(Scaffolindg)
DanialHabibi2
 
PDF
Design Thinking basics for Engineers.pdf
CMR University
 
PDF
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
PDF
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
PPTX
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
PPTX
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
PPTX
Types of Bearing_Specifications_PPT.pptx
PranjulAgrahariAkash
 
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
Introduction to Design of Machine Elements
PradeepKumarS27
 
Evaluation and thermal analysis of shell and tube heat exchanger as per requi...
shahveer210504
 
Depth First Search Algorithm in 🧠 DFS in Artificial Intelligence (AI)
rafeeqshaik212002
 
The Role of Information Technology in Environmental Protectio....pptx
nallamillisriram
 
Damage of stability of a ship and how its change .pptx
ehamadulhaque
 
MobileComputingMANET2023 MobileComputingMANET2023.pptx
masterfake98765
 
Day2 B2 Best.pptx
helenjenefa1
 
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
Pressure Measurement training for engineers and Technicians
AIESOLUTIONS
 
Introduction to Productivity and Quality
মোঃ ফুরকান উদ্দিন জুয়েল
 
美国电子版毕业证南卡罗莱纳大学上州分校水印成绩单USC学费发票定做学位证书编号怎么查
Taqyea
 
GitOps_Repo_Structure for begeinner(Scaffolindg)
DanialHabibi2
 
Design Thinking basics for Engineers.pdf
CMR University
 
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
Unified_Cloud_Comm_Presentation anil singh ppt
anilsingh298751
 
Heart Bleed Bug - A case study (Course: Cryptography and Network Security)
Adri Jovin
 
原版一样(Acadia毕业证书)加拿大阿卡迪亚大学毕业证办理方法
Taqyea
 
Types of Bearing_Specifications_PPT.pptx
PranjulAgrahariAkash
 

chap2cpp4th.pdf

  • 1. Chapter 2 Flow of Control Copyright © 2010 Pearson Addison- Wesley. All rights reserved
  • 2. Learning Objectives • – • – – – • – – Boolean Expressions Building, Evaluating & Precedence Rules Branching Mechanisms if-else switch Nesting if-else Loops While, do-while, for Nesting loops 2-2 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 3. Boolean Expressions: Display 2.1 Comparison Operators • – – Logical Operators Logical AND (&&) Logical OR (||) 2-3 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 4. Evaluating Boolean Expressions • – – • – Data type bool Returns true or false true, false are predefined library consts Truth tables Display 2.2 next slide 2-4 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 5. Evaluating Boolean Expressions: Display 2.2 Truth Tables 2-5 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 6. Display 2.3 Precedence of Operators (1 of 4) 2-6 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 7. Display 2.3 Precedence of Operators (2 of 4) 2-7 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 8. Display 2.3 Precedence of Operators (3 of 4) 2-8 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 9. Display 2.3 Precedence of Operators (4 of 4) 2-9 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 10. Precedence Examples • – • • – – • • – – Arithmetic before logical x + 1 > 2 || x + 1 < -3 means: (x + 1) > 2 || (x + 1) < -3 Short-circuit evaluation (x >= 0) && (y > 1) Be careful with increment operators! (x > 1) && (y++) Integers as boolean values All non-zero values  true Zero value  false 2-10 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 11. Branching Mechanisms • – – if-else statements Choice of two alternate statements based on condition expression Example: if (hrs > 40) grossPay = rate*40 + 1.5*rate*(hrs-40); else grossPay = rate*hrs; 2-11 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 12. if-else Statement Syntax • • • Formal syntax: if (<boolean_expression>) <yes_statement> else <no_statement> Note each alternative is only ONE statement! To have multiple statements execute in either branch  use compound statement 2-12 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 13. Compound/Block Statement • • – • – – Only "get" one statement per branch Must use compound statement { } for multiples Also called a "block" stmt Each block should have block statement Even if just one statement Enhances readability 2-13 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 14. Compound Statement in Action • Note indenting in this example: if (myScore > yourScore) { cout << "I win!n"; wager = wager + 100; } else { cout << "I wish these were golf scores.n"; wager = 0; } 2-14 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 15. Common Pitfalls • • • – – Operator "=" vs. operator "==" One means "assignment" (=) One means "equality" (==) VERY different in C++! Example: if (x = 12) Note operator used! Do_Something else Do_Something_Else 2-15 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 16. The Optional else • – – – – else clause is optional If, in the false branch (else), you want "nothing" to happen, leave it out Example: if (sales >= minimum) salary = salary + bonus; cout << "Salary = %" << salary; Note: nothing to do for false condition, so there is no else clause! Execution continues with cout statement 2-16 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 17. Nested Statements • – – – • if-else statements contain smaller statements Compound or simple statements (we’ve seen) Can also contain any statement at all, including another if-else stmt! Example: if (speed > 55) if (speed > 80) cout << "You’re really speeding!"; else cout << "You’re speeding."; Note proper indenting! 2-17 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 18. Multiway if-else • • – Not new, just different indenting Avoids "excessive" indenting Syntax: 2-18 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 19. Multiway if-else Example 2-19 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 20. The switch Statement • • • – A new stmt for controlling multiple branches Uses controlling expression which returns bool data type (true or false) Syntax: Next slide 2-20 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 21. switch Statement Syntax 2-21 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 22. The switch Statement in Action 2-22 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 23. The switch: multiple case labels • – – – Execution "falls thru" until break switch provides a "point of entry" Example: case "A": case "a": cout << "Excellent: you got an "A"!n"; break; case "B": case "b": cout << "Good: you got a "B"!n"; break; Note multiple labels provide same "entry" 2-23 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 24. switch Pitfalls/Tip • – – • – – – Forgetting the break; No compiler error Execution simply "falls thru" other cases until break; Biggest use: MENUs Provides clearer "big-picture" view Shows menu structure effectively Each branch is one menu choice 2-24 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 25. switch Menu Example • Switch stmt "perfect" for menus: switch (response) { case "1": // Execute menu option 1 break; case "2": // Execute menu option 2 break; case 3": // Execute menu option 3 break; default: cout << "Please enter valid response."; } 2-25 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 26. Conditional Operator • – – – – • Also called "ternary operator" Allows embedded conditional in expression Essentially "shorthand if-else" operator Example: if (n1 > n2) max = n1; else max = n2; Can be written: max = (n1 > n2) ? N1 : n2; "?" and ":" form this "ternary" operator 2-26 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 27. Loops • – • • – • • – • 3 Types of loops in C++ while Most flexible No "restrictions" do-while Least flexible Always executes loop body at least once for Natural "counting" loop 2-27 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 28. while Loops Syntax 2-28 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 29. while Loop Example • – Consider: count = 0; // Initialization while (count < 3) // Loop Condition { cout << "Hi "; // Loop Body count++; // Update expression } Loop body executes how many times? 2-29 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 30. do-while Loop Syntax 2-30 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 31. do-while Loop Example • – – count = 0; // Initialization do { cout << "Hi "; // Loop Body count++; // Update expression } while (count < 3); // Loop Condition Loop body executes how many times? do-while loops always execute body at least once! 2-31 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 32. while vs. do-while • – • • • • • Very similar, but… One important difference Issue is "WHEN" boolean expression is checked while: checks BEFORE body is executed do-while: checked AFTER body is executed After this difference, they’re essentially identical! while is more common, due to it’s ultimate "flexibility" 2-32 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 33. Comma Operator • • • – – • Evaluate list of expressions, returning value of the last expression Most often used in a for-loop Example: first = (first = 2, second = first + 1); first gets assigned the value 3 second gets assigned the value 3 No guarantee what order expressions will be evaluated. 2-33 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 34. for Loop Syntax • – for (Init_Action; Bool_Exp; Update_Action) Body_Statement Like if-else, Body_Statement can be a block statement Much more typical 2-34 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 35. for Loop Example • • • • for (count=0;count<3;count++) { cout << "Hi "; // Loop Body } How many times does loop body execute? Initialization, loop condition and update all "built into" the for-loop structure! A natural "counting" loop 2-35 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 36. Loop Issues • • Loop’s condition expression can be ANY boolean expression Examples: while (count<3 && done!=0) { // Do something } for (index=0;index<10 && entry!=-99) { // Do something } 2-36 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 37. Loop Pitfalls: Misplaced ; • – – • Watch the misplaced ; (semicolon) Example: while (response != 0) ; { cout << "Enter val: "; cin >> response; } Notice the ";" after the while condition! Result here: INFINITE LOOP! 2-37 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 38. Loop Pitfalls: Infinite Loops • – – – • – Loop condition must evaluate to false at some iteration through loop If not  infinite loop. Example: while (1) { cout << "Hello "; } A perfectly legal C++ loop  always infinite! Infinite loops can be desirable e.g., "Embedded Systems" 2-38 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 39. The break and continue Statements • – – • – • – • – Flow of Control Recall how loops provide "graceful" and clear flow of control in and out In RARE instances, can alter natural flow break; Forces loop to exit immediately. continue; Skips rest of loop body These statements violate natural flow Only used when absolutely necessary! 2-39 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 40. Nested Loops • • – • – – Recall: ANY valid C++ statements can be inside body of loop This includes additional loop statements! Called "nested loops" Requires careful indenting: for (outer=0; outer<5; outer++) for (inner=7; inner>2; inner--) cout << outer << inner; Notice no { } since each body is one statement Good style dictates we use { } anyway 2-40 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 41. Summary 1 • – • – – • – – – Boolean expressions Similar to arithmetic  results in true or false C++ branching statements if-else, switch switch statement great for menus C++ loop statements while do-while for 2-41 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
  • 42. Summary 2 • – • – • – – – do-while loops Always execute their loop body at least once for-loop A natural "counting" loop Loops can be exited early break statement continue statement Usage restricted for style purposes 2-42 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.