Sie sind auf Seite 1von 122

Chapter 4.

Making Decisions

Starting Out with C++, 3rd Edition

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.

Starting Out with C++, 3rd Edition

Table 4-1
Relational Operators
(in Order of Precedence)

Meaning

>
<
>=
<=
==
!=

Greater than
Less than
Greater than or equal
to
Less than or equal to
Equal to
Not equal to

Starting Out with C++, 3rd Edition

Table 4-2
Expression

What the Expression Means

X
X
X
X
X
X

Is X
Is X
Is X
Is X
Is X
Is X

> Y
< Y
>= Y
<= Y
== Y
!= Y

greater than Y ?
less than Y ?
greater than or equal to Y ?
less than or equal to Y ?
equal to Y ?
not equal to Y ?

Starting Out with C++, 3rd Edition

The Value of a Relationship


Relational expressions are also know as a Boolean
expression
Warning! The equality operator is two equal signs
together
==

Starting Out with C++, 3rd Edition

Table 4-3
Expression

Value

X
X
X
X
Y

False, because X
True, because X
True, because X
False, because X
True, because Y

< Y
> Y
>= Y
<= Y
!= X

is not less than Y .


is greater than Y .
is greater than or equal to Y .
is not less than or equal to Y .
is not equal to X .

Starting Out with C++, 3rd Edition

Program 4-1
// This program displays the values of true and false
// states.
#include <iostream.h>
void main(void)
{
int trueValue, falseValue, x = 5, y = 10;
trueValue = X < Y;
falseValue = Y == X;
cout << "True is " << trueValue << endl;
cout << "False is " << falseValue << endl;
}

Program Output
True is 1
False is 0

Starting Out with C++, 3rd Edition

Table 4-4 (Assume x is 10, y is 7, a and b are ints)


Statement

Outcome

Z = X < Y

Z is assigned 0 because X is not less than Y .

c o u t < < (X > Y );

Displays 1 because X is greater than Y .

A = X >= Y;

A is assigned 1 because X is greater than or


equal to Y .

c o u t < < (X < =


Y );

Displays 0 because X is not less than or


equal to Y .

B = Y != X ;

B is assigned 1 because Y is not equal to X .


8

Starting Out with C++, 3rd Edition

4.2 The if Statement


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

Starting Out with C++, 3rd Edition

Program 4-2
// This program averages 3 test scores
#include <iostream.h>
void 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.precision(1);
cout.setf(ios::showpoint | ios::fixed);
cout << "Your average is " << average << endl;
if (average > 95)
cout << "Congratulations! That's a high score!\n";
}

10

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter 3 test scores and I will average them: 80 90 70 [Enter]
Your average is 80.0
Program Output with Other Example Input
Enter 3 test scores and I will average them: 100 100 100 [Enter]
Your average is 100.0
Congratulations! That's a high score!

11

Starting Out with C++, 3rd Edition

Table 4-5
Statements

Outcome

if (H o u rs > 4 0 )
O v e rT im e = 1 ;

Assigns 1 to O v e r T i m e only
when H o u r s is greater than
40
Displays the message
Invalid number only when
V a l u e is greater than 32
Multiplies P a y R a t e by 2 only
when O v e r T i m e is equal to 1

if (V a lu e > 3 2 )
c o u t < < " In v a lid n u m b e r\n " ;
if (O v e rT im e = = 1 )
P a y R a te * = 2 ;

12

Starting Out with C++, 3rd Edition

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

13

Starting Out with C++, 3rd Edition

Program 4-3
// This program demonstrates how a misplaced semicolon
// prematurely terminates an if statement.
#include <iostream.h>
void main(void)
{
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
}

Program Output
X is 0 and Y is 10
X is greater than Y

14

Starting Out with C++, 3rd Edition

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.
15

Starting Out with C++, 3rd Edition

Comparing Floating Point Numbers


Round-off errors can cause problems when
comparing floating point numbers with the
equality operator (==)

16

Starting Out with C++, 3rd Edition

Program 4-4
// This program demonstrates how floating point round-off
// errors can make equality comparisons unreliable.
#include <iostream.h>
void main(void)
{
float result;
result = 6.0 * 0.666666;
if (result == 4.0)
cout << "It's true!";
else
cout << "It's false!";

// Round-off error

Program Output
It's false!

17

Starting Out with C++, 3rd Edition

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.

18

Starting Out with C++, 3rd Edition

Not All Operators Are Equal


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

19

Starting Out with C++, 3rd Edition

Program 4-5
// This program averages 3 test scores. The if statement uses
// the = operator, but the == operator was intended.
#include <iostream.h>
void 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.precision(1);
cout.setf(ios::showpoint | ios::fixed);
cout << "Your average is " << average << endl;
if (average = 100) // Wrong
cout << "Congratulations! That's a high score!\n";
}

20

Starting Out with C++, 3rd Edition

Program 4-5 Output With Example Input


Program Output with Example Input
Enter your 3 test scores and I will average them: 80 90 70[Enter]
Your average is 80.0
Congratulations! Thats a perfect score!

21

Starting Out with C++, 3rd Edition

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.

22

Starting Out with C++, 3rd Edition

Program 4-6
// This program averages 3 test scores. It uses the variable highScore as a flag.
#include <iostream.h>
void main(void)
{
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.precision(1);
cout.setf(ios::showpoint | ios::fixed);
cout << "Your average is " << average << endl;
if (highScore)
cout << "Congratulations! That's a high score!\n";\
}

Program Output with Example Input


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

23

Starting Out with C++, 3rd Edition

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.
}

24

Starting Out with C++, 3rd Edition

Program 4-7
// This program averages 3 test scores.
// It uses the variable highScore as a flag.
#include <iostream.h>
void 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
Program continues on next slide

25

Starting Out with C++, 3rd Edition

Program continued from previous slide

cout.precision(1);
cout.setf(ios::showpoint | ios::fixed);
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";
}
}

26

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter your 3 test scores and I will average them: 100 100
100 [Enter]
Your average is 100.0
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]
Your average is 80.0

27

Starting Out with C++, 3rd Edition

Dont Forget the Braces!


If you intend to execute a block of
statements with an if statement, dont forget
the braces.
Without the braces, the if statement only
executes the very next statement.

28

Starting Out with C++, 3rd Edition

Program 4-8
// This program averages 3 test scores.
// It uses the variable highScore as a flag.
#include <iostream.h>
void 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
Program continues on next slide

29

Starting Out with C++, 3rd Edition

Program continued from previous slide

cout.precision(1);
cout.setf(ios::showpoint | ios::fixed);
cout << "Your average is " << average << endl;
// The following if statement is
// missing its braces!
if (highScore)
cout << "Congratulations!\n";
cout << "That's a high score.\n";
cout << "You deserve a pat on the back!\n";
}

30

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter your 3 test scores and I will average them: 100 100 100[Enter]
Your average is 100
Congratulations!
Thats 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]
Your average is 100
Congratulations!
Thats a high score.
You deserve a pat on the back!

31

Starting Out with C++, 3rd Edition

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;

32

Starting Out with C++, 3rd Edition

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 is odd.
#include <iostream.h>
void main(void)
{
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";
}

33

Starting Out with C++, 3rd Edition

Program Output with Example Input

Enter an integer and I will tell you if it


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

34

Starting Out with C++, 3rd Edition

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.h>
void main(void)
{
float num1, num2, quotient;
cout << "Enter a number: ";
cin >> num1;
cout << "Enter another number: ";
cin >> num2;

Program continues on next


slide

35

Starting Out with C++, 3rd Edition

Program continued from previous slide.


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

36

Starting Out with C++, 3rd Edition

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.

37

Starting Out with C++, 3rd Edition

4.6 The if/else if Construct


The if/else if statement is a chain of if statements. The 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;
// put as many else its as needed here
else if (expression)
statement or block of statements;

38

Starting Out with C++, 3rd Edition

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.h>
void main(void)
{
int testScore;
char grade;
cout << "Enter your numeric test score and I will\n";
cout << "tell you the letter grade you earned: ";
cin >> testScore;

Program continues on next


slide

39

Starting Out with C++, 3rd Edition

Program continued from previous slide.

if (testScore < 60)


grade = 'F';
else if (testScore < 70)
grade = 'D';
else if (testScore < 80)
grade = 'C';
else if (testScore < 90)
grade = 'B';
else if (testScore <= 100)
grade = 'A';
cout << "Your grade is " << grade << ".\n";
}

40

Starting Out with C++, 3rd Edition

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.

41

Starting Out with C++, 3rd Edition

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.h>
void main(void)
{
int testScore;
char grade;
cout << "Enter your test score and I will tell you\n";
cout << "the letter grade you earned: ";
cin >> testScore;

Program continues on next slide

42

Starting Out with C++, 3rd Edition

Program continued from previous slide.

if (testScore < 60)


grade = 'F';
if (testScore < 70)
grade = 'D';
if (testScore < 80)
grade = 'C';
if (testScore < 90)
grade = 'B';
if (testScore <= 100)
grade = 'A';
cout << "Your grade is " << grade << ".\n";
}

43

Starting Out with C++, 3rd Edition

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.

44

Starting Out with C++, 3rd Edition

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.h>
void main(void)
{
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 << "Your grade is F.\n";
cout << "This is a failing grade. Better see your ";
cout << "instructor.\n";
}
else if (testScore < 70)
{
cout << "Your grade is D.\n";
cout << "This is below average. You should get ";
cout << "tutoring.\n";
}

Program continues on next slide

45

Starting Out with C++, 3rd Edition

Program continued from previous slide.

else if (testScore < 80)


{
cout << "Your grade is C.\n";
cout << "This is average.\n";
}
else if(testScore < 90)
{
cout << "Your grade is B.\n";
cout << "This is an above average grade.\n";
}
else if (testScore <= 100)
{
cout << "Your grade is A.\n";
cout << "This is a superior grade. Good work!\n";
}
}

46

Starting Out with C++, 3rd Edition

Program Output with Example Input

Enter your test score and I will tell you


the letter grade you earned: 94 [Enter]
Your grade is A.
This is a superior grade. Good work!

47

Starting Out with C++, 3rd Edition

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 ifs have true expressions

48

Starting Out with C++, 3rd Edition

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.h>
void main(void)
{
int testScore;
cout << "Enter your test score and I will tell you\n";
cout << "the letter grade you earned: ";
cin >> testScore;

Program continues on next slide

49

Starting Out with C++, 3rd Edition

Program continued from previous slide.

if (testScore < 60)


{
cout << "Your grade is F.\n";
cout << "This is a failing grade. Better see your ";
cout << "instructor.\n";
}
else if (testScore < 70)
{
cout << "Your grade is D.\n";
cout << "This is below average. You should get ";
cout << "tutoring.\n";
}

50

Starting Out with C++, 3rd Edition

Program continued from previous slide.


else if (testScore < 80)
{
cout << "Your grade is C.\n";
cout << "This is average.\n";
}
else if (testScore < 90)
{
cout << "Your grade is B.\n";
cout << "This is an above average grade.\n";
}

51

Starting Out with C++, 3rd Edition

Program continued from previous slide.

else if (testScore <= 100)


{
cout << "Your grade is A.\n";
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";
}
}

52

Starting Out with C++, 3rd Edition

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.

53

Starting Out with C++, 3rd Edition

4.8 Focus on Software Engineering:


Menus
You can use the if/else if statement to create
menu-driven programs. A menu-driven
program allows the user to determine the
course of action by selecting it from a list of
actions.

54

Starting Out with C++, 3rd Edition

Program 4-15
// This program displays a menu and asks the user to make a
// selection. An if/else if statement determines which item
// the user has chosen.
#include <iostream.h>
void main(void)
{
int choice, months;
float charges;
cout
cout
cout
cout
cout

<<
<<
<<
<<
<<

"\t\tHealth Club Membership Menu\n\n";


"1. Standard Adult Membership\n";
"2. Child Membership\n";
"3. Senior Citizen Membership\n";
"4. Quit the Program\n\n";

Program continues on next slide

55

Starting Out with C++, 3rd Edition

Program continued from previous slide.

cout << "Enter your choice: ";


cin >> choice;
cout.setf(ios::fixed | ios::showpoint);
cout.precision(2);
if (choice == 1)
{
cout << "\nFor how many months? ";
cin >> months;
charges = months * 40.00;
cout << "The total charges are $" << charges << endl;
}

56

Starting Out with C++, 3rd Edition

Program continued from previous slide.

else if (choice == 2)
{
cout << "\nFor how
cin >> months;
charges = months *
cout << "The total
}
else if (choice == 3)
{
cout << "\nFor how
cin >> months;
charges = months *
cout << "The total
}

many months? ";


20.00;
charges are $" << charges << endl;

many months? ";


30.00;
charges are $" << charges << endl;

57

Starting Out with C++, 3rd Edition

Program continued from previous slide.

else if (choice != 4)
{
cout << "The valid choices are 1 through 4. Run the\n";
cout << "program again and select one of those.\n";
}
}

58

Starting Out with C++, 3rd Edition

Program Output with Example Input


Health Club Membership Menu
1. Standard Adult Membership
2. Child Membership
3. Senior Citizen Membership
4. Quit the Program
Enter your choice: 3 [Enter]
For how many months? 6 [Enter]
The total charges are $180.00

59

Starting Out with C++, 3rd Edition

4.9 Focus on Software Engineering:


Nested if Statements
A nested if statement is an if statement in
the conditionally-executed code of another
if statement.

60

Starting Out with C++, 3rd Edition

Program 4-16
// This program demonstrates the nested if statement.
#include <iostream.h>
void main(void)
{
char employed, recentGrad;
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 >> recentGrad;

Program continues on next slide

61

Starting Out with C++, 3rd Edition

Program continued from previous slide.

if (employed == 'Y')
{
if (recentGrad == 'Y') // Nested if
{
cout << "You qualify for the special ";
cout << "interest rate.\n";
}
}
}

62

Starting Out with C++, 3rd Edition

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.

63

Starting Out with C++, 3rd Edition

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]

64

Starting Out with C++, 3rd Edition

4.10 Logical Operators


Logical operators connect two or more
relational expressions into one, or reverse
the logic of an expression.

65

Starting Out with C++, 3rd Edition

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.

66

Starting Out with C++, 3rd Edition

Table 4-7
Expression 1

Expression 2

True
False
False
True

False
True
False
True

Expression 1 &&
Expression 2
False (0)
False (0)
False (0)
True (1)

67

Starting Out with C++, 3rd Edition

Program 4-18
// This program demonstrates the && logical operator.
#include <iostream.h>
void main(void)
{
char employed, recentGrad;
cout << "Answer the following questions\n";
cout << "with either Y for Yes or ";
cout << "N for No.\n";
cout << "Are you employed? ";
cin >> employed;

Program continues on next slide

68

Starting Out with C++, 3rd Edition

Program continued from previous slide.


cout << "Have you graduated from college ";
cout << "in the past two years? ";
cin >> recentGrad;
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";
}
}

69

Starting Out with C++, 3rd Edition

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.
70

Starting Out with C++, 3rd Edition

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)

71

Starting Out with C++, 3rd Edition

Program 4-19
//
//
//
//
//

This program asks the user for their annual income and
the number of years they have been employed at their current
job. The || operator is used in a if statement that
determines if the income is at least $35,000 or their time
on the job is more than 5 years.

#include <iostream.h>
void main(void)
{
float income;
int years;

Program continues on next slide

72

Starting Out with C++, 3rd Edition

Program continues
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) // Use || logical operator
cout << "You qualify.\n";
else
{
cout << "You must earn at least $35,000 or have\n";
cout << "been employed for more than 5 years.\n";
}
}

73

Starting Out with C++, 3rd Edition

Program Output with Example Input


What is your annual income? 40000 [Enter]
How many years have you worked at your current job? 2
[Enter]
You qualify.
Program Output with Example Input
What is your annual income? 20000 [Enter]
How many years have you worked at your current job? 7
[Enter]
You qualify.

74

Starting Out with C++, 3rd Edition

Table 4-9
Expression
True
False

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

75

Starting Out with C++, 3rd Edition

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.h>
void main(void)
{
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";
}

76

Starting Out with C++, 3rd Edition

Precedence of Logical Operators


!
&&
||

77

Starting Out with C++, 3rd Edition

4.11 Checking Numeric Ranges With


Logical Operators
Logical operators are effective for
determining if a number is in or out of
a range.

78

Starting Out with C++, 3rd Edition

4.12 Focus on Software Engineering:


Validating User Input
As long as the user of a program enters
bad input, the program will produce
bad output. Program should be written
to filter out bad input.

79

Starting Out with C++, 3rd Edition

Examples of validation:
Numbers are check to ensure they are within a
range of possible values.
Values are check for their reasonableness.
Items selected from a menu or other set of choices
are check to ensure they are available options.
Variables are check for values that might cause
problems, such as division by zero.

80

Starting Out with C++, 3rd Edition

4.13 More About Variable Declarations


and Scope
The scope of a variable is limited to the block in
which is is declared.
Variables declared inside a set of braces have local
scope or block scope.

81

Starting Out with C++, 3rd Edition

Program 4-22A
//This program demonstrates late variable declaration
#include <iostream.h>
void main(void)
{
cout << "What is your annual income? ";
float income; // variable declaration
cin >> income;
cout << "How many years have you worked at "
<< "your current job? ";
int years;
// variable declaration
cin >> years;
if (income >= 35000 || years > 5)
cout << "You qualify.\n";
else
{
cout << "You must earn at least $35,000 or have\n";
cout << "been employed for more than 5 years.\n";
}
}

82

Starting Out with C++, 3rd Edition

Program 4-22B
//This program demonstrates late variable declaration
#include <iostream.h>
void main(void)
{
cout << "What is your annual income? ";
float income; // variable declaration
cin >> income;
cout << "How many years have you worked at "
<< "your current job? ";
int years;
// variable declaration
cin >> years;
if (income >= 35000 || years > 5)
cout << "You qualify.\n";
else
{
cout << "You must earn at least $35,000 or have\n";
cout << "been employed for more than 5 years.\n";
}
}

83

Starting Out with C++, 3rd Edition

Program 4-22C
//This program demonstrates late variable declaration
#include <iostream.h>
void main(void)
{
cout << "What is your annual income? ";
float income;
cin >> income;
int years;
cout << "How many years have you worked at "
<< "your current job? ";
cin >> years;
if (income >= 35000 || years > 5)
cout << "You qualify.\n";
else
{
cout << "You must earn at least $35,000 or have\n";
cout << "been employed for more than 5 years.\n";
}
}

84

Starting Out with C++, 3rd Edition

Program 4-23
// This program demonstrates a variable declared in an inner block.
#include <iostream.h>
void main(void)
{
cout << "What is your annual income? ";
float income;
// variable declaration
cin >> income;
if (income >= 35000)
{
int years; // variable declaration
cout << "How many years have you worked at "
<< "your current job? ";
cin >> years;
if (years > 5)
cout << "You qualify.\n";

Program continues on next slide

85

Starting Out with C++, 3rd Edition

Program continued from previous slide.


else
{
cout << "You must have been employed for\n";
cout << "more than 5 years to qualify.\n";
}
}
else
{
cout << "You must earn at least $35,000 to\n";
cout << "qualify.\n";
}
}

86

Starting Out with C++, 3rd Edition

Variables With the Same Name


When a block is nested inside another block, a
variable declared in the inner block may have the
same name as a variable declared in the outer
block. The variable in the inner block takes
precedence over the variable in the outer block.

87

Starting Out with C++, 3rd Edition

Program 4-24
// This program uses two variables with the name Number.
#include <iostream.h>
void main(void)
{
int number;
cout << "Enter a number greater than 0: ";
cin >> number;
if (number > 0)
{
int number;
Program continues on next slide

88

Starting Out with C++, 3rd Edition

Program continued from previous slide.

cout << "Now enter another number: ";


cin >> number;
cout << "The second number you entered was ";
cout << number << endl;
}
cout << "Your first number was " << number << endl;
}

89

Starting Out with C++, 3rd Edition

Program Output with Example Input

Enter a number greater than 0: 2 [Enter]


Now enter another number: 7[Enter]
The second number you entered was 7
Your first number was 2

90

Starting Out with C++, 3rd Edition

4.14 Comparing Strings


Use the strcmp library function to
compare C-strings.

91

Starting Out with C++, 3rd Edition

Program 4-25
// This program illustrates that you cannot compare strings
// with relational operators. Although it appears to test the
// strings for equality, that is NOT what happens.
#include <iostream.h>
void main(void)
{
char firstString[40], secondString[40];
cout << "Enter a string: ";
cin.getline(firstString, 40);
cout << "Enter another string: ";
cin.getline(secondString, 40);
if (firstString == secondString)
cout << "You entered the same string twice.\n";
else
cout << "The strings are not the same.\n";
}

92

Starting Out with C++, 3rd Edition

Program Output with Example Input

Enter a string: Alfonso [Enter]


Enter another string: Alfonso [Enter]
The strings are not the same.

93

Starting Out with C++, 3rd Edition

The strcmp Function


strcmp(string1, string2);

// include cstring to use


// this function

If the two strings are identical, strcmp returns 0.


If string1 < string 2, strcmp returns a negative
number.
If string1 > string 2, strcmp returns a positive
number.
94

Starting Out with C++, 3rd Edition

Program 4-26
// This program correctly tests two strings for equality, with
// the strcmp function
#include <iostream.h>
#include <string.h>
void main(void)
{
char firstString[40], secondString[40];
cout << "Enter a string: ";
cin.getline(firstString, 40);
cout << "Enter another string: ";
cin.getline(secondString, 40);
if (strcmp(firstString, secondString) == 0)
cout << "You entered the same string twice.\n";
else
cout << "The strings are not the same.\n";
}

95

Starting Out with C++, 3rd Edition

Program 4-27
// This program uses strcmp to compare the sting entered
// by the user with the valid stereo part numbers.
#include <iostream.h>
#include <string.h>
void main(void)
{
const float aprice = 249.0, Bprice = 299.0;
char partNum[8];
cout << "The stereo part numbers are:\n";
cout << "\tBoom Box, part number S147-29A\n";
Program continues on next slide

96

Starting Out with C++, 3rd Edition

Program continued from previous slide

cout << "\tShelf Model, part number S147-29B\n";


cout << "Enter the part number of the stereo you\n";
cout << "wish to purchase: ";
cin.width(9);
// So they won't enter more than 8
char's
cin >> partNum;
cout.setf(ios::fixed || ios::showpoint);
cout.precision(2);
if (strcmp(partNum, "S147-29A") == 0) // use of strcmp
cout << "The price is $" << aprice << endl;
else if (strcmp(partNum, "S147-29B") == 0)
cout << "The price is $" << Bprice << endl;
else
cout << partNum << " is not a valid part number.\n";
}

97

Starting Out with C++, 3rd Edition

Program Output with Example Input

The stereo part numbers are:


Boom Box, part number S14729A
Shelf Model, part number S147-29B
Enter the part number of the stereo you
wish to purchase: S147-29B [Enter]
The price is $299.00

98

Starting Out with C++, 3rd Edition

Program 4-28
// This program uses the return value of strcmp to
// alphabetically sort two strings entered by the user.
#include <iostream.h>
#include <string.h>
void main(void)
{
char name1[30], name2[30];
cout << "Enter a name (last name first): ";
cin.getline(name1, 30);
cout << "Enter another name: ";
cin.getline(name2, 30);
Program continues on next slide

99

Starting Out with C++, 3rd Edition

Program continued from previous slide.

cout << "Here are the names sorted alphabetically:\n";


if (strcmp(name1, name2) < 0)
cout << name1 << endl << name2 << endl;
else if (strcmp(name1, name2) > 0)
cout << name2 << endl << name1 << endl;
else
cout << "You entered the same name twice!\n";
}

100

Starting Out with C++, 3rd Edition

Program Output with Example Input

Enter a name (last name first): Smith, Richard [Enter]


Enter another name: Jones, John [Enter]
Here are the names sorted alphabetically
Jones, John
Smith, Richard

101

Starting Out with C++, 3rd Edition

Program 4-29
//This program uses strcmp to compare the string entered
//by the user with the valid stereo part numbers.
#include<iostream.h>
#include<string>
using namespace std;
void main(void)
{
const float aprice = 249.0, bprice = 299.0;
string partNum;
cout << "The stereo part numbers are:\n";
cout << "Boom box, part number S147-29A\n";
cout << "Shelf model, part number S147-29B\n";
cout << "Enter the part number of the stereo you\n";
cout << "wish to purchase: ";
cin >> partNum;

Program continues on next slide

102

Starting Out with C++, 3rd Edition

Program continued from previous slide

cout.setf(ios::fixed | ios::showpoint);
cout.precision(2);
if (partNum == "S147-29A")
cout << "The price is $" << aprice << endl;
else if (partNum == "S147-29B")
cout << "The price is $" << bprice << endl;
else
cout << partNum << " is not a valid part number.";
}

103

Starting Out with C++, 3rd Edition

Program Output with Example Input

The stereo part numbers are:


Boom box, part number S147-29A
Shelf model, part number S147-29B
Enter the part number of the stereo you
wish to purchase: S147-29A
The price is $249.00

104

Starting Out with C++, 3rd Edition

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;

105

Starting Out with C++, 3rd Edition

Program 4-30
// This program calculates a consultant's charges at $50 per hour,
// for a minimum of 5 hours. The ?: operator adjusts hours to 5 if less
// than 5 hours were worked.
#include <iostream.h>
void main(void)
{
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.precision(2);
cout.setf(ios::fixed | ios::showpoint);
cout << "The charges are $" << charges << endl;
}

106

Starting Out with C++, 3rd Edition

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

107

Starting Out with C++, 3rd Edition

Program 4-31
// This program uses the return value of strcmp to alphabetically
// sort two strings entered by the user.
#include <iostream.h>
#include <string.h>
void main(void)
{
char name1[30], name2[30];
cout << "Enter a name (last name first): ";
cin.getline(name1, 30);

Program continues on next slide

108

Starting Out with C++, 3rd Edition

Program continued from previous slide.


cout << "Enter another name: ";
cin.getline(name2, 30);
cout << "Here are the names sorted alphabetically:\n";
cout << (strcmp(name1, name2) <= 0 ? name1 : name2) << endl;
cout << (strcmp(name1, name2) > 0 ? name1 : name2) << endl;
}

109

Starting Out with C++, 3rd Edition

Program Output with Example Input


Enter a name (last name first): Smith, Richard [Enter]
Enter another name: Jones, John [Enter]
Here are the names sorted alphabetically
Jones, John
Smith, Richard

110

Starting Out with C++, 3rd Edition

4.16 The switch Statement


The switch statement lets the value of a
variable or expression determine where the
program will branch to.

111

Starting Out with C++, 3rd Edition

Program 4-32
// The switch statement in this program tells the user
// something he or she already knows: what they just entered!
#include <iostream.h>
void main(void)
{
char choice;
cout << "Enter A, B, or C: ";
cin >> choice;

Program continues on next slide

112

Starting Out with C++, 3rd Edition

Program continues
switch (choice)
{
case 'A':
case 'B':
case 'C':
default:

cout <<
break;
cout <<
break;
cout <<
break;
cout <<

"You entered A.\n";


"You entered B.\n";
"You entered C.\n";
"You did not enter A, B, or C!\n";

}
}

113

Starting Out with C++, 3rd Edition

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!

114

Starting Out with C++, 3rd Edition

Program 4-33
// The switch statement in this program tells the user
// something he or she already knows: what they just
// entered!
#include <iostream.h>
void main(void)
{
char choice;
cout << "Enter A, B, or C: ";
cin >> choice;

Program continues on next slide

115

Starting Out with C++, 3rd Edition

Program continued from previous slide.


switch (choice)
{
case 'A':
case 'B':
case 'C':
default:
}

cout
cout
cout
cout

<<
<<
<<
<<

"You
"You
"You
"You

entered
entered
entered
did not

A.\n";
B.\n";
C.\n";
enter A, B, or C!\n";

116

Starting Out with C++, 3rd Edition

Program Output with Example Input

Enter a A, B, or C: A [Enter]
You entered A.
You entered B.
You entered C.
You did not enter A, B, or C!
Program Output with Example Input
Enter a A, B, or C: C [Enter]
You entered C.
You did not enter A, B, or C!

117

Starting Out with C++, 3rd Edition

Program 4-34
// This program is carefully constructed to use the
// "fallthrough" feature of the switch statement.
#include <iostream.h>
void main(void)
{
int modelNum;
cout << "Our TVs come in three models:\n";
cout << "The 100, 200, and 300. Which do you want? ";
cin >> modelNum;
cout << "That model has the following features:\n";

Program continues on next slide

118

Starting Out with C++, 3rd Edition

Program continues
switch (modelNum)
{
case 300: cout <<
case 200: cout <<
case 100: cout <<
break;
default: cout <<
cout <<
}

"\tPicture-in-a-picture.\n";
"\tStereo sound.\n";
"\tRemote control.\n";
"You can only choose the 100,";
"200, or 300.\n";

119

Starting Out with C++, 3rd Edition

Program Output with Example Input

Our TVs come in three models:


The 100, 200, and 300. Which do you want? 100 [Enter]
That model has the following features:
Remote control.
Program Output with Example Input
Our TVs come in three models:
The 100, 200, and 300. Which do you want? 200 [Enter]
That model has the following features:
Stereo sound.
Remote control.

120

Starting Out with C++, 3rd Edition

Program 4-35
// The switch statement in this program uses the "fallthrough"
// feature to catch both upper and lowercase letters entered
// by the user.
#include <iostream.h>
void main(void)
{
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;

Program continues on next slide

121

Starting Out with C++, 3rd Edition

Program continued from previous slide.

switch(feedGrade)
{
case 'a':
case 'A':
cout <<
break;
case 'b':
case 'B':
cout <<
break;
case 'c':
case 'C':
cout <<
break;
default:
cout <<
choice.\n";
}

"30 cents per pound.\n";

"20 cents per pound.\n";

"15 cents per pound.\n";


"That is an invalid

122

Starting Out with C++, 3rd Edition

Das könnte Ihnen auch gefallen