Title: Assignment Statements and Arithmetic Expressions
1Assignment Statements and Arithmetic Expressions
2Assignment Statements
- Change the value of a variable
- Cause a value to be copied from one memory
cell to another - Specify an expression to be evaluated and
stored into a target location
3Arithmetic Expressions
The purpose of an arithmetic expressions is to
specify an arithmetic computation.
- The implementation of the computation involves
- fetching the operands
- executing the arithmetic operations
4Arithmetic Expressions
- Arithmetic expressions are constructions of
- operators
- operands
- parentheses
- function calls
5Arithmetic Expressions
- The operators can be
- unary
- binary
- ternary
6Arithmetic Expressions
- Operator evaluation order
- Precedence - defines the order in which
operators of different precedence are
evaluated - Associativity - defines the order in which
operators of equal precedence are evaluated - Parentheses - default evaluation order can be
overridden with use of parentheses
7Arithmetic Expressions Precedence
FORTRAN highest (exponentiation) ,
/ (multiplication, division) all , -
(unary and binary addition and subtraction) l
owest
8Arithmetic Expressions Precedence
Pascal highest , /,div, mod all , -
lowest
9Arithmetic Expressions Precedence
C highest postfix , -- prefix , -- unary
, - , /, binary , - lowest
10Arithmetic Expressions associativity
Left associativity - leftmost operator is
evaluated first A / B C (FORTRAN) Right
associativity - rightmost operator is evaluated
first A B C (FORTRAN) Non-associativity
- operators of equal precedence must be
parenthesized A (B C) (ADA for
exponentiation)
11Sequence Control for Arithmetic Expressions
- Tree Structure Representation
- clarifies control structure of an expression
- syntactic representation options
- Execution-time Representation
- machine code
- evaluation of tree structures
- prefix or postfix form
12Tree Structure Representation
- prefix (Polish prefix) notation
- postfix or reverse Polish notation (RPN)
13Tree Structure Representation
- Syntactic Representation Options
- prefix (Polish prefix) notation
- the operator comes first, followed by the
operands - - same notation as function calls f(x, y, z)
- - no parenthesis needed
- - relatively simple translation process
- - unique operators needed for operations with
- variable number of operands
- - lack of structuring cues (reduces readability)
- - number of operands must be known
14Tree Structure Representation
Syntactic Representation Options
- infix
- for binary operations, the operator is
written - between the two operands
- - gives natural representation (readability)
- - best suited for binary operations
- - requires complex translation process
15Tree Structure Representation
Syntactic Representation Options
- postfix or reverse Polish notation (RPN)
- the operands are written first, followed by
the - operator
- - advantages and disadvantages similar to prefix
16Tree Structure Representation
(a b) x (c - a)
x
-
c
b
a
a
17Tree Structure Representation
(a b) x (c - a)
Prefix?
x
Infix?
Postfix?
-
c
b
a
a
18Evaluations of Expressions
Postfix evaluation (evaluate using an
execution stack) 1. Scan expression left to
right 2. If OPERAND, push onto stack. 3. If
OPERATOR, pop the corresponding number of
arguments off the stack, apply the operator
to the operands. 4. Push result onto stack as
next operand.
19Evaluations of Expressions
(a b) x (c - a), let a3, b4, c5
- Find the postfix representation
- Evaluate the postfix expression using an
execution stack.
20Evaluations of Expressions
Prefix evaluation (evaluate using an execution
stack) 1. Scan expression left to right 2. If
OPERATOR, push onto stack. Set argument
count to n, number of arguments reqd by
operator 3. If OPERAND, push onto stack. 4. If
top n entries are operands, pop the top n
entries, pop the operator and apply the
operator to those operands. 5. Push result
onto stack as next operand.
21Arithmetic Expressions
Operand evaluation order side effects A
10 NEW A fun(A)
Suppose function fun returns the value of its
argument divided by two. And suppose as a side
effect, it changes the value of its argument to
20.
22Arithmetic Expressions
Conditional expression C and C
expression1 ? expression2 expression3
avg (count 0) ? 0 sum / count
23Arithmetic Expressions
Overloaded Operators Arithmetic operators are
often used for more than one purpose examples
for integer and floating point addition,
string catenation for addressing
and bitwise and operation in C
24Arithmetic Expressions
- Type Conversions
- narrowing
- widening
- A narrowing conversion is one that converts an
objects to a type that cannot include all of the
values of the original type - A widening conversion is one in which an object
is converted to a type that can include at least
approximations of all the values of the original
type
25Arithmetic Expressions
- Type Coercion
- When arithmetic operations include operands of
different types (mixed-mode expressions) implicit
type conversions must be performed. - A coercion is an implicit type conversion
performed by the compiler.
26Arithmetic Expressions
- Explicit Type Conversion
- Most languages allow for explicit type
conversion. - Some provide a warning when the conversion is
narrowing and significant change in value will
result.
ADA AVG FLOAT(SUM) / FLOAT(COUNT) C
avg (float) sum / count
27Boolean and Relational Expressions
- Relational Expressions
- A relational operator compares the values of its
two operands - A relational expression has two operands and one
relational operator - The value produced by a relational operator is
boolean (unless boolean is not a type in the
language)
28Boolean and Relational Expressions
- Relational Operators
- Pascal FORTRAN C
- .EQ.
- ltgt .NE. !
- lt .LE. lt
- lt .LT. lt
- gt .GE. gt
- gt .GT. !gt
29Boolean and Relational Expressions
Boolean Expressions consist of boolean
variables boolean constants relational
expressions and boolean operators
30Boolean and Relational Expressions
- Boolean Operators
- Pascal FORTRAN C
- not .NOT. !
- and .AND.
- or .OR.
-
31Boolean and Relational Expressions
The precedence of boolean operators is normally
not - highest and or - lowest but the
precedence of relational operators and arithmetic
operators as compared to boolean operators,
differs according to each language.
32Boolean and Relational Expressions
FORTRAN 77 Highest , / , - //
(string catenation) .EQ., .NE., .GT., .GE.,
.LT., .LE. .NOT. .AND. .OR. Lowest .EQV.,
.NEQV. (logical compare)
33Boolean and Relational Expressions
Pascal Highest not , /, div, mod, and ,
-, or Lowest , ltgt, lt, lt, gt, gt, in
34Boolean and Relational Expressions
C !, , , ---, sizeof(), (type), ,-(unary),
(indirection), (address) Highest , /,
, - gtgt, ltlt lt, lt, gt, gt ,
! Lowest