1 / 34

Programming

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

carriew
Download Presentation

Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming if Statements

  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)

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

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

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

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

  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

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

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

  10. Choice (if) • Put multiple action statements within braces if <it's raining>{ <take umbrella> <wear raincoat> }

  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;

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

  13. Relational Expressions Examples: numberOfStudents < 200 10 > 20 20 * j == 10 + i

  14. Operator Precedence Which comes first? * / % + - < <= >= > == != = Answer:

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

  16. Choice (if and else) if <it's sunny>{ <go to beach> } else{ <take umbrella> }

  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;

  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

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

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

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

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

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

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

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

  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 =

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

  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

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

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

  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

  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;

  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;

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

More Related