21
CS 177 Week 9: Methods 1

CS 177

  • Upload
    lorin

  • View
    42

  • Download
    1

Embed Size (px)

DESCRIPTION

Week 9: Methods. CS 177. main() method. We have written lots of code so far It has all been inside of the main() method What about a big program? The main() method is going to get really long and hard to read Sometimes you need to do similar things several times: - PowerPoint PPT Presentation

Citation preview

Page 1: CS 177

1

CS 177Week 9: Methods

Page 2: CS 177

2

main() method We have written lots of code so far It has all been inside of the main() method What about a big program? The main() method is going to get really long

and hard to read Sometimes you need to do similar things

several times: Read some input and check that it falls within

certain values Draw the same image at several different locations Find the square root of several different numbers

Page 3: CS 177

3

Idea of a method

Methods allow you to package some code to run over and over again

Methods usually take some input (like numbers or Strings) so that they can be parameterized

Methods often give back an answer (like the square root of a number)

Methods are called functions in some other languages

Page 4: CS 177

4

Advantages of methods

More modular programming Break a program into separate tasks Each task could be assigned to a different

programmer Code reusability

Use code over and over Could be in a code library (like Math.sqrt()) Less code duplication

Improved readability Each method can do a few, clear tasks

Page 5: CS 177

5

Anatomy of a method

public static type name(type arg1,…,type argn){

statement1;statement2;…statementm;

}

Required syntaxType of answer

Name of last argument

Name of 1st argument

Name of method

Type of 1st argument

Type of last argument

Code done by method

Page 6: CS 177

6

Simple method example

Given two integers, find the smaller:public static int min(int a, int b){

if( a < b )return a;

elsereturn b;

}

Page 7: CS 177

7

Why static?

static methods are methods that are not connected to a particular type of object

They are just supposed to perform some simple task

We are going to focus on static methods until next week

For now, the definition of every method will include the static keyword

Page 8: CS 177

8

Value returning methods

It is possible to divide methods into two types: Value returning methods Void methods

Value returning methods return an answer:int small = min(x, y);

Page 9: CS 177

9

Void methods Void methods are declared with void as their

return type

Void methods just do something If you try to save the value they give back, there

will be an error

public static void help(int times) { for( int i = 1; i <= times; i++ ) System.out.println(“Help!”); return;}

Page 10: CS 177

10

return statements Like most code in Java, the code inside a

method executes line by line Of course, you are allowed to put conditional

statements and loops inside methods You can also put in return statements A method will stop executing and jump back

to wherever it was called from when it hits a return

The return statement is also where you can put a value that will be given back to the caller

Page 11: CS 177

11

Calling methods

Defining a method is only half the fun!

You have to call methods to use them

Calling a method means giving a method the parameters (or arguments) it needs and then waiting for its answer

By now, you have done many method calls System.out.println() Math.sqrt()

You can call your own methods the same way

Page 12: CS 177

12

Calling syntax

Proper syntax for calling a static method is first the name of the class that the method is in, a dot, the name of the method, then the arguments

If the method is in the same class as the code calling it, you can leave off the Class. part

If it is a value returning method, you can store that value into a variable of the proper type

Class.name(arg1, arg2, arg3);

Page 13: CS 177

13

Scope

Variables from outside of the method don’t exist unless they have been passed in as parameters

No matter how complex a program is, inside this method only x, y, and z variables exist

public static int add(int x, int y){

int z = x + y;return z;

}

Page 14: CS 177

14

Binding

A magical process called binding happens which copies the values from the calling code into the parameters of the method

The calling code can use variables with the same names, with different names, or even just literals (like 3 or 2.6758)

The method does not change the values of the variables in the original code

Remember it only has copies of the values

Page 15: CS 177

15

Binding example

No connection between the two different x’s and y’s

public static int add(int x, int y){int z = x + y; //5 + 10return z;

}

int a = 10;int x = 3;int y = add( 5, a ); //y contains 15 now

Page 16: CS 177

16

Static method rules

1. Start a method with the keywords public static

2. Next comes the return type3. Then the name of the method4. Then, in parentheses, the

arguments you want to give to the method

5. Inside braces, put the body of the method

6. Include a return statement that gives back a value if it is that type of method

Page 17: CS 177

17

Distance

Finding the Euclidean distance between two points is very important

There are applications in: Route planning Graphic design software Video games

Let’s make a method Formula: 2

212

21 )()( yyxxd

Page 18: CS 177

18

method euclid()

No matter how complex a program is, inside this method, only x, y, and z variables exist

public static double euclid (double x1, double x2, double y1, double y2){

double xsq = (x1-x2)*(x1-x2);double ysq = (y1-y2)*(y1-y2);double d = Math.sqrt(xsq+ysq);return d;

}

Page 19: CS 177

19

Conway’s Game of Life A cell is represented by a block in a grid Each cell has 8 neighbors Simple rules for a cell “coming to life” or

“dying”:1. A live cell with fewer than 2 live neighbors dies

from loneliness2. A live cell with more the 3 live neighbors dies

from overcrowding3. A live cell with exactly 2 or 3 neighbors keeps

living4. A dead cell with exactly 3 neighbors comes to life

Page 20: CS 177

20

method conway()

No matter how complex a program is, inside this method, only x, y, and z variables exist

public static void conway (int[][] cell, int m, int n){ int live = 0; for (int i=m-1; i<=m+1; i++) { for (int j=n-1; j<=n+1; j++) { if (cell(i,j)==1) live++; } }

Page 21: CS 177

21

method conway() (cont.)

No matter how complex a program is, inside this method, only x, y, and z variables exist

if (cell(m,n)==1) { live--; if (live < 2 || live > 3) cell(m,n) = 0; } else { if (live == 3) cell (m,n) = 1; }return;}