more loops linag, chpt 3, pp 82-99. the do-loop continue- condition ? loop-body statements next...

23
More loops Linag, Chpt 3, pp 82-99

Post on 21-Dec-2015

230 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

More loops

Linag, Chpt 3, pp 82-99

Page 2: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

The do-loop

continue-condition?

loop-body statements

next statement

false

true

WHILE-LOOP

continue-condition?

loop-body statements

next statement

false

true

DO-LOOP

Page 3: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Using a do-loopUse this form when you want the loop body to be executed at least once

int data;

int sum = 0;

String dataString;

do

{ dataString=JOptionPane.showInputDialog(null,”enter number:”);

data = Integer.parseInt(dataString);

sum += data;

} while (data != 0);

JOptionPane.showMessageDialog(null,”Numbers sum to ”+sum);

Page 4: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Things to know about do-loops

• The loop body will always be executed one

• The first execution is done before the guard is checked

• The do-loop is nothing more than a small variant of the while-loop

• It is often useful for checking user input

Page 5: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

When to use the do-loop?int sum;

int data;

String dataString;

dataString=JOptionPane.showInputDialog(null,”enter number:”);

data = Integer.parseInt(dataString);

while(data != 0)

{

dataString=JOptionPane.showInputMessage(null,”enter number:”);

data = Integer.parseInt(dataString);

sum = sum + data; //could have used: sum += data;

}

JOptionPane.showMessageDialog(null,”Numbers sum to ”+sum);

Page 6: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

A better wayint data;

int sum = 0;

String dataString;

do

{

dataString=JOptionPane.showInputDialog(null,”enter number:”);

data = Integer.parseInt(dataString);

sum += data;

} while (data != 0);

JOptionPane.showMessageDialog(null,”Numbers sum to ”+sum);

We don’t have to get the first piece of data, add it to the sum variable, and then start the loop.

Page 7: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

The for-loop

• The for-loop is another variant of the while loop

• Every for-loop can be written as a while loop

• Not every while-loop can be written as a for-loop

• Use a for-loop when you know exactly how many times the loop body should be executed

Page 8: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

The for loop: Three things in one line

for ( <initialization>; <guard>; <adjustment>)

{

...

}

1. Initialization: (declare and) set a counter, to 0. This is done before everything else.

2. Guard: loop ends when this is false. This is tested before each pass through the loop.

3. Adjustment: e.g. increment a counter. This is done at the end of each pass through the loop.

Page 9: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Examplesfor (int i=0; i<10; i++)

{

JOptionPane.showMessageDialog(null, “ ”+i);

}

int i;

for (i=10; i>0; i--)

{

JOptionPane.showMessageDialog(null, “ ”+i);

}

Page 10: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

From while to forint i = startValue;

while (i < endValue)

{

.....

i++;

}

for (int i=startValue; i<endValue; i++)

{

...

}

Page 11: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Flow of control in a for-loop

initialization

test guard

loop body

next statement

adjust

true

false

Page 12: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Rules and guidelines for “for”

• Counters can be declared and initialized in one go

• Never (never) change the value of the counter inside the loop body

• I mean it. Never do that!• If the loop body is one statement only, you

can omit the braces—but please don’t!• Indent the code within the loop body..

Page 13: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Examples// Compute sum = 0.01 + 0.02 + … + 1;

...

double sum = 0;

// Keep adding 0.01 to sum

for (double i=0.01; i <= 1.0 ; i = i+0.01)

{

sum += i;

}

JOptionPane.showMessageDialog("The sum is " + sum);

Page 14: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Common error

• The 3 elements of the for-loop header are sparated by semi-colons, not commas!

• Do this:• for (int i=0; i<10; i++)

• Not this:• for (int i=0, i<10, i++)

• Keep your loops as simple as possible

Page 15: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Nesting for-loops

• Inside the loop body of a for-loop, we can put another for-loop

• Each time through the 1st for-loop, we execute the 2nd loop until its guard is false

• Handy for printing tables like this: 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4

Page 16: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Simple examplefor (int i=0; i<5; i++)

{

for (int j=0; j<3; j++)

{

System.out.print(i+“ ”);

}

System.out.println();

}

Page 17: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Sample problem, p. 91

Multiplication table

---------------------------------

| 1 2 3 4 5 6 7 8 9

1 | 1 2 3 4 5 6 7 8 9

2 | 2 4 6 8 10 12 14 16 18

3 | 3 6 9 12 15 18 21 24 27

4 | 4 8 12 16 20 24 28 32 36

5 | 5 10 15 20 25 30 35 40 45

Page 18: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Nested for-loop example p. 91// Print table body for (int i=1; i<=9; i++) { output += i + " | "; for (int j=1; j<=9; j++) { // Display the product and align properly if (i*j < 10) output += " " + i*j; else output += " " + i*j; } output += “\n”; // the special character “\n” // represents the end of a line JOptionPane.showMessageDialog(null, output); }

Page 19: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

break-ing out of a loop

• Inside a loop body, the statement break; causes execution to leave the loop immediately.

• This is usually unnecessary, and shows that not enough though has gone into the development of a guard.

Page 20: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Example of break

int sum = 0;

int item = 0;

while (item < 5)

{

item ++;

sum += item;

if (sum >= 6) break;

}

System.out.println("The sum is " + sum);

Page 21: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

continue

• This keyword also stops interation of the loop body

• But...the program then starts the next iteration of the loop (testing the loop guard first)

• This is also usually unnecessary, and can be replaced by an if-statement.

Page 22: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Example of continue

int sum = 0;

int item = 0;

while (item < 5)

{

item++;

if (item == 2) continue;

sum += item;

}

System.out.println("The sum is " + sum);

Page 23: More loops Linag, Chpt 3, pp 82-99. The do-loop continue- condition ? loop-body statements next statement false true WHILE-LOOP continue- condition? loop-body

Case studies

• Study cases 3.7, 3.8 and 3.9,

• Liang, pp 99..106

• Compile and run the programs

• Study the logic of flow control

• Then go outside and do something else