Methods Chris Piech CS 106 A Stanford University

  • Slides: 170
Download presentation
Methods Chris Piech CS 106 A, Stanford University This is Method Man. He is

Methods Chris Piech CS 106 A, Stanford University This is Method Man. He is part of the Wu Tang Clan. Piech, CS 106 A, Stanford University

Goal Piech, CS 106 A, Stanford University

Goal Piech, CS 106 A, Stanford University

Milestone 1 Piech, CS 106 A, Stanford University

Milestone 1 Piech, CS 106 A, Stanford University

Milestone 2 Piech, CS 106 A, Stanford University

Milestone 2 Piech, CS 106 A, Stanford University

Milestone 3 Piech, CS 106 A, Stanford University

Milestone 3 Piech, CS 106 A, Stanford University

Civilization advances by extending the number of operations we can perform without thinking about

Civilization advances by extending the number of operations we can perform without thinking about them. -Alfred North Whitehead Piech, CS 106 A, Stanford University

Learn How To: 1. Write a method that takes in input 2. Write a

Learn How To: 1. Write a method that takes in input 2. Write a method that gives back output 3. Trace method calls using stacks Piech, CS 106 A, Stanford University

Calling Methods turn. Right(); move(); read. Int(“Int please! ”); println(“hello world”); rect. set. Filled(true);

Calling Methods turn. Right(); move(); read. Int(“Int please! ”); println(“hello world”); rect. set. Filled(true); draw. Robot. Face(); add(rect); prevent. Global. Warming(); Piech, CS 106 A, Stanford University

Defining a Method private void turn. Right() { turn. Left(); } Big difference with

Defining a Method private void turn. Right() { turn. Left(); } Big difference with Java methods: Java methods can take in data, and can return data! Piech, CS 106 A, Stanford University

Toasters are Methods For example: run. Toaster Piech, CS 106 A, Stanford University -

Toasters are Methods For example: run. Toaster Piech, CS 106 A, Stanford University - Thanks Mehran

Toasters are Methods parameter Piech, CS 106 A, Stanford University

Toasters are Methods parameter Piech, CS 106 A, Stanford University

Toasters are Methods parameter Piech, CS 106 A, Stanford University

Toasters are Methods parameter Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods return Piech, CS 106 A, Stanford University

Toasters are Methods return Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods * You don’t need a second toaster if you. Stanford want

Toasters are Methods * You don’t need a second toaster if you. Stanford want to University toast bagels. Use the same one. Piech, CS 106 A,

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Toasters are Methods Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters Piech, CS 106 A, Stanford University

Methods are Like Toasters return parameter(s) Piech, CS 106 A, Stanford University

Methods are Like Toasters return parameter(s) Piech, CS 106 A, Stanford University

Formally visibility type name. Of. Method(parameters) { statements } • visibility: usually private or

Formally visibility type name. Of. Method(parameters) { statements } • visibility: usually private or public • type: type returned by method (e. g. , int , double, etc. ) • Can be void to indicate that nothing is returned • parameters: information passed into method Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } method “definition” private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } Output expected Input expected private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } Return Type Parameters private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } name private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; body return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; return sum / 2; Ends the method and gives } back a single value Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; This statement is necessary return sum / 2; because average promised } to return a double Piech, CS 106 A, Stanford University

Anatomy of a method “call” public void run() { double mid = average(5. 0,

Anatomy of a method “call” public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method arguments public void run() { double mid = average(5. 0,

Anatomy of a method arguments public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method Return Type Parameters public void run() { double mid =

Anatomy of a method Return Type Parameters public void run() { double mid = average(5. 0, 10. 2); println(mid); } private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Anatomy of a method public void run() { double mid = average(5. 0, 10.

Anatomy of a method public void run() { double mid = average(5. 0, 10. 2); println(mid); } When a method ends it “returns” private double average(double a, double b) { double sum = a + b; return sum / 2; } Piech, CS 106 A, Stanford University

Parameters let you provide a method some information when you are calling it. Piech,

Parameters let you provide a method some information when you are calling it. Piech, CS 106 A, Stanford University

Learn by Example Piech, CS 106 A, Stanford University

Learn by Example Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part

Void Example private void print. Intro() { println("Welcome to class"); println("It's the best part of my day. "); } public void run() { print. Intro(); } Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Parameter Example private void print. Opinion(int num) { if(num == 5) { println(“I love

Parameter Example private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num ==

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num ==

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory print. Opinion memory No variables private void print. Opinion(int num)

Parameter Example Run memory print. Opinion memory No variables private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables print. Opinion memory num private void print. Opinion(int

Parameter Example Run memory No variables print. Opinion memory num private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables print. Opinion memory num 5 private void print.

Parameter Example Run memory No variables print. Opinion memory num 5 private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables print. Opinion memory num 5 private void print.

Parameter Example Run memory No variables print. Opinion memory num 5 private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables print. Opinion memory num 5 private void print.

Parameter Example Run memory No variables print. Opinion memory num 5 private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables print. Opinion memory num 5 private void print.

Parameter Example Run memory No variables print. Opinion memory num 5 private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num ==

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num ==

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num ==

Parameter Example Run memory No variables private void print. Opinion(int num) { if(num == 5) { println(“I love 5!”); } else { println(“Whattever”); } } public void run() { print. Opinion(5); } Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Parameter and Return Example private double meters. To. Cm(double meters) { return 100 *

Parameter and Return Example private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory No variables private double meters. To. Cm(double meters)

Parameter and Return Example Run memory No variables private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory No variables private double meters. To. Cm(double meters)

Parameter and Return Example Run memory No variables private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory meteres. To. Cm memory No variables private double

Parameter and Return Example Run memory meteres. To. Cm memory No variables private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory No variables meteres. To. Cm memory meters 5.

Parameter and Return Example Run memory No variables meteres. To. Cm memory meters 5. 2 private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory No variables meteres. To. Cm memory meters 5.

Parameter and Return Example Run memory No variables meteres. To. Cm memory meters 5. 2 private double meters. To. Cm(double meters) { return 100 * meters; ; 520. 0 } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory No variables private double meters. To. Cm(double meters)

Parameter and Return Example Run memory No variables private double meters. To. Cm(double meters) { return 100 * meters; ; } 520. 0 public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory result 520. 0 private double meters. To. Cm(double

Parameter and Return Example Run memory result 520. 0 private double meters. To. Cm(double meters) { return 100 * meters; ; } 520. 0 public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Parameter and Return Example Run memory result 520. 0 private double meters. To. Cm(double

Parameter and Return Example Run memory result 520. 0 private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { double result = meters. To. Cm(5. 2); println(result); } Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Parameter and Return Example private double meters. To. Cm(double meters) { return 100 *

Parameter and Return Example private double meters. To. Cm(double meters) { return 100 * meters; ; } public void run() { println(meters. To. Cm(5. 2)); println(meters. To. Cm(9. 1)); } Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Multiple Return Statements private int max(int num 1, int num 2) { if(num 1

Multiple Return Statements private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 num 2 private

Multiple Return Statements Run memory No variables max memory num 1 num 2 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 5 num 2

Multiple Return Statements Run memory No variables max memory num 1 5 num 2 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 5 num 2

Multiple Return Statements Run memory No variables max memory num 1 5 num 2 1 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 5 num 2

Multiple Return Statements Run memory No variables max memory num 1 5 num 2 1 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 5 num 2

Multiple Return Statements Run memory No variables max memory num 1 5 num 2 1 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 5 num 2

Multiple Return Statements Run memory No variables max memory num 1 5 num 2 1 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; 5 } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 5 num 2

Multiple Return Statements Run memory No variables max memory num 1 5 num 2 1 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } 5 public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } 5 public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } 5 public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Multiple Return Statements private int max(int num 1, int num 2) { if(num 1

Multiple Return Statements private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(5, 1); } Piech, CS 106 A, Stanford University

Multiple Return Statements private int max(int num 1, int num 2) { if(num 1

Multiple Return Statements private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 num 2 private

Multiple Return Statements Run memory No variables max memory num 1 num 2 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 1 num 2

Multiple Return Statements Run memory No variables max memory num 1 1 num 2 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 1 num 2

Multiple Return Statements Run memory No variables max memory num 1 1 num 2 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables max memory num 1 1 num 2

Multiple Return Statements Run memory No variables max memory num 1 1 num 2 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; 5 } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory No variables private int max(int num 1, int num

Multiple Return Statements Run memory No variables private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } 5 public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } 5 public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num

Multiple Return Statements Run memory larger 5 private int max(int num 1, int num 2) { if(num 1 >= num 2) { return num 1; } return num 2; } public void run() { int larger = max(1, 5); } Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Method for Weight on Moon * Your weight on the moon is 16. 5%

Method for Weight on Moon * Your weight on the moon is 16. 5% your weight on the earth Piech, CS 106 A, Stanford University

Passing in Classes Piech, CS 106 A, Stanford University

Passing in Classes Piech, CS 106 A, Stanford University

A Full Program public class Factorial. Example extends Console. Program { private static final

A Full Program public class Factorial. Example extends Console. Program { private static final int MAX_NUM = 4; public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } private int factorial(int n) { int result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } }

A Full Program public class Factorial. Example extends Console. Program { private static final

A Full Program public class Factorial. Example extends Console. Program { private static final int MAX_NUM = 4; public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } private int factorial(int n) { int result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } }

Understand the Mechanism

Understand the Mechanism

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0 result i

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0 result 1 i

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0 result 1 i 1

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0 result 1 i 1

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0 result 1 i 1

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 1 } i 0

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 1 } i 0! = 1 0

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result i

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i 1

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i 1

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i 1

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i 2

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i 2

public void run() { private n) i++) { for(int i = factorial(int 0; i

public void run() { private n) i++) { for(int i = factorial(int 0; i < MAX_NUM; { int result + = "! 1; = " + factorial(i)); println(i } for (int i = 1; i <= n; i++) { result *= i; } } 0 return result; } i n 0! = 1 1 result 1 i 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 1 } i 0! = 1 1

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 1 } i 0! = 1 1

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 2 } i 0! = 1 1! = 1 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 2 } i 0! = 1 1! = 1 2! = 2 2

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2! = 2 3

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2! = 2 3

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2! = 2 3

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! = 1 1! = 1 2! = 2 3

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 6 } i 0! = 1 1! = 1 2! = 2 3

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } 6 } i 0! 1! 2! 3! = = 1 1 2 6 3

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! 1! 2! 3! = = 1 1 2 6 4

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i

public void run() { for(int i = 0; i < MAX_NUM; i++) { println(i + "! = " + factorial(i)); } } i 0! 1! 2! 3! = = 1 1 2 6 4

Parameters Every time a method is called, new memory is created for the call.

Parameters Every time a method is called, new memory is created for the call. Piech, CS 106 A, Stanford University

Bad Times With Methods // NOTE: This program is buggy!! private void add. Five(int

Bad Times With Methods // NOTE: This program is buggy!! private void add. Five(int x) { x += 5; } public void run() { int x = 3; add. Five(x); println("x = " + x); } Let’s “trace” this program on the board Piech, CS 106 A, Stanford University

Good Times With Methods // NOTE: This program is feeling just fine. . .

Good Times With Methods // NOTE: This program is feeling just fine. . . private int add. Five(int x) { x += 5; return x; } public void run() { int x = 3; x = add. Five(x); println("x = " + x); } Piech, CS 106 A, Stanford University

For primitives: Variables are not passed when you use parameters. Values are passed Piech,

For primitives: Variables are not passed when you use parameters. Values are passed Piech, CS 106 A, Stanford University

Pass by “Value” Piech, CS 106 A, Stanford University - Thanks Mehran

Pass by “Value” Piech, CS 106 A, Stanford University - Thanks Mehran

More Examples Piech, CS 106 A, Stanford University

More Examples Piech, CS 106 A, Stanford University

Changed Name private void run() { int num = 5; cow(num); } private void

Changed Name private void run() { int num = 5; cow(num); } private void cow(int grass) { println(grass); } Piech, CS 106 A, Stanford University

Same Variable Name private void run() { int num = 5; cow(); println(num); }

Same Variable Name private void run() { int num = 5; cow(); println(num); } private void cow() { int num = 10; println(num); } Piech, CS 106 A, Stanford University

No Methods in Methods private void run() { println(“hello world”); private void say. Goodbye()

No Methods in Methods private void run() { println(“hello world”); private void say. Goodbye() { println(“goodbye!”); } } Illegal modifier for parameter goodbye, only final is permitted Huh? !? Piech, CS 106 A, Stanford University

No Methods in Methods private void run() { println(“hello world”); say. Goodbye(); } private

No Methods in Methods private void run() { println(“hello world”); say. Goodbye(); } private void say. Goodbye() { println(“goodbye!”); } Piech, CS 106 A, Stanford University

Learn How To: 1. Write a method that takes in input 2. Write a

Learn How To: 1. Write a method that takes in input 2. Write a method that gives back output 3. Trace method calls using stacks Piech, CS 106 A, Stanford University

Remember Booleans? Piech, CS 106 A, Stanford University

Remember Booleans? Piech, CS 106 A, Stanford University

Boolean Variable boolean karel. Is. Awesome = true; boolean my. Bool = 1 <

Boolean Variable boolean karel. Is. Awesome = true; boolean my. Bool = 1 < 2; Piech, CS 106 A, Stanford University

Boolean Operations boolean a = true; boolean b = false; boolean and = a

Boolean Operations boolean a = true; boolean b = false; boolean and = a && b; boolean or = a || b; boolean not = !a; Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Piech, CS 106 A, Stanford University

Is Square private void run() { for(int i = 1; i <= 100; i++)

Is Square private void run() { for(int i = 1; i <= 100; i++) { if(is. Square(i)) { println(i); } } } Piech, CS 106 A, Stanford University

Boolean Return public void run() { for(int i = 1; i <= 100; i++)

Boolean Return public void run() { for(int i = 1; i <= 100; i++) { if(is. Square(i)) { println(i); } } } private boolean is. Square(int x) { double root = Math. sqrt(x); if(root == Math. floor(root)) { return true; } else { return false; } } Piech, CS 106 A, Stanford University

Boolean Return public void run() { for(int i = 1; i <= 100; i++)

Boolean Return public void run() { for(int i = 1; i <= 100; i++) { if(is. Square(i)) { println(i); } } } private boolean is. Square(int x) { double root = Math. sqrt(x); return root == Math. floor(root); } Piech, CS 106 A, Stanford University

Boolean Return public void run() { for(int i = 1; i <= 100; i++)

Boolean Return public void run() { for(int i = 1; i <= 100; i++) { if(is. Square(i)) { println(i); } } } private boolean is. Square(int x) { double root = Math. sqrt(x); return root == (int)root; } Piech, CS 106 A, Stanford University

Extra Exercise • Greek mathematicians took a special interest in numbers that are equal

Extra Exercise • Greek mathematicians took a special interest in numbers that are equal to the sum of their proper divisors (a proper divisor of n is any divisor less than n itself). They called such numbers perfect numbers. For example, 6 is a perfect number because it is the sum of 1, 2, and 3, which are the integers less than 6 that divide evenly into 6. Similarly, 28 is a perfect number because it is the sum of 1, 2, 4, 7, and 14. • Design and implement a Java program that finds all the perfect numbers between two limits. For example, if the limits are 1 and 10000, the output should look like this: Find. Perfect The perfect numbers between 1 and 10000 are: 6 28 496 8128 Piech, CS 106 A, Stanford University