Building Java Programs

Lab: For loops

Except where otherwise noted, the contents of this document are Copyright 2019 Stuart Reges and Marty Stepp.

Lab goals

Goals for this problem set:

for loops

A for loop repeats a group of statements a given number of times.

for (initialization; test; update) {
    statement(s) to repeat;
}

Example:

for (int i = 1; i <= 10; i++) {
    System.out.println("We're number one!");
}

Exercise : Bottles of beer practice-it

Exercise : for loop table practice practice-it

Create a table of the number of stars on each line:

*******
*****
***
*
line stars
1
7
2
5
3
3
4
1

multiplier: How much does the # of stars change between lines? -2

shift: Given your multiplier, what must be added to get that many stars on line 1? 9

Use the form:

for (int stars = 1; stars <= multiplier * line + shift; stars++) {

Exercise : simple for loop practice-it

Exercise : Sequence of numbers

Exercise : Sequence of characters

Exercise : What's the output? practice-it

What output is produced by the following Java program? Write the output in the box on the right side.

public class OddStuff {
    public static void main(String[] args) {
        int number = 32;
        for (int count = 1; count <= number; count++) {
            System.out.println(number);
            number = number / 2;
        }
    }
}

Output:

32
16
8
4

Exercise : Number lines, part 1 practice-it

Exercise : Number lines, part 2 practice-it

Exercise : Number lines, part 3 practice-it

Exercise : What's the output?

Exercise - answer

Exercise : What's the output?

Exercise - answer

Answer:

1	2	3	4	5	6	7	8	9	10
2	4	6	8	10	12	14	16	18	20
3	6	9	12	15	18	21	24	27	30
4	8	12	16	20	24	28	32	36	40
5	10	15	20	25	30	35	40	45	50
6	12	18	24	30	36	42	48	54	60
7	14	21	28	35	42	49	56	63	70
8	16	24	32	40	48	56	64	72	80
9	18	27	36	45	54	63	72	81	90
10	20	30	40	50	60	70	80	90	100

Exercise : printing a design practice-it

Write a program to produce the following output using nested for loops. Use a table to help you figure out the patterns of characters on each line.

-----1-----
----333----
---55555---
--7777777--
-999999999-
Line Dashes Numbers
1
5
1
2
4
3
3
3
5
4
2
7
5
1
9
dashes expression
-1
* line +
6
numbers expression
2
* line +
-1

Exercise : SlashFigure practice-it

Write a Java program in a class named SlashFigure to produce the following output with nested for loops. Use a loop table if necessary to figure out the expressions.

!!!!!!!!!!!!!!!!!!!!!!
\\!!!!!!!!!!!!!!!!!!//
\\\\!!!!!!!!!!!!!!////
\\\\\\!!!!!!!!!!//////
\\\\\\\\!!!!!!////////
\\\\\\\\\\!!//////////
Line \ ! /
1
0
22
0
2
2
18
2
3
4
14
4
4
6
10
6
5
8
6
8
6
10
2
10
multiplier
2
-4
2
shift
-2
26
-2

Class constants

A class constant is a global value that cannot be changed.

public static final type name = expression;

Example:

public static final int DAYS_PER_WEEK = 7;
public static final double TAX_RATE = 0.10;

for loop expressions w/ constant

When adding a class constant to a loop expression, it affects the constant that must be added in the expression. Suppose we have the two loop expressions below for figure sizes of 5 and 9. The third line of the table shows the general formula that would be used if we turned our figure's size into a constant named SIZE.

size expression relationship
5 8 * line + 16 16 = 3 * 5 + 1
9 8 * line + 28 28 = 3 * 9 + 1
SIZE 8 * line + (3 * SIZE + 1)

continued on the next slide ...

Exercise : for loop table w/ constant

You already found loop expressions for the slash figure at size 6. Now make a table at size 4 and use the two to generalize the loop expression in terms of a constant for the figure size.

!!!!!!!!!!!!!!
\\!!!!!!!!!!//
\\\\!!!!!!////
\\\\\\!!//////
Line \ ! /
1
0
14
0
2
2
10
2
3
4
6
4
4
6
2
6
\ and /
size 6  2 * line +
-2
size 4  2 * line +
-2
size SIZE  2 * line +
-2
!
size 6 -4 * line +
26
size 4 -4 * line +
18
size SIZE -4 * line + (
4
 * SIZE +
2
)

Exercise : SlashFigure2

Exercise : Debugger

continued on the next slide...

Exercise - Debugger

continued on the next slide...

Exercise - Debugger

Variable Scope

A variable's scope is the part of a program in which it exists. In Java, the scope of a variable starts when it is declared and ends when the closing curly brace for the block that contains it is reached. A variable is said to be in scope where it is accessible.

public class Example {
    public static void main(String[] args) {
        performTest();
    }
	
    public static void performTest() {
        int count = 12;
        for (int i = 1; i <= 12; i++) {
            runSample();
            System.out.print(count);   
        }
    }

    public static void runSample() {
	    System.out.print("sample");
    }
} 
In which of these two blocks is the variable count in scope?