[go: up one dir, main page]

0% found this document useful (0 votes)
30 views28 pages

3 - Variables Expressions

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views28 pages

3 - Variables Expressions

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 28

The computer’s view

Internally, computers store everything as 1’s and 0’s

104  01101000
"hi"  0110100001101001
h  01101000

1
Expressions
expression: A value or operation that computes a value.

• Examples: 1 + 4 * 5
(7 + 2) * 6 / 3
42
"Hello, world!"
 The simplest expression is a literal value.
 A complex expression can use operators and parentheses.

2
Arithmetic operators
operator: Combines multiple values or expressions.
+ addition
- subtraction (or negation)
* multiplication
/ division
% modulus ( remainder)

As a program runs, its expressions are evaluated.


 1 + 1 evaluates to 2
 System.out.println(3 * 4); prints 12
 How would we print the text 3 * 4 ?

3
Integer division with /
When we divide integers, the quotient is also an integer.
 14 / 4 is 3, not 3.5

More examples:
 32 / 5 is 6
 84 / 10 is 8
 156 / 100 is 1

 Dividing by 0 causes an error when your program runs.

4
Integer remainder with %
 The % operator computes the remainder from integer division.
 14 % 4 is 2
 218 % 5 is 3 What is the result?
3 43 45 % 6
4 ) 14 5 ) 218 2 % 2
12 20 8 % 20
2 18
15 11 % 0
3

Applications of % operator:
 Obtain last digit of a number: 230857 % 10 is 7
 Obtain last 4 digits: 658236489 % 10000 is
6489
 See whether a number is odd: 7 % 2 is 1, 42 % 2 is 0
5
Remember!
precedence: Order in which operators are evaluated.
 Generally operators evaluate left-to-right.
1 - 2 - 3 is (1 - 2) - 3 which is -4

 But * / % have a higher level of precedence than + -

1 + 3 * 4 is 13
6 + 8 / 2 * 3
6 + 4 * 3
6 + 12 is 18

 Parentheses can force a certain order of evaluation:


(1 + 3) * 4 is 16
 Spacing does not affect order of evaluation
1+3 * 4-2 is 11
6
Precedence questions
What values result from the following expressions?

9 / 5
 695 % 20
7 + 6 * 5
7 * 6 + 5
 248 % 100 / 5
6 * 3 - 9 / 4
 (5 - 7) * 4
 6 + (18 % (17 - 12))

7
Precedence examples

11 ** 22 ++ 33 ** 55 %% 44  1 + 8 / 3 * 2 - 9

 \_/  \_/
\_/
|| |
22 ++ 33 ** 55 %% 44 1 + 2 * 2 - 9

 \_/  \___/
\_/
|| |
22 ++ 15 15 %% 44 1 + 4 - 9

 \___/  \______/
\___/
|| |
22 ++ 33 5 - 9

 \________/  \_________/
\________/
|| |
55 -4

8
Real numbers (type double)
Examples: 6.022 , -42.0 , 2.14317
 Placing .0 or . after an integer makes it a double.

The operators + - * / % () all still work with double.


 / produces an exact answer: 15.0 / 2.0 is 7.5

 Precedence is the same: () before * / % before + -

9
Precision in real numbers
The computer internally represents real numbers in an
imprecise way.

Example:
System.out.println(0.1 + 0.2);
 The output is 0.30000000000000004!

10
Real number example
2.0 * 2.4 + 2.25 * 4.0 / 2.0
 \___/
|
4.8 + 2.25 * 4.0 / 2.0
 \___/
|
4.8 + 9.0 / 2.0
 \_____/
|
4.8 + 4.5
 \____________/
|
9.3

11
Mixing types
When int and double are mixed, the result is a double.
 4.2 * 3 is 12.6

The conversion is per-operator, affecting only its


 2.5 + 10 / 3 * 2.5 - 6 / 4
operands.  \___/
 7 / 3 * 1.2 + 3 / 2 |
 \_/ 2.5 + 3 * 2.5 - 6 / 4
|  \_____/
2 * 1.2 + 3 / 2 |
 \___/ 2.5 + 7.5 - 6 / 4
|  \_/
2.4 + 3 / 2 |
 \_/ 2.5 + 7.5 - 1
|  \_________/
2.4 + 1 |
 \________/ 10.0 - 1
|  \______________/
3.4 |
9.0 (not 9!)
12
 3 / 2 is 1 above, not 1.5.
String concatenation
 string concatenation: Using + between a string and
another value to make a longer string.
"hello" + 42 is "hello42"
1 + "abc" + 2 is "1abc2"
"abc" + 1 + 2 is "abc12"
1 + 2 + "abc" is "3abc"
"abc" + 9 * 3 is "abc27"
"1" + 1 is "11"
4 - 1 + "abc" is "3abc"

 Use + to print a string and an expression's value


together.
 System.out.println("Grade: " + (95.1 + 71.9) / 2);

• Output: Grade: 83.5


13
Variables

14
Receipt example
What's bad about the following code?
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
System.out.println("Subtotal:");
System.out.println(38 + 40 + 30);
System.out.println("Tax:");
System.out.println((38 + 40 + 30) * .08);
System.out.println("Tip:");
System.out.println((38 + 40 + 30) * .15);
System.out.println("Total:");
System.out.println(38 + 40 + 30 +
(38 + 40 + 30) * .08 +
(38 + 40 + 30) * .15);
}
}

 The subtotal expression (38 + 40 + 30) is repeated


 So many println statements

15
Variables
variable: A piece of the computer's memory that is given
a name and type, and can store a value.
 Like preset stations on a car stereo, or cell phone speed dial:

 Steps for using a variable:


 Declare it - state its name and type
 Initialize it - store a value into it
 Use it - print it or use it as part of an expression

16
Declaration
variable declaration: Sets aside memory for storing a value.
 Variables must be declared before they can be used.

Syntax:
type name; num1

 int num1;

myGPA
 double myGPA;

17
Assignment
variable declaration: Sets aside memory for storing a value.
 Variables must be declared before they can be used.

assignment: Stores a value into a variable.


 The value can be an expression; the variable stores its result.

 int num1; num1


num1 = 90210; 90210

 double myGPA;
myGPA = 1.0 + 2.25;
myGPA 3.25

18
Using variables
Once given a value, a variable can be used in
expressions:
int x;
x = 3;
System.out.println("x is " + x); // x is 3
System.out.println(5 * x - 1); // 14

You can assign a value more than once:


x 3
11
int x;
x = 3;
System.out.println(x + " here"); // 3 here

x = 4 + 7;
System.out.println("now x is " + x); // now x is 11
19
Declaration/initialization
A variable can be declared/initialized in one statement.

Syntax:
type name = expression;

 int x = (11 % 3) + 12; x 14

 double myGPA = 3.95;


myGPA 3.95

20
Assignment vs. algebra
Assignment uses = , but it is not an algebraic equation.

 = means, "store the value at right in variable at


left"
 x = 3; means, "x becomes 3" or "x should now store
3"

ERROR: 3 = 1 + 2; is an illegal statement, because 3


is not a variable.

What happens here? x 3


5
int x = 3;
x = x + 2; // ???

21
Assignment exercise
What is the output of the following Java code?
int x;
x = 3;
int y = x;
x = 5;
y = y + x;
System.out.println(x);
System.out.println(y);

22
Assignment and types
 A variable can only store a value of its own type.
 int x = 2.5; // ERROR: incompatible types

 An int value can be stored in a double variable.


 The value is converted into the equivalent real number.

 double myGPA = 4;
myGPA 4.0

 double avg = 10 / 2;
avg 5.0

23
Compiler errors
A variable can't be used until it is assigned a value.
 int x;
System.out.println(x); // ERROR: x has no value

You may not declare the same variable twice.


 int x;
int x; // ERROR: x already exists

 int x = 3;
int x = 5; // ERROR: x already exists
 How can this code be fixed?

24
Printing a variable's value
Use + to print a string and a variable's value on one line.
 double grade = (95.1 + 71.9 + 82.6) / 3.0;
System.out.println("Your grade was " + grade);

int students = 11 + 17 + 4 + 19 + 14;


System.out.println("There are " + students +
" students in the course.");

• Output:

Your grade was 83.2


There are 65 students in the course.

25
Receipt question
Improve the receipt program using variables.
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
System.out.println("Subtotal:");
System.out.println(38 + 40 + 30);
System.out.println("Tax:");
System.out.println((38 + 40 + 30) * .08);
System.out.println("Tip:");
System.out.println((38 + 40 + 30) * .15);
System.out.println("Total:");
System.out.println(38 + 40 + 30 +
(38 + 40 + 30) * .15 +
(38 + 40 + 30) * .08);
}
}

26
Receipt answer
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
double subtotal = 38 + 40 + 30;
double tax = subtotal * .08;
double tip = subtotal * .15;
double total = subtotal + tax + tip;

System.out.println("Subtotal: " + subtotal);


System.out.println("Tax: " + tax);
System.out.println("Tip: " + tip);
System.out.println("Total: " + total);
}
}

27
That is all for today!

QUESTIONS?

28

You might also like