Algorithms
8 algorithm: A list of steps for solving a problem.
8 Example algorithm: "Bake cookies"
– Mix the dry ingredients.
– Cream the butter and sugar.
– Beat in the eggs.
– Stir in the dry ingredients.
– Set the oven temperature.
– Set the timer.
– Place the cookies into the oven.
– Allow the cookies to bake.
– Mix ingredients for frosting.
– ... 1
Problems with algorithms
8 lack of structure: Many small steps; tough to
remember.
8 redundancy: Consider making a double
batch...
– Mix the dry ingredients.
– Cream the butter and sugar.
– Beat in the eggs.
– Stir in the dry ingredients.
– Set the oven temperature.
– Set the timer.
– Place the first batch of cookies into the oven.
– Allow the cookies to bake.
– Set the oven temperature.
– Set the timer.
– Place the second batch of cookies into the oven.
– Allow the cookies to bake.
– Mix ingredients for frosting. 2
– ...
Structured algorithms
8 structured algorithm:
Split solution into coherent tasks.
1 Make the cookie batter.
– Mix the dry ingredients.
– Cream the butter and sugar.
– Beat in the eggs.
– Stir in the dry ingredients.
2 Bake the cookies.
– Set the oven temperature.
– Set the timer.
– Place the cookies into the oven.
– Allow the cookies to bake.
3 Add frosting and sprinkles.
– Mix the ingredients for the frosting.
– Spread frosting and sprinkles onto the cookies. 3
–
Removing redundancy
8 A well-structured algorithm can describe
repeated tasks with less redundancy.
1 Make the cookie batter.
– Mix the dry ingredients.
– ...
2a Bake the cookies (first batch).
– Set the oven temperature.
– Set the timer.
– ...
2b Bake the cookies (second batch).
3 Decorate the cookies. 4
Methods
8 static method: A named group of statements.
– denotes the structure of a program
class
– eliminates redundancy by code reuse method A
statement
statement
8 procedural decomposition: statement
dividing a problem into methods method B
– a way to manage complexity statement
statement
method C
8 Writing a method is like statement
statement
adding a new command to Java. statement
5
Using methods
1. Design the algorithm.
– Look at the structure, and which commands are repeated.
– Decide what are the important overall tasks.
– Good programmers do this BEFORE writing any code
2. Declare (write down) the methods.
– Arrange statements into groups and give each group a name.
3. Call (run) the methods.
– The program's main method executes the other methods to
perform the overall task.
6
Declaring a method
Gives your method a name so it can be
executed
8 Syntax:
public void <name>()
8 {
your code here!!
8
}
8 Example:
public void printWarning()
8 {
System.out.println("This product causes cancer");
System.out.println("in lab rats and humans."); 7
Calling a method
Executes the method's code
8 Syntax:
<name>();
– You can call the same method many times if you like.
8 Example:
printWarning();
– Output:
This product causes cancer
in lab rats and humans.
8
Program with static method
public class FreshPrince
{
public static void main(String[] args)
{
rap(); // Calling (running) the rap method
System.out.println();
rap(); // Calling the rap method again
}
// This method prints the lyrics to my favourite song.
public void rap()
{
System.out.println("Now this is the story all about how");
System.out.println("My life got flipped turned upside-down");
}
}
Output:
Now this is the story all about how
My life got flipped turned upside-down
Now this is the story all about how
9
My life got flipped turned upside-down
Final cookie program!
// This program displays a delicious recipe for baking cookies.
public class BakeCookies3
{
public static void main(String[] args)
{
makeBatter();
bake(); // 1st batch
bake(); // 2nd batch
decorate();
}
// Step 1: Make the cake batter.
public void makeBatter()
{
System.out.println("Mix the dry ingredients.");
System.out.println("Cream the butter and sugar.");
System.out.println("Beat in the eggs.");
System.out.println("Stir in the dry ingredients.");
}
// Step 2: Bake a batch of cookies.
public void bake()
{
System.out.println("Set the oven temperature.");
System.out.println("Set the timer.");
System.out.println("Place a batch of cookies into the oven.");
System.out.println("Allow the cookies to bake.");
}
// Step 3: Decorate the cookies.
public void decorate()
{
System.out.println("Mix ingredients for frosting.");
System.out.println("Spread frosting and sprinkles."); 10
}
}
Methods calling methods
public class MethodsExample
{
public void main(String[] args)
{
message1();
message2();
System.out.println("Done with main.");
}
public void message1()
{
System.out.println("This is message1.");
}
public void message2()
{
System.out.println("This is message2.");
message1();
System.out.println("Done with message2.");
}
}
8 Output:
This is message1.
This is message2.
This is message1.
Done with message2.
Done with main.
11
Control flow
8 When a method is called, the program's
execution...
– "jumps" into that method, executing its statements, then
– "jumps" back to the point where the method was called.
public class MethodsExample {
public static void main(String[] args) {
public static void message1() {
message1(); System.out.println("This is message1.");
}
message2();
public static void message2() {
System.out.println("This is message2.");
message1();
System.out.println("Done with main.");
System.out.println("Done with message2.");
} }
public static void message1() {
...
System.out.println("This is message1.");
} }
12
When NOT to use methods
8 You should not create static methods for:
– Only blank lines. (Put blank printlns in main.)
– Unrelated or weakly related statements.
(Consider splitting them into two smaller
methods.)
13
8 How many lines of output does the following program produce?
A. 3 B. 4
C. 8 D. 12
E. 20
8 ANSWER
A. 3 B. 4 C. 8 D. 12 E. 20