CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

27
CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3

Transcript of CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

Page 1: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Spring,2005

Control Flow

Lesson - 3

Page 2: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Objectives• Review of last class

• Statements and Blocks

• if-else

• Comparing values and objects

• switch

• while, do-while

• for

• break, labels, continue

Page 3: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Statements

• Expression Statement: Those that are terminated by a semi-colon.

• Assignment Expression: Those that contain =.• Declaration statements: Those that declare a

variable and initialize it to a value.• Method calls and control flow statements.• Object creation expressions.• Prefix or postfix forms of ++ and --.

Page 4: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Block

• A block statement groups together several statements, by enclosing them in braces {}.

• A block can be used where any single statement is allowed because a block is a compound statement.

Page 5: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

if-else

The if-else statement lets a program carry out different actions depending on the outcome of a condition. The syntax is:

if (boolean-expression)statement1

elsestatement2

The boolean expression is evaluated first. If its value is true, then statement1 is executed; otherwise, if there is an else clause, statement2 is executed. The else clause is optional.

Page 6: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Comparing Values

• The relational operators are used to compare values. Eg: >, >=, <, <=, ==. !=

• The == operator tests for equality.• To compare strings, use the equals method, not

the == operator .if (str1.equals(str2)) tests if they

are equal to each other.if (str1 == str2) tests whether the two

string variables refer to the identical string object.

Page 7: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Comparing Strings

• To ignore the letter case, use the equalsIgnoreCase method.

if (str1.equalsIgnoreCase(str2))

• To compare strings in dictionary order, use compareTo method.

if (str1.comapreTo(str2)) < 0 //str1 comes before the str2 in the dictionary. Eg: str1 =“Harry” and str2=“Hell”.

if ( str1.compareTo(str2)) > 0 //str1 comes after str2 in the dictionary

if (str1.comapreTo(str2)) == 0 //str1 equals str2

Page 8: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Comparing objects

• The == operator tests whether two object references are identical. To compare the contents of the objects, use the equals method.Rectangle cerealBox = new Rectangle(5,10,20,30);Rectangle r = cerealBox;Rectangle oatmealBox = new Rectangle(5,10,20,30);cerealBox == r is truecerealBox == oatmealBox is falsecerealBox.equals(oatmealBox); is true

• The null reference refers to no object. if (account == null) is valid.

Page 9: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

switch

• A sequence of if/else/else that compares a single integer value against several constant alternatives can be implemented as a switch statement.

int digit;………..switch (digit){

case 1: Sytem.out.print(“one”); break;case 2: Sytem.out.print(“two”); break;case 3: Sytem.out.print(“three”); break;default: Sytem.out.print(“error”); break;

}

Page 10: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

switch

For if statement the same example would be:

int digit;

……..

if (digit == 1) System.out.print(“one”);

else if (digit == 2) System.out.print(“two”);

else if (digit == 2) System.out.print(“three”);

else System.out.print(“error”);

Page 11: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

switch

• The test cases (in the above example “digit”) in a switch statement must be integers or characters.

switch (name)

{

case “one”: …break; //error

……

}

• If the break is missing, execution falls through to the next branch, and so on, until finally a break or end of the switch is reached.

Page 12: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Boolean Expressions

• Complex tests can be performed using the operators &&, || and !.

• if (0 < amt <1000)… // Error

if (0 < amt && amt <1000)… // correct

//tests if amt greater than 0 and less than 1000.

• if (ch == ‘S’ || ‘M)… // Error

if (ch == ‘S’ || ch == ‘M)… // Correct

// tests if the ch is ‘S’ or ‘M’.

Page 13: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Boolean Expressions

• if (!input.equals(“S))….// tests if the string input is not equal to “S”.

• private boolean married; // test of boolean in ifif (married)

……else

…….

Page 14: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Logical operationsA B A || B

true any true

false true true

false false false

A B A &&B

true true true

true false false

false any false

De-Morgan’s Law!(A && B) is same as !A || !B!(A || B) is same as !A && !B

A !A

true false

false true

Page 15: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

while

• A while statement executes a block of code repeatedly. A termination condition controls how often the loop is executed.

while (condition)

statements

If the condition is true then the loop will never end.

Page 16: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

while – Infinite loops

• A common reason for infinite loops is forgetting to advance the variable that controls the loop.

int years = 0;

while (years < 20)

{

double interest = balance * rate/100;

balance = balance + interest;

} // value of years is always 0

Page 17: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

while – Infinite loops

• Another common reason for infinite loop is accidentally incrementing a counter that should be decremented (or vice versa).int years = 20;

while (years > 0)

{

years++; // should have been years--;

double interest = balance * rate / 100;

balance = balance + interest;

}

Page 18: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

do-while

• Sometimes you want to execute the body of a loop at least once and perform the loop test after the body was executed.

do

statement

while (condition);• The statement is executed while the condition is true.

• The condition is tested after the statement is executed, so the statement is executed at least once.

Page 19: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

do-while

Suppose you want to make sure that a user enters a positive number.

double value;do {

// keep prompting the user for a positive number as // long as the user enters a negative number.

}while (value <= 0);

You need to get the user input before you can test it.

Page 20: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

for

The for statement is used to loop over a range of values from beginning to end.

for (init-expr; condition; incr-expr)statement;

This is equivalent toinit-expr;while (condition) {

statementincr-expr;

}

Page 21: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

for

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

{

statements…….

}

The initialization and iteration statements of a for loop can be a comma-separated list of expressions.

for (;;) - infinite for loopstatement

Page 22: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Labels

• Statements can be labeled.

• Labels are typically used on blocks and loops.

• A label precedes a statement. • label : statement • Java has no goto construct to transfer control to an

arbitrary statement in a method. Use a labeled break statement for purpose.

Page 23: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

Labels

outerloop:

while (outer loop condition)

{…….

while (inner loop condition)

{……

if (condition)

break outerloop;

}

}

}

jumps here once the if condition is true.

Page 24: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

break

A break statement is used to exit from any block, not just from a switch.

It can be used to exit a while, for or a do loop.public void breakLoop(String str){

int i = 0;while (i < 100) {

if (i == 10) break; // terminate loop if i is 10

System.out.println(“i: “ + i);i++;

}}

Page 25: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

continue

A continue statement skips to the end of a loop's body and evaluates the condition that controls the loop.

It has meaning only inside a loops.

It forces early iteration of a loop.

Page 26: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

continue

class Continue {

public static void main (String args[]) {

for (int i=0; I < 10; i++) {

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

if (i%2 == 0) continue;

System.out.println(“”);

}

}

}

Page 27: CSM-Java Programming-I Spring,2005 Control Flow Lesson - 3.

CSM-Java Programming-I Lesson-1

continue

In this example continue causes two numbers to be printed on each line. The % operator checks if i is even. If it is, the loop continues without printing a newline.

Result is : 0 12 34 56 78 9