Lecture 10. Instructor: Craig Duckett

Similar documents
Lecture 8. A series on variable types This episode starring Parameter Variables

Lecture 8 " INPUT " Instructor: Craig Duckett

Lecture 11. Instructor: Craig Duckett. Instance Variables

Lecture 6. Instructor: Craig Duckett

Lecture 13. Instructor: Craig Duckett. Boolean Expressions, Logical Operators, and Return Values

Lecture 17. Instructor: Craig Duckett. Passing & Returning Arrays

BIT 115: Introduction To Programming LECTURE 3. Instructor: Craig Duckett

Lecture 7. Instructor: Craig Duckett OUTPUT

Lecture 12. Instructor: Craig Duckett

Combo Lecture Lecture 14/15. Instructor: Craig Duckett

H212 Introduction to Software Systems Honors

Instructor: Craig Duckett

AP Computer Science Unit 1. Writing Programs Using BlueJ

AP Computer Science Unit 1. Writing Programs Using BlueJ

Lecture 14. 'for' loops and Arrays

Bjarne Stroustrup. creator of C++

Introduction to Java Unit 1. Using BlueJ to Write Programs

Exam 1 Prep. Dr. Demetrios Glinos University of Central Florida. COP3330 Object Oriented Programming

Claremont McKenna College Computer Science

Robots. Byron Weber Becker. chapter 6

Fundamentals of Programming Data Types & Methods

Full file at

Programming Language (2) Lecture (4) Supervisor Ebtsam AbdelHakam Department of Computer Science Najran University

CS 152: Data Structures with Java Hello World with the IntelliJ IDE

Constants. Why Use Constants? main Method Arguments. CS256 Computer Science I Kevin Sahr, PhD. Lecture 25: Miscellaneous

Chapter 6 Lab Classes and Objects

Supplementary Test 1

4. Java Project Design, Input Methods

Lesson 10: Quiz #1 and Getting User Input (W03D2)

Programming with Java

CONTENTS: While loops Class (static) variables and constants Top Down Programming For loops Nested Loops

MIDTERM REVIEW. midterminformation.htm

Chapter 3. Selections

AP Computer Science Unit 1. Programs

Chapter 6 Lab Classes and Objects

First Java Program - Output to the Screen

Using Classes and Objects Chapters 3 Creating Objects Section 3.1 The String Class Section 3.2 The Scanner Class Section 2.6

COMP-202: Foundations of Programming. Lecture 2: Variables, and Data Types Sandeep Manjanna, Summer 2015

Asking For Help. BIT 115: Introduction To Programming 1

Keyword this. Can be used by any object to refer to itself in any class method Typically used to

Input. Scanner keyboard = new Scanner(System.in); String name;

AP Computer Science A

CS 101 Fall 2005 Midterm 2 Name: ID:

CSCI 2010 Principles of Computer Science. Data and Expressions 08/09/2013 CSCI

COMP String and Console I/O. Yi Hong May 18, 2015

Text User Interfaces. Keyboard IO plus

Midterms Save the Dates!

Data Conversion & Scanner Class

Computer Science 210 Data Structures Siena College Fall Topic Notes: Methods

COMP-202: Foundations of Programming. Lecture 4: Flow Control Loops Sandeep Manjanna, Summer 2015

Lesson 7 Part 2 Flags

Computational Expression

An Introduction To Writing Your Own Classes CSC 123 Fall 2018 Howard Rosenthal

Example Program. public class ComputeArea {

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Spring 2016 Howard Rosenthal

Object Oriented Programming. Java-Lecture 1

Object Oriented Programming and Design in Java. Session 2 Instructor: Bert Huang

CS61BL. Lecture 1: Welcome to CS61BL! Intro to Java and OOP Testing Error-handling

The for Loop, Accumulator Variables, Seninel Values, and The Random Class. CS0007: Introduction to Computer Programming

CS 101 Spring 2007 Midterm 2 Name: ID:

Programming Exercise 7: Static Methods

What did we talk about last time? Examples switch statements

CS 211: Existing Classes in the Java Library

public class Foo { private int var; public int Method1() { // var accessible anywhere here } public int MethodN() {

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

2.8. Decision Making: Equality and Relational Operators

Java I/O and Control Structures

SFWR ENG/COMP SCI 2S03 Principles of Programming SOLUTIONS

Section 2: Introduction to Java. Historical note

The NetBeans IDE is a big file --- a minimum of around 30 MB. After you have downloaded the file, simply execute the file to install the software.

COMP 110 Introduction to Programming. What did we discuss?

Java Foundations: Introduction to Program Design & Data Structures, 4e John Lewis, Peter DePasquale, Joseph Chase Test Bank: Chapter 2

A+ Computer Science -

A token is a sequence of characters not including any whitespace.

CSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals

St. Edmund Preparatory High School Brooklyn, NY

Introduction to Software Development (ISD) David Weston and Igor Razgon

Problem Solving With Loops

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Fall 2016 Howard Rosenthal

CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall Office hours:

News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.!

c) And last but not least, there are javadoc comments. See Weiss.

CISC-124. Dog.java looks like this. I have added some explanatory comments in the code, and more explanation after the code listing.

CS 112 Introduction to Programming

CHAPTER 5 VARIABLES AND OTHER BASIC ELEMENTS IN JAVA PROGRAMS

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

BASIC INPUT/OUTPUT. Fundamentals of Computer Science

boolean, char, class, const, double, else, final, float, for, if, import, int, long, new, public, return, static, throws, void, while

CSIS 10B Lab 2 Bags and Stacks

Last Time. University of British Columbia CPSC 111, Intro to Computation Alan J. Hu. Readings

Announcements. 1. Forms to return today after class:

CSCI 355 Lab #2 Spring 2007

Chapter 4: Conditionals and Recursion

Mobile App:IT. Methods & Classes

Java I/O and Control Structures Algorithms in everyday life

CS112 Lecture: Defining Instantiable Classes

Lecture 6. Assignments. Java Scanner. User Input 1/29/18. Reading: 2.12, 2.13, 3.1, 3.2, 3.3, 3.4

Review Chapters 1 to 4. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Introduction to Computer Programming

Building Java Programs

Transcription:

Lecture 10 Instructor: Craig Duckett

Announcements Assignment 1 Revision DUE TONIGHT in StudentTracker by midnight If you have not yet submitted an Assignment 1, this is your last chance to do so to earn points, otherwise you will get a zero, and I dislike doing that! I would want everyone in this class to be successful!

Assignment Dates (By Due Date) Assignment 1 (LECTURE 5) GRADED! Section 1: Monday, January 22 nd Assignment 2 (LECTURE 8) GRADED! Section 1: Wednesday, January 31 st Assignment 1 Revision (LECTURE 10) Section 1: Wednesday, February 7 th The Fickle Finger of Fate Assignment 2 Revision (LECTURE 12) Section 1: Wednesday, February 14 th Assignment 3 (LECTURE 13) Section 1: Wednesday, February 21 st Assignment 3 Revision (LECTURE 16) Section 1: Monday, March 5 th Assignment 4 (LECTURE 18) NO REVISION AVAILABLE! Section 1: Monday, March 12 th 3

But First No Quiz! Mid-Term Post-Mortem Great Job! Class Average is 125/150!

TODAY BEGINS THE SECOND HALF OF THE BIT115 QUARTER -- WHAT DOES THIS MEAN IN THE COSMIC SCHEME OF THINGS? Less Theory, More Hands-On Work (Less means Less, not No) Less Hand-Holding, More Trial-and-Error Less Explanation, More Research & Investigation, More Poking Around For Code, More Googling It and More (on occassion) Aggravation. Grrrr! When You Do Get Aggravated: Remember to STEP AWAY from your code occasionally, take a break, walk around, go and eat, contemplate the great outdoors, then come back. If it is late at night, go to bed. You may discover that bizarre thing that sometimes can happen, where you DREAM IN CODE, and wake up in the morning refreshed and with the beginnings of a solution!

QUICK REVIEW The Scanner Class

INPUT: Scanner Class REVIEW import java.util.*; or import java.util.scanner; Scanner keyboard = new Scanner(System.in); nextint() Assumes there is an int and does something with it hasnextint() Checks to see if there is an int (boolean true or false) nextline() Replaces the int in the keyboard buffer with a newline character (Enter) so the program won't use the int again

INPUT The Scanner Class To read input from the keyboard we use the Scanner class. Like Random, the Scanner class is defined in the Java Library package called java.util, so we must add the following statement at the top of our programs that require input from the user: import java.util.*; // <-- I usually do this or import java.util.scanner; https://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html

The Scanner Class Scanner objects work with System.in To create a Scanner object: Scanner keyboard = new Scanner(System.in); NOTE: Like any other object, keyboard here is just a name made up by the coder and can be called anything instead input, feediine, keyin, data, stuffcomingfromtheuser, etc. although it should represent a word most apt to its purpose. In this case I am using the name keyboard since it seems apt as I ll be using the keyboard to enter data (i.e., do the input)

Variable Container Scanner keyboard = new Scanner(System.in); In order to get data from the user using the Scanner object keyboard, you ll first have to determine the type of data that is going to entered (whether an integer, or a floating-point number, or something else) and create a variable container to hold that data. You can do this in one of two different ways, as a separate declaration or tied directly into a method call. int somenum = 0; somenum = keyboard.nextint(); or int somenum = keyboard.nextint().

New Scanner Methods These are for ints (integers). There are also Scanner methods available for floats, etc, which we'll see later on in the quarter nextint() Assumes there isan int and does something with it (integer value) hasnextint() Checks to see if there is an int (boolean true or false) nextline() Replaces the int in the keyboard buffer with a newline character (like Enter ) so the program won't use the int again Okay: Let's have a look at the Basic_Keyboard_IO.java program from the previous lecture

A CLOSER LOOK Parameters Arguments Method Overloading

What We're Going Over Today Today we're going to have a closer look at: parameters and arguments We're also going to look at: method overloading You should have enough coding behind you by the end of the NEXT Lecture (LECTURE 12) to successfully complete the coding for Assignment 3 The Maze : Successfully Navigate through the Maze from start to finish using various logic After NEXT lecture, use "instance variables" to set up the counters and be able to collect the number of moves made, how many times the robot moved in any particular direction, and then print out the various totals at the end of the program.

More Flexible Methods

More Flexible Methods The Way We Originally Learned ( Hard Coded ) public void move2() public void move3() public void move4() A More Flexible Way ( Argument Coded ) public void howmanymoves(int nummoves) New Flexible Method int counter = 0; while(counter < nummoves) counter++; // Note: This method has no error handling How it might be called in main or or or karel.howmanymoves(2); karel.howmanymoves(3); karel.howmanymoves(4); karel.howmanymoves(12);

Argument, Pass, Parameter

Chapter 4.6: Using Parameters You ll notice that every new method (service) we ve created does something: Each time we call upon one of those services, it ll always do the same thing public void turnaround() this.turnleft(); this.turnleft(); public void move3() public void turnright() this.turnaround(); this.turnleft(); We could have asked for user input, but then the method would fill TWO ROLES 1. Doing <something> 2. Interacting with the user We'd like each service to have a single, welldefined, and easy to summarize role Thus, a method like movemultiple() should move the robot through multiple intersections Things happening in main should run the part of the program that relays instructions from the user to the robot(s)

Chapter 4.6: Using Parameters We need a way to pass information to a method or service. We d like to be able to say: rob.movemultiple(3); or rob.movemultiple(7); or even Scanner keyboard = new Scanner(System.in); int howfar = keyboard.nextint(); rob.movemultiple(howfar); The actual data being passed to the method is called an ARGUMENT The method must also be told to expect this information AND make room for it to be stored somewhere in memory, so instead of: public void movemultiple() we'll write public void movemultiple(int somenumber)

Chapter 4.6: Using Parameters For integers ints, this creates (within movemultiple(somenumber) ) a COPY of whatever we put inside the parentheses in main. Inside of the movemultiple() method somenumber behaves just like any other int variable. We can print it out, assign new values to it, use it in a while loop, etc. The thing that tells the method service to expect some info is called a PARAMETER. Let s have a look at the next slide

Arguments and Parameters A method in new class up top: public void movemultiple(int moves) int counter = 0; while(counter < moves) move(); counter++; In main below: Scanner keyboard = new Scanner(System.in); int howfar = keyboard.nextint(); rob.movemultiple(howfar); PARAMETER Now in the programming world the language tends to get a little loose, so these words are often interchanged since both things are dealing with values being passed into and out of parentheses. Google ARGUMENT moves counter howfar PASS No need to fear! We will look at this in step-by-step detail in a moment

Using a While Statement with a Parameter The following method moves a robot east to Avenue 18. public void movetoavenue18( ) // <-- empty, no parameter while(this.getavenue() < 18) This is very limited, and only useful to move the robot specifically to Avenue 18 since it was hard-coded to do so. With a parameter, however, it can be used to move the robot to any avenue east of its current location. public void movetoavenue(int destave) // <-- with parameter while(this.getavenue() < destave) In main you d call it this way: this.movetoavenue(20); //or 12 or 18 OR in main you d call it this way: this.movetoavenue(somevar);

Chapter 6.2.2: Reviewing Parameter Variables In this section, we will show how parameter variables are closely related to temporary variables, explore using parameters with constructors, and discuss overloading. Parameter Variables versus Temporary Variables public void howfartomove() int howfar = 2; // <-- temporary variable System.out.println("You asked to move " + howfar + "times."); In main you d call it this way: this.howfartomove(); public void howfartomove(int howfar) // <-- parameter variable System.out.println("You asked to move " + howfar + "times."); In main you d call it this way: this.howfartomove(2); OR In main you d call it this way: this. howfartomove(somevar);

Putting it All Together Let s look at how arguments and parameters work with a demonstration using the Robot and RobotSE classes, before we do a walk-through how to use arguments and parameters with our own methods. First, we ll have a look at the Robot and RobotSE classes in the Becker Robot Library: http://www.learningwithrobots.com/doc/ Then, we ll look at some demonstration files: simple_argument.java scanner_argument_with_robot_class.java scanner_argument_with_robotse_class.java simple_scanner_argument.java scanner_argument_with_method_parameter.java scanner_all_in_one_method.java

PARAMETERS: Step-by-Step

EXAMPLES: Step-by-Step Method Without a Parameter Argument public void movemultiple() Main rob.movemultiple(); // rob will move 5 times

EXAMPLE Method Without a Parameter Argument public void movemultiple() int counter = 0; while( counter < 5) if(this.frontisclear()) counter = counter + 1; // This is the same as counter++; Main rob.movemultiple(); // rob will move 5 times

EXAMPLE Method Without a Parameter Argument public void movemultiple() int counter = 0; while( counter < 5) // 5 is hard-coded here, so easier to change at // this coded location but there is a better solution if(this.frontisclear()) counter = counter + 1; Main rob.movemultiple(); // rob will move 5 times, and only 5 times

EXAMPLE Method with Parameter Argument public void movemultiple(int numberofintersections) // declare and add parameter int counter = 0; while( counter < numberofintersections) // replace 5 with the passed argument if(this.frontisclear()) counter = counter + 1; Main rob.movemultiple(5); // <-- 5 is placed within the method call as an argument // The 5 is still being hard-coded but this time as a parameter argument // instead of an integer defined inside the method. This makes it easier since // different numbers can now be called when the method is used, but why not // free up the method to call up ANY input actually entered by the user? That // way no number is being hard-coded before the program is compiled and run

EXAMPLE Method with Parameter Argument public void movemultiple(int numberofintersections) // declare and add argument int counter = 0; while( counter < numberofintersections) // replace 5 with that argument if(this.frontisclear()) counter = counter + 1; Main System.out.println("How many intersections forward would you like the robot to go?"); if( keyboard.hasnextint()) // hasnextint checks the input is an integer int nummoves = keyboard.nextint(); // nextint puts it into memory container System.out.println ("You entered a " + nummoves + "."); // called nummoves rob.movemultiple(nummoves); LET S HAVE A CLOSER LOOK simple_scanner_argument.java

EXAMPLE Method public void movemultiple(int numberofintersections) int counter = 0; while( counter < numberofintersections) if(this.frontisclear()) counter = counter + 1;? numberofintersections 0 counter Main System.out.println("How many intersections forward would you like the robot to go?"); if( keyboard.hasnextint() ) int nummoves = keyboard.nextint(); System.out.println ("You entered a " + nummoves + "."); rob.movemultiple(nummoves);

EXAMPLE Method public void movemultiple(int numberofintersections) int counter = 0; while( counter < numberofintersections) if(this.frontisclear()) counter = counter + 1;? numberofintersections 0 counter? Main System.out.println("How many intersections forward would you like the robot to go?"); if( keyboard.hasnextint() ) int nummoves = keyboard.nextint(); System.out.println ("You entered a " + nummoves + "."); rob.movemultiple(nummoves); nummoves

EXAMPLE Method public void movemultiple(int numberofintersections) int counter = 0; while( counter < numberofintersections) if(this.frontisclear()) counter = counter + 1; numberofintersections 0 Main Let s imagine the user types in a 5 System.out.println("How many intersections forward would you like the robot to go?"); if( keyboard.hasnextint() ) int nummoves = keyboard.nextint(); System.out.println ("You entered a " + nummoves + "."); rob.movemultiple(nummoves); counter 5 nummoves

EXAMPLE Method public void movemultiple(int numberofintersections) int counter = 0; while( counter < numberofintersections) if(this.frontisclear()) counter = counter + 1; numberofintersections 0 Main counter nummoves System.out.println("How many intersections forward would you like the robot to go?"); if( keyboard.hasnextint() ) int nummoves = keyboard.nextint(); // nextint actually gets the input System.out.println ("You entered a " + nummoves + "."); rob.movemultiple(nummoves); 5

EXAMPLE Method public void movemultiple(int numberofintersections) int counter = 0; while( counter < numberofintersections) if(this.frontisclear()) counter = counter + 1; 5 numberofintersections 0 Main System.out.println("How many intersections forward would you like the robot to go?"); if( keyboard.hasnextint() ) int nummoves = keyboard.nextint(); System.out.println ("You entered a " + nummoves + "."); rob.movemultiple(nummoves); counter 5 nummoves

Method Overloading Test() Test(int x) Test(int x, int y)

Let s have a look-see Chapter 6.2.2: Overloading In Java it is possible to define two or more methods within the same class that share the same name, as long as their parameter declarations are different. When this is the case, the methods are said to be overloaded, and the process is referred to as method overloading. Method overloading is one of the ways that Java implements polymorphism. Polymorphism is the ability of an object to take on many forms, and uses the is a test determine multiple inheritance through from different classes, subclasses, etc. Method overloading is one of Java's most exciting and useful features. When an overloaded method is invoked, Java uses the type and/or number of arguments as its guide to determine which version of the overloaded method to actually call. Thus, overloaded methods must differ in the type and/or number of their parameters. While overloaded methods may have different return types, the return type alone is insufficient to distinguish two versions of a method. When Java encounters a call to an overloaded method, it simply executes the version of the method whose parameters match the arguments used in the call.

Overloading public class MethodOverloading extends Object public void test(int a) System.out.println("a: " + a); public void test(int a, int b) System.out.println("a and b: " + a + "," + b); public double test(double a) System.out.println("double a: " + a); return a*a; public static void main(string args[]) MethodOverloading MethodOverloading = new MethodOverloading(); double result; MethodOverloading.test(10); MethodOverloading.test(10, 20); result = MethodOverloading.test(5.5); System.out.println("Result : " + result); a: 10 a and b: 10, 20 double a: 5.5 Result: 30.25

Assignment 3: The Maze Read the Directions! You can work on Assignment 3 alone (one person) You can work on Assignment 3 with a partner (two people) -or- -or- You can work on Assignment 3 as a team of three (three people) ONLY ONE PERSON HAS TO SUBMIT, BUT MAKE SURE EVERYONE S NAMES ARE ON ALL THE FILES

Assignment 3: The Maze HINT #1: The Basic Move Logic: Turn Left (or Right) While the front is NOT clear Turn Right (or Left) Move

A NOTE ABOUT THE ICE NUMBERS GOING FORWARD: Today is Lecture 11, and the ICE number is ICE 11, but sometimes these will not always align with the lecture number. The ICE title in the browser tab may also show a different number. This is because some quarters have a different number of scheduled days than Fall quarter, so I include a buffer/study day right before the Mid-Term much like the Buffer/Study day this quarter right before the Final Exam. Thus, going forward, some of the ICE numbers may be off-by-one when compared to the Lecture number.