Modern Programming Tools and Techniques-I: Lecture 4: Control Structures

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 43

Modern Programming Tools And

Techniques-I
Lecture 4: Control Structures
Selection Statements
Java supports two selection statements: if and switch.
if statement
if (condition) statement1;
else statement2;

Each statement may be a single statement or a compound statement


enclosed in curly braces (block).

The condition is any expression that returns a boolean value.

The else clause is optional.

If the condition is true, then statement1 is executed. Otherwise,


statement2 (if it exists) is executed.

In no case will both statements be executed.


Example: IfDemo.java
Nested ifs
A nested if is an if statement that is the target of another if
or else.
In nested ifs an else statement always refers to the nearest
if statement that is within the same block as the else and
that is not already associated with an else.

if (i == 10) {
if (j < 20) a = b;
if (k > 100) c = d; // this if is
else a = c; // associated with this else
}
else a = d; // this else refers to if(i == 10)
//PROGRAM TO CHECK WHETHER A NUMBER IS EVEN using IF
statement
public class Even
{
public static void main(String[] args)
{
int num=102;
if(num%2==0)
{
System.out.println(num +"is even");
}
System.out.println("\"End of program\"");//escape sequence
}
}
The if-else-if Ladder
A sequence of nested ifs is the if-else-if ladder.
if(condition)
statement;
else if(condition)
statement;
else if(condition)
statement;
...
else
statement;
The if statements are executed from the top to down.
//PROGRAM TO CHECK WHETHER A NUMBER IS EVEN OR ODD USING IF ELSE
import java.util.Scanner;//program uses scanner class for input
public class EvenOdd
{
public static void main(String [] args)
{int num; //create scanner object to obtain input from keyboard
Scanner input =new Scanner(System.in);//input is the object
System.out.print("Enter the number----->");//prompt for input
num=input.nextInt(); //Read Integer
if(num%2==0)
{System.out.println(num+" is even");}
else
{
System.out.println(num+" is odd");
}}}
QUICK PRACTICE

WAP TO FIND LARGEST OF THREE NUMBERS


USING NESTED IF ELSE
WAP TO CALCULATE THE DIVISION OF A
STUDENT ACCORDING TO MARKS OBTAINED
IN THREE SUBJECTS USING NESTED IF-ELSE
WAP TO FIND WHETER A YEAR IS LEAP YEAR
OR NOT
WAP TO CHECK WEATHER NUMBER IS +VE 0R
-VE OR ZERO
switch
The switch statement is Javas multi-way branch statement.
provides an easy way to dispatch execution to different parts of your
code based on the value of an expression.
provides a better alternative than a large series of if-else-if statements.
Example:--SampleSwitch.java

switch (expression) {
case value1:
// statement sequence
break;
case value2:
// statement sequence
break;
...
case valueN:
// statement sequence
break;
default:
// default statement sequence
}
The expression must be of type byte, short, int, or char.
Each of the values specified in the case statements must be of
a type compatible with the expression.
Each case value must be a unique literal (i.e. constant not
variable).
Duplicate case values are not allowed.
The value of the expression is compared with each of the
literal values in the case statements.
If a match is found, the code sequence following that case
statement is executed.
If none of the constants matches the value of the expression,
then the default statement is executed.
The default statement is optional.
If no case matches and no default is present, then no further
action is taken.
The break statement is used inside the switch to terminate a
statement sequence.
When a break statement is encountered, execution branches
to the first line of code that follows the entire switch
statement.
//PROGRAM TO SHOW WORKING OF SWITCH CASE

import java.util.Scanner;

class SampleSwitch

{public static void main(String args[])

{int choice;

System.out.println("Enter your choice--->");

Scanner input=new Scanner(System.in);

choice=input.nextInt();
switch(choice) {
case 0:
System.out.println("i is zero.");
break;
case 1:
System.out.println("i is one.");
break;
case 2:
System.out.println("i is two.");

break;
default:
System.out.println("i is greater than 2.");

} }}
Nested switch Statements
When a switch is used as a part of the statement sequence
of an outer switch. This is called a nested switch.
Example:NestedSwitch.java

switch(count) {
case 1:
switch(target) { // nested switch
case 0:
System.out.println("target is zero");
break;
case 1: // no conflicts with outer switch
System.out.println("target is one");
break;
}
break;
case 2: // ...
Difference between ifs and switch
switch can only test for equality, whereas if can evaluate any
type of Boolean expression. That is, the switch looks only for a
match between the value of the expression and one of its case
constants.

A switch statement is usually more efficient than a set of nested


ifs.

Note: No two case constants in the same switch can have


identical values. Of course, a switch statement and an enclosing
outer switch can have case constants in common.
Iteration Statements
(Loops)
Iteration Statements
In Java, iteration statements (loops) are:
for
while, and
do-while

A loop repeatedly executes the same set of


instructions until a termination condition is met.
While Loop
While loop repeats a statement or block while its controlling
expression is true.
The condition can be any Boolean expression.
The body of the loop will be executed as long as the
conditional expression is true.
When condition becomes false, control passes to the next
line of code immediately following the loop.
while(condition)
{
// body of loop
}
//PROGRAM TO DISPLAY EVEN NUMBER BETWEEN
1-15
public class EvenNum
{
public static void main(String[] args)
{
int count=2;
System.out.println("Even numbers between 1 and 15 are :");
while(count<=15)
{
System.out.print(count +"\t");
count+=2;
}
}
}
SumNaturalWhile.java
The body of the loop will not execute even once if the
condition is false.

The body of the while (or any other of Javas loops)


can be empty. This is because a null statement (one that
consists only of a semicolon) is syntactically valid in
Java.
do-while
The do-while loop always executes its body at least once,
because its conditional expression is at the bottom of the
loop.

do {
// body of loop
} while (condition);

Each iteration of the do-while loop first executes the body


of the loop and then evaluates the conditional expression.
If this expression is true, the loop will repeat. Otherwise,
the loop terminates.
//PROGRAM TO FIND SUM OF FIRST N NATURAL NUMBERS
import java.util.Scanner;
public class SumNatural
{public static void main(String[] args)
{int n,i=1,sum=0;
Scanner input=new Scanner(System.in);
System.out.print("Enter the number upto which you want to find sum--->");
n=input.nextInt();
do{
sum=sum+i;
i+=1;
}while(i<=n);
System.out.print("\nSum of first " + n +"numbers is ="+ sum);
}}
for Loop
for (initialization; condition; iteration)
{
// body
}

Initialization portion sets the value of loop control variable.


Initialization expression is only executed once.
Condition must be a Boolean expression. It usually tests the
loop control variable against a target value.
Iteration is an expression that increments or decrements the
loop control variable.
The for loop operates as follows.

When the loop first starts, the initialization portion of


the loop is executed.

Next, condition is evaluated. If this expression is true,


then the body of the loop is executed. If it is false, the
loop terminates.

Next, the iteration portion of the loop is executed.


class ForTable
{
public static void main(String args[])
{
int n;
int x=5;
for(n=1; n<=10; n++)
{
int p = x*n;
System.out.println(x+"*"+n +"="+ p);
}
}
}
//PROGRAM TO CALCULATE FACTORIAL OF A NUMBER
import java.util.Scanner;
public class FactorialN
{
public static void main(String[] args)
{
int n,fact=1,i;
Scanner input=new Scanner(System.in);
System.out.print("enter the number---->");
n=input.nextInt();
for(i=2;i<=n;i++)
fact *=i;
System.out.println("factorial of number " + n +" is = " +fact);
}
}
Declaring loop control variable inside loop
We can declare the variable inside the initialization
portion of the for.

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


{
System.out.println(i);
}
Note: The scope of this variable i is limited to the for
loop and ends with the for statement.
Using multiple variables in a for loop
More than one statement in the initialization and iteration
portions of the for loop can be used.

Example 1:
class var2 {
public static void main(String arr[]) {
int a, b;
b = 5;
for(a=0; a<b; a++) {
System.out.println("a = " + a);
System.out.println("b = " + b);
b--;
}
}
}
Comma (separator) is used while initializing multiple
loop control variables.
Example 2:

class var21
{
public static void main(String arr[]) {
int x, y;
for(x=0, y=5; x<=y; x++, y--) {
System.out.println("x= " + x);
System.out.println(y = " + y);
}
}
}
Initialization and iteration can be moved out from for loop.
Example 3:
class Loopchk
{
public static void main(String arr[])
{
for(int i=1, j=5; i>0 && j>2; i++, j--)
System.out.println("i is: "+ i + "and j is: "+j);
}
}
Nested Loops
class NestedLoop
{
public static void main(String arr[])
{
int i, j;
for(i=0; i<10; i++)
{
for(j=i; j<10; j++)
{
System.out.print(* );

System.out.println( );
}}
}
}
Enhanced for loop
As of Java 5, the enhanced for loop was introduced. This is mainly used to traverse
collection of elements including arrays.
Syntax
Following is the syntax of enhanced for loop
for(declaration : expression) { // Statements }
Declaration The newly declared block variable, is of a type compatible with the
elements of the array you are accessing. The variable will be available within the for
block and its value would be the same as the current array element.
Expression This evaluates to the array you need to loop through. The expression
can be an array variable or method call that returns an array.
Example:ForEach.java
public class Test {

public static void main(String args[]) {


int [] numbers = {10, 20, 30, 40, 50};

for(int x : numbers ) {
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names = {"James", "Larry", "Tom", "Lacy"};

for( String name : names ) {


System.out.print( name );
System.out.print(",");
}
}
}
Jump Statements
Java supports three jump statements:
break
continue
return
These statements transfer control to another part of the
program.

Break: break statement has three uses.


terminates a statement sequence in a switch statement
used to exit a loop
used as a civilized form of goto
Example 1:

class BreakLoop
{
public static void main(String arr[])
{
for(int i=0; i<100; i++)
{
if(i == 10) break;
// terminate loop if i is 10
System.out.println("i: " + i);
}
System.out.println("Loop complete.");
}
}
Java defines an expanded form of the break statement.
By using this form of break, we can break out of one or
more blocks of code.
These blocks need not be part of a loop or a switch. They
can be any block.
Further, we can specify precisely where execution will
resume, because this form of break works with a label.
break label;
When this form of break executes, control is transferred out of the
named block. The labeled block must enclose the break
statement.
class BreakLoop
{
public static void main(String arr[])
{
outer: for(int i=0; i<3; i++)
{
System.out.print("Pass " + i + ": ");
for(int j=0; j<100; j++)
{
if(j == 10) break outer; // exit both loops
System.out.print(j + " ");
}
System.out.println("This will not print");
}
System.out.println("Loops complete.");
}
}
//PROGRAM TO SHOW USE OF BREAK LABEL
public class BreakLabel
{
public static void main(String[] args)
{ int n,i,j;

outer:
for(i=1;i<=5;i++)
{
for(j=5;j<=10;j++)
{if(i*j>12)
break outer;
System.out.println(i +" * " +j +" = " +i*j);
}}}}
Continue
In while and do-while loops, a continue statement causes control to be
transferred directly to the conditional expression that controls the loop.
In a for loop, control goes first to the iteration portion of the for statement
and then to the conditional expression.
For all three loops, any intermediate code is bypassed.

Example:
class Continue
{
public static void main(String args[])
{
for(int i=0; i<5; i++)
{
System.out.println(i + " ");
if (i%2 == 0) continue;
System.out.println("No Continue");
}
}
}
Similar to break statement, Continue may specify a label to describe
which enclosing loop to continue.
Example:
class ContinueLabel
{
public static void main(String args[])
{
outer: for (int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
if(j > i)
{
System.out.println();
continue outer;
}
System.out.print(" " + (i * j));
}
}
System.out.println();
}
}
return
The return statement is used to explicitly return from a
method.
It causes program control to transfer back to the caller of
the method. if(t) statement is necessary. Without it, the Java compiler
Example: would flag an unreachable code error because the
compiler would know that the last println( ) statement
class Return { would never be executed.
public static void main(String args[]) {
boolean t = true;
System.out.println("Before the return.");
if(t) return; // return to caller
System.out.println("This won't execute.");
}
}
PRACTICE
WAP TO CALCULATE THE DIVISION OF A
STUDENT ACCORDING TO MARKS OBTAINED
IN THREE SUBJECTS USING NESTED IF-ELSE
WAP TO ADD ,SUBTRACT,MULTIPLY AND
DIVIDE TWO NUMBERS USING SWITCH
WAP TO FIND SUM OF DIGITS OF A NUMBER
USING WHILE
WAP TO FIND AVERAGE OF N NUMBERS
USING FOR LOOP.
WAP TO PRINT FIRST N PRIME NUMBERS
WAP to find factorial of a number using
while and for loop
WAP to print fib series using while and for
loop
Wap to find reverse of a number and
whether it is palindrome or not
WAP to find a number is amstrong
number(153=)

You might also like