java iteration statements ● iteration statements are statements which appear in the source code...

33
Java iteration statements Iteration statements are statements which appear in the source code only once, but it execute many times. Such kind of statements are called loops. Almost all the programming languages support looping instructions. 1 a = b5; if( a >= c9) while( a >= 5 ) b = a / 10; a = a + 4; { c = a + b; else b = 9 + a; a = a – 7; a --;

Upload: spencer-gilmore

Post on 18-Jan-2016

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

1

Java iteration statements● Iteration statements are statements which appear in the

source code only once, but it execute many times.

● Such kind of statements are called loops. 

● Almost all the programming languages support looping instructions.

a = b5; if( a >= c9) while( a >= 5 ) b = a / 10; a = a + 4; { c = a + b; else b = 9 + a; a = a – 7; a --; } // while

Page 2: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

2

Iteration statements - Loops Java has three kinds of iteration statements ( הוראות חזרה/לולאות ) :

WHILE loop

FOR loop

DO . . . WHILE loop

Iteration (repetition) statements causes Java to execute one or more

statements as long as a condition exist.

Each repetition statement request :

1. a control variable / loop counter ( משתנה הלולאה/מונה הלולאה )

2. the initial value of control variable

3. the increment (decrement) by which the control variable

is modified each time through the loop

4. the loop continuation condition that determines if looping

should continue.

Page 3: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

3

Basic elements of iterations

/* example with the while statement

prints numbers from 1 through 10 */

public class While_Test1

{

public static void main(String[ ] args)

{

int counter = 1;

while(counter <= 10)

{

System.out.print(counter);

counter++;

} // while

System.out.println();

} // main

} // class

Declare and initialize control variable

Loop continuation condition

Increment control variable by 1

Page 4: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

4

Java Loop structures

?

?

While structureDo-while structure

Page 5: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

5

While loop statement

while (loop-continuation-condition) {

// loop-body;

Statement(s);

} //while

int count = 0;

while (count < 100) {

System.out.println("Welcome to Java!");

count++;

} // while

Loop Continuation Condition?

true

Statement(s) (loop body)

false (count < 100)?

true

System.out.println("Welcome to Java!"); count++;

false

(A) (B)

count = 0;

Page 6: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

6

We designate zero to be a sentinel (( קיףז value that indicates the end of

the input.

A sentinel must always be outside the normal range of values entered.

int sum = 0,num,count = 0;// sum of series, input variable and loop counter

double avg; // average of series

System.out.println(“enter an integer ( 0 to quit) : “);

num = reader.nextInt();

while (num != 0)

{

count++;

sum+ = num;

System.out.println(“enter an integer ( 0 to quit) : “);

num = reader.nextInt( );

} // while

avg = (double)sum/count;

System.out.println(“The average is : “ + avg);

Casting

Sentinel value of 0 to terminate loop.Sentinel value is not counted.

This program section reads a series of integers and computes their average.

Page 7: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

7

While loop example 1• Input :

– Two integers – num1 and num2

• Output :– How many times num1 contains num2

This is the result of the integer division num1/num2

• Note :

– Do not use the division operator ( / ) !

Page 8: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

8

Solutionpublic class Ex1While{ static Scanner reader = new Scanner(System.in); public static void main(String[ ] args) {

int res = 0; // help variable System.out.println(“enter two integers : “);

int num1 = reader.nextInt(); int num2 = reader.nextInt(); while ( (res+1) * num2 <= num1)

res ++; System.out.println(“num1 contains num2 : “ + res + ”

times”); } // main

} // class Ex1While

Declaration during input

Page 9: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

9

While loop example 2

public class Ex2While{ static Scanner reader = new Scanner(System.in); public static void main(String[ ] args) {

int res = 0; // ? System.out.println(“enter a positive number: “);

int num = reader.nextInt(); while ( num > 0 ) { res+ = num % 10; num/ = 10; } // while System.out.println(“res= : “ + res);

} // main} //class Ex2While

This program reads an integer and …?

Page 10: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

10

Infinite loops● It is the programmer’s responsibility to ensure that the

condition of a loop will eventually become false.

If it doesn’t, the loop body will execute forever.

● This situation, called an infinite loop ( לולאה אין סופית ).

Example 1: Example 2:

int count = 1; double num = 2.0;

while (count != 50) while ( num != 0.0)

count+ = 2; num = num - 0.1;

This loop will never terminate because count will never equal 50.

This loop will never terminate because num will never have a value exactly equal to 0.0

Page 11: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

11

FOR loop statement• Equivalent to while… Any for loop can be converted

to while loop and vice versa.

• If we want to perform something for a predefined number of times, better use for.

• If we just wait for something to happen (not after a certain number or iterations), better use while.

• The for loop has three expressions that are contained within parentheses and separated with a semicolon.

Page 12: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

12

FOR loop - structure

program statements before the for loop…

for ( ; ; ; ; ; ) {

}program statements after for loop…

Initialization Conditional Iteration

for loop body

for loop header

Page 13: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

13

FOR loop – order of execution

initialization

conditional

iteration For loop body

false

true

Three kinds of for loop header expressions

● Before the loop begins the first part of the header, called initialization, is executed.● The second part of the header is the boolean condition, which is evaluated before the loop body. If true ,the body is executed.● The iteration part is executed after each iteration of the loop.

Initialization is executed only once

Page 14: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

15

FOR loops example 1 This program section reads an integer and computes its

factorial ( n!).

int fact = 1; // factorial

System.out.println("enter an integer : ");

int n = reader.nextInt(); // input variable

for (int i = 1; i <= n ;i++)

fact *= i;

System.out.println( “ factorial is :" + fact);n i i<=n fact output

3 1

3 1 T 1

3 2 T 2

3 3 T 6

3 4 F 6

Before loop execution

Trace table ( מעקב ( טבלת

A trace table is a technique used to test programs.

input: 3

Page 15: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

16

Trace table (while)public static void main(String[ ] args){ int res = 0; // sum of digits System.out.println(“enter a positive number: “); int num = reader.nextInt( ); // num = 123

while ( num > 0) { res + =num % 10; num/ = 10; } // while

System.out.println(“res= : “+res);} // main

num>0 num%10 res num output

0 123

T 3 3 12

T 2 5 1

T 1 6 0

F 6

input: 123

Before loop execution

Page 16: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

17

FOR loops example 2

int prime = 1; / / help variable

System.out.println( “ enter an integer : “ );

int x = reader.nextInt(); / / input variable

if (x > 3)

{

for( int i = 2; i < x && prime == 1; i++ )

if( x%i == 0)

prime = 0;

switch (prime)

{

case 1:

System.out.println(x + " is prime number “ );

break;

case 0:

System.out.println(x + " is not prime number “ );

break;

} // switch

} // if (x>3)

else

System.out.println(x + " is prime number ");

This program section checks if the input integer is the prime number.

Page 17: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

18

Do …while loop statementdo{

statement(s)} while (expression) ;

• Similar to while loops– Except the condition is evaluated after the loop body. The condition is written at the end of the loop to indicate

that it is not evaluated until the loop body is executed.

– The loop body is always executed at least once, even if the expression is never true .

Note that the loop begins with the reserved word do

Note that the loop ends with semicolon

Page 18: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

19

Do …while loop execution

Loop Continuation Condition?

true

Statement(s) (loop body)

false

Page 19: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

20

Do …while loop example 1

// program statement before the do…while loop

System.out.print( "Please, enter a positive number: “ );do

{ int num = reader.nextInt();

if (num <= 0) System.out.println( “Input error ! Try again “ );} while ( num <= 0 );

// program statements after the do…while loop

Waiting for legal input

Page 20: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

21

Do …while loop example 2

int reversNum = 0; // reversed number

System.out.println("enter an integer : ");

int num = reader.nextInt( ); // input variable

do

{

int lastDigit = num % 10;

reversNum = (reversNum*10 )+ lastDigit;

num = num / 10;

} while (num > 0);

System.out.println(" That number reversed is “ + reversNum);

This program section reads an integer and reverses its digit mathematically.

Page 21: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

22

Do …while loop example 3

int x = 1; // ?

System.out.println("enter an integer : ");

int num = reader.nextInt( ); // input variable

do

{

x *= num;

} while ( -- num >= 1);

System.out.println(" x= “ + x );

This program section reads an integer and …?

Page 22: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

23

Trace table (do - while)int x = 1; // ?System.out.println("enter an integer : ");int num = reader.nextInt( ); // input variabledo{ x *= num;} while ( -- num >= 1);System.out.println(" x= “ + x );

x num -- num >= 1 output

1 3

3 2 T

6 1 T

6 0 F 6

Before loop execution

input: 3

Page 23: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

24

Fibonacci series

• The Fibonacci sequence is named after Leonardo of Pisa, who was known as Fibonacci.

• In mathematics, the Fibonacci numbers or Fibonacci series or Fibonacci sequence are the numbers in the following integer sequence:

n: 0 1 2 3 4 5 6 . . . : 0 1 1 2 3 5 8 . . .

0 n= 0

= 1 n=1

+ n >1

F n

F n

F n 1 F n 2

Number of element in the series

Page 24: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

25

Fibonacci series – solution

public static void main(String[ ] args) { int n; // number of element in the series do { System.out.print(" Enter an positive integer => "); n = reader.nextInt(); } while (n < 0); int Fn2 = 0 ; int Fn1 = 1 ; int Fn = 0 ; if ( n == 1 ) Fn = 1 ; for (int ind = 2 ; ind <= n ; ind++) { Fn = Fn1 + Fn2; Fn2 = Fn1; Fn1 = Fn; } // for System.out.println("Fib(“ + n + ") = “ + Fn);} // main

Page 25: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

26

Nested loops● The body of loop can contain another loop. This situation is

called a nested loop ( לולאות מקוננות ).

● Note, that for each iteration of outer loop, the inner loop

executes completely.

The next program section reads the integer number n,

real number x and calculates the sum of the mathemaitc

serias :

!...

!3!2!11

321

n

xxxx n

Page 26: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

27

Nested loops example 1double sum = 1.0; // sum of series int f; // n factorialdouble h; // x degree int i = 1; // loop counter System.out.print( "enter an integer : “ ); int n = reader.nextInt(); System.out.print( "enter real number : “ ); double x = reader.nextDouble(); while (i <= n)

{ outer loop ( לולאה חיצונית) f = 1; h = 1.0; for (int j = 1; j <= i ;j++) { f*= j; // calculates factorial inner loop ( לולאה פנימית )

h*= x; // calculates x degree } // for sum+=h/f; i++; } // while System.out.print( "sum = : "+sum );

Page 27: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

28

Nested loops example 2Write a program that reads the grades of 100 students .Each student takes different number of courses.

The program calculates and prints the average grade of each student. The program also calculates the number of excellent students ( average grade above 85 ).

For example: for the next three students we have the following output :Enter a grade -> 89Enter a grade -> 94Enter a grade -> 93Enter a grade -> 88Enter a grade -> -999The average of student number 1 is 91.0Enter a grade -> 78Enter a grade -> 76Enter a grade -> 68Enter a grade -> -999The average of student number 2 is 74.0Enter a grade -> 100Enter a grade -> 88Enter a grade -> 100Enter a grade -> 98Enter a grade -> -999The average of student number 3 is 96.5There are 2 excellent students

sentinels

Page 28: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

29

Nested loops example 2public static void main(String[] args)

{

int grd; // student's grade

int sum; // sum of grades

int count; // number of courses

int best = 0; // number of excellent students

double avg; // average grade

for(int i = 1; i <= 100; i++)

}

sum = count = 0;

System.out.print("Enter a grade -> ");

grd = reader.nextInt();

while(grd != -999)

{

sum += grd;

count++;

System.out.print("Enter a grade -> ");

grd = reader.nextInt();

} // while

avg = (double)sum/count;

System.out.println("The average of student number " + i + " is " + avg);

if(avg > 85)

best++;

} // for

System.out.println("There are " + best + " excellent students");

} // main

inner loop

outer loop

Page 29: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

30

Jump statements ( הוראות קפיצה )

• When break is encountered, the loop is exited regardless of whether the condition is still true.

The break statement tells Java to exit a code block ( loop body) defined by opening and closing braces and used in a loop.

The program then continues to run from the first line after the while/for/do…while body’s loop.

If called within a nested loop, break breaks out of the inner loop only.

• When continue is encountered, the rest of the loop is ignored.

The program then continues to run from the beginning of the loop.

A jump statement transfers control to another part of the program.There are two kinds of jump statements : break and continue.

Page 30: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

31

Using break statement program statement before the

loop …

loop(expression) {

.

.break;..

} //end loop

program statement after the loop …

program statement before the

nested loops …

loop1(expression1) {.

loop2(expression2) {.break;.

} // end loop2

// continue with loop1 } // end loop1program statement after the nested loops…

Page 31: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

32

Using continue statementprogram statement before the loop…

loop ( expression ) {

.

.continue;..

} // loop

program statements after the loop…// continue with the program

Ignore executing rest of the loop’s body in this iteration

Page 32: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

33

break and continue examples

Brake out of loop at i = 5

for (int i = 1; i <= 10; i++){ if (i == 5) break; System.out.print (i + “ “);} // forSystem.out.println ( );

Output : 1 2 3 4

Skip printing the value 5

for (int i = 1; i <= 10; i++){ if (i == 5) continue; System.out.print (i + “ “);} // forSystem.out.println ( );

Output : 1 2 3 4 6 7 8 9 10

Page 33: Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements

34

Caution !● Similarly, the following while loop is wrong:

int i = 0; while (i < 10);{ System.out.println("i is " + i); i++;}

● In the case of the do…while loop, the following semicolon is needed to end the loop.

int i = 0; do { System.out.println("i is " + i); i++;} while (i < 10);

Error !

Correct !