COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Similar documents
Building Java Programs

Building Java Programs

Building Java Programs

Topic 7 parameters. Based on slides from Marty Stepp and Stuart Reges from

CSc 110, Autumn 2016 Lecture 6: Parameters. Adapted from slides by Marty Stepp and Stuart Reges

Building Java Programs Chapter 3

Redundant recipes. Building Java Programs Chapter 3. Parameterized recipe. Redundant figures

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Building Java Programs

CS 112 Introduction to Programming

Admin. CS 112 Introduction to Programming. Counting Down: Code Puzzle. Counting Down: Code Puzzle

CS 112 Introduction to Programming

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

CSE 201 Java Programming I. Smart Coding School website:

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

CS 1063 Introduction to Computer Programming Midterm Exam 2 Section 1 Sample Exam

CSE 143 Lecture 10. Recursion

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

CSE 142, Summer 2015

Building Java Programs

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

CSE 142, Summer 2014

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

CS 106A, Lecture 7 Parameters and Return

CIS 110: Introduction to Computer Programming

CS 112 Introduction to Programming

Topic 6 loops, figures, constants

CS 112 Introduction to Programming

Java Programming. What is a program? Programs Recipes. Programs as Recipes 8/16/12. Pancakes In one bowl. mix: 1½ cup flour

CIS 110: Introduction to Computer Programming

Graded Project. HTML Coding

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

AL GHURAIR UNIVERSITY College of Computing. Objectives: Examples: Text-printing program. CSC 209 JAVA I

Computer Science is...

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Static Methods & Decomposition

CSEN 202 Introduction to Computer Programming

clicker question Comments Using comments Topic 3 static Methods and Structured Programming

true false Imperative Programming III, sections , 3.0, 3.9 Introductory Programming Control flow of programs While loops: generally Loops

CS 112 Introduction to Programming

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Recursion. Garfield AP Computer Science. As usual, significant borrowings from Stuart Reges and Marty Stepp at UW -- thanks!!

CS 161: Object Oriented Problem Solving

Lecture Set 4: More About Methods and More About Operators

Recap: Structure of a Java program CS 112 Introduction to Programming. A Foundation for Programming Why Introduce Static Methods?

Computer Science is...

CS 161: Object Oriented Problem Solving

CS 302: INTRODUCTION TO PROGRAMMING IN JAVA. Chapter 5: Methods. Lecture 10

Lecture 19: Recursion

Building Java Programs

COMP 250: Java Programming I. Carlos G. Oliver, Jérôme Waldispühl January 17-18, 2018 Slides adapted from M. Blanchette

Repe$$on CSC 121 Spring 2017 Howard Rosenthal

Lecture 5: Methods CS2301

Recap: Assignment as an Operator CS 112 Introduction to Programming

Building Java Programs Chapter 2

Repe$$on CSC 121 Fall 2015 Howard Rosenthal

Announcements. 1. Forms to return today after class:

QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer

public Twix() { calories = 285; ingredients = "chocolate, sugar, cookie, caramel"; }

Building Java Programs

Java Programming. What is a program? Programs as Recipes. Programs Recipes 8/20/15. Pancakes In one bowl

Definite Loops. Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Using a Variable for Counting

Methods Summer 2010 Margaret Reid-Miller

Lecture Set 4: More About Methods and More About Operators

Parameters. Repetitive figures. A solution? Parameterization. Declaring parameterized methods. Generalizing methods. Readings: 3.1

CS 112 Introduction to Programming

Programming: Java. Chapter Objectives. Chapter Objectives (continued) Program Design Including Data Structures. Chapter 7: User-Defined Methods

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

AP CS Unit 3: Control Structures Notes

Building Java Programs Chapter 2. bug. Primitive Data and Definite Loops. Copyright (c) Pearson All rights reserved. Software Flaw.

Building Java Programs Chapter 2

AP Computer Science Summer Work Mrs. Kaelin

Repetition with for loops

Chapter 5 Methods. public class FirstMethod { public static void main(string[] args) { double x= -2.0, y; for (int i = 1; i <= 5; i++ ) { y = f( x );

Building Java Programs

Topic 3 static Methods and Structured Programming

Entering the world of Javatar


Building Java Programs

Admin. CS 112 Introduction to Programming. Recap. Example: Nested Loop. Example: Rewrite

Software Practice 1 Basic Grammar

AP Computer Science A Summer Assignment 2017

Building Java Programs

CS171:Introduction to Computer Science II

Section 2.2 Your First Program in Java: Printing a Line of Text

Sequence structure. The computer executes java statements one after the other in the order in which they are written. Total = total +grade;

ITERATION WEEK 4: EXMAPLES IN CLASS

CS 161: Object Oriented Problem Solving

Methods and Functions

CS-201 Introduction to Programming with Java

CS111: PROGRAMMING LANGUAGE II

Ch. 6. User-Defined Methods

CSE 143. Lecture 9: introduction to recursion reading: 12.1

CSCI 161 Introduction to Computer Science

CS 302: Introduction to Programming in Java. Lecture 11 Yinggang Huang. CS302 Summer 2012

Transcription:

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

COSC 236 Web Site You will always find the course material at: http://www.class-notes.us From this site you can click on the COSC-236 tab to download the PowerPoint lectures, the Quiz solutions and the Laboratory assignments. 2

Lecture 05 2/10/2014 3

Review of Quiz 6 4

Review of Quiz 6 Line "\\\\ i "!!" 11 2*i "//" 1 2 3 4 5 6 0 1 2 3 4 5 0 1 2 3 4 5 11 9 7 5 3 1 11 9 7 5 3 1 0 1 2 3 4 5 i 0 1 2 3 4 5 exclamation = a i + b 11 = a 0 + b => b = 11 9 = a 1 + b => a = 9 b = 9 11 = 2 exclamation = 11 2 i 5

Review of Quiz 6 Line "\\\\ i "!!" 11 2*i "//" i 1 0 0 11 11 0 0 2 1 1 9 9 1 1 3 2 2 7 7 2 2 4 3 3 5 5 3 3 5 4 4 3 3 4 4 6 5 5 1 1 5 5 6

Review of Quiz 6 7

One-Slide Review of Chapter 2 Chapter 2 introduced: The for loop Techniques for managing complexity Class constants to make programs more flexible Chapter 3 will introduce: More techniques to make programs flexible 8

Chapter 3 explores Methods with parameters, a more powerful technique for obtaining flexibility Methods that take a parameter (Today's lecture) Methods that return a parameter (Wed 2/19) Objects and how to use them in Java programs (Mon 2/24) We aren t going to explore the details of defining objects Java comes with a rich library of predefined objects that can be used to solve many common programming tasks. Scanner objects and how to use them (Wed 2/26) Allows you to write interactive programs that prompt for input Allows you to write programs with easier formatted output. 9

In today's Lecture (Section 3.1, pp. 136-151) We will explore how to use parameters to create methods that solve not just single tasks, but whole families of tasks Creating such methods requires you to generalize Look beyond a specific task to find the more general category of task that it exemplifies The ability to generalize is one of the most important qualities of a good software engineer The generalization technique we will cover in today's lecture is one of the most powerful techniques programmers use 10

Recall that methods allow us to write new commands for Java We can then use (call) these new commands in the main method We can also use (call) these new commands in other methods Also recall that the scope of variables is limited to the method Variables in the main method (calling method) are not available to the method (called method) used in the main method In general, variables in a calling method are not available to a called method Today s lecture will discuss how to send information from the calling method to the called method Wednesday we will look at returning information from a called method to the calling method 11

In Chapter 2 we did learn one technique to get around this problem We can use a class constant to propagate a value to all methods used in the class This allowed us to write methods that could be scaled by the class constant However, there are at least two problems with class constants These are constants, hence cannot be changed during execution of the program (class) The scope of class constants is often too great we would like to limit the scope to the calling method and the called method 12

Use of Parameters in Methods (pp. 136 140) public class Param { public static void main(string[] args){ int stars = 10; printstars(10); printstars(stars); printstars(2*stars - 10); public static void printstars(int number){ for (int i = 1; i <= number; i++) { System.out.print("*"); System.out.println(); Variable stars exists only in the main method Each of these is an actual parameter that is passed from the main method to the method printstars Variable number is a formal parameter that exists only within the method printstars 13

Use of Parameters in Methods (pp. 136 140) public class Param { public static void main(string[] args){ int stars = 10; printstars(10); printstars(stars); printstars(2*stars - 10); public static void printstars(int number){ for (int i = 1; i <= number; i++) { System.out.print("*"); System.out.println(); Variable stars exists only in the main method A value passed as an actual parameter A variable passed as an actual parameter An expression passed as an actual parameter Variable number is a formal parameter that exists only within the method printstars 14

Use of Parameters in Methods (pp. 136 140) public class Param { public static void main(string[] args){ int stars = 10; printstars(10); Value printstars(stars); printstars(2*stars - 10); Variable Expression public static void printstars(int number){ for (int i = 1; i <= number; i++) { System.out.print("*"); System.out.println(); NOTE: If you were to change the value of number in the method printstars, it would have no effect on anything in the main method but could result in logical errors generally it is poor programming practice to change the value of a formal parameter, but there are times when it is OK. 15

Redundant recipes (pp. 136-140) Recipe for baking 20 cookies: Mix the following ingredients in a bowl: 4 cups flour 1 cup butter 1 cup sugar 2 eggs 40 pounds chocolate chips... 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 80 pounds chocolate chips... Place on sheet and Bake for about 10 minutes. 16

Parameterized recipe (pp. 136-140) Recipe for baking 20 cookies: Mix the following ingredients in a bowl: 4 cups flour 1 cup sugar 2 eggs... 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 2N bags chocolate chips... Place on sheet and Bake for about 10 minutes. parameter: A value that distinguishes similar tasks. 17

Redundant figures (pp. 136-140) Consider the task of printing the following lines ************* ******* *********************************** ********** * * ********** ***** * * * * ***** and boxes 18

A redundant solution (pp. 136-140) public class Stars1 { public static void main(string[] args) { lineof13(); lineof7(); lineof35(); public static void lineof13() { for (int i = 1; i <= 13; i++) { System.out.print("*"); System.out.println(); public static void lineof7() { for (int i = 1; i <= 7; i++) { System.out.print("*"); System.out.println(); public static void lineof35() { for (int i = 1; i <= 35; i++) { System.out.print("*"); System.out.println(); This code is redundant. Would variables help? Would constants help? What is a better solution? line - A method to draw a line of any number of stars. 19

A redundant solution (pp. 136-140) public class Box1 { public static void main(string[] args) { box10x3(); box5x4(); public static void box10x3() { System.out.println("**********"); for (int i = 1; i <= 2; i++) { System.out.println("* *"); System.out.println("**********\n"); public static void box5x4() { System.out.println("*****"); for (int i = 1; i <= 4; i++) { System.out.println("* *"); System.out.println("*****"); This code is redundant. Would variables help? Would constants help? What is a better solution? box - A method to draw a box of any width and heigth. 20

Parameterization (pp. 136-140) 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 ************* 21

Declaring a parameter (pp. 136-140) Declaring 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. 22

Passing a parameter (pp. 136-140) Passing a parameter: 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 23

Parameters and loops (pp. 136-140) 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... 24

Mechanics of Parameters (pp. 140-144) 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); public static void chant(int times) { for (int i = 1; i <= times; i++) { System.out.println("Just a salad..."); 37 25

Common errors (pp. 140-144) 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. 26

Stars solution (pp. 140-144) // 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(); 27

Value semantics (pp. 144-147) 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 28

Details (pp. 144-147) 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);... x in main x in strange 23 24 23 Output: 1. x = 24 2. x = 23 29

Multiple parameters (pp. 147-150) A method can accept multiple parameters. (separate by, ) When calling it, you must pass values for each parameter. Declaration: public static void name (type name,..., type name) { statement(s); Call: methodname (value, value,..., value); 30

Multiple parameters example (pp. 147-150) 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 31

Modify Stars to use Parameters (pp. 147-150) public class Stars3 { // Prints lines and boxes made of stars. public static void main(string[] args) { line(13); // 3rd version / multiple parameterized methods. line(7); line(35); System.out.println(); box(10, 3); box(5, 4); box(20, 7); 32

Stars continued (pp. 147-150) public static void line(int count) { // Prints the given number of stars plus a line break. for (int i = 1; i <= count; i++) { System.out.print("*"); System.out.println(); 33

Stars Continued (pp. 147-150) // 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); 34

"Parameter Mystery" problem (pp. 147-150) public class ParameterMystery { public static void main(string[] args) { int x = 9; int y = 2; int z = 5; mystery(z, y, x); mystery(y, x, z); public static void mystery(int x, int z, int y) { System.out.println(z + " and " + (y - x)); 35

Strings (pp. 147-150) string: A sequence of text characters. String name = "text"; String name = expression; Examples: String name = "Marla Singer"; int x = 3; int y = 5; String point = "(" + x + ", " + y + ")"; 36

Strings as parameters (pp. 147-150) public class StringParameters { public static void main(string[] args) { sayhello("marty"); String teacher = "Bictolia"; sayhello(teacher); Output: Welcome, Marty Welcome, Bictolia public static void sayhello(string name) { System.out.println("Welcome, " + name); 37

Stars modified for a string of two characters String consisting of the two characters *^ 38

Stars solution, cont'd. 39

Overloaded Methods (pp. 150-151) Java allows us to define several different methods with the same name as long as the number of parameters is different When we have two different instances of the same method with different numbers of parameters, these are called Overloaded Methods Overloaded Methods provide great flexibility to the programmer As an example, lets design an overloaded drawbox method: public static void drawbox(char sym, integer height, int width) public static void drawbox() This is the default form with a 0-parameter Method Signature This is the standard form with a 3-parameter Method Signature 40

Overloaded Methods (pp. 150-151) The standard Method Signature allows the specification of the symbol to print, the height and the width of the box. The default Method Signature requires no parameters This is the definition of the Standard Method with the 3-parameter Method Signature 41

Overloaded Methods (pp. 150-151) This is the definition of the Default Method with the 0-parameter Method Signature 42

Overloaded Methods (pp. 150-151) Symbol =. (dot) Height = 6 Width = 14 DEFAULT: Symbol = * (star) Height = 5 Width = 10 43

Assignments for this week 1. Laboratory for Chapter 2 due TODAY (Monday 2/17) NOTE: Due date on handout is incorrect IMPORTANT: When you email me your laboratory Word Document, be sure it is all in one file 2. Read Section 3.2 for Wednesday (pp. 151-159) 3. Be sure to complete Quiz 7 before leaving class tonight This is another program to write You must demonstrate the program to me before you leave lab 44