Chapter 4 Making Decisions

1 / 73

Chapter 4 Making Decisions - PowerPoint PPT Presentation

Chapter 4 Making Decisions. Namiq Sultan University of Duhok Department of Electrical and Computer Engineerin Reference: Starting Out with C++, Tony Gaddis, 2 nd Ed. 4.1 Relational Operators.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

PowerPoint Slideshow about 'Chapter 4 Making Decisions' - judah-clayton

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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

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

Table 4-1

C++ Programming, Namiq Sultan

Table 4-2

C++ Programming, Namiq Sultan

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

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

C++ Programming, Namiq Sultan

Program 4-1

// This program displays the values of true and falsestates.

#include <iostream>

using namespace std;

int main()

{int trueValue, falseValue, x = 5, y = 10;

trueValue = x < y;falseValue = y== x; cout << "True is " << trueValue << endl; cout << "False is " << falseValue << endl;

}

Program OutputTrue is 1False is 0

C++ Programming, Namiq Sultan

4.2 The if Statement
• The if statement can cause other statements to execute only under certain conditions.

C++ Programming, Namiq Sultan

Program 4-2

// This program averages 3 test scores

#include <iostream>

using namespace std;

int main(void)

{

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";

}

C++ Programming, Namiq Sultan

Program Output with Example Input

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

Program Output with Other Example Input

Enter 3 test scores and I will average them: 100 100 100 [Enter]

Congratulations! That's a high score!

C++ Programming, Namiq Sultan

Table 4-5

C++ Programming, Namiq Sultan

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

Expression

False

True

Statement(s)

C++ Programming, Namiq Sultan

Program 4-3

// This program demonstrates how a misplaced semicolon

// prematurely terminates an if statement.

#include <iostream>

using namespace std;

int main()

{

intx = 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

}

Program Output

X is 0 and Y is 10

X is greater than Y

C++ Programming, Namiq Sultan

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.
• Note: Each time you press the tab key, you are indenting one level.

C++ Programming, Namiq Sultan

And Now Back to Truth
• When a relational expression is true, it has the value 1.
• When a relational expression is false it has the value 0.
• An expression that has the value 0 is considered false by the if statement.
• An expression that has any value other than 0 is considered true by the if statement.

C++ Programming, Namiq Sultan

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

Program 4-5

// This program averages 3 test scores. The if statement uses

// the = operator, but the == operator was intended.

#include <iostream>

using namespace std;

int main()

{

intscore1, score2, score3;

floataverage;

cout << "Enter 3 scores and I will average them:";

cin >> score1 >> score2 >> score3;

average = (score1 + score2 + score3) / 3.0;

cout << "Your average is " << average << endl;

if (average = 100)// Wrong

cout << "Congratulations! That's a high score!\n";

}

C++ Programming, Namiq Sultan

Program Output with Example Input

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

Congratulations! That’s a perfect score!

C++ Programming, Namiq Sultan

4.3 Flags
• A flag is a variable, usually a boolean or an integer, that signals when a condition exists.
• If your compiler does not support the bool data type, use int instead.

C++ Programming, Namiq Sultan

Program 4-6

// This program averages 3 test scores. It uses the variable highScore as a flag.

#include <iostream>

using namespace std;

int main( )

{

int score1, score2, score3;

float average;

bool highScore = false;

cout << "Enter your 3 test scores and I will average them: ";

cin >> score1 >> score2 >> score3;

average = (score1 + score2 + score3) / 3.0;

if (average > 95)

highScore = true; // Set the flag variable

cout << "Your average is " << average << endl;

if (highScore)

cout << "Congratulations! That's a high score!\n";\

}

C++ Programming, Namiq Sultan

Program 4-6

Program Output with Example Input

Enter your 3 test scores and I will average them: 100 100 100 [Enter]

Congratulations! That's a high score!

C++ Programming, Namiq Sultan

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

Program 4-7

// This program averages 3 test scores.

// It uses the variable highScore as a flag.

#include <iostream>

using namespace std;

int main(void)

{

int score1, score2, score3;

float average;

bool highScore = false;

cout << "Enter 3 test scores and I will average them: ";

cin >> score1 >> score2 >> score3;

average = (score1 + score2 + score3) / 3.0;

if (average > 95)

highScore = true; // Set the flag variable

C++ Programming, Namiq Sultan

cout << "Your average is " << average << endl;

if (highScore)

{

cout << "Congratulations!\n";

cout << "That's a high score.\n";

cout << "You deserve a pat on the back!\n";

}

}

C++ Programming, Namiq Sultan

Program Output with Example Input

Enter your 3 test scores and I will average them: 100 100 100 [Enter]

Congratulations!

That's a high score.

You deserve a pat on the back!

Program Output with Different Example Input

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

C++ Programming, Namiq Sultan

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

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

Program 4-9

// This program uses the modulus operator to determine

// if a number is odd or even. If the number is evenly divided

// by 2, it is an even number. A remainder indicates it isodd.

#include <iostream>

using namespace std;

int main()

{

intnumber;

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";

}

C++ Programming, Namiq Sultan

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

Program 4-10

// This program asks the user for two numbers, num1 andnum2.

// 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 nottake place.

#include <iostream>

using namespace std;

int main()

{

floatnum1, num2, quotient;

cout << "Enter a number: ";

cin >> num1;

cout << "Enter another number: ";

cin >> num2;

C++ Programming, Namiq Sultan

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";

}

}

C++ Programming, Namiq Sultan

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

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;

elseif (expression)

statement or block of statements;

//

// put as many else it’s as needed here

//

elseif (expression)

statement or block of statements;

C++ Programming, Namiq Sultan

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;

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

cout << "tell you the letter grade you earned: ";

cin >> testScore;

C++ Programming, Namiq Sultan

if (testScore < 60)

elseif (testScore < 70)

else if (testScore < 80)

else if (testScore < 90)

else if (testScore <= 100)

}

T

exprn

Statement(s)

F

T

exprn

Statement(s)

F

T

exprn

Statement(s)

F

T

exprn

Statement(s)

F

Statement(s)

C++ Programming, Namiq Sultan

Program Output with Example Input

Enter your test score and I will

tell you the letter grade you earned: 88 [Enter]

C++ Programming, Namiq Sultan

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;

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

cout << "the letter grade you earned: ";

cin >> testScore;

C++ Programming, Namiq Sultan

if (testScore < 60)

if (testScore < 70)

if (testScore < 80)

if (testScore < 90)

if (testScore <= 100)

}

T

exprn

Statement(s)

F

T

exprn

Statement(s)

F

T

exprn

Statement(s)

F

T

exprn

Statement(s)

F

Statement(s)

C++ Programming, Namiq Sultan

Program Output with Example Input

Enter your test score and I will tell you

the letter grade you earned: 40 [Enter]

C++ Programming, Namiq Sultan

Program 4-13

//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;

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

cout << "the letter grade you earned: ";

cin >> testScore;

if (testScore < 60)

{

cout << "instructor.\n";

}

C++ Programming, Namiq Sultan

else if (testScore < 70)

{

cout << "This is below average. You should get ";

cout << "tutoring.\n";

}

else if (testScore < 80)

{

cout << "This is average.\n";

}

else if(testScore < 90)

{

cout << "This is an above average grade.\n";

}

C++ Programming, Namiq Sultan

else if (testScore <= 100)

• {
• cout << "This is a superior grade. Good work!\n";
• }
• }
Program Output with Example Input

Enter your test score and I will tell you

the letter grade you earned: 94 [Enter]

This is a superior grade. Good work!

C++ Programming, Namiq Sultan

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

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

if (testScore < 60)

{

cout << "instructor.\n";

}

else if (testScore < 70)

{

cout << "This is below average. You should get ";

cout << "tutoring.\n";

}

C++ Programming, Namiq Sultan

else if (testScore < 80)

{

cout << "This is average.\n";

}

else if (testScore < 90)

{

cout << "This is an above average grade.\n";

}

C++ Programming, Namiq Sultan

else if (testScore <= 100)

{

cout << "This is a superior grade. Good work!\n";

}

else// Default action

{

cout << testScore << " is an invalid score.\n";

cout << "Please enter scores no greater than 100.\n";

}

}

C++ Programming, Namiq Sultan

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

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

Program 4-16

// This program demonstrates the nested if statement.

#include <iostream>

using namespace std;

int main()

{

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? ";

C++ Programming, Namiq Sultan

if (employed == 'Y')

{

if (recentGrad == 'Y')// Nested if

{

cout << "You qualify for the special ";

cout << "interest rate.\n";

}

}

}

C++ Programming, Namiq Sultan

Program Output with Example Input

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

Program Output with Other Example Input

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

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

Table 4-6

C++ Programming, Namiq Sultan

Table 4-7

C++ Programming, Namiq Sultan

Program 4-18

// This program demonstrates the && logical operator.

#include <iostream>

using namespace std;

int main()

{

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

cout << "Have you graduated from college ";

cout << "in the past two years? ";

if (employed == 'Y‘&& recentGrad == '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";

}

}

C++ Programming, Namiq Sultan

Program Output with Example Input

Answer the following questionswith either Y for Yes orN for No.Are you employed? Y[Enter]Have you graduated from college in the past two years? N[Enter]You must be employed and havegraduated from college in thepast two years to qualify.

C++ Programming, Namiq Sultan

Table 4-8

C++ Programming, Namiq Sultan

Table 4-9

C++ Programming, Namiq Sultan

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>

using namespace std;

int main()

{

float income; int years;

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

Precedence of Logical Operators

!

&&

||

C++ Programming, Namiq Sultan

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

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;

C++ Programming, Namiq Sultan

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 less than 5 hours were worked.

#include <iostream>

using namespace std;

int main()

{

const float payRate = 50.0;

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

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

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

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

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";

}

}

C++ Programming, Namiq Sultan

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

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

{

cout << "Our dog food is available in three grades:\n";

cout << "A, B, and C. Which do you want pricing for? ";

C++ Programming, Namiq Sultan

{

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";

}

}

C++ Programming, Namiq Sultan