Professional Documents
Culture Documents
Lec 11
Lec 11
By
Dr. Bharati Mishra
Methods
Motivation
• Suppose we want to write a program to find the
sum of integers
• from 1 to 10
• from 20 to 30
• from 35 to 45
Naïve Solution
• Obvious solution
int sum = 0;
for (int i = 1; i <= 10; i++)
sum += i;
System.out.println("Sum from 1 to 10 is " + sum);
sum = 0;
for (int i = 20; i <= 30; i++)
sum += i;
System.out.println("Sum from 20 to 30 is " + sum);
sum = 0;
for (int i = 35; i <= 45; i++)
sum += i;
System.out.println("Sum from 35 to 45 is " + sum);
Refactor
• What about some refactoring?
int sum = 0;
for (int i = 1x ; i <= 10;
y i++)
sum += i;
x to 10
System.out.println("Sum from 1 y is " + sum);
sum = 0;
x
for (int i = 20; y
i <= 30; i++)
sum += i;
x to 30
System.out.println("Sum from 20 y is " + sum);
sum = 0;
x
for (int i = 35; y
i <= 45; i++)
sum += i;
y is " + sum);
x to 45
System.out.println("Sum from 35
Solution
• A better approach is to use a method
name
modifier output input
• Method is
• A collection of statements grouped together to
perform an operation
• To use a method
• We invoke the method
• E.g. int result = sum(1,10);
Method Signature
• Method signature
• Combination of the method name and the parameter
list
Method header
signature
Formal parameter
• Parameters
public static int sum(int x, int y)
{
int sum = 0;
for (int i = x; i <= y; i++)
sum += i;
return sum;
}
public static void main(String[] args)
{
int total1 = sum(1, 10);
} Actual parameter
Parameters
• Formal parameters:
• Variables defined in the method header
• Actual parameters:
• When a method is invoked, you pass a value to
the parameter. This value is referred to as
actual parameter or argument.
Output
TestMax
Program
• Passing arguments
public static void main(String[] args) public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
i is now 5
public static void main(String[] args) public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
j is now 2
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
public static void main(String[] args) public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
result is now 5
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Program Trace
finished
public static void main(String[] args) Public static int max(int x, int y)
{ {
int i = 5; int result= 0;
int j = 2;
int k = max(i, j); if(x > y)
} result = x;
else
result = y;
return result;
}
Modularizing Code
PrimeNumberMethod
Program
Decimal2HexConversion
Program Explained
Z
Y
x
Memory
• How memory is arranged
1. Registers
• Inside the processor, very limited, you have no direct access
2. RAM
• Stack memory
• Inside RAM, very fast, lifetime of objects should be known, all
primitive variables placed here
• Heap memory
• Inside RAM, reference values placed here
3. Constant values
• Will be directly replaced in code
Revisiting Program
Public static int max(int x, int y) public static void main(String[] args)
{ {
int result= 0; int i = 5;
int j = 2;
if(x > y) int k = max(i, j);
result = x; }
else
result = y;
return result;
}
Memory
• How memory is managed?
Space
Space required for
required for max
max method:
method: Result: 5
x:5 x:5
y:2 y:2
Actual Object
…
Space
required for
main
method:
r
(reference)
Heap Memory
Stack Memory
Pass by Reference
Space
required for
test
method: Actual Object
x
…
Space
required for
main
method:
r
(reference)
Heap Memory
Stack Memory
Passing Arguments
TestMethodOverloading
Tip
• Scope:
• Part of the program where the variable can be
referenced.
• A local variable:
• A variable defined inside a method.
• The scope of a local variable starts from its
declaration and continues to the end of the block
that contains the variable.
Variable Scope
• Example
• Math class provides many methods
• Trigonometric Methods
• Exponent Methods
• Rounding Methods
• min, max, abs, and random Methods
Stepwise Refinement
Task 3
Stepwise Refinement
PrintCalendar
Stepwise Refinement
Stepwise Refinement
Stepwise Refinement
Stepwise Refinement
Stepwise Refinement
Stepwise Refinement
Top Down Design
PrintCalendar
Program
RandomCharacter TestRandomCharacter