340 likes | 355 Views
This review covers the rules for division in C++, including how integers and doubles are treated, and provides examples of different division scenarios. It also explores if statements and the different ways to use them. Useful for programmers learning C++.
E N D
Programming if Statements
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)
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).
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.0 double result2 = double(x)/y; // 1.0/2 = 0.5 -> 0.5 double result3 = x/double(y); // 1/2.0 = 0.5 -> 0.5 double result4 = double(x)/double(y); // 1.0/2.0 -> 0.5 double result5 = double(x/y); // double(1/2) = double(0) -> 0.0 int cents = int(result4*100); // cents is 50
Three Program Structures • Sequence - executable statements which the computer processes in the given order • Choice - sequence(s) selected depending on some condition if <condition exists>{ <do P> } • Iteration - repetitively executed sequences while <condition exists>{ <do P> }
Sequence • It is natural to write a program as a sequence of program structures such as sequences, choices, and iterations Program Structure 1 Program Structure 2 Program Structure 3
Choice Constructs • Provide • Ability to control whether a statement list is executed • Two constructs • if statement • if • if-else • if-else-if • switch statement
The Basic if Statement • Syntax if(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 value if(value < 0) value = -value; Expression true false Action
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; }
Choice (if) • Put multiple action statements within braces if <it's raining>{ <take umbrella> <wear raincoat> }
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;
Relational Operators Relational operators are used to construct a logical expression Math 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
Relational Expressions Examples: numberOfStudents < 200 10 > 20 20 * j == 10 + i
Operator Precedence Which comes first? * / % + - < <= >= > == != = Answer:
The if-else Statement • Syntax if(Expression) Action1elseAction2 • If Expression is true thenexecute Action1otherwiseexecute Action2 • Example if(v == 0) cout << "v is 0"; else cout << "v is not 0"; Expression false true Action1 Action2
Choice (if and else) if <it's sunny>{ <go to beach> } else{ <take umbrella> }
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;
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
if-else-if Statements if <condition 1 exists>{ <do Q> } else if <condition 2 exists>{ <do R> } else if <condition 3 exists>{ <do S> } else{ <do T> } Q R S T
if-else-if Statements Top10 if <Mon, Wed, or Fri AM>{ <goto COMP 104> } else if <Tues, Thurs AM>{ <goto MATH 113> } else if <1PM or 7PM>{ <eat> } else{ <sleep> }
if-else-if Statement • Example if(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; else cout << "Grade = F" << endl;
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; }
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; }
Boolean Type • C++ contains a type named boolwhich 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
A Boolean Type • Example logical expressions bool P = true;bool Q = false;bool R = true;bool S = P && Q;bool T = !Q || R;bool U = !(R && !Q);
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 =
More Operator Precedence • Parentheses ( … ) • Unary operators ! • Multiplicative operators * / % • Additive operators + - • Relational ordering < <= >= > • Relational equality == != • Logical and && • Logical or || • Assignment = • Examples 5 != 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
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
a > b > c (a > b) > c (3 > 2) > 1 true > 1 1 > 1 false a > c > b (a > c) > b (3 > 1) > 2 true > 2 1 > 2 false What’s Wrong? 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;
Correct program int 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;
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
“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;
“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;
“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; } }