67
Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

Embed Size (px)

Citation preview

Page 1: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

1

Methods (Functions)

CSE 1310 – Introduction to Computers and ProgrammingVassilis Athitsos

University of Texas at Arlington

Page 2: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

2

Terminology: Methods/Functions• In Java, the term methods is the one mainly used.• In some other languages, the term functions is more

common.• In some languages (e.g., C++) methods and functions

have minor differences in meaning.• In this course, I will use the two terms (methods and

functions) as synonyms.

Page 3: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

3

A First Example

• Here we see our first example of a function.

• It is called square.– Its job is to

compute the square of a number.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

Page 4: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

4

What Is a Function• A function is a piece of

code that does a specific job.

• Usually (but not always) the job is to compute something.

• Examples:– Computing the square

of a number.– Determining if an

number is prime.– Computing the number

of digits of a number.– Counting the number of

vowels in a string.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

Page 5: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

5

How to Write a Function• Specify a name, like

square.import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

function name

Page 6: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

6

How to Write a Function• Specify a name, like

square.• Specify the inputs

(called arguments).– The arguments are the

input that the function needs in order to compute an output.

– For example, what does the square function take as input?

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

Page 7: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

7

How to Write a Function• Specify a name, like

square.• Specify the inputs

(called arguments).– The arguments are the

input that the function needs in order to compute an output.

– For example, what does the square function take as input?

• A number.– We can have functions

with 0, 1, or more arguments. We will see examples later.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

argument(s)

Page 8: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

8

How to Write a Function• Specify a name, like

square.• Specify the inputs

(called arguments).• Specify the return type

of the function.– What is the type of the

value that the function computes?

– In other words, what values are legal and illegal for the output of the function?

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

return type

Page 9: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

9

How to Write a Function• Specify a name, like

square.• Specify the inputs

(called arguments).• Specify the return type

of the function.• Specify what the

function does. This is what we call the body of the function.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

body

Page 10: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

10

How to Write a Function• Specify a name, like

square.• Specify the inputs

(called arguments).• Specify the return type

of the function.• Specify what the

function does. This is what we call the body of the function.

• Specify what value the function returns, using one or more return statements.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

return statement

Page 11: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

11

Using a Function (Function Calls)• Once you have written

a function, you can use it anywhere in your code, by doing a function call.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

function call

Page 12: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

12

Using a Function (Function Calls)• Once you have written

a function, you can use it anywhere in your code, by doing a function call.

• When you call a function, you must:– Provide the appropriate

argument(s).

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

argument(s)

Page 13: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

13

Using a Function (Function Calls)• Once you have written

a function, you can use it anywhere in your code, by doing a function call.

• When you call a function, you must:– Provide the appropriate

argument(s).– Use the return value

appropriately.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

storing the return value

Page 14: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

14

Using the Return Value• In the square function, the

return value is a double.• You can use this value in

any way that you can use any double number. Examples:

• You can store the return value in a variable.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N,

N_square); }}

storing the return value in a variable

Page 15: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

15

Using the Return Value• In the square function, the

return value is a double.• You can use this value in

any way that you can use any double number. Examples:

• You can store the return value in a variable.

• You can print the return value directly.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble(); System.out.printf("%.2f squared = %.2f\n", N,

square(N)); }}

printing the return value directly

Page 16: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

16

Using the Return Value• In the square function, the

return value is a double.• You can use this value in

any way that you can use any double number. Examples:

• You can store the return value in a variable.

• You can print the return value directly.

• You can use it as part of a more complicated expression.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble();

double my_var = 18 + square(N); System.out.printf("result = %.2f\n", my_var); }}

using the return value in an expression

Page 17: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

17

Using the Return Value• In the square function, the

return value is a double.• You can use this value in

any way that you can use any double number. Examples:

• You can store the return value in a variable.

• You can print the return value directly.

• You can use it as part of a more complicated expression.

• You can use it as an argument for another function call.

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; }

public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number: "); double N = in.nextDouble();

double my_var = 18 + square(square(N)); System.out.printf("result = %.2f\n", my_var); }}

the return value is used as argument for another function call

Page 18: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

18

Function Calls

• You can call a function as many times as you like.• On the next slide, we call the square function three

times.

Page 19: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

19

import java.util.Scanner;

public class example1{ public static double square(double number) { double result = number * number; return result; }

public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Please enter a number M: "); double M = in.nextDouble(); System.out.printf("Please enter a number N: "); double N = in.nextDouble();

double M_square = square(M); System.out.printf("%.2f squared = %.2f\n", M, M_square); double N_square = square(N); System.out.printf("%.2f squared = %.2f\n", N, N_square); double MN_square = square(M*N); System.out.printf("%.2f squared = %.2f\n", M*N, M*N_square); }}

Example: Calling the square function three times.

Page 20: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

20

Example: Printing Prime Numbers• Write a program

that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

Page 21: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

21

Example: Printing Prime Numbers• Write a program

that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

• First step:– Write the basic

structure of the program.

– Put placeholders where more detail is needed.

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if i is prime { System.out.printf("%d\n", i); } } }}

Page 22: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

22

Example: Printing Prime Numbers• Write a program

that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

• Second step:– Identify functions

that can be used to complete the program.

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if i is prime { System.out.printf("%d\n", i); } } }}

Page 23: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

23

Example: Printing Prime Numbers• Write a program

that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

• We can use a function is_prime to check if i is prime.

• Arguments?

• Return type?

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if i is prime { System.out.printf("%d\n", i); } } }}

Page 24: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

24

Example: Printing Prime Numbers• Write a program

that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

• We can use a function is_prime to check if i is prime.

• Arguments? an integer

• Return type? boolean

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if i is prime { System.out.printf("%d\n", i); } } }}

Page 25: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

25

Example: Printing Prime Numbers• Write a program

that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

• Step 3: use the function.– We have not written

the function yet, but that is OK.

– Obviously, the program will not run until we write the function.

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if (is_prime(i)) { System.out.printf("%d\n", i); } } }}

Page 26: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

26

import java.util.Scanner;

public class example1 { public static boolean is_prime(int N) { for (int i = 2; i < N; i++) { if (N % i == 0) { return false; } } return true; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if (is_prime(i)) { System.out.printf("%d\n", i); }}}}

• Write a program that:– Asks the user to

enter an integer N.– Prints all prime

integers from 2 up to (and including) N.

• Step 4: write the function.

Page 27: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

27

Output:

Enter an integer: 802357111317192329313741434753596167717379

import java.util.Scanner;

public class example1 { public static boolean is_prime(int N) { for (int i = 2; i < N; i++) { if (N % i == 0) { return false; } } return true; } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

for (int i = 2; i <= N; i++) { if (is_prime(i)) { System.out.printf("%d\n", i); }}}}

Page 28: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

28

Why Do We Need Functions• To write better code:

– More correct, easier to read/write/change.

• To write complicated code.• Functions help us organize code.

YOU CANNOT WRITE NON-TRIVIAL PROGRAMS IF YOU DO NOT USE FUNCTIONS

Page 29: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

29

Example: Prime Numbers, Again• Write a program that:

– Asks the user to enter an integer N.

– Prints out the smallest prime number greater than or equal to N.

Page 30: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

30

Example: Prime Numbers, Again• Write a program that:

– Asks the user to enter an integer N.

– Prints out the smallest prime number greater than or equal to N.

• First step:– Write the basic

structure of the program.

– Put placeholders where more detail is needed.

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

int i = N; while (i is not prime) { i++; } System.out.printf("%d\n", i); }}

Page 31: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

31

Example: Prime Numbers, Again• Write a program that:

– Asks the user to enter an integer N.

– Prints out the smallest prime number greater than or equal to N.

• Second step:– Identify functions that

can be used to complete the program.

• We can use the is_prime function again!!!

import java.util.Scanner;

public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt();

int i = N; while (is_prime(i) == false) { i++; } System.out.printf("%d\n", i); }}

Page 32: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

32

• Write a program that:– Asks the user to enter

an integer N.– Prints out the smallest

prime number greater than or equal to N.

• To complete the program, we can just use the is_prime function we already have.

• Functions make it really easy to re-use code!!!

import java.util.Scanner;

public class example1{ public static boolean is_prime(int N) { for (int i = 2; i < N; i++) { if (N % i == 0) { return false; } } return true; }

public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt(); while (is_prime(N) == false) { N++; } System.out.printf("%d\n", N); }}

Page 33: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

33

import java.util.Scanner;

public class example1{ public static boolean is_prime(int N) { for (int i = 2; i < N; i++) { if (N % i == 0) { return false; } } return true; }

public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter an integer: "); int N = in.nextInt(); while (is_prime(N) == false) { N++; } System.out.printf("%d\n", N); }}

Example Output:

Enter an integer: 10000001000003

Example Output:

Enter an integer: 123456789123456791

Example Output:

Enter an integer: 75007507

Page 34: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

34

Making Code Easier to Read• In lots of programs, we need to perform a task many

times.• Copying and pasting code can work, but has

disadvantages:• The resulting code can look long and ugly.• If we make a mistake, we end up copying and pasting

the mistake many times.– Fixing such mistakes, that have been copied and pasted

many times, can be a pain.

Page 35: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

35

Example: Input Validation• Write a program that:

– Asks the user to enter integers A, B, C.• if the user enters an invalid input, the program should keep asking

the user to enter a valid integer,

– Prints out the sum of the three integers.

Page 36: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

36

Example: Input Validation• Write a program that:

– Asks the user to enter integers A, B, C.• if the user enters an invalid input, the program should keep asking

the user to enter a valid integer,

– Prints out the sum of the three integers.

• A first version of the solution can be seen on the next slide.

Page 37: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

import java.util.Scanner;public class example1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int A; while (true) { System.out.printf("Enter integer A: "); String s = in.next(); try { A = Integer.parseInt(s); } catch (Exception e) { System.out.printf("Invalid input\n"); continue; } break; } int B; while (true) { System.out.printf("Enter integer B: "); String s = in.next(); try { B = Integer.parseInt(s); }

catch (Exception e) { System.out.printf("Invalid input\n"); continue; } break; } int C; while (true) { System.out.printf("Enter integer C: "); String s = in.next(); try { C = Integer.parseInt(s); } catch (Exception e) { System.out.printf("Invalid input\n"); continue; } break; } System.out.printf("A + B + C = %d\n", A +

B + C); }}

Page 38: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

38

Example: Input Validation• Write a program that:

– Asks the user to enter integers A, B, C.• if the user enters an invalid input, the program should keep asking

the user to enter a valid integer,

– Prints out the sum of the three integers.

• A first version of the solution can be seen on the previous slide.

• What is wrong with that code?

Page 39: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

39

Example: Input Validation• Solution:

Page 40: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

40

Example: Input Validation• Solution: write a function for getting an integer from

the user.• Name: user_integer• Arguments:

• Return value:

Page 41: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

41

Example: Input Validation• Solution: write a function for getting an integer from

the user.• Name: user_integer• Arguments:

– One argument - what we print to the user.– Type of the argument: String

• Return value:– int

Page 42: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

import java.util.Scanner;

public class example1{ public static int user_integer(String message) { Scanner in = new Scanner(System.in); int result; while (true) { System.out.printf(message); String s = in.next(); try { result = Integer.parseInt(s); } catch (Exception e) { System.out.printf("%s is not a valid integer.\n\n", s); continue; } return result; } }

public static void main(String[] args) { int A = user_integer("Enter integer A: "); int B = user_integer("Enter integer B: "); int C = user_integer("Enter integer C: "); System.out.printf("A + B + C = %d\n", A + B + C); }}

• Here we see a solution that defines and uses the user_integer function.

• The code is shorter.

• Unlike the previous version, code is not duplicated.

• The main function is short and easy to read.

Page 43: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

43

Example: Repeated Printing• Write a program that:

– Asks the user to enter a string S.– Asks the user to enter a number N.– Prints N times string S.

Enter string S: helloEnter integer N: 5hellohellohellohellohello

Example Output:

Page 44: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

44

Example: Repeated Printing• Write a program that:

– Asks the user to enter a string S.– Asks the user to enter a number N.– Prints N times string S.

• Let's write a function, that:– takes as input a

string S and an integer N.

– prints the stringN times.

import java.util.Scanner;public class example1{ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter string S: "); String S = in.next(); System.out.printf("Enter integer N: "); int N = in.nextInt(); print String S repeatedly, N times. }}

Page 45: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

45

Example: Repeated Printing• The complete

program is shown on the right.

• Function repeat_print has two features we have not seen before:

• It takes two arguments.

• It returns nothing.

import java.util.Scanner;public class example1{ public static void repeat_print(String message,

int times) { for (int i = 0; i < times; i++) { System.out.printf("%s\n", message); } } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter string S: "); String S = in.next(); System.out.printf("Enter integer N: "); int N = in.nextInt(); repeat_print(S, N); }}

Page 46: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

46

A Function That Returns Nothing• Function repeat_print

does something useful.• However, we do not

want any value returned from the function.

• In that case, we specify the return type of the function as void.

import java.util.Scanner;public class example1{ public static void repeat_print(String message,

int times) { for (int i = 0; i < times; i++) { System.out.printf("%s\n", message); } } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter string S: "); String S = in.next(); System.out.printf("Enter integer N: "); int N = in.nextInt(); repeat_print(S, N); }}

Page 47: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

47

The main Function• When Java executes a program, how does Java know

where to start?• Every program must have a function called main, such

that:– It takes one argument, of type String []. We will understand

this type in our next topic, when we do arrays. – the return type is void.

• Until we saw how to write functions, all our code used to go to main.

• Now that we have started using functions, the main code will be a relatively small part of the program.

• Functions will do the bulk of the work.

Page 48: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

48

Function Arguments• Functions have arguments.• To call a function XYZ, you write something like :

XYZ(argument_1, …, argument_N)

• How would you know how many arguments to use?

Page 49: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

49

Function Arguments• Functions have arguments.• To call a function XYZ, you write something like:

XYZ(argument_1, …, argument_N)

• How would you know how many arguments to use?– From the function definition, which (among other things)

defines EXACTLY:• how many arguments to use.• the type of each argument.• the order of the arguments.

public static type XYZ(type 1 arg_1, …, type_N arg_N)

Page 50: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

50

Executing a Function Call• When the body of the function starts executing, the

only variables visible to the function are:– the arguments.– variables defined in the body of the function.

Page 51: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

51

What Will This Program Do?public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 52: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

52

Step-by-step Execution

Current line

Main Namespace:public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 53: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

53

Step-by-step Execution

First line to execute:

variables in main:public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 54: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

54

Step-by-step Execution

variables in main:

var1 = "hello"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

First line creates variable var1

Page 55: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

55

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 56: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

56

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = goodbye

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 57: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

57

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 58: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

58

Step-by-step Execution

Next line to execute:function call

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Page 59: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

59

Step-by-step Execution

Next line to execute:function call.First, assign values to arguments.

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

variables in foo:

var1 = ???var2 = ???

Page 60: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

60

Step-by-step Execution

Next line to execute:function call.First, assign values to arguments.

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

variables in foo:

var1 = " earth "var2 = " moon "

Page 61: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

61

Step-by-step Execution

Next line to execute:How does Java know which var1 to print?

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

variables in foo:

var1 = " earth "var2 = " moon "

Page 62: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

62

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

variables in foo:

var1 = " earth "var2 = " moon "

Currently executing the body of foo. Only the variables of foo are visible. "hello" is printed.

Page 63: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

63

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

variables in foo:

var1 = " earth "var2 = " moon "

"moon" is printed.

Page 64: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

64

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

variables in foo:

var1 = " earth "var2 = " moon "

Which line comes next?

Page 65: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

65

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

Done with the function call.The variables of foo disappear.

Page 66: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

66

Step-by-step Execution

Next line to execute:

variables in main:

var1 = "hello"var2 = "goodbye"var3 = "earth"var4 = "moon"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}

"goodbye" is printed.

Page 67: Methods (Functions) CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1

67

Summary of Program Output

Output:

var1 = "earth"var2 = "moon"var2 = "goodbye"

public class example1{ public static void foo(String var1,

String var2) { System.out.printf("var1 = %s\n", var1); System.out.printf("var1 = %s\n", var2); } public static void main(String[] args) { String var1 = "hello"; String var2 = "goodbye"; String var3 = "earth"; String var4 = "moon"; foo(var3, var4); System.out.printf("var2 = %s\n", var2); }}