comp-202: foundations of programmingcs202/2016-01/web/sec2/lecture4.pdf · •...
TRANSCRIPT
![Page 1: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/1.jpg)
COMP-202: Foundations of Programming
Lecture 4: Methods
Jackie Cheung, Winter 2016
![Page 2: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/2.jpg)
Announcements
Quiz 1 postponed:• Due Jan 26 at 11:59pm
Assignment 1 postponed: • Due on Feb 1 at 11:59pm
2
![Page 3: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/3.jpg)
Review
What is the difference between an int and a double?
What is the difference between byte, shorts, ints, and longs?
What is the different between a char and a String?
3
![Page 4: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/4.jpg)
This Lecture
Methods• Methods we’ve seen so far
• Using existing Python methods (e.g., String, Math)
• Defining our own methods
4
![Page 5: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/5.jpg)
Methods
We’ve been calling certain segments of code methods.public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
5
![Page 6: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/6.jpg)
Calling Methods
We call a method in order to execute the code contained in the method definition.
Some examples?• Every time you run a program, you are calling the
main method of some class of the program.
• System.out.println(<expr>) is a method call!
• Math.ceil(<num>) is a method call!
• Math.log(<num>) is a method call!
6
![Page 7: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/7.jpg)
Purposes of Methods
Some methods map an input value to an output value.
e.g., Math.ceil(double a) implements 𝑓(𝑥) = 𝑥 .
Others simply perform some useful action.e.g., System.out.println()prints a new line.
Still others do both of the above (return a value AND perform other actions).
7
![Page 8: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/8.jpg)
Using Java Libraries
The JDK comes with many libraries, which contain classes and methods for you to use.
• String library
• Math library
• Swing library (used for graphics)
• Libraries for networking
8
![Page 9: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/9.jpg)
Math Library
Contains useful and common methods you can use off-the-shelf (i.e., don't have to write yourself)
Also, constants like E or PI
How do you access them?
9
![Page 10: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/10.jpg)
Documentation
Read the Application Programming Interface(API) for the specification of a library.
e.g., Math library: http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html
What information do you get from an API?
10
![Page 11: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/11.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
11
Name of the method
![Page 12: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/12.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
12
The number and typeof input arguments
The name of the method together with the number and type of input arguments is called the signature of the method.
![Page 13: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/13.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
13
Description of what themethod does.
![Page 14: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/14.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
14
The return type of the method
![Page 15: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/15.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
15
This keyword means this method doesnot have to be called on a particularobject. Don't worry too much about itfor now.
![Page 16: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/16.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
16
Based on this API entry, we know that wecall use this method with something like:Math.abs(-4.0)
and that this expression evaluates into the value 4.0 with type double.
![Page 17: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/17.jpg)
Sample Entry
static double abs(double a)Returns the absolute value of a double value.
17
We also know thatMath.abs("5.0")
would result in an error.
![Page 18: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/18.jpg)
Questions
Give the input arguments (with types), and return types of the following Math library methods, and describe what they do.
Math.pow
Math.random
Math.max
18
![Page 19: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/19.jpg)
void Methods
The return type can be void; i.e., these methods do not return a value.
The purpose is to have side effects, not to compute a value directly.
• Note irony of term—side effects are intentional!
• e.g., System.out.println()
19
![Page 20: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/20.jpg)
Question
Why doesn’t this make sense?
String a = System.out.println("hi");
20
![Page 21: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/21.jpg)
Writing Your Own Methods
You can define your own methods!
Motivation:• Suppose I want to compute the log2 function
from last class, at multiple points in my program.
• I don't want to copy and paste the code into each point where I need it!
• Instead, I write the method once, which I call log2ceil(double x), and call it whenever I need to.
21
![Page 22: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/22.jpg)
Adding to Our Toolbox
Analogy: writing a new method is like adding to our toolbox for something we do often.
22
![Page 23: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/23.jpg)
How To Write A Method
public static double log2ceil(double x) {
// compute f(x) = ceil(log2(x))
double result = Math.log(x) / Math.log(2.0);
return Math.ceil(result);
}
23
Method signature, justlike in the APIKeywords,
return type of double
Curly braces to define method body
![Page 24: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/24.jpg)
General Form
Parts:1. Keywords (e.g., public static)
2. Return type (e.g., void, int, double)
3. Name of method (e.g., log2ceil)
4. Parentheses containing arguments with types
(e.g., double)
5. Body of the method (what it actually does)
Include return statement if return type is not void
24
![Page 25: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/25.jpg)
Methods That Return Values
What would the method definition look like for a method that computes the area of a circle?
public static double computeAreaCircle(double r)
What would the method definition look like for a method that compares two Strings and checks if one is the reverse of another?
public static boolean checkIfReversed(String s1,
String s2)
25
![Page 26: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/26.jpg)
Using Methods That Return Values
Since these methods return values (and may also have side effects), we can use the result as part of expressions.
// sum areas of two circles
double sumArea = computeAreaCircle(5.0) +
computeAreaCircle(4.0);
26
![Page 27: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/27.jpg)
How To Return Values
return <expression>;
e.g., A pretty useless method:public static int identity(int a) {
return a; // just return a itself
}
The expression returned must match what is expected in the header of the method.
Execution returns immediately to where the method was called.
27
![Page 28: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/28.jpg)
return Statement
public static double foo(double a) {
return a * 2;
return a * 3;
}
Second return statement is unreachable.
28
![Page 29: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/29.jpg)
Printing vs. Returning
Be careful of the difference:Write a method that prints the sum of three doubles
Write a method that returns the sum of three doubles
What would be the return type of the two methods?
29
![Page 30: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/30.jpg)
Tracing the Code
Let’s use our newly defined method multiple times, and trace the execution of the code!
30
![Page 31: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/31.jpg)
Trace this Codepublic class TraceLog2 {
public static void main(String[] args) {
System.out.println(log2ceil(3.0));
System.out.println(log2ceil(6.0));
System.out.println(log2ceil(9.0));
}
public static double log2ceil(double x) {
// compute f(x) = ceil(log2(x))
double result = Math.log(x) / Math.log(2.0);
return Math.ceil(result);
}
}
31
![Page 32: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/32.jpg)
Example: computeAreaCircle
Fill in the method body of computeAreaCircleLet's do this together.
32
![Page 33: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/33.jpg)
Exercise
Write a method called sayGreeting():it takes two Strings as input,
the first represents the speaker,
the second represents the listener,
it prints a String saying the speaker saying something to the listener, like "<Speaker> says hello to <Listener>"
33
![Page 34: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/34.jpg)
Methods Calling Methods
Methods can call other methods.e.g., Let’s implement a method that returns the volume of a sphere given its radius, and implement our own cube method!
34
![Page 35: COMP-202: Foundations of Programmingcs202/2016-01/web/sec2/lecture4.pdf · • System.out.println()is a method call! • Math.ceil ... return Math.ceil(result);}} 31](https://reader031.vdocuments.site/reader031/viewer/2022022602/5b591b407f8b9a31668cba66/html5/thumbnails/35.jpg)
Exercise: Die Roll
Write a method that returns a double, which is one of 1.0, 2.0, 3.0, 4.0, 5.0, or 6.0, each selected with equal probability. This corresponds to rolling a six-sided die.
• What is the return type?
• What is the list of arguments?
• Test your method by calling it in the main method.
• Use methods in the Math library to help you.
35