Making Decisions: Namiq Sultan

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 61

Chapter 4

Making Decisions

Namiq Sultan
University of Duhok
Department of Electrical and Computer Engineerin

Reference: Starting Out with C++, Tony Gaddis, 2nd Ed.

C++ Programming, Namiq Sultan 1


4.1 Relational Operators

• Relational operators allow you to compare numeric values


and determine if one is greater than, less than, equal to, or
not equal to another.

C++ Programming, Namiq Sultan 2


Table 4-1
Relational Operators Meaning
(in Order of Precedence)
> Greater than
< Less than
>= Greater than or equal to
<= Less than or equal to
== Equal to
!= Not equal to

C++ Programming, Namiq Sultan 3


Table 4-2

Expression What the Expression Means


X > Y Is X greater than Y ?
X < Y Is X less than Y ?
X >= Y Is X greater than or equal to Y ?
X <= Y Is X less than or equal to Y ?
X == Y Is X equal to Y ?
X != Y Is X not equal to Y ?

C++ Programming, Namiq Sultan 4


The Value of a Relationship

• Relational expressions are also know as a Boolean expression


• Warning! The equality operator is two equal signs together
==

C++ Programming, Namiq Sultan 5


Table 4-3 Assume x is 10 and y is 7

Expression Value
x < y False, because x is not less than y .

x > y True, because x is greater than y .

x >= y True, because x is greater than or equal to y .

x <= y False, because x is not less than or equal to y .

y != x True, because y is not equal to x .

C++ Programming, Namiq Sultan 6


Program 4-1
// This program displays the values of true and false states.
#include <iostream>
using namespace std;
int main()
{
int t, f, x = 5, y = 10;
t = x < y;
f = y== x;
cout << "True is " << t << endl;
cout << "False is " << f << endl;
return 0;
}

C++ Programming, Namiq Sultan 7


Program 4-1

Program Output
True is 1
False is 0

C++ Programming, Namiq Sultan 8


4.2 The if Statement

• The if statement can cause other statements to execute


only under certain conditions.

False Condition True

Statement(s)

C++ Programming, Namiq Sultan 9


Program 4-2
// This program averages 3 test scores
#include <iostream>
using namespace std;
int main( )
{
int score1, score2, score3;
float average;

cout << "Enter 3 test scores and I will average them: ";
cin >> score1 >> score2 >> score3;
average = (score1 + score2 + score3) / 3.0;
cout << "Your average is " << average << endl;
if (average > 95)
cout << "Congratulations! That's a high score!\n";
return 0;
}
C++ Programming, Namiq Sultan 10
Program Output with Example Input

Enter 3 test scores and I will average them: 80 90 70 [Enter]


Your average is 80

Program Output with Other Example Input

Enter 3 test scores and I will average them: 100 100 100 [Enter]
Your average is 100
Congratulations! That's a high score!

C++ Programming, Namiq Sultan 11


Be Careful With Semicolons
if (expression)
statement;

• Notice that the semicolon comes after the statement that


gets executed if the expression is true; the semicolon does
NOT follow the expression

C++ Programming, Namiq Sultan 12


Program 4-3
// This program demonstrates how a misplaced semicolon
// prematurely terminates an if statement.
#include <iostream>
using namespace std;
int main()
{
int x = 0, y = 10;
cout << “x is " << x << " and y is " << y << endl;
if (x > y); // misplaced semicolon!
cout << “x is greater than y\n"; // Always executed
return 0;
}
Program Output
X is 0 and Y is 10
X is greater than Y
C++ Programming, Namiq Sultan 13
Programming Style and the if Statement

• The conditionally executed statement should appear on the


line after the if statement.
• The conditionally executed statement should be indented
one “level” from the if statement.

C++ Programming, Namiq Sultan 14


• Consider the following statement:
if (x = 2) // caution here!!!!
cout << “It is True!”;
• This statement does not determine if x is equal to 2, it
assigns x the value 2, therefore, this expression will always
be true because the value of the expression is 2, a non-zero
value

C++ Programming, Namiq Sultan 15


4.4 Expanding the if Statement

• The if statement can conditionally execute a block of statement


enclosed in braces.

if (expression)
{
statement;
statement;
// Place as many statements here as necessary.
}

C++ Programming, Namiq Sultan 16


Program 4-7 (modified)
// This program averages 3 test scores.
#include <iostream>
using namespace std;
int main()
{
int score1, score2, score3;
float average;

cout << "Enter 3 test scores and I will average them: ";
cin >> score1 >> score2 >> score3;

C++ Programming, Namiq Sultan 17


average = (score1 + score2 + score3) / 3.0;
cout << "Your average is " << average << endl;
if (average > 95)
{
cout << "Congratulations!\n";
cout << "That's a high score.\n";
cout << "You deserve a pat on the back!\n";
}
return 0;
}

C++ Programming, Namiq Sultan 18


Don’t Forget the Braces!

• If you intend to execute a block of statements with an if


statement, don’t forget the braces.
• Without the braces, the if statement only executes the very
next statement.

C++ Programming, Namiq Sultan 19


4.5 The if/else Statement
• The if/else statement will execute one group of statements if the
expression is true, or another group of statements if the
expression is false.
if (expression)
statement or block of statements;
else
statement or block of statements;

False True
expression

Statement(s) Statement(s)

C++ Programming, Namiq Sultan 20


Program 4-9
// This program uses the modulus operator to determine
// if a number is odd or even.
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "Enter an integer and I will tell you if it\n";
cout << "is odd or even. ";
cin >> number;
if (number % 2 == 0)
cout << number << " is even.\n";
else
cout << number << " is odd.\n";
return 0;
}
C++ Programming, Namiq Sultan 21
Program Output with Example Input

Enter an integer and I will tell you if it


is odd or even. 17 [Enter]
17 is odd.

C++ Programming, Namiq Sultan 22


Program 4-10
// This program asks the user for two numbers, num1 and num2.
// num1 is divided by num2 and the result is displayed.
// Before the division operation, however, num2 is tested
// for the value 0. If it contains 0, the division does not take place.
#include <iostream>
using namespace std;

int main()
{
float num1, num2, quotient;
cout << "Enter a number: ";
cin >> num1;
cout << "Enter another number: ";
cin >> num2;

C++ Programming, Namiq Sultan 23


if (num2 == 0)
{
cout << "Division by zero is not possible.\n";
cout << "Please run the program again and enter\n";
cout << "a number besides zero.\n";
}
else
{
quotient = num1 / num2;
cout << "The quotient of " << num1 << " divided by ";
cout << num2 << " is " << quotient << ".\n";
}
return 0;
}

C++ Programming, Namiq Sultan 24


Program Output

(When the user enters 0 for num2)


Enter a number: 10 [Enter]
Enter another number: 0 [Enter]
Division by zero is not possible.
Please run the program again and enter
a number besides zero.

C++ Programming, Namiq Sultan 25


4.6 The if/else if Construct
• The if/else if statement is a chain of if statements. They
perform their tests, one after the other, until one of them is
found to be true.
if (expression)
statement or block of statements;
else if (expression)
statement or block of statements;
else if (expression)
statement or block of statements;
//
// put as many else if as needed here
//
C++ Programming, Namiq Sultan 26
Program 4-11

// This program uses an if/else if statement to assign a


// letter grade (A,B,C,D,or F) to a numeric test score.
#include <iostream>
using namespace std;

int main()
{
int testScore;
char grade;

cout << "Enter your numeric test score and I will\n";


cout << "tell you the letter grade you earned: ";
cin >> testScore;

C++ Programming, Namiq Sultan 27


if (testScore < 60) T
grade = 'F'; exprn Statement(s)

else if (testScore < 70) F


T
grade = 'D'; exprn Statement(s)
else if (testScore < 80) F
grade = 'C'; exprn
T
Statement(s)
else if (testScore < 90)
F
grade = 'B'; T
exprn Statement(s)
else if (testScore <= 100)
grade = 'A'; F

cout << "Your grade is " <<


grade << ".\n";
return 0;
Statement(s)
}

C++ Programming, Namiq Sultan 28


Program Output with Example Input

Enter your test score and I will


tell you the letter grade you earned: 88 [Enter]
Your grade is B.

C++ Programming, Namiq Sultan 29


Program 4-12
// This program uses independent if/else statements to assign a
// letter grade (A, B, C, D, or F) to a numeric test score.
// Do you think it will work?
#include <iostream>
using namespace std;

int main( )
{
int testScore;
char grade;

cout << "Enter your test score and I will tell you\n";
cout << "the letter grade you earned: ";
cin >> testScore;

C++ Programming, Namiq Sultan 30


T
if (testScore < 60) exprn Statement(s)
grade = 'F'; F
if (testScore < 70) T
exprn Statement(s)
grade = 'D';
if (testScore < 80) F

grade = 'C'; exprn


T
Statement(s)
if (testScore < 90) F
grade = 'B';
T
if (testScore <= 100) exprn Statement(s)
grade = 'A'; F
cout << “Grade is " << grade;
return 0;
Statement(s)
}

C++ Programming, Namiq Sultan 31


Program Output with Example Input

Enter your test score and I will tell you


the letter grade you earned: 40 [Enter]
Your grade is A.

C++ Programming, Namiq Sultan 32


4.7 Using a Trailing else

• A trailing else, placed at the end of an if/else if statement,


provides default action when none of the if’s have true
expressions

C++ Programming, Namiq Sultan 33


Program 4-14

// This program uses an if/else if statement to assign a


// letter grade (A, B, C, D, or F) to a numeric test score.
// A trailing else has been added to catch test scores > 100.

#include <iostream>
using namespace std;

int main()
{
int testScore;

cout << "Enter your test score and I will tell you\n";
cout << "the letter grade you earned: ";
cin >> testScore;
C++ Programming, Namiq Sultan 34
if (testScore < 60)
cout << "Your grade is F.\n";
else if (testScore < 70)
cout << "Your grade is D.\n";
else if (testScore < 80)
cout << "Your grade is C.\n";
else if (testScore < 90)
cout << "Your grade is B.\n";
else if (testScore <= 100)
cout << "Your grade is A.\n";
else // Default action
{
cout << testScore << " is an invalid score.\n";
cout << "Please enter scores no greater than 100.\n";
}
return 0;
}

C++ Programming, Namiq Sultan 35


Program Output with Example Input

Enter your test score and I will tell you


the letter grade you earned: 104 [Enter]
104 is an invalid score.
Please enter scores no greater than 100.

C++ Programming, Namiq Sultan 36


4.9 Nested if Statements

• A nested if statement is an if statement in the


conditionally-executed code of another if statement.

C++ Programming, Namiq Sultan 37


Program 4-16
// This program demonstrates the nested if statement.
#include <iostream>
using namespace std;

int main()
{
char employed, grad;
cout << "Answer the following questions\n";
cout << "with either Y for Yes or ";
cout << "N for No.\n";
cout << "Are you employed? ";
cin >> employed;
cout << "Have you graduated from college ";
cout << "in the past two years? ";
cin >> grad;
C++ Programming, Namiq Sultan 38
if (employed == 'Y')
if (grad == 'Y') // Nested if
{
cout << "You qualify for the special ";
cout << "interest rate.\n";
}
return 0;
}

C++ Programming, Namiq Sultan 39


Program Output with Example Input

Answer the following questions


with either Y for Yes or N for No.
Are you employed? Y[Enter]
Have you graduated from college in the past two years?
Y[Enter]
You qualify for the special interest rate.

C++ Programming, Namiq Sultan 40


Program Output with Other Example Input

Answer the following questions


with either Y for Yes or N for No.
Are you employed? Y[Enter]
Have you graduated from college in the past two years? N[Enter]

C++ Programming, Namiq Sultan 41


4.10 Logical Operators

• Logical operators connect two or more relational


expressions into one, or reverse the logic of an expression.

C++ Programming, Namiq Sultan 42


Table 4-6

Operator Meaning Effect


& & AND Connects two expressions into one. Both
expressions must be true for the overall
expression to be true.
|| OR Connects two expressions into one. One or
both expressions must be true for the overall
expression to be true. It is only necessary for
one to be true, and it does not matter which.
! NOT The ! operator reverses the “truth” of an
expression. It makes a true expression false,
and a false expression true.

C++ Programming, Namiq Sultan 43


Table 4-7

Expression 1 Expression 2 Expression 1 && Expression 2


True False False (0)
False True False (0)
False False False (0)
True True True (1)

C++ Programming, Namiq Sultan 44


Program 4-18

// This program demonstrates the && logical operator.


#include <iostream>
using namespace std;

int main()
{
char employed, grad;

cout << "Answer the following questions\n";


cout << "with either Y for Yes or ";
cout << "N for No.\n";
cout << "Are you employed? ";
cin >> employed;

C++ Programming, Namiq Sultan 45


cout << "Have you graduated from college ";
cout << "in the past two years? ";
cin >> grad;
if (employed == 'Y‘ && grad == 'Y') // && Operator
{
cout << "You qualify for the special ";
cout << "interest rate.\n";
}
else
{
cout << "You must be employed and have \n";
cout << "graduated from college in the\n";
cout << "past two years to qualify.\n";
}
return 0;
}

C++ Programming, Namiq Sultan 46


Program Output with Example Input

Answer the following questions


with either Y for Yes or
N for No.
Are you employed? Y[Enter]
Have you graduated from college in the past two years? N[Enter]
You must be employed and have
graduated from college in the
past two years to qualify.

C++ Programming, Namiq Sultan 47


Table 4-8

Expression 1 Expression 2 Expression 1 || Expression 2


True False True (1)
False True True (1)
False False False (0)
True True True (1)

C++ Programming, Namiq Sultan 48


Table 4-9

Expression !(Expression)
True False (0)
False True (1)

C++ Programming, Namiq Sultan 49


Program 4-20
//This program asks the user for his annual income and
//the number of years he has been employed at his current job.
//The ! operator reverses the logic of the expression in the if/else statement.
#include <iostream>
Same as:
using namespace std; if (income >= 35000 || years > 5)
int main() cout << "You qualify.\n";
{ else {
float income; int years; cout << "You must …… “;
cout << "been …. ";
cout << "What is your annual income? "; }
cin >> income;
cout << "How many years have you worked at your current job? ";
cin >> years;
if (!(income >= 35000 || years > 5)) // Uses the ! Logical operator
{
cout << "You must earn at least $35,000 or have\n";
cout << "been employed for more than 5 years.\n";
}
else
cout << "You qualify.\n";
} C++ Programming, Namiq Sultan 50
Precedence of Logical Operators

!
&&
||

C++ Programming, Namiq Sultan 51


4.11 Checking Numeric Ranges With Logical Operators

• Logical operators are effective for determining if a number


is in or out of a range.

C++ Programming, Namiq Sultan 52


4.15 The Conditional Operator ?:

• You can use the conditional operator to create short


expressions that work like if/else statements

expression ? result if true : result if false;

X < 0 ? Y = 10 : Z = 20;

C++ Programming, Namiq Sultan 53


Program 4-29
// This program calculates a consultant's charges at $50 per hour, for a
// minimum of 5 hours. ?: operator adjusts hours to 5 if it is less than 5
#include <iostream>
using namespace std;
Same as:
int main() if (hours < 5)
{ hours = 5;
const float payRate = 50;
float hours, charges;
  cout << "How many hours were worked? ";
cin >> hours;
hours = hours < 5 ? 5 : hours;
charges = payRate * hours;
cout << "The charges are $" << charges << endl;
}
C++ Programming, Namiq Sultan 54
Program Output with Example Input

How many hours were worked? 10 [Enter]


The charges are $500.00

Program Output with Example Input

How many hours were worked? 2 [Enter]


The charges are $250.00

C++ Programming, Namiq Sultan 55


4.16 The switch Statement

• The switch statement lets the value of a variable or


expression determine where the program will branch to.

C++ Programming, Namiq Sultan 56


Program 4-31

// The switch statement in this program tells the user


// something he or she already knows: what they just entered!
 #include <iostream>
using namespace std;

int main(void)
{
char choice;
  cout << "Enter A, B, or C: ";
cin >> choice;

C++ Programming, Namiq Sultan 57


switch (choice)
{
case 'A': cout << "You entered A.\n";
break;
case 'B’: cout << "You entered B.\n";
break;
case 'C’: cout << "You entered C.\n";
break;
default: cout << "You did not enter A, B, or C!\n";
}
return 0;
}

C++ Programming, Namiq Sultan 58


Program Output with Example Input

Enter A, B, or C: B [Enter]
You entered B.

Program Output with Different Example Input

Enter a A, B, or C: F [Enter]
You did not enter A, B, or C!

C++ Programming, Namiq Sultan 59


Program 4-34

// The switch statement in this program uses the "fallthrough"


// feature to catch both upper and lowercase letters entered by the
// user.
#include <iostream>
using namespace std;
int main()
{
char feedGrade;
  cout << "Our dog food is available in three grades:\n";
cout << "A, B, and C. Which do you want pricing for? ";
cin >> feedGrade;

C++ Programming, Namiq Sultan 60


switch(feedGrade)
{
case 'a':
case 'A': cout << "30 cents per pound.\n";
break;
case 'b':
case 'B': cout << "20 cents per pound.\n";
break;
case 'c':
case 'C': cout << "15 cents per pound.\n";
break;
default: cout << "That is an invalid choice.\n";
}
return 0;
}
C++ Programming, Namiq Sultan 61

You might also like