27
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-y x*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

What is the Result and Type of the Following Expressions?

Embed Size (px)

DESCRIPTION

What is the Result and Type of the Following Expressions?. int x=2, y=15;double u=2.0,v=15.0; -xx+yx-y x*vy / xx/yy%xx%y u*vu/vv/uu%v x * u(x+y)*uu /(x-x) x++u++ u = --xu = x-- u *= ++x;v /= x;. Types. are these constants legal? .5 5.E 0.5e3 0.5E-3 0.5E-3.5 - PowerPoint PPT Presentation

Citation preview

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

Logical Expressions, IF

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

truth table for ! (logical “not”)

P ! P

False TrueTrue False

7

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