If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats...

34
if Statements Programming

description

COMP104 Lecture 7 / Slide 3 Rules for Division l Example : 220. / double/double -> double result is / 100 double/int -> double result is / int/double -> double result is / 100 int/int -> int result is 2 Summary: division is normal unless both the numerator and denominator are int, then the result is an int (the decimal places are discarded).

Transcript of If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats...

Page 1: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

if Statements

Programming

Page 2: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 2

Review: Rules for Division C++ treats integers different than doubles. 100 is an int. 100.0 , 100.0000, and 100. are doubles. The general rule for division of int and double

types is: double/double -> double (normal) double/int -> double (normal) int/double -> double (normal) int/int -> int (special case: any decimal

places discarded)

Page 3: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 3

Rules for Division Example :

220. / 100.0 double/double -> double result is 2.2 220. / 100 double/int -> double result is 2.2 220 / 100.0 int/double -> double result is 2.2 220 / 100 int/int -> int result is 2

Summary: division is normal unless both the numerator and denominator are int, then the result is an int (the decimal places are discarded).

Page 4: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 4

Forcing a Type Change You can change the type of an expression with a cast

operation Syntax:

variable1 = type(variable2);variable1 = type(expression);

Example:int x=1, y=2;double result1 = x/y; // 1/2 = 0 -> 0.0double result2 = double(x)/y; // 1.0/2 = 0.5 -> 0.5double result3 = x/double(y); // 1/2.0 = 0.5 -> 0.5double result4 = double(x)/double(y); // 1.0/2.0 -> 0.5double result5 = double(x/y);

// double(1/2) = double(0) -> 0.0int cents = int(result4*100); // cents is 50

Page 5: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 5

Three Program Structures Sequence - executable statements which the

computer processes in the given order Choice - sequence(s) selected depending on

some conditionif <condition exists>{

<do P>}

Iteration - repetitively executed sequences while <condition exists>{

<do P>}

Page 6: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 6

Sequence It is natural to write a program as a sequence

of program structures such as sequences, choices, and iterations

Page 7: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 7

Choice Constructs

Provide Ability to control whether a statement list is

executed Two constructs

if statement– if– if-else– if-else-if

switch statement

Page 8: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 8

The Basic if Statement

Syntaxif(Expression)

Action If the Expression is true then

execute Action Action is either a single

statement or a group of statements within braces

Example: absolute valueif(value < 0) value = -value;

Expression

Action

true false

Page 9: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 9

Absolute Value

// program to read number & print its absolute value#include <iostream>using namespace std;int main(){

int value;cout << "Enter integer: ";cin >> value;if(value < 0)value = -value; cout << "The absolute value is " << value << endl;return 0;

}

Page 10: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 10

Choice (if)

Put multiple action statements within braces

if <it's raining>{<take umbrella><wear raincoat>

}

Page 11: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 11

Sorting Two Numbers

int value1;int value2;int temp;cout << "Enter two integers: ";cin >> value1 >> value2;if(value1 > value2){

temp = value1;value1 = value2;value2 = temp;

}cout << "The input in sorted order: " << value1 << " " << value2 << endl;

Page 12: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 12

Relational OperatorsRelational operators are used to construct a logical

expressionMath C++ Plain English= == equals [example: if(a==b) ]

[ (a=b) means put the value of b into a ]

< < less than <= less than or equal to> > greater than >= greater than or equal to != not equal to

Page 13: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 13

Relational ExpressionsExamples:

numberOfStudents < 200

10 > 20

20 * j == 10 + i

Page 14: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 14

Operator Precedence

Which comes first?

* / %+ -

< <= >= >== !=

=

Answer:

Page 15: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 15

The if-else Statement

Syntaxif(Expression) Action1else Action2

If Expression is true thenexecute Action1 otherwiseexecute Action2

Exampleif(v == 0)cout << "v is 0";elsecout << "v is not 0";

Expression

Action1 Action2

true false

Page 16: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 16

Choice (if and else)if <it's sunny>{

<go to beach>} else{

<take umbrella>}

Page 17: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 17

Finding the Big One

int value1;int value2;int larger;cout << "Enter two integers: ";cin >> value1 >> value2;if(value1 > value2)

larger = value1;else

larger = value2;cout << "Larger of inputs is: " << larger << endl;

Page 18: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 18

Selection

Often we want to perform a particular action depending on the value of an expression

Two ways to do this if-else-if statement

– if-else statements “glued” together switch statement

– An advanced construct

Page 19: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 19

if-else-if Statementsif <condition 1 exists>{

<do Q>}else if <condition 2 exists>{

<do R>}else if <condition 3 exists>{

<do S>}else{

<do T>}

Q

R

TS

Page 20: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 20

if-else-if Statementsif <Mon, Wed, or Fri AM>{

<goto COMP 104>}else if <Tues, Thurs AM>{

<goto MATH 113>}else if <1PM or 7PM>{

<eat>}else{

<sleep>}

Page 21: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 21

if-else-if Statement

Exampleif(score >= 90)cout << "Grade = A" << endl;else if(score >= 80)cout << "Grade = B" << endl;else if(score >= 70)cout << "Grade = C" << endl;else if(score >= 60)cout << "Grade = D" << endl;elsecout << "Grade = F" << endl;

Page 22: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 22

switch Statement

switch(int(score)/10){case 10:case 9: cout << "Grade = A" << endl;

break;case 8: cout << "Grade = B" << endl;

break;case 7: cout << "Grade = C" << endl;

break;case 6: cout << "Grade = D" << endl;

break;default: cout << "Grade = F" << endl;

}

Page 23: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

int left;int right;char oper;cout << "Enter simple expression: ";cin >> left >> oper >> right;cout << left << " " << oper << " " << right << " = ";switch (oper) {

case '+' : cout << left + right << endl; break;case '-' : cout << left - right << endl; break;case '*' : cout << left * right << endl; break;case '/' : cout << left / right << endl; break;default: cout << "Illegal operation" << endl;

}

Page 24: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 24

Boolean Type

C++ contains a type named bool which can have one of two values true (corresponds to non-zero value) false (corresponds to zero value)

Boolean operators can be used to form more complex conditional expressions The and operator is && The or operator is || The not operator is !

Warning & and | are bit-wise operators please do NOT confuse them with boolean operators

Page 25: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 25

A Boolean Type

Example logical expressionsbool P = true;bool Q = false;bool R = true;bool S = P && Q;bool T = !Q || R;bool U = !(R && !Q);

Page 26: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 26

More Operator Precedence

Precedence of operators (from highest to lowest) Parentheses ( … ) Unary operators ! Multiplicative operators * / % Additive operators + - Relational ordering < <= >= > Relational equality == != Logical and && Logical or || Assignment =

Page 27: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 27

More Operator Precedence Examples5 != 6 || 7 <= 3(5 !=6) || (7 <= 3)

5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24 5 * 15 + 4 == 13 && 12 < 19 || (!false) == 5 < 24 (5 * 15) + 4 == 13 && 12 < 19 || true == 5 < 24 ((5 * 15) + 4) == 13 && 12 < 19 || true == 5 < 24 ((5 * 15) + 4) == 13 && (12 < 19) || true == (5 < 24) (((5 * 15) + 4) == 13) && true || (true == true) false && true || true (false && true)|| true true

Parentheses ( … ) Unary operators! Multiplicative operators * / % Additive operators + - Relational ordering < <= >= > Relational equality == != Logical and && Logical or || Assignment =

Page 28: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 28

Finding the largest number

Consider three numbers, A, B and C How many ways can they be ordered?

A > B > C A > C > B B > A > C B > C > A C > A > B C > B > A

Page 29: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 29

int a=3, b=2, c=1;if ((a > b > c) || (a > c > b)) cout << a << endl;else if ((b > a > c) || (b > c > a)) cout << b << endl;else if ((c > a > b) || (c > b > a)) cout << c << endl;

What’s Wrong?

a > b > c (a > b) > c(3 > 2) > 1true > 11 > 1false

a > c > b (a > c) > b(3 > 1) > 2true > 21 > 2false

Page 30: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 30

Correct programint a=2, b=2, c=1;if ((a > b) && (b > c) || (a > c) && (c > b)) cout << a << endl;else if ((b > a) && (a > c) || (b > c) && (c > a)) cout << b << endl;else if ((c > a) && (a > b) || (c > b) && (b > a)) cout << c << endl;

Page 31: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 31

Nested if Statements Nested means that one complete statement is inside

another (nested scopes)if (condition_1) {

if (condition_2) {if (condition_3) {

cout << “123”;}cout << “12”;

} cout << “1”;

}

Scope of if-statement

Page 32: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 32

“Dangling Else” Problem

Problem: Nested if statements can seem ambiguous in their meaning.

What is the value of c after the following is executed?

int a=-1, b=1, c=1;if(a>0) if(b>0) c = 2;else c = 3;

Page 33: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 33

“Dangling Else” Problem

C++ groups a dangling else with the most recent if.

The following indentation shows how C++ would group this example (answer: c=1).

int a=-1, b=1, c=1;if(a>0) if(b>0) c = 2; else // dangling else grouped to nearest if c = 3;

Page 34: If Statements Programming. COMP104 Lecture 7 / Slide 2 Review: Rules for Division l C++ treats integers different than doubles. 100 is an int. l 100.0,

COMP104 Lecture 7 / Slide 34

“Dangling Else” Problem

Use extra brackets { } to clarify the intended meaning, even if not necessary.

int a=-1, b=1, c=1;if(a>0){ if(b>0){ c = 2; else // use { } to avoid dangling else c = 3;

}}