CS102 Introduction to Computer Programming Chapter 4 Making Decisions Continued.

35
CS102 Introduction to Computer Programming Chapter 4 Making Decisions Continued

Transcript of CS102 Introduction to Computer Programming Chapter 4 Making Decisions Continued.

CS102Introduction to Computer

Programming

Chapter 4 Making Decisions

Continued

Chapter 4 Topics• Menus• Nested if Statements• Logical Operators• Checking Numeric Ranges• Validating User Input• More variable Declarations and Scope• Variables with the same names• Comparing Strings• The Conditional Operator• The switch

Menus

• A menu is a list of alternative actions from which the user can select– The user makes a decision and the program acts on it

– The if/else if statement determines what the decision is from a list of valid decisions

• Menus can both document the programs functions as well as direct their execution

Concept - You can use the if/else if statement to create menu driven programs

Concept - You can use the if/else if statement to create menu driven programs

Program 4-14// 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 << "\t\tHealth Club Membership Menu\n\n";cout << "1. Standard Adult Membership\n";cout << "2. Child Membership\n";cout << "3. Senior Citizen Membership\n";cout << "4. Quit the Program\n\n";

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

Program continues

else if (Choice == 2){

cout << "\nFor how many months? ";

cin >> Months;Charges = Months * 20.00;cout << "The total charges are $" <<

Charges << endl;}else if (Choice == 3){

cout << "\nFor how many months? ";

cin >> Months;Charges = Months * 30.00;cout << "The total charges are $" <<

Charges << endl;}

else if (Choice != 4){

cout << "The valid choices are 1 through

4. Run the\n";cout << "program

again and select one of those.\n";}

} Program Output Health Club Membership Menu1. Standard Adult Membership2. Child Membership3. Senior Citizen Membership4. Quit the Program

Enter your choice: 3 [Enter]For how many months? 6 [Enter]The total charges are $180.00

Nested if Statements

• All the conditions of a nested if must be true for the conditional code to execute.

• Use proper indentation to help keep track of what else belongs to what if

Concept - A nested if statement is an if statement in the conditionally executed code of another if statement

Concept - A nested if statement is an if statement in the conditionally executed code of another if statement

ifexpression

end

True

False

Statementor block

ifexpression

True

False

Flow chart for nested if

Program 4-15

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

if (Employed == 'Y') { if (RecentGrad == 'Y') { cout << "You qualify for the

special "; cout << "interest rate.\n"; } }}

Program Output Answer the following questionswith either Y for Yes or N for No.Are you employed? YHave you graduated from college in the past two years? YYou qualify for the special interest rate.

Logical Operators

• && and if both sub-expressions are true their connection is true

• || or if either sub-expression is true the connection is true

• ! Not Reverses the truth of an expression

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

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

Truth Table for Logical Operators

And exp 1 True&& exp 1 False

Or exp 1 True || exp 1 False

exp 2 exp 2 True False

T FF F

T TT F

Not exp True = = False(0)! exp False = = True(1)

Program 4-17/* 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; cout << "Have you graduated from college "; cout << "in the past two years? "; cin >> RecentGrad;

if (Employed == 'Y'&& RecentGrad == 'Y')

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

Program Output

Answer the following questionswith either Y for Yes orN for No.Are you employed? YHave you graduated from college in the past two years? NYou must be employed and havegraduated from college in thepast two years to qualify.

Program 4-18/* 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;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)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";}

} Program OutputWhat is your annual income? 40000 [Enter]How many years have you worked at your

current job? 2 [Enter]You qualify.

Program OutputWhat is your annual income? 20000 [Enter]How many years have you worked at your

current job? 7 [Enter]You qualify.

Program 4-19

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

//(Income >= 35000 || Years > 5)if (!(Income >= 35000 || Years > 5))

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

Precedence of Logical Operators

!

&&

||

4.11 Checking Numeric Ranges With Logical Operators

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

Checking Numeric Ranges

• Use && to check if values are inside of a rangeif ( value > = low end && value < = high end)

cout << "The value is inside the range";

• Use || to check if values are outside of a rangeif ( value< = low end || value > = high end)

cout << "The value is outside the range";

Concept - Logical operators are effective for checking if a number is in or out of a range

Concept - Logical operators are effective for checking if a number is in or out of a range

Examples of validation:

• Numbers are checked to ensure they are within a range of possible values.

• Values are checked for their “reasonableness”.• Items selected from a menu or other set of choices

are checked to ensure they are available options.• Variables are checked for values that might cause

problems, such as division by zero.

Validating User Input

• Range checking - the temperature of liquid water should be between 32oF and 212oF

• Reasonableness checking - there are only 168 hours in a week

• Acceptable menu selection - is the input one of the menu options

• Useable inputs - divide by zero

Concept - Garbage in equals garbage out. Write programs to filter out bad data

Concept - Garbage in equals garbage out. Write programs to filter out bad data

Program 4-21A

#include <iostream.h>void main(void){

cout << "What is your annual income? ";float Income;cin >> Income;cout << "How many years have you worked at " << "your current job? ";int Years;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";

}}

Program 4-22// This program demonstrates a variable declared in an

inner block.

#include <iostream.h>

void main(void)

{

cout << "What is your annual income? ";

float Income;

cin >> Income;

if (Income >= 35000)

{

int Years; cout << "How many years have you worked at your

current job? ";cin >> Years;

if (Years > 5)cout << "You qualify.\n";

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

}

More variable Declarations and Scope

• Braces { } are used to signify a block of code.– A variable can only be used within the block in which it

is declared

– This is referred to as local scope or block scope

Concept - The scope of a variable is limited to the block of code in which it is declared

Concept - The scope of a variable is limited to the block of code in which it is declared

Variables with the same names

• If one block of code is nested within another it can declare variables with the same names as those in the outer block– The variable will only exist wile the code in that block

is executing

– the variables in the outer block won't be useable until the inner block is exited

Concept - A variable declared in an inner block can have the same name as a variable declared in an outer block

Concept - A variable declared in an inner block can have the same name as a variable declared in an outer block

Program 4-23// 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;

cout << "Now enter another number: ";

cin >> Number;

cout << "The second number you

entered was ";

cout << Number << endl;

}

cout << "Your first number was " << Number << endl;

}

Program Output Enter a number greater than 0: 2 [Enter]Now enter another number: 7[Enter]The second number you entered was 7Your first number was 2

Comparing Strings• The strcmp function is used to compare character

strings

strcmp(string1, string2)

returns 1 if string1 is alphabetically higher

returns -1 if string2 alphabetically higher

returns 0 if both strings are identical• #include <string> is required to use strcmp

Concept - Character strings can not be compared using relational operators.

Concept - Character strings can not be compared using relational operators.

Sorting Strings

If (strcmp(string1,string2)) < 0)

cout <<string1<<"\n" <<string2;

else

cout << string2<<"\n" <<string1;

Concept - The strcmp function can be used to alphabetically sort character strings

Concept - The strcmp function can be used to alphabetically sort character strings

The Conditional Operator

• The conditional operator is a ternary operator

expression1 ? expresson2 : espression3

if (expression1)

expression2;

else

expression3;

Concept - The conditional operator can be used to create short expressions that work like if/else statements

Concept - The conditional operator can be used to create short expressions that work like if/else statements

The switch• The switch statement test the value of an integer

expression and then uses the value to determine which block of code to branch to switch (integer expression){

case result1: constant expression: one or more statements;break;

case result2: constant expression: one or more statements;break;

default: statement; (optional)}

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

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

Switch Flow Chart if

CaseStatementor block

end

True

False

Statementor block

ifCase

True

False

ifbreak

True

False

ifbreak

Default

False True

The switch statement

• The expressions in case statements must be unique

• The default statement is optional

• A break is not needed after the last statement

• The switch statement is a natural for building menus

Program 4-31/* 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;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";

}

}

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

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

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;switch (Choice){ case 'A': cout << "You entered A.\n"; case 'B': cout << "You entered B.\n"; case 'C': cout << "You entered C.\n"; default: cout << "You did not enter A, B, or C!\n";}

}

Program Output

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

Enter a A, B, or C: C [Enter]

You entered C.

You did not enter A, B, or C!

Program 4-33/* 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";switch (ModelNum)

{case 300:cout << "\tPicture-in-a-picture.\n";case 200:cout << "\tStereo sound.\n";case 100:cout << "\tRemote control.\n"; break;default:cout << "You can only choose the 100,"; cout << "200, or

300.\n";}

}

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.

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

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

}