34
1 Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 | Last Updated: July 2006 Slide 1 Operators and Expressions Lecture 3 by Jumail Bin Taliba Faculty of Computer Science & Information System

03 1 Operators And Expressions

Embed Size (px)

Citation preview

Page 1: 03 1 Operators And Expressions

1

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 1

Operators and Expressions

Lecture 3

byJumail Bin Taliba

Faculty of Computer Science & Information System

Page 2: 03 1 Operators And Expressions

2

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 2

Elements of a program

Literals fixed data written into a program Variables & constants placeholders (in

memory) for pieces of data Types sets of possible values for data Expressions combinations of operands (such

as variables or even "smaller" expressions) and operators. They compute new values from old ones.

Assignments used to store values into variables Statements "instructions". In C, any expression

followed by a semicolon is a statement

Page 3: 03 1 Operators And Expressions

3

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 3

Elements of a program

Control-flow constructs constructs that allow statements or groups of statements to be executed only when certain conditions hold or to be executed more than once.

Functions named blocks of statements that perform a well-defined operation.

Libraries collections of functions.

Page 4: 03 1 Operators And Expressions

4

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 4

Statement

Statements are elements in a program which (usually) ended up with semi-colon (;) e.g. below is a variables declaration statement

int a, b, c;

• Preprocessor directives (i.e. #include and define) are not statements. They don’t use semi-colon

Page 5: 03 1 Operators And Expressions

5

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 5

Some types of statement in C++

Page 6: 03 1 Operators And Expressions

6

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 6

An expression statement is a statement that results a value

Some examples of expression Value

• Literal expression e.g. 2, “A+”, ‘B’

The literal itself

• Variable expression e.g. Variable1

• arithmetic expression e.g. 2 + 3 -1

The content of the variable

The result of the operation

Page 7: 03 1 Operators And Expressions

7

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 7

Operators

Operators can be classified according to the type of their operands and of their output

Arithmetic Relational Logical Bitwise

the number of their operands Unary (one operand) Binary (two operands)

Page 8: 03 1 Operators And Expressions

8

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 8

Binary expression

Page 9: 03 1 Operators And Expressions

9

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 9

Unary Expression

Page 10: 03 1 Operators And Expressions

10

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 10

Ternary Expression

(a>2) ? 1: 0

Operator

First operand is a condition

Second operand is a value

Third operand is another value

Page 11: 03 1 Operators And Expressions

11

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 11

Arithmetic operators

They operate on numbers and the result is a number.

The type of the result depends on the types of the operands.

If the types of the operands differ (e.g. an integer added to a floating point number), one is "promoted" to other.

The "smaller" type is promoted to the "larger" one.

char int float double

Page 12: 03 1 Operators And Expressions

12

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 12

Example of promotion:The result of the following “double division” is 2.5

5 / 2.0

Before the division process, 5 is promoted from integer 5 to float 5.0

The result of the following “integer division” is 25 / 2

There is no promotion occurred. Both operands are the same type.

Page 13: 03 1 Operators And Expressions

13

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 13

Arithmetic operators: +, *

+ is the addition operator * is the multiplication operator They are both binary

Page 14: 03 1 Operators And Expressions

14

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 14

Arithmetic operator:

This operator has two meanings: subtraction operator (binary)

negation operator (unary)

e.g. 31 - 2

e.g. -10

Page 15: 03 1 Operators And Expressions

15

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 15

Arithmetic operator: /

Division operator CAREFUL! The result of integer division is an integer:

e.g. 5 / 2 is 2, not 2.5

Page 16: 03 1 Operators And Expressions

16

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 16

Arithmetic operator: %

The modulus (remainder) operator. It computes the remainder after the first

operand is divided by the second

It is useful for making cycles of numbers: For an int variable x :

if x is: 0 1 2 3 4 5 6 7 8 9 ...(x%4) is: 0 1 2 3 0 1 2 3 0 1 ...

e.g. 5 % 2 is 1, 6 % 2 is 0

Page 17: 03 1 Operators And Expressions

17

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 17

Page 18: 03 1 Operators And Expressions

18

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 18

Page 19: 03 1 Operators And Expressions

19

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 19

Relational operators

These perform comparisons and the result is what is called a boolean: a value TRUE or FALSE

FALSE is represented by 0; anything else is TRUE

The relational operators are: < (less than) <= (less than or equal to) > (greater than) >= (greater than or equal to) == (equal to) != (not equal to)

Page 20: 03 1 Operators And Expressions

20

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 20

Page 21: 03 1 Operators And Expressions

21

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 21

Logical operators(also called Boolean operators)

These have Boolean operands and the result is also a Boolean.

The basic Boolean operators are: && (logical AND) || (logical OR) ! (logical NOT) -- unary

Page 22: 03 1 Operators And Expressions

22

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 22

Page 23: 03 1 Operators And Expressions

23

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 23

Assignment operator: =

Binary operator used to assign a value to a variable.

Page 24: 03 1 Operators And Expressions

24

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 24

Remember, an expression results a value. So, what is the result of an assignment expression?

The value of an assignment expression is its right operande.g.

int a=10; cout << a=7;

Output: 7 (not 10). Because the value of expression a=7 is 7 (i.e its right operand)

Assignment is a special expression. Beside results a value, it also does other thing which is putting the value into its

left operand. This is called a side effect.

In the previous example, a side effect has occurred to variable a after evaluating the assignment expression (a=7). Now, the variable has a new value which is 7.

Page 25: 03 1 Operators And Expressions

25

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 25

Special assignment operators

write a += b; instead of a = a + b; write a -= b; instead of a = a - b; write a *= b; instead of a = a * b; write a /= b; instead of a = a / b; write a %= b; instead of a = a % b;

Page 26: 03 1 Operators And Expressions

26

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 26

Special assignment operators

Increment, decrement operators: ++, -- Instead of a = a + 1 you can write a++ or ++a Instead of a = a - 1 you can write a-- or --a

These operators cause side effect What is the difference?

num = 10;ans = num++;

num = 10;ans = ++num;

First increment num,then assign num to ans.In the end,

num is 11ans is 11

First assign num to ans,then increment num.In the end,

num is 11ans is 10

post-increment pre-increment

Page 27: 03 1 Operators And Expressions

27

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 27

Result of postfix Increment

Page 28: 03 1 Operators And Expressions

28

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 28

Result of Prefix Increment

Page 29: 03 1 Operators And Expressions

29

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 29

Precedence & associativity

How would you evaluate the expression 17 - 8 * 2 ?

Is it 17 - (8 * 2)or (17 - 8) * 2 ?

These two forms give different results. We need rules!

Page 30: 03 1 Operators And Expressions

30

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 30

Precedence & associativity

When two operators compete for the same operand (e.g. in 17 - 8 * 2 the operators - and * compete for 8) the rules of precedence specify which operator wins. The operator with the higher precedence wins

If both competing operators have the same precedence, then the rules of associativity determine the winner.

Page 31: 03 1 Operators And Expressions

31

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 31

Precedence & associativity

! Unary – * / %

+ – < <= >= >

= = !=

&&

||

=

higher precedence

lower precedence

Associativity: execute left-to-right (except for = and unary – )

Page 32: 03 1 Operators And Expressions

32

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 32

Example: Left associativity

3 * 8 / 4 % 4 * 5

Page 33: 03 1 Operators And Expressions

33

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 33

Example: Right associativity

a += b *= c-=5

Page 34: 03 1 Operators And Expressions

34

Chapter 3:Operators and Expressions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2006 |Last Updated: July 2006 Slide 34

Precedence & associativity

Examples: X =17 - 2 * 8 Ans: X=17-(2*8) , X=1

Y = 17 - 2 - 8 Ans: Y = (17-2)-8, Y=7

Z = 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 *2 + 1 ?

Not sure? Confused? then use parentheses in your code!