0% found this document useful (0 votes)
4 views

06 Ch03 1 Parameters

Uploaded by

cnthmndz18c
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

06 Ch03 1 Parameters

Uploaded by

cnthmndz18c
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Building Java Programs

Chapter 3
Lecture 3-1: Parameters

reading: 3.1
self-check: #1-6
exercises: #1-3
videos: Ch. 3 #1

Copyright 2009 by Pearson Education


An eventful day
 Imagine the following to-do list:

To Do
 Bake 20 cookies
 Take a nap
 Bake 40 cookies
 Take a walk
 Bake 27 cookies

Copyright 2009 by Pearson Education 2


Redundant recipes
 Could store 3 copies of the recipe:

Recipe for baking 20 cookies:


 Mix the following ingredients in a bowl:
 4 cups flour
 1 cup butter
 1 cup sugar
 2 eggs…
 Place on sheet and Bake for about 10 minutes.

Recipe for baking 40 cookies:


 Mix the following ingredients in a bowl:
 8 cups flour
 2 cups butter
 2 cups sugar
 4 eggs
 Place on sheet and Bake for about 10 minutes.

Copyright 2009 by Pearson Education 3
Parameterized recipe
 Recipe for baking 20 cookies:
 Mix the following ingredients in a bowl:
 4 cups flour
 1 cup sugar
 2 eggs
 ...

 Less redundant: One recipe for baking N cookies:


 Mix the following ingredients in a bowl:
N/5 cups flour

N/20 cups butter

N/20 cups sugar

N/10 eggs

N/20 bags chocolate chips ...

 Place on sheet and Bake for about 10 minutes.

 parameter: A value that distinguishes similar tasks.

Copyright 2009 by Pearson Education 4


Redundant figures
 Consider the task of printing the following lines/boxes:
*************
*******
***********************************
**********
* *
**********
*****
* *
* *
*****

Copyright 2009 by Pearson Education 5


A redundant solution
public class Stars1 {
public static void main(String[] args) {
lineOf13();  This code is redundant.
lineOf7();
lineOf35();
box10x3();  Can we solve this with
box5x4();
}  Nested for-loops?
public static void lineOf13() {
for (int i = 1; i <= 13; i++) {  Variables?
System.out.print("*");
}  Constants?
System.out.println();
}
public static void lineOf7() {
for (int i = 1; i <= 7; i++) {  What is a better solution?
System.out.print("*");
}
System.out.println();
}
public static void lineOf35() {
for (int i = 1; i <= 35; i++) {
System.out.print("*");
}
System.out.println();
}
...

Copyright 2009 by Pearson Education 6


A better solution
 We want to make generalized tasks:
 line - A method to draw a line of any number of stars.
 box - A method to draw a box of any size

 Our hope:
public static void line() {
for (int i = 1; i <= N ; i++) {
System.out.print("*");
}
System.out.println();
}

 Desired properties for line:


 Can call line method multiple times, producing differently sized lines
 Size of line printed is determined by the caller of the command
 i.e. “Print me a line of size 7”

Copyright 2009 by Pearson Education 7


Parameterization
 parameter: A value passed to a method by its caller.

 Instead of lineOf7, lineOf13, write line to draw any length.


 When declaring the method, we will state that it requires a parameter
for the number of stars.
 When calling the method, we will specify how many stars to draw.

7
main line *******

13 line *************

Copyright 2009 by Pearson Education 8


Declaring a parameter
Stating that a method requires a parameter in order to run

public static void name ( type name ) {


statement(s);
}

 Example:
public static void sayPassword(int code) {
System.out.println("The password is: " + code);
}

 When sayPassword is called, the caller must specify


the integer code to print.

Copyright 2009 by Pearson Education 9


Passing parameters
Calling a method and specifying values for its parameters

name (expression);

 Example:
public static void main(String[] args) {
sayPassword(42);
sayPassword(12345);
}
Output:
The password is 42
The password is 12345

Copyright 2009 by Pearson Education 10


Parameters and loops
 A parameter can guide the number of repetitions of a loop.
public static void main(String[] args) {
chant(3);
}

public static void chant(int times) {


for (int i = 1; i <= times; i++) {
System.out.println("Just a salad...");
}
}

Output:
Just a salad...
Just a salad...
Just a salad...

Copyright 2009 by Pearson Education 11


How parameters are passed
 When the method is called:
 The value is stored into the parameter variable.
 The method's code executes using that value.

public static void main(String[] args) {


chant(3);
chant(7);
}
3
7
public static void chant(int times) {
for (int i = 1; i <= times; i++) {
System.out.println("Just a salad...");
}
}

Copyright 2009 by Pearson Education 12


Common errors
 If a method accepts a parameter, it is illegal to call it without
passing any value for that parameter.
chant(); // ERROR: parameter value required

 The value passed to a method must be of the correct type.


chant(3.7); // ERROR: must be of type int

 Exercise: Change the Stars program to use a parameterized


method for drawing lines of stars.

Copyright 2009 by Pearson Education 13


Stars solution
// Prints several lines of stars.
// Uses a parameterized method to remove redundancy.
public class Stars2 {
public static void main(String[] args) {
line(13);
line(7);
line(35);
}

// Prints the given number of stars plus a line break.


public static void line(int count) {
for (int i = 1; i <= count; i++) {
System.out.print("*");
}
System.out.println();
}
}

Copyright 2009 by Pearson Education 14


Multiple parameters
 A method can accept multiple parameters. (separate by , )
 When calling it, you must pass values for each parameter.
 Parameter values are distinguished by the order
 The first value written in the call corresponds to the first parameter, etc.

 Declaration:
public static void name (type name, ..., type name) {
statement(s);
}

 Call:
methodName (value, value, ..., value);

Copyright 2009 by Pearson Education 15


Multiple parameters example
public static void main(String[] args) {
printNumber(4, 9);
printNumber(17, 6);
printNumber(8, 0);
printNumber(0, 8);
}
public static void printNumber(int number, int count) {
for (int i = 1; i <= count; i++) {
System.out.print(number);
}
System.out.println();
}

Output:
444444444
171717171717
00000000

 Modify the Stars program to draw boxes with parameters.

Copyright 2009 by Pearson Education 16


Stars solution
// Prints several lines and boxes made of stars.
// Third version with multiple parameterized methods.
public class Stars3 {
public static void main(String[] args) {
line(13);
line(7);
line(35);
System.out.println();
box(10, 3);
box(5, 4);
box(20, 7);
}
// Prints the given number of stars plus a line break.
public static void line(int count) {
for (int i = 1; i <= count; i++) {
System.out.print("*");
}
System.out.println();
}
...

Copyright 2009 by Pearson Education 17


Stars solution, cont'd.
...

// Prints a box of stars of the given size.


public static void box(int width, int height) {
line(width);
for (int line = 1; line <= height - 2; line++) {
System.out.print("*");
for (int space = 1; space <= width - 2; space++) {
System.out.print(" ");
}
System.out.println("*");
}
line(width);
}
}

Copyright 2009 by Pearson Education 18


Value semantics
 value semantics: When primitive variables (int, double) are
passed as parameters, their values are copied.
 Modifying the parameter will not affect the variable passed in.

public static void strange(int x) {


x = x + 1;
System.out.println("1. x = " + x);
}

public static void main(String[] args) {


int x = 23;
strange(x);
System.out.println("2. x = " + x); Output:
...
} 1. x = 24
2. x = 23

Copyright 2009 by Pearson Education 19


A "Parameter Mystery" problem
public class ParameterMystery {
public static void main(String[] args) {
int x = 5;
int y = 9;
int z = 2;

mystery(z, y, x);

mystery(y, x, z);
}

public static void mystery(int x, int z, int y) {


System.out.println(z + " " + y + " " + x);
}
}

Copyright 2009 by Pearson Education 20


Strings
 string: A sequence of text characters.
String name = "text";
String name = expression;

 Examples:
String name = "Toucan Sam";
int x = 3;
int y = 5;
String point = "(" + x + ", " + y + ")";

Copyright 2009 by Pearson Education 21


Strings as parameters
public class StringParameters {
public static void main(String[] args) {
String ta = "Kelsey";
sayHello(ta);
sayHello("Steve");
}
public static void sayHello(String name) {
System.out.println("Welcome, " + name);
}
}

Output:
Welcome, Kelsey
Welcome, Steve

 Modify the Stars program to use string parameters. Use a


method named repeat that prints a string many times.

Copyright 2009 by Pearson Education 22


Stars solution
// Prints several lines and boxes made of stars.
// Fourth version with String parameters.
public class Stars4 {
public static void main(String[] args) {
line(13);
line(7);
line(35);
System.out.println();
box(10, 3);
box(5, 4);
box(20, 7);
}
// Prints the given number of stars plus a line break.
public static void line(int count) {
repeat("*", count);
System.out.println();
}

...

Copyright 2009 by Pearson Education 23


Stars solution, cont'd.
...

// Prints a box of stars of the given size.


public static void box(int width, int height) {
line(width);
for (int line = 1; line <= height - 2; line++) {
System.out.print("*");
repeat(" ", width - 2);
System.out.println("*");
}
line(width);
}
// Prints the given String the given number of times.
public static void repeat(String s, int times) {
for (int i = 1; i <= times; i++) {
System.out.print(s);
}
}
}

Copyright 2009 by Pearson Education 24

You might also like