Upload
melvin-barrett
View
215
Download
1
Embed Size (px)
Citation preview
1
Compound Assignment
C++ has a large set of operators for applying an operation to an object and then storing the result back into the object
Examplesint i = 3;i += 4; // i is now 7cout << i << endl;
float a = 3.2;a *= 2.0; // a is now 6.4cout << a << endl;
2
Increment and Decrement
C++ has special operators for incrementing or decrementing an object by oneExamplesint k = 4;++k; // k is 5
k++; // k is 6cout << k << endl;int i = k++; // i is 6, k is 7cout << i << " " << k << endl;int j = ++k; // j is 8, k is 8cout << j << " " << k << endl;
3
If Control Construct
A mechanism for deciding whether an action should be taken
Chapter 4
JPC and JWD © 2002 McGraw-Hill, Inc.
4
Boolean Algebra
Logical expressions have the one of two values - true or false
A rectangle has three sides The instructor has a pleasant smile
The branch of mathematics is called Boolean algebra Developed by the British mathematician George
Boole in the 19th century
Three key logical operators And Or Not
5
Boolean Algebra
Truth tables Lists all combinations of operand values and the
result of the operation for each combination
Example
P Q P and Q
False False FalseFalse True FalseTrue False FalseTrue True True
6
Boolean Algebra
Or truth table
P Q P or Q
False False FalseFalse True TrueTrue False TrueTrue True True
7
Boolean Algebra
Not truth table
P not P
False TrueTrue False
8
Boolean Algebra
Can create complex logical expressions by combining simple logical expressions
Example not (P and Q)
A truth table can be used to determine when a logical expression is true
P Q P and Q not (P and Q)
False False False TrueFalse True False TrueTrue False False TrueTrue True True False
9
A Boolean Type
C++ contains a type named bool
Type bool has two symbolic constants true false
Boolean operators The and operator is && The or operator is || The not operator is !
Warning & and | are also operators so be careful what you
type
10
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));
11
Relational Operators
Equality operators == !=
Examples int i = 32; int k = 45; bool q = (i == k); bool r = (i != k);
12
Relational Operators
Ordering operators < > >= <=
Examples int i = 5; int k = 12; bool p = (i < 10); bool q = (k > i); bool r = (i >= k); bool s = (k <= 12);
13
Operator Precedence Revisited
Precedence of operators (from highest to lowest)
Parentheses Unary operators Multiplicative operators Additive operators Relational ordering Relational equality Logical and Logical or Assignment
14
Operator Precedence Revisited
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
15
Operator Precedence Revisited
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
Yuck! Do not write expressions like this!
16
Operator Precedence Revisited
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to ((((5 *15) + 4) == 13) && (12 < 19))
||
((!false) == (5 < 24))
Consider5 * 15 + 4 == 13 && 12 < 19 || !false == 5 < 24
However, for your information it is equivalent to
17
Conditional Constructs
Provide Ability to control whether a statement list is
executed
Two constructs
If statement if if-else if-else-if
Switch statement Left for reading
ModifiedModified
18
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
Expression
Action
true false
19
Example
if (Value < 0) { Value = -Value;}
Value < 0
Value = -Value
true false
Is our number negative?
If Value is not lessthan zero then ournumber is fine as is
If Value is less thanzero then we need toupdate its value tothat of its additive
inverse
Our number isnow definitelynonnegative
20
Sorting Two Numbers (code segment)
cout << "Enter two integers: ";
int value1;
int value2;
cin >> value1 >> value2;
if (value1 > value2) {
int rememberValue1 = value1; //discuss scope
value1 = value2;
value2 = rememberValue1;
}
cout << "The input in sorted order: "
<< value1 << “, " << value2 << endl;
21
Semantics
value2 < value1
int rememberValue1 = value1 value1 = value2 value2 = rememberValue1
true false
Are the numbersout of order
Rearrange value1and value2 to
put their valuesin the proper
order
The numbers wereinitially in order
The numbers wererearranged into the
proper order
The numbers are inorder
22
What is the Output?Code Segment:
int m = 5;int n = 10;
if (m < n) {++m;++n;
}cout << " m = " << m << " n = " n << endl;
Output: m = 6 n = 11
23
What is the Output? (no braces)
Code Segment:
int m = 25;int n = 14;
if (m < n)++m;
++n;
cout << " m = " << m << " n = " n << endl;
Output: m = 25 n = 15
24
Ternary Conditional Operator
Ternary conditional operator (?:) Three arguments (condition, value if true, value if false)
Examples:
int grade;cin >> grade;cout << ( grade >= 60 ? “Passed” : “Failed” );
int x = 5, y = 10;cout << ( x > y ? x : y ) << " is greater." << endl;
x > y ? (ans = 1) : (ans = 0) ;ans = (x > y) ? (1) : (0) ; // same as above
25
The If-Else StatementSyntax
if (Expression) Action1
else Action2
If Expression is true then executeAction1 otherwise execute Action2
if (v == 0) {
cout << "v is 0";
}else { cout << "v is not 0";
}
Expression
Action1 Action2
true false
26
Finding the Max
cout << "Enter two integers: ";
int Value1;
int Value2;
cin >> Value1 >> Value2;
int Max;
if (Value1 < Value2) {
Max = Value2;
}
else {
Max = Value1;
}
cout << "Maximum of inputs is: " << Max << endl;
27
Finding the Max
Value1 < Value2
Max = Value2 Max = Value1
true false
Is Value2 larger than Value1
Yes, it is . So Value2 islarger than Value1. Inthis case, Max is set
to Value2No, its not. So Value1is at least as large asValue2. In this case,Max is set to Value1
Either case, Max is setcorrectly
28
Selection
It is often the case that depending upon the value of an expression we want to perform a particular action
Two major ways of accomplishing this choice
if-else-if statement if-else statements “glued” together
Switch statement An advanced construct
29
An If-Else-If Statement
if ( nbr < 0 ) {cout << nbr << " is negative" << endl;
}
else if ( nbr > 0 ) {cout << nbr << " is positive" << endl;
}
else {cout << nbr << " is zero" << endl;
}
30
Really A Composite Statement
if ( nbr < 0 ) {cout << nbr << " is negative" << endl;
}
else {
if ( nbr > 0 ) {cout << nbr << " is positive" << endl;
}
else {cout << nbr << " is zero" << endl;
}
}
AddedAdded
31
A Switch Statementcout << “Enter your middle initial: “;char Initial;cin >> Initial;switch (Initial) {
case 'a': case 'A':case 'e': case 'E':case 'i': case 'I':case 'o': case 'O':case 'u': case 'U':
cout << Initial << " is a vowel" << endl;break;
default:cout << Initial << " is not a vowel" <<
endl;}
32
cout << "Enter a simple arithmetic expression: ";
int Left;
int Right;
char Operator;
cin >> Left >> Operator >> Right;
cout << Left << " " << Operator << " " << Right
<< " = ";
switch (Operator) {
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;
}