Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations...
-
date post
21-Dec-2015 -
Category
Documents
-
view
223 -
download
0
Transcript of Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations...
![Page 1: Operations and Expressions. Computer Programming 2 Objectives Detailed look at numeric operations Work with bool expressions Consider the processing of.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/1.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/2.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/3.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/4.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/5.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/6.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/7.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/8.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/9.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/10.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/11.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/12.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/13.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/14.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/15.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/16.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/17.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/18.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/19.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/20.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/21.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/22.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/23.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/24.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/25.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/26.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/27.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/28.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/29.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/30.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/31.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/32.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/33.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/34.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/35.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/36.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/37.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/38.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/39.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/40.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/41.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/42.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/43.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d645503460f94a4715a/html5/thumbnails/44.jpg)
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