0% found this document useful (0 votes)
8 views54 pages

Chapter 4

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views54 pages

Chapter 4

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 54

C++ Programming:

From Problem Analysis


to Program Design, Fourth Edition

Chapter 4: Control Structures I (Selection)


Objectives
In this chapter, you will:
• Learn about control structures
• Examine relational and logical operators
• Explore how to form and evaluate logical
(Boolean) expressions
• Discover how to use the selection control
structures if, if...else, and switch in a
program
• Learn to use the assert function to terminate a
program
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 2
Control Structures

• Control Structures control the flow of


execution.
• A computer can process:
− In sequence
− Selectively (branch) - making a choice
− Repetitively (iteratively) - looping
• Some statements are executed only if certain
conditions are met
• A condition is met if it evaluates to true
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 3
Control Structures (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 4


Relational Operators

• A condition is represented by a logical


(Boolean) expression that can be true or
false
• Relational operators:
− Allow comparisons
− Require two operands (binary)
− Evaluate to true or false

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 5


Relational Operators (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 6


Relational Operators and Simple
Data Types
• You can use the relational operators with all
three simple data types:
− 8 < 15 evaluates to true
− 6 != 6 evaluates to false
− 2.5 > 5.8 evaluates to false
− 5.9 <= 7.5 evaluates to true

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 7


Comparing Characters

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 8


Comparing Characters
#include<iostream>
using namespace std;

int main()
{
bool result;
result = 'a' < 'b';
cout << result << endl;
}

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 9


Converting Characters to their
ASCII Code
#include<iostream>
using namespace std;

int main()
{
char character;
cout << (int) character;
// or
cout << int (character);
}

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 10


Relational Operators and the
string Type
• Relational operators can be applied to strings
• Strings are compared character by character,
starting with the first character
• Comparison continues until either a mismatch
is found or all characters are found equal
• If two strings of different lengths are compared
and the comparison is equal to the last
character of the shorter string
− The shorter string is less than the larger string
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 11
Relational Operators and the
string Type (continued)
• Suppose we have the following declarations:
string str1 = "Hello";
string str2 = "Hi";
string str3 = "Air";
string str4 = "Bill";
string str5 = "Big";

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 12


Relational Operators and the
string Type (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 13


Relational Operators and the
string Type (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 14


Relational Operators and the
string Type (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 15


Logical (Boolean) Operators and
Logical Expressions
• Logical (Boolean) operators enable you to
combine logical expressions

unary

binary

binary

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 16


Logical (Boolean) Operators and
Logical Expressions (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 17


Order of Precedence

• Relational and logical operators are


evaluated from left to right
• The associativity is left to right
• Parentheses can override precedence

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 20


Order of Precedence (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 21


Order of Precedence (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 22


Order of Precedence (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 23


Order of Precedence (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 24


Short-Circuit Evaluation

• Short-circuit evaluation: evaluation of a logical


expression stops as soon as the value of the
expression is known.
• Example:
(age >= 21) || ( x == 5)
In case(age >= 21)is True, then the whole
statement is true.
(grade == 'A') && (x >= 7)
In case (grade == 'A') is False, then the whole
statement is false.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 25
int Data Type and Logical
(Boolean) Expressions
• Earlier versions of C++ did not provide built-in
data types that had Boolean values
• Logical expressions evaluate to either 1 or 0
− The value of a logical expression was stored
in a variable of the data type int
• You can use the int data type to manipulate
logical (Boolean) expressions

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 26


The bool Data Type and Logical
(Boolean) Expressions
• The data type bool has logical (Boolean)
values true and false
• bool, true, and false are reserved words
• The identifier true has the value 1
• The identifier false has the value 0

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 27


Logical (Boolean) Expressions

• Logical expressions can be unpredictable


• The following expression appears to
represent a comparison of 0, num, and 10:
0 <= num <= 10
• It always evaluates to true because 0 <=
num evaluates to either 0 or 1, and 0 <= 10
is true and 1 <= 10 is true
• A correct way to write this expression is:
0 <= num && num <= 10
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 28
Selection: if and if...else

• One-Way Selection
• Two-Way Selection
• Compound (Block of) Statements
• Multiple Selections
• Nested if
• Comparing if...else Statements with a
Series of if Statements

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 29


Selection: if and if...else
(continued)
• Using Pseudocode to Develop, Test, and
Debug a Program
• Input Failure and the if Statement
• Confusion Between the Equality Operator
(==) and the Assignment Operator (=)
• Conditional Operator (?:)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 30


One-Way Selection

• The syntax of one-way selection is:

• The statement is executed if the value of the


expression is true
• The statement is bypassed if the value is
false; program goes to the next statement
• if is a reserved word

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 31


One-Way Selection (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 32


One-Way Selection (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 33


One-Way Selection (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 35


Two-Way Selection
• Two-way selection takes the form:

• If expression is true, statement1 is


executed; otherwise, statement2 is
executed
− statement1 and statement2 are any C++
statements
• else is a reserved word
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 36
Two-Way Selection (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 37


Two-Way Selection (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 38


Two-Way Selection (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 39


Compound (Block of) Statement

• Compound statement (block of statements):

• A compound statement is a single statement

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 40


Compound (Block of) Statement
(continued)
if (age > 18)
{
cout << "Eligible to vote." << endl;
cout << "No longer a minor." << endl;
}
else
{
cout << "Not eligible to vote." << endl;
cout << "Still a minor." << endl;
}

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 41


Multiple Selections

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 42


Multiple Selections (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 43


Nested if
• Nesting: one control statement within another.

Example:
// outer if condition
if (num != 0) {
// inner if condition
if (num > 0) {
cout << "The number is positive." << endl;
}
// inner else condition
else {
cout << "The number is negative." << endl;
}
}
// outer else condition
else {
cout << "The number is 0" << endl;
}
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 44
Comparing if…else Statements
with a Series of if Statements

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 45


Confusion Between == and =

• C++ allows you to use any expression that


can be evaluated to either true or false as
an expression in the if statement:
if (x = 5)
cout << "The value is five." << endl;
• The appearance of = in place of ==
resembles a silent killer
− It is not a syntax error
− It is a logical error

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 46


Conditional Operator (?:)

• Conditional operator (?:) takes three arguments


− Ternary operator
• Syntax for using the conditional operator:
expression1 ? expression2 : expression3
• If expression1 is true, the result of the
conditional expression is expression2
− Otherwise, the result is expression3
• Example:
x > y ? cout << "x is greater than y" : cout << "x is not greater than y“;

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 47


switch Structures

• switch structure: alternate


to if-else
• switch (integral)
expression is evaluated first
• Value of the expression
determines which
corresponding action is
taken
• Expression is sometimes
called the selector

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 48


switch Structures (continued)

• One or more statements may follow a case


label
• Braces are not needed to turn multiple
statements into a single compound statement
• The break statement may or may not appear
after each statement
• switch, case, break, and default are
reserved words

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 50


Summary

• Control structures alter normal control flow


• Most common control structures are selection
and repetition
• Relational operators: ==, <, <=, >, >=, !=
• Logical expressions evaluate to 1 (true) or 0
(false)
• Logical operators: ! (not), && (and), || (or)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 52


Summary (continued)

• Two selection structures: one-way selection


and two-way selection
• The expression in an if or if...else
structure is usually a logical expression
• No stand-alone else statement in C++
− Every else has a related if
• A sequence of statements enclosed between
braces, { and }, is called a compound
statement or block of statements
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 53
Summary (continued)

• Using assignment in place of the equality


operator creates a semantic error
• switch structure handles multiway selection
• break statement ends switch statement
• Use assert to terminate a program if certain
conditions are not met

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 54

You might also like