View
217
Download
0
Category
Preview:
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).
Citation preview
if Statements
Programming
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)
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).
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
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>}
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
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
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
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;
}
COMP104 Lecture 7 / Slide 10
Choice (if)
Put multiple action statements within braces
if <it's raining>{<take umbrella><wear raincoat>
}
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;
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
COMP104 Lecture 7 / Slide 13
Relational ExpressionsExamples:
numberOfStudents < 200
10 > 20
20 * j == 10 + i
COMP104 Lecture 7 / Slide 14
Operator Precedence
Which comes first?
* / %+ -
< <= >= >== !=
=
Answer:
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
COMP104 Lecture 7 / Slide 16
Choice (if and else)if <it's sunny>{
<go to beach>} else{
<take umbrella>}
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;
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
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
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>}
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;
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;
}
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;
}
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
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);
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 =
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 =
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
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
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;
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
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;
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;
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;
}}
Recommended