Chapter 4: Making Decisions.

Slides:



Advertisements
Similar presentations
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 4: Making Decisions.
Advertisements

1 Objectives You should be able to describe: Relational Expressions The if-else Statement Nested if Statements The switch Statement Common Programming.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 4- 1.
Copyright © 2012 Pearson Education, Inc. Chapter 4: Making Decisions.
Use Precedence Chart int number ; float x ; number ! = 0 && x < 1 / number / has highest priority < next priority != next priority && next priority What.
Multi-alternative Selection Both the if clause and the else clause of an if...else statement can contain any kind of statement, including another selection.
Single selection syntax if ( expression ) { statements; } TRUE FALSE expression if clause 1. Statemens are executed when expression is true 2. { } can.
Chapter 4 Making Decisions
C++ for Engineers and Scientists Third Edition
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 4 Making.
Section 3 - Selection and Repetition Constructs. Control Structures 1. Sequence 2. Selection 3. Repetition.
A First Book of ANSI C Fourth Edition Chapter 4 Selection.
Programming Fundamentals1 Chapter 4 SELECTION STRUCTURES.
CONTROL STATEMENTS IF-ELSE, SWITCH- CASE Introduction to Computer Science I - COMP 1005, 1405 Instructor : Behnam Hajian
Chapter 4 Logical Expressions & If-Else. 2 Overview  More on Data Type bool u Using Relational & Logical Operators to Construct & Evaluate Logical Expressions.
1 Chapter 4: Selection Structures. In this chapter, you will learn about: – Selection criteria – The if-else statement – Nested if statements – The switch.
Lecture 5 Selection Control Structures Selection Control Structures Dr. Hebbat Allah A. Elwishy Computer & IS Assistant Professor
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 3 Selections.
CPS120: Introduction to Computer Science Decision Making in Programs.
2 Objectives You should be able to describe: Relational Expressions Relational Expressions The if-else Statement The if-else Statement Nested if Statements.
Copyright © 2012 Pearson Education, Inc. Chapter 4: Making Decisions.
Flow of Control Part 1: Selection
Making Decisions Chapter 5.  Thus far we have created classes and performed basic mathematical operations  Consider our ComputeArea.java program to.
Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than.
Additional Control Structures. Chapter 9 Topics Switch Statement for Multi-way Branching Do-While Statement for Looping For Statement for Looping Using.
1 Chapter 9 Additional Control Structures Dale/Weems.
A First Book of ANSI C Fourth Edition Chapter 4 Selection.
Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 4 Making Decisions.
Chapter 4 Making Decision Csc 125 C++ programming language Fall 2005.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 4: Making Decisions.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 4: Making Decisions Starting Out with C++ Early Objects Seventh Edition.
Copyright 2003 Scott/Jones Publishing Making Decisions.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 4: Making Decisions Starting Out with C++ Early Objects Eighth.
+ Chapter 4: Making Decisions Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda.
Chapter 7 Selection Dept of Computer Engineering Khon Kaen University.
Copyright © 2012 Pearson Education, Inc. Chapter 4: Making Decisions.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 4: Making Decisions.
Chapter Making Decisions 4. Relational Operators 4.1.
CHAPTER 5 MAKING DECISION Hidayah Elias BFC2042 – Computer Programming.
Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 4 Making Decisions.
Programming Fundamentals1 Chapter 4 SELECTION STRUCTURES.
Object-Oriented Program Development Using Java: A Class-Centered Approach, Enhanced Edition.
1 Conditions, Logical Expressions, and Selection Control Structures.
1 Programming in C++ Dale/Weems/Headington Chapter 9 Additional Control Structures (Switch, Do..While, For statements)
A First Book of C++ Chapter 4 Selection. Objectives In this chapter, you will learn about: –Relational Expressions –The if-else Statement –Nested if Statements.
Decision Statements, Short- Circuit Evaluation, Errors.
Chapter 7 Conditional Statements. 7.1 Conditional Expressions Conditions - compare the values of variables, constants and literals using one or more relational.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 4: Making Decisions 1.
CPS120: Introduction to Computer Science Decision Making in Programs.
Lecture 6 – Selection FTMK, UTeM – Sem /2014.
An Introduction to Programming with C++ Sixth Edition Chapter 5 The Selection Structure.
Chapter 7 Conditional Statements. 7.1 Conditional Expressions Condition – any expression that evaluates to true/false value Relational operators are BINARY.
C++ for Engineers and Scientists Second Edition Chapter 4 Selection Structures.
A First Book of C++ Chapter 4 Selection.
CNG 140 C Programming (Lecture set 3)
Chapter 3 Control Statements
Selection (also known as Branching) Jumail Bin Taliba by
Chapter 4: Making Decisions.
Control Structures Combine individual statements into a single logical unit with one entry point and one exit point. Used to regulate the flow of execution.
Chapter 4: Making Decisions.
EGR 2261 Unit 4 Control Structures I: Selection
The Selection Structure
Chapter 3 Control Statements Lecturer: Mrs Rohani Hassan
Chapter 4: Making Decisions.
Chapter 4: Making Decisions.
Chapter 7 Conditional Statements
Topics 4.1 Relational Operators 4.2 The if Statement
Presentation transcript:

Chapter 4: Making Decisions

Outline Relational Operations If statement Logical operators Switch If If/else statement If/else if Logical operators Switch

Relational Operators Operators: Relational operations allow you to compare numeric and char values and determine whether one is greater, less, equal to, or not equal to another. Operators: > Greater than < Less than >= Greater than or equal to <= Less than or equal to == Equal to != Not equal to

Relational Expressions Boolean expressions – true or false Examples: 12 > 5 is true 7 <= 5 is false if x is 10, then x == 10 is true, x != 8 is true, and x == 8 is false

int x, y ; x = 4; y = 6; EXPRESSION VALUE x < y x + 2 < y x != y x + 3 >= y y == x y == x+2 y = x + 3

int x, y ; x = 4; y = 6; EXPRESSION VALUE x < y true x + 2 < y false x != y true x + 3 >= y true y == x false y == x+2 true y = x + 3 7

Relational Expressions Can be assigned to a variable: result = x <= y; By default, assigns 0 for false, 1 for true Do not confuse = and == 0 is false; any other value is true

Like all C++ expressions, relational expressions are evaluated to yield a numerical result. A condition that we would interpret as true evaluates to an integer value of 1; a false condition results in an integer value of 0. Samples: cout << (3 < 4) << endl; cout << (2.0 > 3.0); Results: 1

Outline Relational Operations If statement Logical operators Switch If If/else statement If/else if Logical operators Switch

The if Statement Allows statements to be conditionally executed or skipped over Models the way we mentally evaluate situations: "If it is raining, take an umbrella." "If it is cold outside, wear a coat."

Flowchart for Evaluating a Decision

if statement Select whether or not to execute a statement (which can be a single statement or an entire block) without the else clause TRUE expression statement FALSE

Flowchart for Evaluating a Decision

The if Statement General Format: if (expression) statement; If the expression is true, then statement is executed. If the expression is false, then statement is skipped.

Example: Check a Car’s Mileage #include <iostream> int main ( void ) { const double LIMIT = 30000.0; //set car mileage limit double mileage = 0.0; //stores mileage entered by user cout << "Please enter the mileage recorded on the car: "; cin >> mileage; if (mileage > LIMIT) cout << "This car is over the limit."; cout << "\n\nEnd of program."; return 0; }

Example: Results Output from first run: Please enter the mileage recorded on the car: 35620.8 This car is over the limit. End of program. Output from second run: Please enter the mileage recorded on the car: 25620.3

(Program Continues)

Flowchart for Lines 21 and 22

if statement notes Do not place ; after (expression) Place statement; on a separate line after (expression), indented: if (score > 90) grade = 'A'; Be careful testing floats and doubles for equality 0 is false; any other value is true

Expanding the if Statement To execute more than one statement as part of an if statement, enclose them in { }: if (score > 90) { grade = 'A'; cout << "Good Job!\n"; } { } creates a block of code (like your main function)

Outline Relational Operations If statement Logical operators Switch If If/else statement If/else if Logical operators Switch

if-else provides two-way selection between executing one of 2 clauses: the if clause or the else clause FALSE TRUE expression else clause if clause 24

The if/else Statement Provides two possible paths of execution Performs one statement or block if the expression is true, otherwise performs another statement or block. General Format: if (expression) statement1; // or block else statement2; // or block

if-else Syntax if ( expression ) statementA; else statementB; NOTE: StatementA and StatementB each can be a single statement, a null statement, or a block.

if/else – what happens To evaluate: if (expression) statement1; else If the expression is true, then statement1 is executed and statement2 is skipped. If the expression is false, then statement1 is skipped and statement2 is executed.

Use of blocks recommended if ( expression ) { } else “if clause” “else clause”

A compound statement consists of individual statements enclosed within braces. Syntax: if(expression) { statement1; statement2; statement3; } else statement4; statement5; statement6;

Exercise: mail order Assign value .25 to discount_rate and assign value 10.00 to ship_cost if purchase is over 100.00 Otherwise, assign value .15 to discount_rate and assign value 5.00 to ship_cost Either way, calculate total_bill if(expression) { statement1; statement2; statement3; } else statement4; statement5; statement6;

These braces cannot be omitted if ( purchase > 100.00 ) { discount_rate = .25 ; ship_cost = 10.00 ; } else discount_rate = .15 ; ship_cost = 5.00 ; total_bill = purchase * (1.0 – discount_rate) + ship_cost ;

(Program Continues)

Outline Relational Operations If statement Logical operators Switch If If/else statement If/else if Logical operators Switch

Used when only one condition can be true if/else if format (if-else chain or extended if-else) Using nested if statements if ( Expression1 ) Statement1 else if ( Expression2 ) Statement2 . else if ( ExpressionN ) StatementN else Statement N+1 EXACTLY 1 block of these statements will be executed. Used when only one condition can be true

Example Marital Status Input Code Married M Single S Divorce D Widowed W

Example int main ( void ) { char marital_status; //marital status code entered by user //Prompt user for marital status code cout << "Enter a marital code: " << endl; cin >> marital_status; //Displays marital status message if (marital_status == 'M') cout <<"Individual is married." << endl; else if (marital_status == 'S') cout <<"Individual is single." << endl; else if (marital_status == 'D') cout <<"Individual is divorced." << endl; else if (marital_status == 'W') cout <<"Individual is widowed." << endl; else cout << "An invalid code was entered." << endl; //used as error message return 0; }

Output (Test all possible paths): Enter a marital code: D Individual is divorced. S Individual is single. M Individual is married. W Individual is widowed. m An invalid code was entered. //results in an error message

Exercise: extended if statement (if-else chain): Calculate the monthly income of a salesperson by using the following commission schedule: Monthly Sales Income Greater than or equal to $50,000 $375 plus 16% of sales Less than $50,000 but greater than or equal to $40,000 $350 plus 14% sales Less than $40,000 but greater than or equal to $30,000 $325 plus 12% sales Less than $30,000 but greater than or equal to $20,000 $300 plus 9% sales Less than $20,000 but greater than or equal to $10,000 $250 plus 5% of sales Less than $10,000 $200 plus 3% of sales

//Calculates salesperson's income if(monthly_sales >= 50000.00) income = 375.00 + .16 * monthly_sales; else if(monthly_sales >= 40000.00) income = 350.00 + .14 * monthly_sales; else if(monthly_sales >= 30000.00) income = 325.00 + .12 * monthly_sales; else if(monthly_sales >= 20000.00) income = 300.00 + .09 * monthly_sales; else if(monthly_sales >= 10000.00) income = 250.00 + .05 * monthly_sales; else income = 200.00 + .03 * monthly_sales;

int main ( void ) { //stores salesperson’s name, monthly sales and calculated income double monthly_sales = 0.0, income = 0.0; string salesperson_name; //Prompts user for salesperson's name & sales cout << "Please enter the saleperson's name: "; getline(cin, salesperson_name); cout << "Enter the value of monthly sales: " << endl; cin >> monthly_sales; //Calculates salesperson's income if (monthly_sales >= 50000.00) income = 375.00 + .16 * monthly_sales; else if (monthly_sales >= 40000.00) income = 350.00 + .14 * monthly_sales; else if (monthly_sales >= 30000.00) income = 325.00 + .12 * monthly_sales; else if (monthly_sales >= 20000.00) income = 300.00 + .09 * monthly_sales; else if (monthly_sales >= 10000.00) income = 250.00 + .05 * monthly_sales; else income = 200.00 + .03 * monthly_sales; //Displays salesperson's name & income cout << setprecision(2) << fixed <<showpoint; cout << salesperson_name << " has earned a total monthly income of $" << income << endl << " based on monthly sales of $" << monthly_sales; return 0; }

Outline Relational Operations If statement Logical operators Switch If If/else statement If/else if Logical operators Switch

Boolean Expressions Simple boolean expression use relational and/or logical operators. 6 Relational (or comparison) Operators < <= > >= == != 3 Logical Operators ! && ||

Logical Operators Used to create relational expressions from other relational expressions Operators, meaning, and explanation: && AND New relational expression is true if both expressions are true || OR New relational expression is true if either expression is true ! NOT Reverses the value of an expression – true expression becomes false, and false becomes true

LOGICAL EXPRESSION MEANING DESCRIPTION ! p NOT p ! p is false if p is true ! p is true if p is false p && q p AND q p && q is true if both p and q are true. It is false otherwise. p || q p OR q p || q is true if either p or q or both are true. It is false otherwise.

Truth Table – Logical “AND” X Y X && Y TRUE FALSE

Truth Table – Logical “AND” X Y X && Y TRUE FALSE

Truth Table – Logical “OR” X Y X || Y TRUE FALSE

Truth Table – Logical “OR” X Y X || Y TRUE FALSE

Truth Table – Logical “not” X !X TRUE FALSE

Truth Table – Logical “not” X !X TRUE FALSE If the Boolean expression is true, the combined expression is false. If the Boolean expression is false, the combined expression is true.

Operator Meaning Associativity ! NOT Right * / % Mult, Div, Modulus Left + , - Add, Sub Left < Less than Left <= Less than or equal to Left > Greater than Left >= Greater than or equal to Left == Is equal to Left != Is not equal to Left && AND Left || OR Left = Assignment Right

Logical Operators - examples int x = 12, y = 5, z = -4; (x > y) && (y > z) (x > y) && (z > y) (x <= z) || (y == z) (x <= z) || (y != z) !(x >= z)

Logical Operators - examples int x = 12, y = 5, z = -4; (x > y) && (y > z) true (x > y) && (z > y) false (x <= z) || (y == z) (x <= z) || (y != z) !(x >= z)

Write an expression for each tax_rate is over 25% and income is less than $20000 (tax_rate > 0.25) && (income < 20000) temperature is less than or equal to 75 or humidity is less than 70% (temperature <= 75) || (humidity < .70) age is over 21 and age is less than 60 (age > 21) && (age < 60) age is 21 or 22 (age == 21) || (age == 22)

Example The extended if statement should be as follows to allow the user to enter either uppercase or lowercase marital codes: //Displays marital status message if (marital_status == 'M' || marital_status == 'm') cout <<"Individual is married." << endl; else if (marital_status == 'S' || marital_status == 's') cout <<"Individual is single." << endl; else if (marital_status == 'D' || marital_status == 'd') cout <<"Individual is divorced." << endl; else if (marital_status == 'W' || marital_status == 'w') cout <<"Individual is widowed." << endl; else cout << "An invalid code was entered." << endl;

Logical Operators - notes ! has highest precedence, followed by &&, then || If the value of an expression can be determined by evaluating just the sub-expression on left side of a logical operator, then the sub-expression on the right side will not be evaluated (short circuit evaluation) 3 logical operators order of precedence ! && ||

As with all expressions, parentheses can be used to alter the assigned operator priority and to improve the readability of relational expressions. By evaluating the expressions within the parentheses first, we find that the following compound condition is evaluated as shown: (6 * 3 == 36 / 2) || (13 < 3 * 3 + 4) && !(6 – 2 < 5) (18 == 18) || ( 13 < 9 + 4 ) && !( 4 < 5 ) 1 || (13 < 13) && !1 1 || 0 && 0 1 || 0 1

Nested if statements An if-else statement can contain simple or compound statements. Any valid C++ statement can be used, including another if-else statement. Thus, one or more if-else statements can be included within either part of an if-else statement. for statement1 in the if statement if ( hours < 9 ) statement1; else cout << “pop”; results in the nested if statement { cout << “snap”; if ( hours > 6 ) cout << “snap extra”; }

because in their absence, C++ associates an else with the closest The braces around the inner one-way if are essential, because in their absence, C++ associates an else with the closest unpaired if. Thus, without the braces, the foregoing statement is equivalent to if ( hours < 9 ) if ( hours > 6 ) cout << “snap”; else cout << “pop”; Here, the else is paired with the inner if, which destroys the meaning of the original if-else statement. Note also that the indentation is irrelevant as far as the computer is concerned. Whether the indentation exists or not, the statement is compiled by associating the last else with the closest unpaired if, unless braces are used to alter the default pairing. The process of nesting if statements can be extended indefinitely, so the cout << “snap”; statement could itself be replaced by either a complete if-else statement or another one-way if statement.

Outline Relational Operations If statement Logical operators Switch If If/else statement If/else if Logical operators Switch

Used when more than one condition can be true Multi-alternative Selection is also called multi-way branching, and can be accomplished by one of two methods: Using sequential if statements if ( Expression1 ) Statement1; if ( Expression2 ) Statement2; . if ( ExpressionN ) StatementN; One or more of these statements may be executed. Used when more than one condition can be true

Slide 4- 63

switch Statement Is a selection control structure for multi-way branching. SYNTAX switch ( IntegralExpression ) { case constant1 : statement(s); // optional break; case constant2 : . default : // optional statement(s); // optional }

Control in switch statement control branches to the statement following the case label that matches the value of IntegralExpression. Control proceeds through all remaining statements, including the default, unless redirected with break if no case label matches the value of IntegralExpression, control branches to the default label, if present--otherwise control passes to the statement following the entire switch statement forgetting to use break can cause logical errors because after a branch is taken, control proceeds sequentially until either break or the end of the switch statement occurs

The switch Statement Used to select among statements from several alternatives In some cases, can be used instead of if/else if statements

switch statement format switch (expression) //integer or character { // start of compound statement case exp1: // terminate with a colon statement1; break; case exp2: // terminate with a colon statement2; ... case expn: // terminate with a colon statementn; default: // terminate with a colon statementn+1; } //end of switch & compound statement

switch statement requirements 1) expression must be an integer variable or an expression that evaluates to an integer value exp1 through expn must be constant integer expressions or literals, and must be unique in the switch statement default is optional but highly recommended

switch statement – how it works 1) expression is evaluated The value of expression is compared against exp1 through expn. If expression matches value expi, the program branches to the statement following expi and continues to the end of the switch If no matching value is found, the program branches to the statement after default:

break statement Used to exit a switch statement Useful to execute a single case statement without executing the statements following it If it is left out, the program "falls through" the remaining statements in the switch statement Used to stop execution in the current block

Slide 4- 72

Multiple case values switch (number) { case 1: cout << "Have a Good Morning" << endl; break; case 2: cout << "Have a Happy Day" << endl; case 3: case 4: case 5: cout << "Have a Nice Evening" << endl; } We can use multiple case values to refer to the same set of statements; the default label is optional

Character data types in “Switch” switch (choice) { case 'a': case 'e': case 'i': case 'o': case 'u': cout << "\nThe character in choice is a vowel." << endl; break; default: cout << "\nThe character in choice is not a vowel." << endl; break; //this break is optional } // end of switch statement Because character data types are always converted to integers in an expression, a switch statement can also be used to "switch" on the basis of the value of a character expression