for_loop CIS 1068 FOR LOOP PPT
-
Upload
shardulmahida -
Category
Documents
-
view
228 -
download
0
Transcript of for_loop CIS 1068 FOR LOOP PPT
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
1/36
1
The forloop
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
2/36
2
Repetition
How can we eliminate this redundancy?
System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");
System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");System.out.println("I will not throw the principals toupee down the toilet");
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
3/36
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
4/36
4
Control Structure
The forloop is a control structurea syntactic
structure that controlsthe execution of other
statements.
Example:
Shampoo hair. Rinse. Repeat.
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
5/36
5
forloop over range of ints
We'll write forloops over integers in a given range.
The declares a loop counter variable that is used in the test,update, and body of the loop.
for (int = 1;
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
6/36
6
forloop flow diagramfor (; ; ) {
;
;
...
;
}
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
7/36
7
Loop walkthrough
Code:for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
8/36
8
Loop example
Code:System.out.println("+----+");
for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
9/36
9
Varying the forloop
The initial and final values for the loop counter variable can be arbitraryexpressions:
Example:for (int i = -3; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
10/36
10
Varying the forloop
The update can be a --(or any other operator). Caution: This requires changing the test from =.
System.out.println("T-minus");
for (int i = 3; i >=1; i--) {
System.out.println(i);
}
System.out.println("Blastoff!");
Output:T-minus
3
21
Blastoff!
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
11/36
11
Aside: System.out.print
What if we wanted the output to be the following?
T-minus 3 2 1 Blastoff!
System.out.printprints the given output without
moving to the next line.
System.out.print("T-minus ");
for (int i = 3; i >= 1; i--) {
System.out.print(i + "");
}
System.out.println("Blastoff!");
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
12/36
12
Errors in coding
When controlling a single statement, the {}braces are optional.
for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
13/36
13
Errors in coding
ERROR: Loops that never execute.
for (int i = 10; i < 5; i++) {
System.out.println("How many times do I print?");
}
ERROR: Loop tests that never fail.
A loop that never terminates is called an infinite loop.
for (int i = 10; i >= 1; i++) {
System.out.println("Runaway Java program!!!");
}
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
14/36
14
forloop exercises
Write a loop that produces the following output.
On day #1 of Christmas, my true love sent to me
On day #2 of Christmas, my true love sent to me
On day #3 of Christmas, my true love sent to me
On day #4 of Christmas, my true love sent to meOn day #5 of Christmas, my true love sent to me
...
On day #12 of Christmas, my true love sent to me
Write a loop that produces the following output.2 4 6 8
Who do we appreciate
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
15/36
15
Special case: If a variable is declared in thepart of a forloop, its scope is the
forloop.
public static void main(String [] args) {
int x = 3;
for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
16/36
16
Errors in coding
ERROR: Using a variable outside of its scope.
public static void main(String[] args) {
for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
17/36
17
Loops with if/else
Loops can be used with if/elsestatements.
int nonnegatives = 0, negatives = 0;
for (int i = 1; i = 0) {
nonnegatives++;
} else {negatives++;
}
}
Exercise: Describe in English what this code does.
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
18/36
18
Exercises
Write a program named CountFactors that reads in an
integer and displays its number of factors.
For example, if the user enters 60, CountFactors displays 12
because 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, and 60 are all factors
of 60.
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
19/36
19
Nested forloops
nested loop: Loops placed inside one another.
Caution:Make sure the inner loop's counter variable has a different name!
for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
20/36
20
Nested loops example
Code:for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
21/36
21
Nested loops example
Code:for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
22/36
22
Nested loops example
Code:for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
23/36
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
24/36
24
Nested loops example
Code:for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
25/36
25
Exercise: Nested loops
What nested forloops produce the following output?
....1...2
..3
.4
5
Key idea: outer "vertical" loop for each of the lines
inner "horizontal" loop(s) for the patterns within each line
inner loop (repeated characters on each line)
outer loop (loops 5 times because there are 5 lines)
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
26/36
26
Nested loops
First, write the outer loop from 1to the number of lines desired.
for (int line = 1; line
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
27/36
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
28/36
28
Errors in coding
ERROR: Using the wrong loop counter variable.
What is the output of the following piece of code?for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
29/36
29
Commenting: forloops
Place a comment on complex loops explaining what they do from a conceptualstandpoint, not the mechanics of the syntax.
Bad:
// This loop repeats 10 times, with i from 1 to 10.
for (int i = 1; i
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
30/36
30
Mapping loops to numbers
Suppose that we have the following loop:
for (int count = 1; count
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
31/36
31
Mapping loops to numbers
Now consider another loop of the same style:
for (int count = 1; count
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
32/36
32
Loop number tables
What statement could we write in the body of the loop that would
make the loop print the following output?
2 7 12 17 22
To find the pattern, it can help to make a table.
Each time countgoes up by 1, the number should go up by 5.
But count * 5is too big by 3, so we must subtract 3.
1720174
22
12
7
2
number to print
25
15
10
5
count * 5
225
123
72
21
count * 5 - 3count
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
33/36
33
Another perspective: Slope-intercept
-10
-5
0
5
10
15
20
25
-2 0 2 4 6 174
22
12
7
2
number to print (y)
5
3
2
1
count (x)
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
34/36
34
Another perspective: Slope-intercept
Caution: This is algebra, not assignment! Recall: slope-intercept form (y = mx + b)
Slope is defined as rise over run (i.e. rise / run). Since the run isalways 1(we increment along xby 1), we just need to look at the rise.The rise is the difference between the yvalues. Thus, the slope (m) isthe difference between yvalues; in this case, it is +5.
To compute the y-intercept (b), plug in the value of yat x = 1andsolve for b. In this case, y = 2.y = m * x + b
2 = 5 * 1 + b
Then b = -3
So the equation is
y = m * x + by = 5 * x 3
y = 5 * count - 3 174
22
12
7
2
number to print (y)
5
3
2
1
count (x)
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
35/36
35
Another perspective: Slope-intercept
Algebraically, if we always take the value of yatx = 1, then we can solve for bas follows:
y = m * x + b
y1 = m * 1 + b
y1= m + bb = y1m
In other words, to get the y-intercept, just subtract theslope from the first yvalue (b = 2 5 = -3) This gets us the equation
y = m * x + by = 5 * x 3
y = 5 * count 3
(which is exactly the equation from the previous slides)
-
8/11/2019 for_loop CIS 1068 FOR LOOP PPT
36/36
36
Loop table exercise
What statement could we write in the body of the loop that would
make the loop print the following output?
17 13 9 5 1
Let's create the loop table together.
Each time count goes up 1, the number should ...
But this multiple is off by a margin of ...
5-16
20
-12
-8
-4
count * -4
1
9
13
17
count * -4 + 21
54
1
9
13
17
number to print
5
3
2
1
count