SlideShare a Scribd company logo
1 of 76
Building Java Programs 
Chapter 2 
Primitive Data and Definite Loops 
Copyright (c) Pearson 2013. 
All rights reserved.
2 
Data types 
• type: A category or set of data values. 
– Constrains the operations that can be performed on data 
– Many languages ask the programmer to specify types 
– Examples: integer, real number, string 
• Internally, computers store everything as 1s and 0s 
104  01101000 
"hi"  01101000110101
3 
Java's primitive types 
• primitive types: 8 simple types for numbers, text, etc. 
– Java also has object types, which we'll talk about later 
Name Description Examples 
– int integers (up to 231 - 1) 42, -3, 0, 926394 
– double real numbers (up to 10308) 3.1, -0.25, 9.4e3 
– char single text characters 'a', 'X', '?', 'n' 
– boolean logical values true, false 
• Why does Java distinguish integers vs. real numbers?
4 
Expressions 
• expression: A value or operation that computes a value. 
• Examples: 1 + 4 * 5 
(7 + 2) * 6 / 3 
42 
– The simplest expression is a literal value. 
– A complex expression can use operators and parentheses.
5 
Arithmetic operators 
• operator: Combines multiple values or expressions. 
– + addition 
– - subtraction (or negation) 
– * multiplication 
– / division 
– % modulus (a.k.a. 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 ?
6 
Integer division with / 
• When we divide integers, the quotient is also an integer. 
– 14 / 4 is 3, not 3.5 
3 4 52 
4 ) 14 10 ) 45 27 ) 1425 
12 40 135 
2 5 75 
54 
21 
• More examples: 
– 32 / 5 is 6 
– 84 / 10 is 8 
– 156 / 100 is 1 
– Dividing by 0 causes an error when your program runs.
7 
Integer remainder with % 
• The % operator computes the remainder from integer division. 
– 14 % 4 is 2 
– 218 % 5 is 3 
3 43 
4 ) 14 5 ) 218 
12 20 
2 18 
15 
3 
What is the result? 
45 % 6 
2 % 2 
8 % 20 
11 % 0 
• 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
8 
Precedence 
• 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
9 
Precedence examples 
• 1 * 2 + 3 * 5 % 4 
• _/ 
| 
2 + 3 * 5 % 4 
• _/ 
| 
2 + 15 % 4 
• ___/ 
| 
2 + 3 
• ________/ 
| 
5 
 1 + 8 % 3 * 2 - 9 
 _/ 
| 
1 + 2 * 2 - 9 
 ___/ 
| 
1 + 4 - 9 
 ______/ 
| 
5 - 9 
 _________/ 
| 
-4
10 
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))
11 
Real numbers (type double) 
• Examples: 6.022 , -42.0 , 2.143e17 
– 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 + -
12 
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
13 
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 operands. 
– 7 / 3 * 1.2 + 3 / 2 
– _/ 
| 
2 * 1.2 + 3 / 2 
– ___/ 
| 
2.4 + 3 / 2 
– _/ 
| 
2.4 + 1 
– ________/ 
| 
3.4 
– 3 / 2 is 1 above, not 1.5. 
• 2.0 + 10 / 3 * 2.5 - 6 / 4 
• ___/ 
| 
2.0 + 3 * 2.5 - 6 / 4 
• _____/ 
| 
2.0 + 7.5 - 6 / 4 
• _/ 
| 
2.0 + 7.5 - 1 
• _________/ 
| 
9.5 - 1 
• ______________/ 
| 
8.5
14 
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
15 
Variables
16 
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
17 
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
18 
Declaration 
• variable declaration: Sets aside memory for storing a value. 
– Variables must be declared before they can be used. 
• Syntax: 
type name; 
• The name is an identifier. 
– int x; 
– double myGPA; 
x 
myGPA
19 
Assignment 
• assignment: Stores a value into a variable. 
– The value can be an expression; the variable stores its result. 
• Syntax: 
name = expression; 
– int x; 
x = 3; 
– double myGPA; 
myGPA = 1.0 + 2.25; 
x 3 
myGPA 3.25
20 
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); // 5 * 3 - 1 
• You can assign a value more than once: 
xx 131 
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
21 
Declaration/initialization 
• A variable can be declared/initialized in one statement. 
• Syntax: 
type name = value; 
– double myGPA = 3.95; 
– int x = (11 % 3) + 12; 
myGPA 3.95 
x 14
22 
Assignment and algebra 
• Assignment uses = , but it is not an algebraic equation. 
= means, "store the value at right in variable at left" 
• The right side expression is evaluated first, 
and then its result is stored in the variable at left. 
• What happens here? 
int x = 3; 
x = x + 2; // ??? 
xx 35
23 
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; 
– double avg = 11 / 2; 
• Why does avg store 5.0 
and not 5.5 ? 
myGPA 4.0 
avg 5.0
24 
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?
25 
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.
26 
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); 
} 
}
27 
Receipt answer 
public class Receipt { 
public static void main(String[] args) { 
// Calculate total owed, assuming 8% tax / 15% tip 
int 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); 
} 
}
28 
The for loop
29 
Repetition with for loops 
• So far, repeating a statement is redundant: 
System.out.println("Homer says:"); 
System.out.println("I am so smart"); 
System.out.println("I am so smart"); 
System.out.println("I am so smart"); 
System.out.println("I am so smart"); 
System.out.println("S-M-R-T... I mean S-M-A-R-T"); 
• Java's for loop statement performs a task many times. 
System.out.println("Homer says:"); 
for (int i = 1; i <= 4; i++) { // repeat 4 times 
System.out.println("I am so smart"); 
} 
System.out.println("S-M-R-T... I mean S-M-A-R-T");
30 
for loop syntax 
for (initialization; test; update) { 
statement; 
statement; 
... 
statement; 
} 
– Perform initialization once. 
– Repeat the following: 
• Check if the test is true. If not, stop. 
• Execute the statements. 
• Perform the update. 
header 
body
31 
Initialization 
for (int i = 1; i <= 6; i++) { 
System.out.println("I am so smart"); 
} 
• Tells Java what variable to use in the loop 
– Performed once as the loop begins 
– The variable is called a loop counter 
• can use any name, not just i 
• can start at any value, not just 1
32 
Test 
for (int i = 1; i <= 6; i++) { 
System.out.println("I am so smart"); 
} 
• Tests the loop counter variable against a limit 
– Uses comparison operators: 
< less than 
<= less than or equal to 
> greater than 
>= greater than or equal to
33 
Increment and decrement 
shortcuts to increase or decrease a variable's value by 1 
Shorthand Equivalent longer version 
variable++; variable = variable + 1; 
variable--; variable = variable - 1; 
int x = 2; 
x++; // x = x + 1; 
// x now stores 3 
double gpa = 2.5; 
gpa--; // gpa = gpa - 1; 
// gpa now stores 1.5
34 
Modify-and-assign 
shortcuts to modify a variable's value 
Shorthand Equivalent longer version 
variable += value; variable = variable + value; 
variable -= value; variable = variable - value; 
variable *= value; variable = variable * value; 
variable /= value; variable = variable / value; 
variable %= value; variable = variable % value; 
x += 3; // x = x + 3; 
gpa -= 0.5; // gpa = gpa - 0.5; 
number *= 2; // number = number * 2;
35 
Repetition over a range 
System.out.println("1 squared = " + 1 * 1); 
System.out.println("2 squared = " + 2 * 2); 
System.out.println("3 squared = " + 3 * 3); 
System.out.println("4 squared = " + 4 * 4); 
System.out.println("5 squared = " + 5 * 5); 
System.out.println("6 squared = " + 6 * 6); 
– Intuition: "I want to print a line for each number from 1 to 6" 
• The for loop does exactly that! 
for (int i = 1; i <= 6; i++) { 
System.out.println(i + " squared = " + (i * i)); 
} 
– "For each integer i from 1 through 6, print ..."
36 
Loop walkthrough 
1 
for (int i = 1; i <= 4; i++) { 
System.out.println(i + " squared = " + (i * i)); 
} 
System.out.println("Whoo!"); 
Output: 
1 squared = 1 
2 squared = 4 
3 squared = 9 
4 squared = 16 
Whoo! 
1 
2 
2 
3 
3 
4 
4 
5 
5
37 
Multi-line loop body 
System.out.println("+----+"); 
for (int i = 1; i <= 3; i++) { 
System.out.println(" /"); 
System.out.println("/ "); 
} 
System.out.println("+----+"); 
– Output: 
+----+ 
 / 
/  
 / 
/  
 / 
/  
+----+
38 
Expressions for counter 
int highTemp = 5; 
for (int i = -3; i <= highTemp / 2; i++) { 
System.out.println(i * 1.8 + 32); 
} 
– Output: 
26.6 
28.4 
30.2 
32.0 
33.8 
35.6
39 
System.out.print 
• Prints without moving to a new line 
– allows you to print partial messages on the same line 
int highestTemp = 5; 
for (int i = -3; i <= highestTemp / 2; i++) { 
System.out.print((i * 1.8 + 32) + " "); 
} 
• Output: 
26.6 28.4 30.2 32.0 33.8 35.6 
• Concatenate " " to separate the numbers
40 
Counting down 
• The update can use -- to make the loop count down. 
– The test must say > instead of < 
System.out.print("T-minus "); 
for (int i = 10; i >= 1; i--) { 
System.out.print(i + ", "); 
} 
System.out.println("blastoff!"); 
System.out.println("The end."); 
– Output: 
T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff! 
The end.
41 
Nested for loops
42 
Nested loops 
• nested loop: A loop placed inside another loop. 
for (int i = 1; i <= 5; i++) { 
for (int j = 1; j <= 10; j++) { 
System.out.print("*"); 
} 
System.out.println(); // to end the line 
} 
• Output: 
********** 
********** 
********** 
********** 
********** 
• The outer loop repeats 5 times; the inner one 10 times. 
– "sets and reps" exercise analogy
43 
Nested for loop exercise 
• What is the output of the following nested for loops? 
for (int i = 1; i <= 5; i++) { 
for (int j = 1; j <= i; j++) { 
System.out.print("*"); 
} 
System.out.println(); 
} 
• Output: 
* 
** 
*** 
**** 
*****
44 
Nested for loop exercise 
• What is the output of the following nested for loops? 
for (int i = 1; i <= 5; i++) { 
for (int j = 1; j <= i; j++) { 
System.out.print(i); 
} 
System.out.println(); 
} 
• Output: 
1 
22 
333 
4444 
55555
45 
Common errors 
• Both of the following sets of code produce infinite loops: 
for (int i = 1; i <= 5; i++) { 
for (int j = 1; i <= 10; j++) { 
System.out.print("*"); 
} 
System.out.println(); 
} 
for (int i = 1; i <= 5; i++) { 
for (int j = 1; j <= 10; i++) { 
System.out.print("*"); 
} 
System.out.println(); 
}
46 
Complex lines 
• What nested for loops produce the following output? 
inner loop (repeated characters on each line) 
....1 
...2 
..3 
.4 
5 
• We must build multiple complex lines of output using: 
– an outer "vertical" loop for each of the lines 
– inner "horizontal" loop(s) for the patterns within each line 
loop (loops 5 times because there are 5 lines)
47 
Outer and inner loop 
• First write the outer loop, from 1 to the number of lines. 
for (int line = 1; line <= 5; line++) { 
... 
} 
• Now look at the line contents. Each line has a pattern: 
– some dots (0 dots on the last line), then a number 
....1 
...2 
..3 
.4 
5 
– Observation: the number of dots is related to the line number.
48 
Mapping loops to numbers 
for (int count = 1; count <= 5; count++) { 
System.out.print( ... ); 
} 
– What statement in the body would cause the loop to print: 
4 7 10 13 16 
for (int count = 1; count <= 5; count++) { 
System.out.print(3 * count + 1 + " "); 
}
49 
Loop tables 
• What statement in the body would cause the loop to print: 
2 7 12 17 22 
• To see patterns, make a table of count and the numbers. 
– Each time count goes up by 1, the number should go up by 5. 
– But count * 5 is too great by 3, so we subtract 3. 
count number to print 5 * 
count 
1 2 5 
2 7 10 
3 12 15 
4 17 20 
5 22 25 
5 * count - 
3 
2 
7 
12 
17 
22
50 
Loop tables question 
• What statement in the body would cause the loop to print: 
17 13 9 5 1 
• Let's create the loop table together. 
– Each time count goes up 1, the number printed should ... 
– But this multiple is off by a margin of ... 
count number to print 
1 17 
2 13 
3 9 
4 5 
5 1 
-4 * count 
-4 * count + 21 
-4 
17 
-8 
13 
-12 
9 
-16 
5 
-20 
1
51 
Nested for loop exercise 
• Make a table to represent any patterns on each line. 
....1 
...2 
..3 
.4 
5 
• To print a character multiple times, use a for loop. 
for (int j = 1; j <= 4; j++) { 
System.out.print("."); // 4 dots 
} 
line # of dots 
1 4 
2 3 
3 2 
4 1 
5 0 
-1 * line 
-1 
-2 
-3 
-4 
-5 
-1 * line + 5 
4 
3 
2 
1 
0
52 
Nested for loop solution 
• Answer: 
for (int line = 1; line <= 5; line++) { 
for (int j = 1; j <= (-1 * line + 5); j++) { 
System.out.print("."); 
} 
System.out.println(line); 
} 
• Output: 
....1 
...2 
..3 
.4 
5
53 
Nested for loop exercise 
• What is the output of the following nested for loops? 
for (int line = 1; line <= 5; line++) { 
for (int j = 1; j <= (-1 * line + 5); j++) { 
System.out.print("."); 
} 
for (int k = 1; k <= line; k++) { 
System.out.print(line); 
} 
System.out.println(); 
} 
• Answer: 
....1 
...22 
..333 
.4444 
55555
54 
Nested for loop exercise 
• Modify the previous code to produce this output: 
....1 
...2. 
..3.. 
.4... 
5.... 
• Answer: 
for (int line = 1; line <= 5; line++) { 
for (int j = 1; j <= (-1 * line + 5); j++) { 
System.out.print("."); 
} 
System.out.print(line); 
for (int j = 1; j <= (line - 1); j++) { 
System.out.print("."); 
} 
System.out.println(); 
}
55 
Drawing complex figures 
• Use nested for loops to produce the following output. 
• Why draw ASCII art? 
– Real graphics require a lot of finesse 
– ASCII art has complex patterns 
– Can focus on the algorithms 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================#
56 
Development strategy 
• Recommendations for managing complexity: 
1. Design the program (think about steps or methods needed). 
• write an English description of steps required 
• use this description to decide the methods 
2. Create a table of patterns of characters 
• use table to write your for loops 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================#
57 
1. Pseudo-code 
• pseudo-code: An English description of an algorithm. 
• Example: Drawing a 12 wide by 7 tall box of stars 
print 12 stars. 
for (each of 5 lines) { 
print a star. 
print 10 spaces. 
print a star. 
} 
print 12 stars. 
************ 
* * 
* * 
* * 
* * 
* * 
************
58 
Pseudo-code algorithm 
1. Line 
• # , 16 =, # 
2. Top half 
• | 
• spaces (decreasing) 
• <> 
• dots (increasing) 
• <> 
• spaces (same as above) 
• | 
3. Bottom half (top half upside-down) 
4. Line 
• # , 16 =, # 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================#
59 
Methods from pseudocode 
public class Mirror { 
public static void main(String[] args) { 
line(); 
topHalf(); 
bottomHalf(); 
line(); 
} 
public static void topHalf() { 
for (int line = 1; line <= 4; line++) { 
// contents of each line 
} 
} 
public static void bottomHalf() { 
for (int line = 1; line <= 4; line++) { 
// contents of each line 
} 
} 
public static void line() { 
// ... 
} 
}
60 
2. Tables 
• A table for the top half: 
– Compute spaces and dots expressions from line number 
line * -2 + 8 4 * line - 4 
6 0 
4 4 
2 8 
0 12 
line spaces dots 
1 6 0 
2 4 4 
3 2 8 
4 0 12 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================#
61 
3. Writing the code 
• Useful questions about the top half: 
– What methods? (think structure and redundancy) 
– Number of (nested) loops per line? 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================#
62 
Partial solution 
// Prints the expanding pattern of <> for the top half of the figure. 
public static void topHalf() { 
for (int line = 1; line <= 4; line++) { 
System.out.print("|"); 
for (int space = 1; space <= (line * -2 + 8); space++) { 
System.out.print(" "); 
} 
System.out.print("<>"); 
for (int dot = 1; dot <= (line * 4 - 4); dot++) { 
System.out.print("."); 
} 
System.out.print("<>"); 
for (int space = 1; space <= (line * -2 + 8); space++) { 
System.out.print(" "); 
} 
System.out.println("|"); 
} 
}
63 
Class constants 
and scope
64 
Scaling the mirror 
• Let's modify our Mirror program so that it can scale. 
– The current mirror (left) is at size 4; the right is at size 3. 
• We'd like to structure the code so we can scale the figure by 
changing the code in just one place. 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================# 
#============# 
| <><> | 
| <>....<> | 
|<>........<>| 
|<>........<>| 
| <>....<> | 
| <><> | 
#============#
65 
Limitations of variables 
• Idea: Make a variable to represent the size. 
– Use the variable's value in the methods. 
• Problem: A variable in one method can't be seen in others. 
public static void main(String[] args) { 
int size = 4; 
topHalf(); 
printBottom(); 
} 
public static void topHalf() { 
for (int i = 1; i <= size; i++) { // ERROR: size not found 
... 
} 
} 
public static void bottomHalf() { 
for (int i = size; i >= 1; i--) { // ERROR: size not found 
... 
} 
}
66 
Scope 
• scope: The part of a program where a variable exists. 
– From its declaration to the end of the { } braces 
• A variable declared in a for loop exists only in that loop. 
• A variable declared in a method exists only in that method. 
public static void example() { 
int x = 3; 
for (int i = 1; i <= 10; i++) { 
System.out.println(x); 
} 
// i no longer exists here 
} // x ceases to exist here 
x's scope
67 
Scope implications 
• Variables without overlapping scope can have same name. 
for (int i = 1; i <= 100; i++) { 
System.out.print("/"); 
} 
for (int i = 1; i <= 100; i++) { // OK 
System.out.print(""); 
} 
int i = 5; // OK: outside of loop's scope 
• A variable can't be declared twice or used out of its scope. 
for (int i = 1; i <= 100 * line; i++) { 
int i = 2; // ERROR: overlapping scope 
System.out.print("/"); 
} 
i = 4; // ERROR: outside scope
68 
Class constants 
• class constant: A fixed value visible to the whole program. 
– value can be set only at declaration; cannot be reassigned 
• Syntax: 
public static final type name = value; 
– name is usually in ALL_UPPER_CASE 
– Examples: 
public static final int DAYS_IN_WEEK = 7; 
public static final double INTEREST_RATE = 3.5; 
public static final int SSN = 658234569;
69 
Constants and figures 
• Consider the task of drawing the following scalable figure: 
+//////////+ 
| | 
| | 
| | Multiples of 5 occur many times 
| | 
| | 
+//////////+ 
+////+ 
| | 
| | The same figure at size 2 
+////+
70 
Repetitive figure code 
public class Sign { 
public static void main(String[] args) { 
drawLine(); 
drawBody(); 
drawLine(); 
} 
public static void drawLine() { 
System.out.print("+"); 
for (int i = 1; i <= 10; i++) { 
System.out.print("/"); 
} 
System.out.println("+"); 
} 
public static void drawBody() { 
for (int line = 1; line <= 5; line++) { 
System.out.print("|"); 
for (int spaces = 1; spaces <= 20; spaces++) { 
System.out.print(" "); 
} 
System.out.println("|"); 
} 
} 
}
71 
Adding a constant 
public class Sign { 
public static final int HEIGHT = 5; 
public static void main(String[] args) { 
drawLine(); 
drawBody(); 
drawLine(); 
} 
public static void drawLine() { 
System.out.print("+"); 
for (int i = 1; i <= HEIGHT * 2; i++) { 
System.out.print("/"); 
} 
System.out.println("+"); 
} 
public static void drawBody() { 
for (int line = 1; line <= HEIGHT; line++) { 
System.out.print("|"); 
for (int spaces = 1; spaces <= HEIGHT * 4; spaces++) { 
System.out.print(" "); 
} 
System.out.println("|"); 
} 
} 
}
72 
Complex figure w/ constant 
• Modify the Mirror code to be resizable using a constant. 
A mirror of size 4: 
#================# 
| <><> | 
| <>....<> | 
| <>........<> | 
|<>............<>| 
|<>............<>| 
| <>........<> | 
| <>....<> | 
| <><> | 
#================# 
A mirror of size 3: 
#============# 
| <><> | 
| <>....<> | 
|<>........<>| 
|<>........<>| 
| <>....<> | 
| <><> | 
#============#
73 
Using a constant 
• Constant allows many methods to refer to same value: 
public static final int SIZE = 4; 
public static void main(String[] args) { 
topHalf(); 
printBottom(); 
} 
public static void topHalf() { 
for (int i = 1; i <= SIZE; i++) { // OK 
... 
} 
} 
public static void bottomHalf() { 
for (int i = SIZE; i >= 1; i--) { // OK 
... 
} 
}
74 
Loop tables and constant 
• Let's modify our loop table to use SIZE 
– This can change the amount added in the loop expression 
SIZE line spaces -2*line + (2*SIZE) dots 
4*line - 
4 1,2,3,4 6,4,2,0 0,4,8,12 
3 1,2,3 4,2,0 0,4,8 
-2*line + 8 4*line - 4 
-2*line + 6 4*line - 4 
#================# #============# 
| <><> | | <><> | 
| <>....<> | | <>....<> | 
| <>........<> | |<>........<>| 
|<>............<>| |<>........<>| 
|<>............<>| | <>....<> | 
| <>........<> | | <><> | 
| <>....<> | #============# 
| <><> | 
#================# 
4 
4 1,2,3,4 6,4,2,0 -2*line + 8 0,4,8,12 4*line - 4 
3 1,2,3 4,2,0 -2*line + 6 0,4,8 4*line - 4
75 
Partial solution 
public static final int SIZE = 4; 
// Prints the expanding pattern of <> for the top half of the figure. 
public static void topHalf() { 
for (int line = 1; line <= SIZE; line++) { 
System.out.print("|"); 
for (int space = 1; space <= (line * -2 + (2*SIZE)); space++) { 
System.out.print(" "); 
} 
System.out.print("<>"); 
for (int dot = 1; dot <= (line * 4 - 4); dot++) { 
System.out.print("."); 
} 
System.out.print("<>"); 
for (int space = 1; space <= (line * -2 + (2*SIZE)); space++) { 
System.out.print(" "); 
} 
System.out.println("|"); 
} 
}
76 
Observations about 
constant 
• The constant can change the "intercept" in an expression. 
– Usually the "slope" is unchanged. 
public static final int SIZE = 4; 
for (int space = 1; space <= (line * -2 + (2 * SIZE)); space+ 
+) { 
System.out.print(" "); 
} 
• It doesn't replace every occurrence of the original value. 
for (int dot = 1; dot <= (line * 4 - 4); dot++) { 
System.out.print("."); 
}

More Related Content

What's hot

7. Kolaboratif.pdf
7. Kolaboratif.pdf7. Kolaboratif.pdf
7. Kolaboratif.pdfMarethaDewi2
 
Membuat aplikasi database dengan windows form application
Membuat aplikasi database dengan windows form applicationMembuat aplikasi database dengan windows form application
Membuat aplikasi database dengan windows form applicationAbdul Qifli Sangadji
 
Cara setting out atau stake out bangunan dengan theodolite
Cara setting out atau stake out bangunan dengan theodoliteCara setting out atau stake out bangunan dengan theodolite
Cara setting out atau stake out bangunan dengan theodolitedidiek hermansyah
 
Monitoring dan Evaluasi Pelaksanaan Pembangunan
Monitoring dan Evaluasi Pelaksanaan PembangunanMonitoring dan Evaluasi Pelaksanaan Pembangunan
Monitoring dan Evaluasi Pelaksanaan PembangunanDadang Solihin
 
Paparan Reformasi Birokrasi
Paparan Reformasi BirokrasiPaparan Reformasi Birokrasi
Paparan Reformasi BirokrasiAshep Ramdhan
 
tampilan generasi dan komponen komputer
tampilan generasi dan komponen komputer tampilan generasi dan komponen komputer
tampilan generasi dan komponen komputer Fanda Elvira Rosa
 
Infrastruktur data spatial
Infrastruktur data spatial Infrastruktur data spatial
Infrastruktur data spatial Musnanda Satar
 
Makalah keamanan-internet
Makalah keamanan-internetMakalah keamanan-internet
Makalah keamanan-internetMas Wan
 
ID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi Kedepannya
ID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi KedepannyaID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi Kedepannya
ID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi KedepannyaIsmail Fahmi
 
Manajemen Proyek Sistem Informasi
Manajemen Proyek Sistem InformasiManajemen Proyek Sistem Informasi
Manajemen Proyek Sistem InformasiFaishal Wafiq Zakiy
 
Surat rekomendasi
Surat rekomendasiSurat rekomendasi
Surat rekomendasihendra360
 
Contoh matrik jadwal pelaksanaan program
Contoh matrik jadwal pelaksanaan programContoh matrik jadwal pelaksanaan program
Contoh matrik jadwal pelaksanaan programImam Suyanto
 
Laporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan QgisLaporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan QgisIvul Varel Fu
 
Pengantar Teknologi Informasi.ppt
Pengantar Teknologi Informasi.pptPengantar Teknologi Informasi.ppt
Pengantar Teknologi Informasi.pptDedeArdiansyaputra1
 
Interaksi manusia dan komputer
Interaksi manusia dan komputerInteraksi manusia dan komputer
Interaksi manusia dan komputerakbar kurniawan
 
Bahan tayang pemetaan tematik-ddrtp 2016
Bahan tayang pemetaan tematik-ddrtp 2016Bahan tayang pemetaan tematik-ddrtp 2016
Bahan tayang pemetaan tematik-ddrtp 2016hadiarnowo
 

What's hot (20)

Sosialisasi Internet Sehat dan Aman
Sosialisasi Internet Sehat dan AmanSosialisasi Internet Sehat dan Aman
Sosialisasi Internet Sehat dan Aman
 
7. Kolaboratif.pdf
7. Kolaboratif.pdf7. Kolaboratif.pdf
7. Kolaboratif.pdf
 
Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019
Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019   Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019
Sistem Tata Kelola Keamanan Informasi SPBE menggunakan COBIT 2019
 
Membuat aplikasi database dengan windows form application
Membuat aplikasi database dengan windows form applicationMembuat aplikasi database dengan windows form application
Membuat aplikasi database dengan windows form application
 
Cara setting out atau stake out bangunan dengan theodolite
Cara setting out atau stake out bangunan dengan theodoliteCara setting out atau stake out bangunan dengan theodolite
Cara setting out atau stake out bangunan dengan theodolite
 
Monitoring dan Evaluasi Pelaksanaan Pembangunan
Monitoring dan Evaluasi Pelaksanaan PembangunanMonitoring dan Evaluasi Pelaksanaan Pembangunan
Monitoring dan Evaluasi Pelaksanaan Pembangunan
 
Paparan Reformasi Birokrasi
Paparan Reformasi BirokrasiPaparan Reformasi Birokrasi
Paparan Reformasi Birokrasi
 
tampilan generasi dan komponen komputer
tampilan generasi dan komponen komputer tampilan generasi dan komponen komputer
tampilan generasi dan komponen komputer
 
Infrastruktur data spatial
Infrastruktur data spatial Infrastruktur data spatial
Infrastruktur data spatial
 
Makalah keamanan-internet
Makalah keamanan-internetMakalah keamanan-internet
Makalah keamanan-internet
 
ID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi Kedepannya
ID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi KedepannyaID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi Kedepannya
ID-IGF: Rekomendasi Dan Masukan Perbaikan Aplikasi PeduliLindungi Kedepannya
 
Manajemen Proyek Sistem Informasi
Manajemen Proyek Sistem InformasiManajemen Proyek Sistem Informasi
Manajemen Proyek Sistem Informasi
 
Surat rekomendasi
Surat rekomendasiSurat rekomendasi
Surat rekomendasi
 
Contoh matrik jadwal pelaksanaan program
Contoh matrik jadwal pelaksanaan programContoh matrik jadwal pelaksanaan program
Contoh matrik jadwal pelaksanaan program
 
BUFFER pada ARCGIS 10.0
BUFFER pada ARCGIS 10.0BUFFER pada ARCGIS 10.0
BUFFER pada ARCGIS 10.0
 
Laporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan QgisLaporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan Qgis
 
Pengantar Teknologi Informasi.ppt
Pengantar Teknologi Informasi.pptPengantar Teknologi Informasi.ppt
Pengantar Teknologi Informasi.ppt
 
Interaksi manusia dan komputer
Interaksi manusia dan komputerInteraksi manusia dan komputer
Interaksi manusia dan komputer
 
Juknis JFP 2022
Juknis JFP 2022Juknis JFP 2022
Juknis JFP 2022
 
Bahan tayang pemetaan tematik-ddrtp 2016
Bahan tayang pemetaan tematik-ddrtp 2016Bahan tayang pemetaan tematik-ddrtp 2016
Bahan tayang pemetaan tematik-ddrtp 2016
 

Similar to Java Primitive Data and Definite Loops

ch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.pptch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.pptMahyuddin8
 
ch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.pptch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.pptghoitsun
 
ch04-conditional-execution.ppt
ch04-conditional-execution.pptch04-conditional-execution.ppt
ch04-conditional-execution.pptMahyuddin8
 
java basics - keywords, statements data types and arrays
java basics - keywords, statements data types and arraysjava basics - keywords, statements data types and arrays
java basics - keywords, statements data types and arraysmellosuji
 
How to tune a query - ODTUG 2012
How to tune a query - ODTUG 2012How to tune a query - ODTUG 2012
How to tune a query - ODTUG 2012Connor McDonald
 
Java Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type ConversionJava Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type ConversionSvetlin Nakov
 
c++ Data Types and Selection
c++ Data Types and Selectionc++ Data Types and Selection
c++ Data Types and SelectionAhmed Nobi
 
Lab 4 reading material formatted io and arithmetic expressions
Lab 4 reading material formatted io and arithmetic expressionsLab 4 reading material formatted io and arithmetic expressions
Lab 4 reading material formatted io and arithmetic expressionsAksharVaish2
 
Chapter 3.3
Chapter 3.3Chapter 3.3
Chapter 3.3sotlsoc
 
Class 2 variables, classes methods...
Class 2   variables, classes methods...Class 2   variables, classes methods...
Class 2 variables, classes methods...Fernando Loizides
 
Ifi7184 lesson3
Ifi7184 lesson3Ifi7184 lesson3
Ifi7184 lesson3Sónia
 
Functional Operations - Susan Potter
Functional Operations - Susan PotterFunctional Operations - Susan Potter
Functional Operations - Susan Potterdistributed matters
 
conditional statements
conditional statementsconditional statements
conditional statementsJames Brotsos
 
Pi j1.3 operators
Pi j1.3 operatorsPi j1.3 operators
Pi j1.3 operatorsmcollison
 
Functional Programming in Swift
Functional Programming in SwiftFunctional Programming in Swift
Functional Programming in SwiftSaugat Gautam
 

Similar to Java Primitive Data and Definite Loops (20)

ch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.pptch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.ppt
 
ch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.pptch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.ppt
 
DSA 103 Object Oriented Programming :: Week 3
DSA 103 Object Oriented Programming :: Week 3DSA 103 Object Oriented Programming :: Week 3
DSA 103 Object Oriented Programming :: Week 3
 
Prog1-L2.pptx
Prog1-L2.pptxProg1-L2.pptx
Prog1-L2.pptx
 
ch04-conditional-execution.ppt
ch04-conditional-execution.pptch04-conditional-execution.ppt
ch04-conditional-execution.ppt
 
java basics - keywords, statements data types and arrays
java basics - keywords, statements data types and arraysjava basics - keywords, statements data types and arrays
java basics - keywords, statements data types and arrays
 
How to tune a query - ODTUG 2012
How to tune a query - ODTUG 2012How to tune a query - ODTUG 2012
How to tune a query - ODTUG 2012
 
Java Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type ConversionJava Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type Conversion
 
c++ Data Types and Selection
c++ Data Types and Selectionc++ Data Types and Selection
c++ Data Types and Selection
 
Lab 4 reading material formatted io and arithmetic expressions
Lab 4 reading material formatted io and arithmetic expressionsLab 4 reading material formatted io and arithmetic expressions
Lab 4 reading material formatted io and arithmetic expressions
 
Chapter 3.3
Chapter 3.3Chapter 3.3
Chapter 3.3
 
Class 2 variables, classes methods...
Class 2   variables, classes methods...Class 2   variables, classes methods...
Class 2 variables, classes methods...
 
Ifi7184 lesson3
Ifi7184 lesson3Ifi7184 lesson3
Ifi7184 lesson3
 
Functional Operations - Susan Potter
Functional Operations - Susan PotterFunctional Operations - Susan Potter
Functional Operations - Susan Potter
 
conditional statements
conditional statementsconditional statements
conditional statements
 
c-programming
c-programmingc-programming
c-programming
 
Introduction to C ++.pptx
Introduction to C ++.pptxIntroduction to C ++.pptx
Introduction to C ++.pptx
 
Pi j1.3 operators
Pi j1.3 operatorsPi j1.3 operators
Pi j1.3 operators
 
Java Tutorial
Java Tutorial Java Tutorial
Java Tutorial
 
Functional Programming in Swift
Functional Programming in SwiftFunctional Programming in Swift
Functional Programming in Swift
 

Recently uploaded

Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxEyham Joco
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceSamikshaHamane
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfSumit Tiwari
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Hierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementHierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementmkooblal
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...jaredbarbolino94
 

Recently uploaded (20)

Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptx
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in Pharmacovigilance
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Hierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementHierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of management
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...
 

Java Primitive Data and Definite Loops

  • 1. Building Java Programs Chapter 2 Primitive Data and Definite Loops Copyright (c) Pearson 2013. All rights reserved.
  • 2. 2 Data types • type: A category or set of data values. – Constrains the operations that can be performed on data – Many languages ask the programmer to specify types – Examples: integer, real number, string • Internally, computers store everything as 1s and 0s 104  01101000 "hi"  01101000110101
  • 3. 3 Java's primitive types • primitive types: 8 simple types for numbers, text, etc. – Java also has object types, which we'll talk about later Name Description Examples – int integers (up to 231 - 1) 42, -3, 0, 926394 – double real numbers (up to 10308) 3.1, -0.25, 9.4e3 – char single text characters 'a', 'X', '?', 'n' – boolean logical values true, false • Why does Java distinguish integers vs. real numbers?
  • 4. 4 Expressions • expression: A value or operation that computes a value. • Examples: 1 + 4 * 5 (7 + 2) * 6 / 3 42 – The simplest expression is a literal value. – A complex expression can use operators and parentheses.
  • 5. 5 Arithmetic operators • operator: Combines multiple values or expressions. – + addition – - subtraction (or negation) – * multiplication – / division – % modulus (a.k.a. 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 ?
  • 6. 6 Integer division with / • When we divide integers, the quotient is also an integer. – 14 / 4 is 3, not 3.5 3 4 52 4 ) 14 10 ) 45 27 ) 1425 12 40 135 2 5 75 54 21 • More examples: – 32 / 5 is 6 – 84 / 10 is 8 – 156 / 100 is 1 – Dividing by 0 causes an error when your program runs.
  • 7. 7 Integer remainder with % • The % operator computes the remainder from integer division. – 14 % 4 is 2 – 218 % 5 is 3 3 43 4 ) 14 5 ) 218 12 20 2 18 15 3 What is the result? 45 % 6 2 % 2 8 % 20 11 % 0 • 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
  • 8. 8 Precedence • 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
  • 9. 9 Precedence examples • 1 * 2 + 3 * 5 % 4 • _/ | 2 + 3 * 5 % 4 • _/ | 2 + 15 % 4 • ___/ | 2 + 3 • ________/ | 5  1 + 8 % 3 * 2 - 9  _/ | 1 + 2 * 2 - 9  ___/ | 1 + 4 - 9  ______/ | 5 - 9  _________/ | -4
  • 10. 10 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))
  • 11. 11 Real numbers (type double) • Examples: 6.022 , -42.0 , 2.143e17 – 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 + -
  • 12. 12 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
  • 13. 13 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 operands. – 7 / 3 * 1.2 + 3 / 2 – _/ | 2 * 1.2 + 3 / 2 – ___/ | 2.4 + 3 / 2 – _/ | 2.4 + 1 – ________/ | 3.4 – 3 / 2 is 1 above, not 1.5. • 2.0 + 10 / 3 * 2.5 - 6 / 4 • ___/ | 2.0 + 3 * 2.5 - 6 / 4 • _____/ | 2.0 + 7.5 - 6 / 4 • _/ | 2.0 + 7.5 - 1 • _________/ | 9.5 - 1 • ______________/ | 8.5
  • 14. 14 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
  • 16. 16 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
  • 17. 17 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
  • 18. 18 Declaration • variable declaration: Sets aside memory for storing a value. – Variables must be declared before they can be used. • Syntax: type name; • The name is an identifier. – int x; – double myGPA; x myGPA
  • 19. 19 Assignment • assignment: Stores a value into a variable. – The value can be an expression; the variable stores its result. • Syntax: name = expression; – int x; x = 3; – double myGPA; myGPA = 1.0 + 2.25; x 3 myGPA 3.25
  • 20. 20 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); // 5 * 3 - 1 • You can assign a value more than once: xx 131 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
  • 21. 21 Declaration/initialization • A variable can be declared/initialized in one statement. • Syntax: type name = value; – double myGPA = 3.95; – int x = (11 % 3) + 12; myGPA 3.95 x 14
  • 22. 22 Assignment and algebra • Assignment uses = , but it is not an algebraic equation. = means, "store the value at right in variable at left" • The right side expression is evaluated first, and then its result is stored in the variable at left. • What happens here? int x = 3; x = x + 2; // ??? xx 35
  • 23. 23 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; – double avg = 11 / 2; • Why does avg store 5.0 and not 5.5 ? myGPA 4.0 avg 5.0
  • 24. 24 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?
  • 25. 25 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.
  • 26. 26 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); } }
  • 27. 27 Receipt answer public class Receipt { public static void main(String[] args) { // Calculate total owed, assuming 8% tax / 15% tip int 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); } }
  • 28. 28 The for loop
  • 29. 29 Repetition with for loops • So far, repeating a statement is redundant: System.out.println("Homer says:"); System.out.println("I am so smart"); System.out.println("I am so smart"); System.out.println("I am so smart"); System.out.println("I am so smart"); System.out.println("S-M-R-T... I mean S-M-A-R-T"); • Java's for loop statement performs a task many times. System.out.println("Homer says:"); for (int i = 1; i <= 4; i++) { // repeat 4 times System.out.println("I am so smart"); } System.out.println("S-M-R-T... I mean S-M-A-R-T");
  • 30. 30 for loop syntax for (initialization; test; update) { statement; statement; ... statement; } – Perform initialization once. – Repeat the following: • Check if the test is true. If not, stop. • Execute the statements. • Perform the update. header body
  • 31. 31 Initialization for (int i = 1; i <= 6; i++) { System.out.println("I am so smart"); } • Tells Java what variable to use in the loop – Performed once as the loop begins – The variable is called a loop counter • can use any name, not just i • can start at any value, not just 1
  • 32. 32 Test for (int i = 1; i <= 6; i++) { System.out.println("I am so smart"); } • Tests the loop counter variable against a limit – Uses comparison operators: < less than <= less than or equal to > greater than >= greater than or equal to
  • 33. 33 Increment and decrement shortcuts to increase or decrease a variable's value by 1 Shorthand Equivalent longer version variable++; variable = variable + 1; variable--; variable = variable - 1; int x = 2; x++; // x = x + 1; // x now stores 3 double gpa = 2.5; gpa--; // gpa = gpa - 1; // gpa now stores 1.5
  • 34. 34 Modify-and-assign shortcuts to modify a variable's value Shorthand Equivalent longer version variable += value; variable = variable + value; variable -= value; variable = variable - value; variable *= value; variable = variable * value; variable /= value; variable = variable / value; variable %= value; variable = variable % value; x += 3; // x = x + 3; gpa -= 0.5; // gpa = gpa - 0.5; number *= 2; // number = number * 2;
  • 35. 35 Repetition over a range System.out.println("1 squared = " + 1 * 1); System.out.println("2 squared = " + 2 * 2); System.out.println("3 squared = " + 3 * 3); System.out.println("4 squared = " + 4 * 4); System.out.println("5 squared = " + 5 * 5); System.out.println("6 squared = " + 6 * 6); – Intuition: "I want to print a line for each number from 1 to 6" • The for loop does exactly that! for (int i = 1; i <= 6; i++) { System.out.println(i + " squared = " + (i * i)); } – "For each integer i from 1 through 6, print ..."
  • 36. 36 Loop walkthrough 1 for (int i = 1; i <= 4; i++) { System.out.println(i + " squared = " + (i * i)); } System.out.println("Whoo!"); Output: 1 squared = 1 2 squared = 4 3 squared = 9 4 squared = 16 Whoo! 1 2 2 3 3 4 4 5 5
  • 37. 37 Multi-line loop body System.out.println("+----+"); for (int i = 1; i <= 3; i++) { System.out.println(" /"); System.out.println("/ "); } System.out.println("+----+"); – Output: +----+ / / / / / / +----+
  • 38. 38 Expressions for counter int highTemp = 5; for (int i = -3; i <= highTemp / 2; i++) { System.out.println(i * 1.8 + 32); } – Output: 26.6 28.4 30.2 32.0 33.8 35.6
  • 39. 39 System.out.print • Prints without moving to a new line – allows you to print partial messages on the same line int highestTemp = 5; for (int i = -3; i <= highestTemp / 2; i++) { System.out.print((i * 1.8 + 32) + " "); } • Output: 26.6 28.4 30.2 32.0 33.8 35.6 • Concatenate " " to separate the numbers
  • 40. 40 Counting down • The update can use -- to make the loop count down. – The test must say > instead of < System.out.print("T-minus "); for (int i = 10; i >= 1; i--) { System.out.print(i + ", "); } System.out.println("blastoff!"); System.out.println("The end."); – Output: T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff! The end.
  • 41. 41 Nested for loops
  • 42. 42 Nested loops • nested loop: A loop placed inside another loop. for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; j++) { System.out.print("*"); } System.out.println(); // to end the line } • Output: ********** ********** ********** ********** ********** • The outer loop repeats 5 times; the inner one 10 times. – "sets and reps" exercise analogy
  • 43. 43 Nested for loop exercise • What is the output of the following nested for loops? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } • Output: * ** *** **** *****
  • 44. 44 Nested for loop exercise • What is the output of the following nested for loops? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print(i); } System.out.println(); } • Output: 1 22 333 4444 55555
  • 45. 45 Common errors • Both of the following sets of code produce infinite loops: for (int i = 1; i <= 5; i++) { for (int j = 1; i <= 10; j++) { System.out.print("*"); } System.out.println(); } for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; i++) { System.out.print("*"); } System.out.println(); }
  • 46. 46 Complex lines • What nested for loops produce the following output? inner loop (repeated characters on each line) ....1 ...2 ..3 .4 5 • We must build multiple complex lines of output using: – an outer "vertical" loop for each of the lines – inner "horizontal" loop(s) for the patterns within each line loop (loops 5 times because there are 5 lines)
  • 47. 47 Outer and inner loop • First write the outer loop, from 1 to the number of lines. for (int line = 1; line <= 5; line++) { ... } • Now look at the line contents. Each line has a pattern: – some dots (0 dots on the last line), then a number ....1 ...2 ..3 .4 5 – Observation: the number of dots is related to the line number.
  • 48. 48 Mapping loops to numbers for (int count = 1; count <= 5; count++) { System.out.print( ... ); } – What statement in the body would cause the loop to print: 4 7 10 13 16 for (int count = 1; count <= 5; count++) { System.out.print(3 * count + 1 + " "); }
  • 49. 49 Loop tables • What statement in the body would cause the loop to print: 2 7 12 17 22 • To see patterns, make a table of count and the numbers. – Each time count goes up by 1, the number should go up by 5. – But count * 5 is too great by 3, so we subtract 3. count number to print 5 * count 1 2 5 2 7 10 3 12 15 4 17 20 5 22 25 5 * count - 3 2 7 12 17 22
  • 50. 50 Loop tables question • What statement in the body would cause the loop to print: 17 13 9 5 1 • Let's create the loop table together. – Each time count goes up 1, the number printed should ... – But this multiple is off by a margin of ... count number to print 1 17 2 13 3 9 4 5 5 1 -4 * count -4 * count + 21 -4 17 -8 13 -12 9 -16 5 -20 1
  • 51. 51 Nested for loop exercise • Make a table to represent any patterns on each line. ....1 ...2 ..3 .4 5 • To print a character multiple times, use a for loop. for (int j = 1; j <= 4; j++) { System.out.print("."); // 4 dots } line # of dots 1 4 2 3 3 2 4 1 5 0 -1 * line -1 -2 -3 -4 -5 -1 * line + 5 4 3 2 1 0
  • 52. 52 Nested for loop solution • Answer: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } System.out.println(line); } • Output: ....1 ...2 ..3 .4 5
  • 53. 53 Nested for loop exercise • What is the output of the following nested for loops? for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } for (int k = 1; k <= line; k++) { System.out.print(line); } System.out.println(); } • Answer: ....1 ...22 ..333 .4444 55555
  • 54. 54 Nested for loop exercise • Modify the previous code to produce this output: ....1 ...2. ..3.. .4... 5.... • Answer: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } System.out.print(line); for (int j = 1; j <= (line - 1); j++) { System.out.print("."); } System.out.println(); }
  • 55. 55 Drawing complex figures • Use nested for loops to produce the following output. • Why draw ASCII art? – Real graphics require a lot of finesse – ASCII art has complex patterns – Can focus on the algorithms #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================#
  • 56. 56 Development strategy • Recommendations for managing complexity: 1. Design the program (think about steps or methods needed). • write an English description of steps required • use this description to decide the methods 2. Create a table of patterns of characters • use table to write your for loops #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================#
  • 57. 57 1. Pseudo-code • pseudo-code: An English description of an algorithm. • Example: Drawing a 12 wide by 7 tall box of stars print 12 stars. for (each of 5 lines) { print a star. print 10 spaces. print a star. } print 12 stars. ************ * * * * * * * * * * ************
  • 58. 58 Pseudo-code algorithm 1. Line • # , 16 =, # 2. Top half • | • spaces (decreasing) • <> • dots (increasing) • <> • spaces (same as above) • | 3. Bottom half (top half upside-down) 4. Line • # , 16 =, # #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================#
  • 59. 59 Methods from pseudocode public class Mirror { public static void main(String[] args) { line(); topHalf(); bottomHalf(); line(); } public static void topHalf() { for (int line = 1; line <= 4; line++) { // contents of each line } } public static void bottomHalf() { for (int line = 1; line <= 4; line++) { // contents of each line } } public static void line() { // ... } }
  • 60. 60 2. Tables • A table for the top half: – Compute spaces and dots expressions from line number line * -2 + 8 4 * line - 4 6 0 4 4 2 8 0 12 line spaces dots 1 6 0 2 4 4 3 2 8 4 0 12 #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================#
  • 61. 61 3. Writing the code • Useful questions about the top half: – What methods? (think structure and redundancy) – Number of (nested) loops per line? #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================#
  • 62. 62 Partial solution // Prints the expanding pattern of <> for the top half of the figure. public static void topHalf() { for (int line = 1; line <= 4; line++) { System.out.print("|"); for (int space = 1; space <= (line * -2 + 8); space++) { System.out.print(" "); } System.out.print("<>"); for (int dot = 1; dot <= (line * 4 - 4); dot++) { System.out.print("."); } System.out.print("<>"); for (int space = 1; space <= (line * -2 + 8); space++) { System.out.print(" "); } System.out.println("|"); } }
  • 63. 63 Class constants and scope
  • 64. 64 Scaling the mirror • Let's modify our Mirror program so that it can scale. – The current mirror (left) is at size 4; the right is at size 3. • We'd like to structure the code so we can scale the figure by changing the code in just one place. #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================# #============# | <><> | | <>....<> | |<>........<>| |<>........<>| | <>....<> | | <><> | #============#
  • 65. 65 Limitations of variables • Idea: Make a variable to represent the size. – Use the variable's value in the methods. • Problem: A variable in one method can't be seen in others. public static void main(String[] args) { int size = 4; topHalf(); printBottom(); } public static void topHalf() { for (int i = 1; i <= size; i++) { // ERROR: size not found ... } } public static void bottomHalf() { for (int i = size; i >= 1; i--) { // ERROR: size not found ... } }
  • 66. 66 Scope • scope: The part of a program where a variable exists. – From its declaration to the end of the { } braces • A variable declared in a for loop exists only in that loop. • A variable declared in a method exists only in that method. public static void example() { int x = 3; for (int i = 1; i <= 10; i++) { System.out.println(x); } // i no longer exists here } // x ceases to exist here x's scope
  • 67. 67 Scope implications • Variables without overlapping scope can have same name. for (int i = 1; i <= 100; i++) { System.out.print("/"); } for (int i = 1; i <= 100; i++) { // OK System.out.print(""); } int i = 5; // OK: outside of loop's scope • A variable can't be declared twice or used out of its scope. for (int i = 1; i <= 100 * line; i++) { int i = 2; // ERROR: overlapping scope System.out.print("/"); } i = 4; // ERROR: outside scope
  • 68. 68 Class constants • class constant: A fixed value visible to the whole program. – value can be set only at declaration; cannot be reassigned • Syntax: public static final type name = value; – name is usually in ALL_UPPER_CASE – Examples: public static final int DAYS_IN_WEEK = 7; public static final double INTEREST_RATE = 3.5; public static final int SSN = 658234569;
  • 69. 69 Constants and figures • Consider the task of drawing the following scalable figure: +//////////+ | | | | | | Multiples of 5 occur many times | | | | +//////////+ +////+ | | | | The same figure at size 2 +////+
  • 70. 70 Repetitive figure code public class Sign { public static void main(String[] args) { drawLine(); drawBody(); drawLine(); } public static void drawLine() { System.out.print("+"); for (int i = 1; i <= 10; i++) { System.out.print("/"); } System.out.println("+"); } public static void drawBody() { for (int line = 1; line <= 5; line++) { System.out.print("|"); for (int spaces = 1; spaces <= 20; spaces++) { System.out.print(" "); } System.out.println("|"); } } }
  • 71. 71 Adding a constant public class Sign { public static final int HEIGHT = 5; public static void main(String[] args) { drawLine(); drawBody(); drawLine(); } public static void drawLine() { System.out.print("+"); for (int i = 1; i <= HEIGHT * 2; i++) { System.out.print("/"); } System.out.println("+"); } public static void drawBody() { for (int line = 1; line <= HEIGHT; line++) { System.out.print("|"); for (int spaces = 1; spaces <= HEIGHT * 4; spaces++) { System.out.print(" "); } System.out.println("|"); } } }
  • 72. 72 Complex figure w/ constant • Modify the Mirror code to be resizable using a constant. A mirror of size 4: #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================# A mirror of size 3: #============# | <><> | | <>....<> | |<>........<>| |<>........<>| | <>....<> | | <><> | #============#
  • 73. 73 Using a constant • Constant allows many methods to refer to same value: public static final int SIZE = 4; public static void main(String[] args) { topHalf(); printBottom(); } public static void topHalf() { for (int i = 1; i <= SIZE; i++) { // OK ... } } public static void bottomHalf() { for (int i = SIZE; i >= 1; i--) { // OK ... } }
  • 74. 74 Loop tables and constant • Let's modify our loop table to use SIZE – This can change the amount added in the loop expression SIZE line spaces -2*line + (2*SIZE) dots 4*line - 4 1,2,3,4 6,4,2,0 0,4,8,12 3 1,2,3 4,2,0 0,4,8 -2*line + 8 4*line - 4 -2*line + 6 4*line - 4 #================# #============# | <><> | | <><> | | <>....<> | | <>....<> | | <>........<> | |<>........<>| |<>............<>| |<>........<>| |<>............<>| | <>....<> | | <>........<> | | <><> | | <>....<> | #============# | <><> | #================# 4 4 1,2,3,4 6,4,2,0 -2*line + 8 0,4,8,12 4*line - 4 3 1,2,3 4,2,0 -2*line + 6 0,4,8 4*line - 4
  • 75. 75 Partial solution public static final int SIZE = 4; // Prints the expanding pattern of <> for the top half of the figure. public static void topHalf() { for (int line = 1; line <= SIZE; line++) { System.out.print("|"); for (int space = 1; space <= (line * -2 + (2*SIZE)); space++) { System.out.print(" "); } System.out.print("<>"); for (int dot = 1; dot <= (line * 4 - 4); dot++) { System.out.print("."); } System.out.print("<>"); for (int space = 1; space <= (line * -2 + (2*SIZE)); space++) { System.out.print(" "); } System.out.println("|"); } }
  • 76. 76 Observations about constant • The constant can change the "intercept" in an expression. – Usually the "slope" is unchanged. public static final int SIZE = 4; for (int space = 1; space <= (line * -2 + (2 * SIZE)); space+ +) { System.out.print(" "); } • It doesn't replace every occurrence of the original value. for (int dot = 1; dot <= (line * 4 - 4); dot++) { System.out.print("."); }

Editor's Notes

  1. ask them, how might the computer store &amp;quot;hi&amp;quot; using binary digits? (some kind of mapping; ASCII)
  2. We&amp;apos;re basically going to manipulate letters and numbers. We make the integer / real number distinction in English as well. We don&amp;apos;t ask, &amp;quot;How many do you weigh?&amp;quot; or, &amp;quot;How much sisters do you have?&amp;quot; Part of the int/double split is related to how a computer processor crunches numbers. A CPU does integer computations and a Floating Point Unit (FPU) does real number computations. Why does Java separate int and double? Why not use one combined type called number?
  3. What is 8 % 20? It&amp;apos;s 8, but students often say 0.
  4. Ask the students what 15 / 4 and 2 / 3 are, since the answers are non-obvious.
  5. (I don&amp;apos;t usually go through these in lecture; I tell them they are extra problems they can work on later) Answers: 1 15 37 47 9 16 -8 9
  6. Point out that it&amp;apos;s odd for 42.0 to be considered a real number, but it is.
  7. I don&amp;apos;t usually go through the expression on the right; I just show it very quickly and move on.
  8. a variable is also like the MS / MR buttons on a calculator variables must be declared before they are used, just like methods
  9. x = x + 2; increases the value stored in variable x by two.
  10. also related to book exercise 1.10 about printing 1000 copies of &amp;quot;All work and no play makes Jack a dull boy&amp;quot;
  11. How would we print a multiplication table? try printing each of the following inside the inner loop: System.out.print(i + &amp;quot; &amp;quot;); System.out.print(j + &amp;quot; &amp;quot;); System.out.print((i * j) + &amp;quot; &amp;quot;);
  12. Both cases produce infinite loops.
  13. If you have time left over at this point (you probably won&amp;apos;t), you could ask them how to make the loop print 12 lines instead of 5. (leads in to constants in next lecture)