44
Operations and Expressions

Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

  • View
    228

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Operations and Expressions

Page 2: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming2

Objectives

Detailed look at numeric operations Work with bool expressions Consider the processing of characters Study assignment operator Use increment, decrement operators User-defined operators

Page 3: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming3

Expressions

Definition: any sequence of objects (E.g. literals and variables) and operations that combine them to produce a value is called an expression.

Example:

double pressure = ((depth / FEET_PER_ATM) + 1) * LBS_PER_SQ_IN_PER_ATM;

Page 4: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming4

Operations

Arithmetic/numeric operations (for real numbers and/or integers)– +, -, /, %, *, --, ++

Logic operations (for Booleans)– &&, ||, !

Relational/comparison operations (for comparing expressions)– ==, !=, <, >, <=, >=

Bitwise operations (for manipulating bits)– &, |, >>, <<

Page 5: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming5

Arithmetic/Numeric Expressions

C++ provides four familiar arithmetic operators:– + for performing addition– - for performing subtraction– * for performing multiplication– / for performing division

Each of these four can be applied to either real (double) or integer (int) operands.

Page 6: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming6

Division

Division behaves differently for int and double operands

– Note the results of the following

3/40 3.0/4.00.753.0/4 0.75 3/4.00.75

If both operands are integers– Integer division performed– Otherwise real division performed

Page 7: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming7

Integer vs. Real Division

Recall division from grade school.– Teacher: “4 goes into 3 how many times?” – Pupils: “0 times with a remainder 4”

The expression 3 / 4 returns the quotient.– This is integer division

The expression 3 % 4 returns the remainder.– This is read, "3 mod 4"

Page 8: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming8

Type Conversions

Combining an int and a real in the same expression– 2 + 3.0 5.0

C++ automatically converts narrow values into wider values

– An integer is converted to a real– Result of the expression is a real

Often called "promotion"

Page 9: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming9

Precedence

Consider the possible value of the expression 2 + 3 * 4

(2 + 3) * 4 24 or 2 + (3 * 4) 14

Operator precedence governs evaluation order. * has higher precedence than + * is applied first

Page 10: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming10

Operator Precedence

() HIGHER+ (positive), - (negative), ! (NOT)

*, /, %

<, <=, >, >=

==, !=

&&

|| LOWER

See Appendix C for a complete list...

Page 11: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming11

Associativity

Consider the possible value of the expression 8 - 4 - 2

(8 - 4) - 2 4

or 8 - (4 - 2) 6

Precedence doesn’t help us Associativity tells us.

– Subtraction is left-associative, the left - is evaluated first, giving us 4.

Most (but not all) C++ operators associate left.– See Appendix C in the text for a complete list...

Page 12: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming12

Numeric Functions

The library <cmath> contains a variety of mathematical

functions, including:sin(x) asin(x)cos(x) acos(x)tan(x) atan(x)sqrt(x) log10(x)log(x) pow(x, y)floor(x) ceiling(x)abs(x)

Page 13: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming13

Using <cmath> functions

#include <iostream>#include <cmath>using namespace std;int main() { cout << “\nEnter base and exponent: “; double base, exponent; cin >> base >> exponent; double result = pow(base, exponent); cout << base << “ raised to the power “ << exponent << “ is “ << result << endl; return 0;

}

Page 14: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming14

Type Conversions

Possible to explicitly convert a value from one type to another

Syntax to use:type (expression) or (type) expression

Conversion can cause loss of datadouble x = 3.456;cout << (int) x;

What is the output?3

Page 15: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming15

Boolean/logic Expressions

C++ type bool has two literals– false and true

Relational operators produce boolean expressions

Page 16: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming16

Relational Operations

Use operators for comparisons– Each takes two operands – Produces a bool value (true or false):

x == y x != y

x < y x >= y

x > y x <= y

Warning:– Do NOT confuse = (assignment) – With == (equality).

Page 17: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming17

Logic Expressions

Logical operators

Page 18: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming18

Logic Expressions

More complex boolean expressions can be built using the logical operators:a && b // true iff a, b are both true

a || b // true iff a or b is true

!a // true iff a is false

Example:cin >> score;assert (0 <= score && score <= 100);

Page 19: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming19

Short-Circuit Evaluation

Consider the boolean expression( n != 0 ) && ( x < 1.0 / n )

– If n == 0 the right hand expression causes a program crash

C++ will evaluate the original expression from left to right

– If n == 0, the left expression evaluates false– Since it is an &&, this makes the whole expression false– So, it does not proceed to the right expression

Page 20: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming20

Preconditions

Definition: When a program makes assumptions about its input values

– Example: that they’re positive

Preconditions are boolean expressions – Must be true in order for the program to work correctly.

To check preconditions, C++ provides the assert() mechanism...

Page 21: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming21

Assertions

#include <iostream>#include <cassert>using namespace std;int main() {cout << “\nEnter your age: “;

int age; cin >> age; assert(age > 0); // ...}

Page 22: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming22

Character Expressions

Character variables can be …– Declared and initialized

char middleInitial = 'Q';

– Assigned middleInitial = 'Z';

– Used for I/O cout << middleInitial; cin >> middleInitial;

– Compared assert (middleInitial != 'X');

Page 23: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming23

Character Functions

Boolean character-processing functions found in <ctype> library:isalpha(ch) isalnum(ch)isdigit(ch) iscntrl(ch)islower(ch) isupper(ch)isspace(ch) ispunct(ch)isprint(ch) isgraph(ch)

Case-conversion functions:toupper(ch) tolower(ch)

Page 24: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming24

Assignment

Syntax:variable = expression;

– Expression is evaluated– Value placed in memory location associated with variable

Example:xCoord = 4.56;code = 'T';

Page 25: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming25

Given the sequence of three assignment statements, note the results

Note that previous variable values are gone after execution of assignment

Assignment

Page 26: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming26

Assignment

The assignment operator =– Right-associative, – Supports expressions like:

int w, x, y, z;

w = x = y = z = 0; The rightmost = is applied first,

– assigning z zero, – then y is assigned the value of z (0), – then x is assigned the value of y (0)– finally w is assigned the value of x (0).

Page 27: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming27

Assignment Shortcuts

Some assignments are so common:var = var + x; // add x to var

var = var - y; // sub y from var

C++ provides shortcuts for them:var += x; // add x to var

var -= y; // sub y from var

Page 28: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming28

In General

Most arithmetic expressions of the form:var = var value;

can be written in the “shortcut” form:

var = value; Examples:

double x, y;cin >> x >> y;x *= 2.0; // double x’s valuey /= 2.0; // decrease y by half

Page 29: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming29

Increment and Decrement

Other common assignments include:var = var + 1; // add 1 to var

var = var - 1; // sub 1 from var C++ provides shortcuts for them, too:

var++; // add 1 to var

var--; // sub 1 from var

Page 30: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming30

Prefix Increment

The prefix form of increment produces the final (incremented) value as its result:int x, y = 0;

x = ++y;

cout << x; // 1 is displayed The prefix decrement behaves similarly...

Page 31: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming31

Postfix Increment

The postfix form of increment produces the original (unincremented) value as its result:int x, y = 0;

x = y++;

cout << x; // 0 is displayed

// y now holds value of 1

The prefix decrement behaves similarly...

Page 32: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming32

Prefix vs. Postfix

So long as the increment (or decrement) operator is used as a separate statement:int y = 0, x = 0;

++x; // x == 1

y++; // y == 1

… it makes no difference which version is used.

Page 33: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming33

An expression followed by a semicolon becomes an expression statement

– x = y + z;– 'A';– cos (z);

Expressions into Statements – Semicolons

This expression statement has the added side effect of changing the value of x

Page 34: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming34

I/O Streams

C++ has no I/O as part of the language– I/O streams are provided by istream and ostream

cout cin

Page 35: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming35

Input Expressions

Form– input_stream >> variable;

May be chained together– cin >> x >> y;

Adapts to whatever type variable is– User must enter correct type

Best to prompt user for input expected– cout << "Enter choice (1 – 10) : "

Page 36: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming36

Output Expressions

Form– output_stream << expression;

May be chained – cout << "The sum = " << sum;

The expression can be a variable, a constant or a combination using operators– cout << "Sum = " << v1 + v2 + v3;

The expression adapts to whatever types are used

Page 37: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming37

Output Formatting

Possible to specify appearance of output– From iostream:

showpoint Display decimal point and trailing zeros for all real numbers. noshowpoint Hide decimal point and trailing zeros for whole real numbers

(default). fixed Use fixed-point notation for real values. scientific Use scientific notation for real values. boolalpha Display boolean values as strings “true” and “false”. left Display values left justified within a field. right Display values right justified within a field (default).

– From iomanip: setw(w) Display the next value in a field of size w (default 1). setprecision(p) Display p fractional digits for all subsequent output of

real values (common default is 6).

Must specify the proper include files to use these.

#include <iostream>#include <iomanip>using namespace std;

Page 38: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming38

User-defined operators

Implement the member function operatorXXX– cout << … is the same as cout.operator<<(…)– E.g. operator++, operator--, etc..

class Person {…

//instead of say string operator<<(string s) { return s; } };int main () {

Person belaid; cout << (belaid<<“Hello Everyone!”)<<endl; return 0;}

Page 39: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming39

General

Behavior

Problem

For energy released, enter mass

(Must be non-negative): 123

Energy released = 999.99 units

Use Einstein's equation to calculate the amount of energy released by a quantity of mass given in the problem

Page 40: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming40

Objects

DescriptionSoftware Objects

Type Kind Name

screen ostream varying cout

prompt string constant

quantity of matter double varying mass

keyboard istream varying cin

qty of energy double varying energy

descriptive label string constant

Page 41: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming41

Operations

i.Display a string (the prompt) on the screen

ii.Read a nonnegative number (mass) from the keyboard

iii.Compute energy from mass

iv.Display a number (energy) and a string on the screen

Page 42: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming42

Additional Elements

We note that step iii. requires Einstein's equation

This implies a few more operationsAnd additional objects

2e m c

v. Exponentiationvi. Multiplication of realsvii. Storage of a real

DescriptionSoftware Objects

Type Kind Name

Speed of light double constant SPEED_OF_LIGHT

2 int constant

Page 43: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming43

Algorithm

We organize the objects and operations into an algorithm:

1.Declare the constant SPEED_OF_LIGHT.

2.Display to cout a prompt for the mass to be converted into energy.

3.Read a nonnegative number from cin into mass.

4.Compute

5.Display to cout a descriptive label and energy.

2energy = mass SPEED_OF_LIGHT

Page 44: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of

Computer Programming44

Coding, Execution, Testing

Code the algorithm– Put the algorithm into “C++ words”

Compile– Fix syntax errors

Execute – Fix runtime errors

Test– Fix logic and runtime errors