What is the Result and Type of the Following Expressions?
-
Upload
maite-christensen -
Category
Documents
-
view
23 -
download
3
description
Transcript of What is the Result and Type of the Following Expressions?
What is the Result and Type of the Following Expressions?
int x=2, y=15;double u=2.0, v=15.0;
-x x+y x-yx*v y / x x/y y%x x%y
u*v u/v v/u u%v
x * u (x+y)*u u /(x-x)
x++ u++
u = --x u = x--
u *= ++x; v /= x;
1
Types are these constants legal?
.5 5.E 0.5e3 0.5E-3 0.5E-3.5 ’a’ ’%’ ’Ab’ ”Ab”
are these variable names legal? MyTotal My_Total __MyTotal My
Total what does this mean?
int mytotal=0; int yourtotal(1); what would be stored in myvar?
int myvar;myvar=2.56;
what would be stored in yourvar?
double yourvar;yourvar=5/2;
2
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 that deals with this type of logic is called Boolean algebra developed by the British mathematician George Boole in the 19th
century C++ makes extensive use of Boolean algebra in the form of logical
expressions; what is an expression again? three key logical operators in C++:
&& - logical “and”, binary || - logical “or”, binary ! - logical “not”, unary
4
Boolean Algebra truth tables
Lists all combinations of operand values and the result of the operator for each combination
truth table for && (logical “and’)
P Q P && Q
False False FalseFalse True FalseTrue False FalseTrue True True
5
Boolean Algebra
truth table for || (logical “or”)
P Q P || Q
False False FalseFalse True TrueTrue False TrueTrue True True
6
Boolean Algebra can create complex logical expressions by combining simple logical
expressions example
! (P && Q) a truth table can be used to determine when a logical expression is true
note that & and | are also legal operators, make sure to use correct ones
P Q P && Q ! (P && Q)
False False False TrueFalse True False TrueTrue False False TrueTrue True True False
8
Example Logical Expressions
bool P = true;bool Q = false;bool R = true;bool S = P && Q;
bool T = P && !Q
bool U = !Q || R;
bool V = P || !Q || !R;
bool W = P && Q && !R;
bool X = Q || (P && R);
bool Y = !(R && !Q);bool Z = !(P && Q && R);
9
Relational Operators
equality operators
== note the two equal signs
!= examples
int i = 32;
int k = 45;
bool q = i == k;
bool r = i != k;
10
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;
11
Operator Precedence Expanded
precedence of operators (from highest to lowest)
()
Unary + -
* / %
+ -
> < >= >= !=
==
&&
||
=
12
Examples of Logical Expressions int a = 5; int b = 10 int c = 20; bool d = a < b; bool e = a > b; bool f = (a > b) || (b < c ); bool g = (a > b) && (b < c ); bool h = !(a < b); bool i = !(a==b); bool j = 2*a == b; bool k = (a+b) >= c; bool l = !((a+b) != c); bool m = (a+b) == (c-a); bool n = (a+b) >= (c-a);
int o=a; int p=o=b; what is the outcome of this statement? bool q=true; q = d = false;
13
Operator Precedence Revisited same or different?
(a*b)+c a*b + c
a*(b+c) a*b + c
(a+b) > c a + b > c
a+(b>c) a + b > c
(a > b) == (b > c) a > b == b > c
(a == b) > (b == c) a == b > b == c
(a != b) && (c <= d) a != b && c <= d
(a > b) && (c || d) a > b && c || d
(a = b) && c a = b && c
14
Conditional Constructs
provide ability to control whether a statement is executed two constructs
if-statement
– if
– if-else
– if-else-if switch-statement
15
Blocks and Local Variables a list of statements enclosed in curly brackets is called a block block may be placed anywhere a statement can be placed (note the placement of
brackets:
if ((saleType == ’W’) || (saleType == ’w’)) { total = price * number;
} a variable can be declared and used within block, such variable is local to the
block and does not exist outside of it
else if ((saleType == ’R’) || (saleType == ’R’)){ double subtotal;
subtotal = price * number;
total = subtotal + subtotal * TAX_RATE;
}
variable scope – area in program where a variable can be used what’s the scope of a variable local to function? block? pitfall: a local variable is accessed outside of the block
16
The Basic If-Statement
syntax
if (expression) action if the expression is true then execute action action is either a single statement or a block example 1:
if (value > 0) value =0; example 2:
if (value < 0) {
value = -value;
++i;
}
expression
action
true false
17
Sorting Two Numberscout << "Enter two integers: ";
int n1, n2;
cin >> n1 >> n2;
if (n1 > n2) {
int tmp = n1;
n1 = n2;
n2 = tmp;
}
cout << ”Numbers in order: “
<< n1 << " " << n2 << endl;
programming idiom – a common way of accomplishing a simple task
swapping values of two variables with a third is an idiom
18
The If-Else Statement syntax
if (expression) action1else action2
if expression is true thenexecute action1 otherwiseexecute action2
if (v == 0) cout << "v is 0"; else cout << "v is not 0";
expression
action1 action2
true false
19
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 multiway if-statement
– if-else statements “glued” together switch statement
20
Multiway If-Statement
example
int vclass;
cout << "Enter the vehicle class: ";
cin >> vclass;
if (vclass == 1)cout << ”Passenger car”;
else if (vclass == 2)cout << ”Bus”;
else if (vclass == 3)cout << ”Truck”;
elsecout << ch << ”Unknown vehicle class!”;
21
Switch Statement syntax
switch (expression){
case constant:
statements
break;
case constant:
statements
default: statements
} semantics
expression is evaluated, execution continues in first matching case (optional) default matches any expression value break-statement terminates the switch statement, execution continues
with a statement following switch-block if case does not end with break, execution continues to next case
22
• expression of any “countable” type (int, char)• literal or named constant of same type as expression
Switch Example 1int vclass;
cout << "Enter the vehicle class: ";
cin >> vclass;
switch (vclass){
case 1:
cout << "Passenger car";
break;
case 2:
cout << "Bus";
break;
default:
cout << "Unknown vehicle class! ";
break; // unnecessary but used for consistency
}
23
cout << "Enter simple 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;
}
Switch Example 2
24
Arity and Conditional Operator ternary operator – operator accepting three operands conditional operator is used as an abbreviated form of branching
boolean-expression ? true-expression : false-expression if boolean-expression is true, then the value of whole expression is true-expression,
or false-expression otherwise conditional assignment - if conditional operator is used to assign value to variable
what branching construct is this assignment equivalent to? example: int i = j>0 ? j : -j;
program that calculates the largest number ( of two)int main() { int n1, n2; cin >> n1 >> n2; int max = n1 > n2 ? n1 : n2; cout << ”maximum is ” << max << endl;}
arity (again) – number of operands an operator accepts? What arities have we studied?
25
Named Constants there are problems with using literal constants
9.8 does not give an idea as to what it means in the program hard to modify if used in multiple places in program
named constant provides a name to a constant:
const int windowCount = 5;
const double taxRate = 9.8;
26
Debugging and Tracing Programs specially compiled executables leave information the original source file:
names of variables and source lines this allows
program tracing – suspending program execution at specific source line and executing program one source line at a time
variable watching – observing values stored in source program variables
breakpoint – line in the source program where execution has to be suspended
27