Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

CS 112 Introduction to

Programming

Lecture #6:

Arithmetic
and Assignment Operations
http://flint.cs.yale.edu/cs112/

Outline
q Admin. and review
Arithmetic operations
q Assignment operations

1
Arithmetic Expressions
r An expression is a combination of operators and
operands
r Arithmetic expressions (we will see logical
expressions later) compute numeric results and make
use of the arithmetic operators:

Addition +
Subtraction -
Multiplication *
Division /
Remainder %

rThere are no exponents


3

1 // Arithmetic.cs Outline
2 // An arithmetic program.
3 This is the start of class Arithmetic
4 using System;
5 Two stringThe
variables
comment after the Arithmetic.cs
6 class Arithmetic defined over
declaration
two linesis used to briefly
7 { state the variable purpose
8 These are two
static void Main( string[] args ) ints that are declared
9 { over several lines and only use one
10 string firstNumber, // first string entered by user
11 semicolon.
secondNumber; // second
Thisentered
Each isstring linebyisaconsidered
separated coma.
by user
a prompt
12 because it asks the user to input data.
13 int number1, // first number to add
14 number2; // second number to add
15
16 // prompt for and read first number from user as string
17 Console.Write( "Please enter the first integer: " );
18 firstNumber = Console.ReadLine();
19 The operation result are stored Int32.Parse is used to convert
20 // read second number from user as string
21 in result variables. "\nPlease enter
Console.Write( the the
given string integer:
second into an integer.
" );
22 It is then stored in a variable.
secondNumber = Console.ReadLine();
23
24 // convert numbers from type string to type int
25 number1 = Int32.Parse( firstNumber );
26 number2 = Int32.Parse( secondNumber );
27
28 // Console.ReadLine is used to take the
do operations
29 int sum = number1 + number2;
30 int
users input and place it into a variable.
diff = number1 - number2;
31 int mul = number1 * number2;
32 int div = number1 / number2;
33 int mod = number1 % number2;

2
32
33
// display results
Console.WriteLine( "\n{0} + {1} = {2}.", number1, number2, sum ); Outline
34 Console.WriteLine( "\n{0} {1} = {2}.", number1, number2, diff );
35 Console.WriteLine( "\n{0} * {1} = {2}.", number1, number2, mul );
36 Console.WriteLine( "\n{0} / {2} = {2}.", number1, number2, div );
37 Console.WriteLine( "\n{0} % {1} = {2}.", number1, number2, mod );
34
35 } // end method Main
Arithmetic.cs
36
37 } // end class Arithmetic

Putting a variable out through Console.WriteLine


is done by placing the variable after the text while
using a marked place to show where the variable
should be placed.

Division and Remainder

r If both operands to the division operator (/) are integers, the


result is an integer (the fractional part is discarded)

14 / 3 equals? 4

8 / 12 equals? 0

r The remainder operator (%) returns the remainder after dividing the
second operand into the first

14 % 3 equals? 2

8 % 12 equals? 8

3
Operator Precedence
r Operators can be combined into complex expressions
result = total + count / max - offset;
r Operators have a well-defined precedence which
determines the order in which they are evaluated

r Precedence rules
m Parenthesis are done first
m Division, multiplication and modulus are done second
Left to right if same precedence (this is called associativity)
m Addition and subtraction are done last
Left to right if same precedence

Precedence of Arithmetic Operations

Operator(s) Operation Order of evaluation (precedence)


( ) Parentheses Evaluated first. If the parentheses are nested,
the expression in the innermost pair is
evaluated first. If there are several pairs of
parentheses on the same level (i.e., not
nested), they are evaluated left to right.
*, / or % Multiplication Evaluated second. If there are several such
Division operators, they are evaluated left to right.
Modulus
+ or - Addition Evaluated last. If there are several such
Subtraction operators, they are evaluated left to right.
Precedence of arithmetic operators.

4
Operator Precedence: Examples
r What is the order of evaluation in the
following expressions?
a + b + c + d + e a + b * c - d / e
1 2 3 4 3 1 4 2

a / (b + c) - d % e
2 1 4 3

a / (b * (c + (d - e)))
4 3 2 1

Example: TemperatureConverter.cs
9

Data Conversions
r Sometimes it is convenient to convert data from one
type to another
m For example, we may want to treat an integer as a floating
point value during a computation
r Conversions must be handled carefully to avoid
losing information
r Two types of conversions
m Widening conversions are generally safe because they tend
to go from a small data type to a larger one (such as a
short to an int)
Q: how about int to long?
m Narrowing conversions can lose information because they
tend to go from a large data type to a smaller one (such as
an int to a short)
10

5
Data Conversions
r In C#, data conversions can occur in three
ways:
m Assignment conversion
occurs automatically when a value of one type is
assigned to a variable of another
only widening conversions can happen via assignment
Example: aFloatVar = anIntVar
m Arithmetic promotion
happens automatically when operators in expressions
convert their operands
Example: aFloatVar / anIntVar
m Casting

11

Data Conversions: Casting


r Casting is the most powerful, and dangerous,
technique for conversion
r Both widening and narrowing conversions can be
accomplished by explicitly casting a value
r To cast, the type is put in parentheses in front of the
value being converted
r For example, if total and count are integers, but
we want a floating point result when dividing them,
we can cast total:
result = (float) total / count;

Example: DataConversion.cs
12

6
Outline
q Admin. and review
q Arithmetic operations
Assignment operations

13

Assignment Revisited
r You can consider assignment as another operator,
with a lower precedence than the arithmetic
operators
First the expression on the right hand
side of the = operator is evaluated

answer = sum / 4 + MAX * lowest;


4 1 3 2

Then the result is stored in the


variable on the left hand side

14

7
Assignment Revisited
r The right and left hand sides of an
assignment statement can contain the same
variable
First, one is added to the
original value of count

count = count + 1;

Then the result is stored back into count


(overwriting the original value)

15

Assignment Operators
Assignment operator Sample expression Explanation
+= c += 7 c = c + 7
-= d -= 4 d = d - 4
*= e *= 5 e = e * 5
/= f /= 3 f = f / 3
%= g %= 2 g = g % 2

16

8
Increment and Decrement Operators
Operator Called Sample expression Explanation
++ preincrement ++a Increment a by 1, then use the new value
of a in the expression in which a resides.

++ postincrement a++ Use the current value of a in the expression


in which a resides, then increment a by 1.
-- predecrement --b Decrement b by 1, then use the new value
of b in the expression in which b resides.
-- postdecrement b-- Use the current value of b in the expression
in which b resides, then decrement b by 1.
The increment and decrement operators.

17

1 // Increment.cs Outline
2 // Preincrementing and postincrementing
3
4 using System;
5 Increment.cs
6 class Increment
7 {
8 static void Main(string[] args)
9 {
10 int c;
11
Declare variable c
12 c = 5; Set c equal
Display c (5) to 5
13 Console.WriteLine( c ); // print 5
14 Console.WriteLine( c++ ); // print 5 then postincrement
Display c (5) then add 1
15 Console.WriteLine( c ); // print 6
16 Display c (6)
17 Console.WriteLine(); // skip a line
18
19 c = 5;
20 Console.WriteLine( c ); // print c5is set to 5 Display c (5)
21 Console.WriteLine( ++c ); // preincrement then print 6
22 Console.WriteLine( c ); // print 6 Add 1 then display c (6)
23
24 } // end of method Main Display c (6)
25
26 } // end of class Increment

5 Program Output
5
6

5
6
6

9
Backup Slides

Precedence and Associativity

Operators Associativity Type


high () left to right parentheses
right to left unary postfix
++ --
++ -- + - (type) right to left unary prefix
* / % left to right multiplicative
+ - left to right additive
< <= > >= left to right relational
== != left to right equality
?: right to left conditional
low = += -= *= /= %= right to left assignment

20

10

You might also like