0% found this document useful (0 votes)
16 views59 pages

Selection Statements

This document discusses control structures in C++ programming, including selection control structures like if, if/else, and switch statements. It covers logical and relational operators that are used to form Boolean expressions to evaluate conditions. Selection control structures allow a program to execute code conditionally, depending on the evaluation of logical expressions. The document provides examples of how to use if/else statements, logical operators, and nested if statements to implement conditional logic in a C++ program.

Uploaded by

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

Selection Statements

This document discusses control structures in C++ programming, including selection control structures like if, if/else, and switch statements. It covers logical and relational operators that are used to form Boolean expressions to evaluate conditions. Selection control structures allow a program to execute code conditionally, depending on the evaluation of logical expressions. The document provides examples of how to use if/else statements, logical operators, and nested if statements to implement conditional logic in a C++ program.

Uploaded by

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

C++ Programming:

From Problem Analysis


to Program Design,

MAJID HUSSAIN
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

C++ Programming: From Problem Analysis to Program Design, Third Edition 2


Control Structures

• A computer can proceed:


− In sequence
− Selectively (branch) - making a choice
− Repetitively (iteratively) - looping
• Some statements are executed only if certain
conditions are met
• A condition is represented by a logical
(Boolean) expression that can be true or false
• A condition is met if it evaluates to true
C++ Programming: From Problem Analysis to Program Design, Third Edition 3
Bitwise Operators (integers)

• Bitwise "and" operator &


• Bitwise "or" operator |
• Bitwise "exclusive or" operator ^
− (0 on same bits, 1 on different
bits)
• Bitwise "ones complement" operator ~
• Shift left <<
• Shift right >> 5
Bitwise Operators (Example)
Mathematical Expressions

• An expression can be a constant, a


variable, or a combination of
constants and variables combined with
operators

• Can create complex expressions using


multiple mathematical operators:
2
height
a + b / c
3-7
Using Mathematical Expressions

3-8
Precedence Rules

9
Precedence of Operators

• 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, Third Edition 10


Order of Operations

• In an expression with more than one


operator, evaluate in this order

• In the expression 2 + 2 * 2 – 2
Evalua Evalua Evalua
te te te
2nd 1st 3rd

3-12
Associativity of Operators

• Implied grouping/parentheses
Example: - (unary negation)
associates right to left

-5  -5;
--5  - (-5)  5;
---5 = -(-(-5)) = - (+5)  -5

3-13
Associativity of Operators

• * / % + - all associate left to right


3 + 2 + 4 + 1 = (3 + 2) + 4 + 1 = ((3+2)+4)+1
=(((3+2)+4) + 1)

• parentheses ( ) can be used to override the


order of operations
2 + 2 * 2 – 2 = 4
(2 + 2) * 2 – 2 = 6
2 + 2 * (2 – 2) = 2
(2 + 2) * (2 – 2) = 0
3-14
Precedence Rules – Example 1

15
Precedence Rules – Example 2

16
Precedence Rules – Example 3

17
Precedence Rules (overriding)

• For example: x = 3 * a - ++b % 3;

• If we intend to have the statement


evaluated differently from the way
specified by the precedence rules, we
need to specify it using parentheses ( )
• Using parenthesis:
x = 3 * ((a - ++b)%3);

18
Compound Conditions
COMPOUND: Multiple conditions if
( (Age < 0) || (Age > 120) )
–At least one condition must be true

if ( (Age >=1) && (Age <= 120) )


–BOTH conditions must be true

INVALID:
if ( Age >=1 && <= 120 ) //Need 2 relational expressions
if ( 1 <= Age <= 120 ) //Although okay in math!
Logical Operators
Used to create relational expressions from
other
relational expressions
&& AND New relational expression is true if both
expressions are true
|| OR New relational expression is true if either
expression is true
Reverses the value of an expression; true
! NOT expression becomes false, false
expression becomes true
Logical Operator Rules

Operand(s) must be
bool(true/false)
true && true
true || true
true || false true
false || true
! false
true && false
false && true false
false || false
! true
Logical Operator Examples

int x = 12, y = 5, z = -
• 4;
(x > y) && (y > z) true

(x > y) && (z > y) false


(x <= z) || (y == z) false
(x <= z) || (y != z) true
!(x >= z) false
Logical Precedence

Highest !
&
&
L
Example: o
(2 < 3) || (5 > 6) && (7 > 8)
w
e
is true because AND is evaluated
st before
OR
|
More on Precedence

Highest arithmetic operators


relational operators
Lowest logical operators
Example:
8 < 2 + 7 || 5 == 6 is true

4-22
Logical Precedence

Highest !
&
&
L
Example: o
(2 < 3) || (5 > 6) && (7 > 8)
w
e
is true because AND is evaluated
st before
OR
|
More on Precedence

Highest arithmetic operators


relational operators
Lowest logical operators
Example:
8 < 2 + 7 || 5 == 6 is true

4-22
Algebraic Expressions

• Multiplication requires an operator


Area = lw is written as Area = l * w;
• There is no exponentiation operator
Area = s2 is written as Area = pow(s, 2);
(note: pow requires the cmath header file) OR
Area = s*s;

• Parentheses may be needed to maintain order


of operations
y 2  y1
m is written as: m3-27
= (y2-
x 2  x1
y1)/(x2-x1);
Relational Operators
• Relational operators:
− Allow comparisons
− Require two operands (binary)
− Return 1 if expression is true, 0 otherwise
• Comparing values of different data types may
produce unpredictable results
− For example, 8 < '5' should not be done
• Any nonzero value is treated as true

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


Comparing string Types
• 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, Third Edition 32


string Comparison Example
• Suppose we have the following declarations:
string str1 = "Hello";
string str2 = "Hi";
string str3 = "Air";
string str4 = "Bill";

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


Logical (Boolean) Operators
• Logical (Boolean) operators enable you to combine
logical expressions
• Three logical (Boolean) operators:
! - not
&& – and
|| - or
• Logical operators take logical values as operands and
yield logical values as results
• ! is unary; && and || are binary operators
• Putting ! in front of a logical expression reverses its
value

C++ Programming: From Problem Analysis to Program Design, Third Edition 36


One-Way (if) Selection

• The syntax of one-way selection is:


if (expression)

statement

• Statement is executed if the value of the


expression is true

• Statement is bypassed if the value is false;


program goes to the next statement
C++ Programming: From Problem Analysis to Program Design, Third Edition 41
Two-Way (if…else) Selection

• Two-way selection takes the form:


if (expression)
statement1
else
statement2
• 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, Third Edition 45
Compound (Block of) Statement

• Compound statement (block of statements):


{
statement1;
statement2;
.
.
.
statementn;
}
• A compound statement is a single statement

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


Compound Statement Example
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, Third Edition 49


Nested if

• Nesting: one control statement in


another
• An else is associated with the most
recent if that has not been paired with
an else

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


Conditional Operator (?:)

• Conditional operator (?:) takes three arguments


(ternary)
• 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

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


switch Structures

• switch structure: alternate to if-else

• switch 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, Third Edition 53


switch Structures (continued)

• Expression value can be only integral

• Its value determines which statement is


selected for execution

• A particular case value should appear only


once

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


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, Third Edition 56


#include <iostream>
using namespace std;
int main()
{
char grade; cout << "Enter your grade: "; cin >> grade; cout << endl;
switch (grade)
{
case 'A':
cout << "Your grade is A." << endl;
break;
case 'B':
cout << "Your grade is B." << endl;
break;
case 'C':
cout << "Your grade is C." << endl;
break;
case 'F':
case 'f':
cout << "Your grade is C." << endl;
break;
default:
cout<<" The grade is invalid."<<endl;
}
return 0; C++ Programming: From Problem Analysis to Program Design, Third Edition 57
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, Third Edition 58


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 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, Third Edition 59


Summary (continued)

• Using assignment in place of the equality


operator creates a semantic error
• switch structure handles multiway selection
• break statement ends switch statement

C++ Programming: From Problem Analysis to Program Design, Third Edition 60

You might also like