0% found this document useful (0 votes)
7 views

lec4

Uploaded by

Thet Hsu
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)
7 views

lec4

Uploaded by

Thet Hsu
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/ 31

Building Java

Programs

1
Modify-and-assign
operators
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;

2
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; (or x += 1;
)
// x now stores 3
double gpa = 2.5;
gpa--; // gpa -= 1;
// gpa now stores 1.5
3
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"

There's a statement, the for loop, that does just


that!
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}

 "For each integer i from 1 through 6, print ..."


4
for loop syntax
for (initialization; test; update) { header
statement;
statement;
... body
statement;
}

 Perform initialization once.


 Repeat the following:
 Check if the test is true. If not, stop.
 Execute the statements.
 Perform the update.

5
Initialization
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}

Tells Java what variable to use in the loop


 Called a loop counter

 Can use any variable name, not just i


 Can start at any value, not just 1

6
Test
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}

Tests whether the loop should stop


 Typically uses comparison operators:
< less than
<= less than or equal to
> greater than
>= greater than or equal to

7
Update
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}

What to do after the loop body


 Update the loop-counter variable appropriately
 Without an update, you would have an infinite loop

 Can be any expression:

for (int i = 1; i <= 9; i += 2) {


System.out.println(i);
}

8
Loop walkthrough
1 2 3
for (int i = 1; i <= 4; i++) {
4 System.out.println(i + " squared = " + (i * i));
}
5 System.out.println("Whoo!");
1
Output:
2
1 squared = 1
2 squared = 4
3 squared = 9 4
4 squared = 16
Whoo! 3

9
General repetition
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("I am so smart");
System.out.println("S-M-R-T");
System.out.println("I mean S-M-A-R-T");

The loop's body doesn't have to use the counter


variable:
for (int i = 1; i <= 5; i++) { // repeat 5 times
System.out.println("I am so smart");
}
System.out.println("S-M-R-T");
System.out.println("I mean S-M-A-R-T");

10
Multi-line loop body
Output:
+----+
\ /
/ \
\ /
/ \
\ /
/ \
+----+

System.out.println("+----+");
for (int i = 1; i <= 3; i++) {
System.out.println("\\ /");
System.out.println("/ \\");
}
System.out.println("+----+");
11
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

12
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

13
Counting down
The update can use -- to make the loop count down.
 Be sure to use the right test (> or >= instead of <
or <=)

System.out.print("T-minus ");
for (int i = 10; i >= 1; i--) {
System.out.print(i + ", ");
}
System.out.println("blastoff!");

 Output:
T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff!

14
Where are we
Done: many basic features of Java
 Static methods
 int, double, and strings
 Expressions: +, -, *, /, %, <, <=, >, >=
 Variables
 For loops
 System.out.println and System.out.print

Many more features to come, but first how to use


for loops effectively
 No new rules, just new programming patterns
 And practice designing programs
 For loops can nest (be inside other for loops)

15
Mapping loops to numbers
for (int count = 1; count <= 5; count++) {
...
}

 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 + " ");
}

16
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
upcount
by 5.
number to 5 * count 5 * count -
 But count * 5 is too great by 33, so we subtract 3.
print
5
1 2 2
10
2 7 7
15
3 12 12
20
4 17 17
25
5 22 22
17
Loop tables question
What statement in the body would cause the loop to
print:
17 13 9 5 1

• You try it…


 Each time count goes up 1, the number printed should
...
 But this multiple is off by a margin of ...
count number to -4 * count -4 * count + 21
print
-4 17
1 17
-8 13
2 13
-12 9
3 9
-16 5
4 5
-20 1
5 1
18
Nested loops

19
Redundancy between loops
for (int j = 1; j <= 5; j++) {
System.out.print(j + "\t"); Output:
} 1 2 3 4 5
System.out.println();
2 4 6 8 10
for (int j = 1; j <= 5; j++) {
System.out.print(2 * j + "\t");
3 6 9 12 15
}
System.out.println();
4 8 12 16 20
for (int j = 1; j <= 5; j++) {
System.out.print(3 * j + "\t");
}
System.out.println();
for (int j = 1; j <= 5; j++) {
System.out.print(4 * j + "\t"){
}
System.out.println();

20
Nested loops
nested loop: A loop placed inside another loop.
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print((i * j) + "\t");
}
System.out.println(); // to end the line
}

Output:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20

Statements in the outer loop's body are executed 4


times.
 The inner loop prints 5 numbers each time it is run.
21
Nested for loop exercise
What is the output of the following nested for
loops?
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= 10; j++) {
System.out.print("*");
}
System.out.println();
}

Output:
**********
**********
**********
**********
**********
********** 22
Nested for loop exercise
What is the output of the following nested for
loops?
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}

Output:
*
**
***
****
*****
****** 23
Nested for loop exercise
What is the output of the following nested for
loops?
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i);
}
System.out.println();
}

Output:
1
22
333
4444
55555
666666 24
Complex lines
What nested for loops produce the following
output?
eated characters on each line)

....1
...2
..3 outer loop (loops 5 times because there ar
.4
5

Can 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

25
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)
 a number

....1
...2
..3
.4
5 26
Nested for loop exercise
Make a table to represent any patterns on each
line.
line # of -1 * line -1 * line + 5
....1 dots -1 4
...2 1 4 -2 3
..3 2 3 -3 2
.4 3 2 -4 1
5
4 1 -5 0
5 0

To print a character multiple times, use a for


loop.
for (int j = 1; j <= 4; j++) {
System.out.print("."); // 4 dots
} 27
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

28
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 29
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();
}
30
Common errors
Both of the following sets of code produce
infinite loops:
for (int i = 1; i <= 10; i++) {
for (int j = 1; i <= 5; j++) {
System.out.print(j);
}
System.out.println();
}

for (int i = 1; i <= 10; i++) {


for (int j = 1; j <= 5; i++) {
System.out.print(j);
}
System.out.println();
}

31

You might also like