7 The For Loop

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 24

The for loop

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");
for loop syntax header
for (initialization; test; update) {
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.
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
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
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
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;
Count up
• Make a loop count up from 1 to 10 with only 1 system.out.
Using a for statement (loop should repeat 10 times)
• Output Should look like
Start:
1 for (int i = 1; i <= 6; i++) {
System.out.println(“Sample syntax for
2 a loop");
3 }
4
5
6
7
8
9
10
End.
Count up answer
• The update can use -- to make the loop count down.
• The test must say > instead of <

System.out.print(“Start ");
for (int i = 1; i >= 10; i++) {
System.out.print(i);
}
System.out.println(“End.");

• Output:
T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff!
The end.
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 ..."


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

2
Output:
1 squared = 1 4
2 squared = 4
3 squared = 9 3
4 squared = 16
5
Whoo!
Multi-line loop body
System.out.println("+----+");
for (int i = 1; i <= 3; i++) {
System.out.println("\\ /");
System.out.println("/ \\");
}
System.out.println("+----+");

• Output:
+----+
\ /
/ \
\ /
/ \
\ /
/ \
+----+
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
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


Counting down
• The update can use -- to make the loop count down.
• The test must say > instead of <

• Output:
T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff!
The end.
Counting down answer
• 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.
Nested for loops
How would we create this?
• Output:
**********
**********
**********
**********
**********
We know how to do this
* same as 1
* just with 2
* a character 3
* 4
* 5

• The outer loop repeats 5 times; the inner one 10 times.


– "sets and reps" exercise analogy
Nested loops
The outer loop repeats 5 times; the inner one 10 times.
"sets and reps" exercise analogy

Output:
**********
**********
**********
**********
**********

For this we must put a for loop in a for loop.


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
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:
*
**
***
****
*****
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
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();
}
For Loop Activity
Create a program that asks a user what their name is, and then asks the user
for their 4 semester marks. It would then output the users name and avg, and
then loops to the next user until 5 are done.(5 users in total)

If your stumped. Start with 1 user first. Then work on looping it

You might also like