Introduction to Computer Science One Dimensional Arrays Unit 9.

Slides:



Advertisements
Similar presentations
Arrays. What is an array An array is used to store a collection of data It is a collection of variables of the same type.
Advertisements

Arrays Chapter 6. Outline Array Basics Arrays in Classes and Methods Sorting Arrays Multidimensional Arrays.
Arrays. Topics Tables of Data Arrays – Single Dimensional Parsing a String into Multiple Tokens Arrays - Multi-dimensional.
Road Map Introduction to object oriented programming. Classes
Arrays Liang, Chpt 5. arrays Fintan Array of chars For example, a String variable contains an array of characters: An array is a data structure.
Introduction to Computer Science Iteration –the while loop –the for loop Unit 8.
Arrays Horstmann, Chapter 8. arrays Fintan Array of chars For example, a String variable contains an array of characters: An array is a data structure.
Introduction to Computers and Programming Lecture 15: Arrays Professor: Evan Korth New York University.
1 One-Dimensional (1-D) Array Overview l Why do we need 1-D array l 1-D array declaration and Initialization l Accessing elements of a 1-D array l Passing.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
Chapter 9 Introduction to Arrays
Previous Exam 1.0. Question 1 - a Is the following statement true or false? Briefly explain your answer. A && B is the same as B && A for any Boolean.
CS0007: Introduction to Computer Programming Introduction to Arrays.
Java Unit 9: Arrays Declaring and Processing Arrays.
Chapter 6Java: an Introduction to Computer Science & Programming - Walter Savitch 1 l Array Basics l Arrays in Classes and Methods l Programming with Arrays.
Lecture 12 Instructor: Craig Duckett ARRAYS. Announcements Assignment 3 Assignment 3 Revision Assignment 4 (and Final Exam) GRADED! RETURNED! Woot! NEXT.
A First Book of ANSI C Fourth Edition
French Territory of St. Pierre CSE 114 – Computer Science I Arrays.
Comp 248 Introduction to Programming Chapter 6 Arrays Part B Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University,
CMSC 202 Arrays. Aug 6, Introduction to Arrays An array is a data structure used to process a collection of data that is all of the same type –An.
5-Aug-2002cse Arrays © 2002 University of Washington1 Arrays CSE 142, Summer 2002 Computer Programming 1
The basics of the array data structure. Storing information Computer programs (and humans) cannot operate without information. Example: The array data.
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2009 Pearson Education, Inc., Upper.
Arrays Module 6. Objectives Nature and purpose of an array Using arrays in Java programs Methods with array parameter Methods that return an array Array.
What is an Array? An array is a collection of variables. Arrays have three important properties: –group of related items(for example, temperature for.
Problem Solving using the Java Programming Language May 2010 Mok Heng Ngee Day 5: Arrays.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
ARRAYS 1 TOPIC 8 l Array Basics l Arrays and Methods l Programming with Arrays Arrays.
Object-Oriented Program Development Using Java: A Class-Centered Approach, Enhanced Edition.
Chapter 8: Collections: Arrays. 2 Objectives One-Dimensional Arrays Array Initialization The Arrays Class: Searching and Sorting Arrays as Arguments The.
Arrays Chapter 8. What if we need to store test scores for all students in our class. We could store each test score as a unique variable: int score1.
Chapter 6Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 6 l Array Basics l Arrays and Methods l Programming with Arrays.
1 Arrays An array is a collection of data values, all of which have the same type. The size of the array is fixed at creation. To refer to specific values.
M180: Data Structures & Algorithms in Java Arrays in Java Arab Open University 1.
1 Building Java Programs Chapter 7: Arrays These lecture notes are copyright (C) Marty Stepp and Stuart Reges, They may not be rehosted, sold, or.
OBJECTS FOR ORGANIZING DATA -- As our programs get more sophisticated, we need assistance organizing large amounts of data. : array declaration and use.
Introduction to Java Lecture Notes 3. Variables l A variable is a name for a location in memory used to hold a value. In Java data declaration is identical.
1 On (computational) simplicity We are trying to teach not just Java, but how to think about problem solving. Computer science has its field called computational.
Array - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 12/19/20151.
CMSC 202 Arrays 2 nd Lecture. Aug 6, Array Parameters Both array indexed variables and entire arrays can be used as arguments to methods –An indexed.
Structuring Data: Arrays ANSI-C. Representing multiple homogenous data Problem: Input: Desired output:
How do you do the following? Find the number of scores within 3 points of the average of 10 scores? What kind of a tool do you need? Today’s notes: Include.
Chapter 8 Arrays. A First Book of ANSI C, Fourth Edition2 Introduction Atomic variable: variable whose value cannot be further subdivided into a built-in.
Introduction to Computer Science One Dimensional Arrays Unit 10.
Array Declarations Arrays contain a fixed number of variables of identical type Array declaration and allocation are separate operations Declaration examples:
Arrays Chapter 6. Objectives learn about arrays and how to use them in Java programs learn how to use array parameters and how to define methods that.
BIT115: Introduction to Programming
int [] scores = new int [10];
Array Size Arrays use static allocation of space. That is, when the array is created, we must specify the size of the array, e.g., int[] grades = new int[100];
CSC 1051 – Data Structures and Algorithms I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
Week 6 - Friday.  What did we talk about last time?  Loop examples.
1 Arrays Chapter 8. Objectives You will be able to Use arrays in your Java programs to hold a large number of data items of the same type. Initialize.
For Friday Read No quiz Program 6 due. Program 6 Any questions?
CHAPTER 6 ARRAYS IN C 1 st semester King Saud University College of Applied studies and Community Service Csc 1101 F. Alakeel.
Chapter 9 Introduction to Arrays Fundamentals of Java.
Chapter 7 Arrays…. 7-2 Arrays An array is an ordered list of values An array of size N is indexed from.
Introduction to programming in java Lecture 21 Arrays – Part 1.
ARRAYS (Extra slides) Arrays are objects that help us organize large amounts of information.
Array in C# Array in C# RIHS Arshad Khan
Introduction to Computer Science / Procedural – 67130
CSC 142 Computer Science II
CSC141 Computer Science I Zhen Jiang Dept. of Computer Science
Arrays We often want to organize objects or primitive data in a way that makes them easy to access and change. An array is simple but powerful way to.
int [] scores = new int [10];
Building Java Programs
python.reset() Also moving to a more reasonable room (CSE 403)
int [] scores = new int [10];
Building Java Programs
Suggested self-checks: Section 7.11 #1-11
How do you do the following?
Presentation transcript:

Introduction to Computer Science One Dimensional Arrays Unit 9

9- 2 Arrays An array is a sequence of variables of identical type It is used to store large amounts of data, without having to declare many individual variables counts [0][1][2][3][4][5][6]

9- 3 Arrays “Arrays bring to data what loops bring to action—power.” Arrays give us a way of defining a structured collection of data, without having to name each component (as we would have to do with individual variables) It gives us an important tool for implementing data abstraction

9- 4 Old Example public static void main (String[ ] args) { intscore, sumOfScores = 0, numberOfScores = 0; SimpleInput sinp = new SimpleInput(System.in); System.out.print(“Enter score (eof ends the data): “); score = sinp.readInt( ); intmaxOfScores = score; intminOfScores = score; while ( !sinp.eof( ) ) { numberOfScores++;//new score sumOfScores = sumOfScores + score; //update sum System.out.print(“Enter score (eof ends the data): “ ); score = sinp.readInt( ); } …

9- 5 That was a “stream-oriented” approach to data Once a value goes past, it’s gone—there’s only one variable, score, that holds input data. But suppose we want to read and average the input stream, and echo only values that are above average. We could: –Read the input stream twice, averaging the first time, printing large numbers the second (a file-oriented approach; not practical for human input) –Read and store the input values, summing them as they’re stored. Get average at end, then echo only the larger ones (this will use an array)

9- 6 Variables and Arrays scoresumOfScoresnumberOfScores Simple variables give us a snapshot of the data. An array lets us reinspect any part of the data stream. counts [0][1][2][3][4][5][6]

9- 7 A Random Access Data Structure Arrays are a random access data structure. Values can be stored or retrieved in any order we want. counts [0][1][2][3][4][5][6]

9- 8 Things to Notice with an Array 1. What’s the array’s name? 2. What kinds of values can it hold? 3. How many values can it hold? 4. How do we refer to individual values in the array? We’ll now look at each of these answers for a Java array

9- 9 Arrays Are a Special Kind of Object An array contains a fixed number of variables of identical type This fixed number is called the array’s length Like any object, an array must first be declared, then allocated (created) Remember that an array is an object, and this fact will help you

9- 10 Declaring an Array Variable Declare a variable to be an array: int[ ] counts; double[ ] scores; Time[ ] appointmentTimes; The brackets tell Java that the variable (counts, scores, or appointmentTimes) will be an array

9- 11 Answers to some questions We’ve answered questions 1 and 2 with our declarations: 1. What is the array’s name? 2. What kinds of values can it hold? int[ ] counts; double[ ] scores; Time[ ] appointmentTimes; First array’s name is “counts”, and it holds values of type int, etc.

9- 12 Allocating (creating) an Array in the Heap We create an array using the new notation, but with some variations We have to tell new how many variables will be in the array object (use square brackets): counts = new int[10]; scores = new double[15]; appointmentTimes = new Time[10]; In general, new type[ size ] creates an array of length size with variables of type type, returning an array object (in the heap); Answer to Question 3. How many values can it hold? (given during allocation)

9- 13 Doing it All At Once Obviously, like with any variable (simple or object), you can write it on one line: int[ ] counts = new int[10]; double[ ] scores = new double[15]; Time[ ] appointmentTimes = new Time[10]; Now we have array objects sitting in the heap, called counts (that can hold 10 ints), scores (that can hold 15 doubles), and appointmentTimes (that can hold 10 Time objects)

9- 14 Creation of an Array Object new type[ size ] size can be any integer or integer expression: int i = 3; char[ ] name = new char[i]; is just as good as: char[ ] name = new char[3]; The memory in an array is automatically initialized for us (to 0 for numbers, false for booleans, or null for objects, as appropriate)

9- 15 Let’s Look at counts counts [0][1][2][3][4][5][6][7][8][9] Place to hold 10 ints Each int is held in a separate box The subscript, or index, of the variables runs from 0 to 9 (the index always starts at 0) Arrays can contain any type of value: simple value or (reference to) object

9- 16 Answer to Question 4: How do we refer to individual values in the array? Use subscripts to obtain any specific variable counts[0]is the first variable in counts counts[1]is the second variable in counts counts[9]is the last variable in counts counts[10]is an error! counts [0][1][2][3][4][5][6][7][8][9]

9- 17 They are Used Like Regular Variables counts[0] counts[1] counts[9] These are all int variables, and can be used anywhere any int variable (like “score” or “sumOfScores”) is used: counts[1] = 17; score = counts[8]; sumOfScores = (7 * ((counts[4] + 2)/8));

9- 18 Java Checks Array Bounds For You counts[10] This does not exist, since the 10 elements in counts run from 0 to 9 If you try and use this nonexistent value, Java throws an ArrayIndexOutOfBoundsException error More about these kinds of errors (exceptions) later

class Simple { public static void main (String[ ] args) { int[ ] counts = new int[10]; SimpleInput sinp = new SimpleInput(System.in); System.out.println(“Enter ten numbers: “); counts[0] = sinp.readInt( ); counts[1] = sinp.readInt( ); counts[2] = sinp.readInt( ); counts[3] = sinp.readInt( ); counts[4] = sinp.readInt( ); counts[5] = sinp.readInt( ); counts[6] = sinp.readInt( ); counts[7] = sinp.readInt( ); counts[8] = sinp.readInt( ); counts[9] = sinp.readInt( ); System.out.print(counts[9] + “ “ + counts[8] + “ “ + counts[7] + “ “ + counts[6] + “ “ + counts[5] + “ “ + counts[4] + “ “ + counts[3] + “ “ + counts[2] + “ “ + counts[1] + “ “ + counts[0] + “\n”); } } Of course we can do this with a loop

9- 20 Using a Variable as an Index If i is an integer variable, you can, for example, write counts[i] to refer to one of the variables in counts counts[2 * i] refers to counts[0] if i is 0, counts[2] if i is 1, etc.; illegal if i is outside the 0 to 4 range counts[i/2] refers to counts[0] if i is 0 or 1, counts[1] if i is 2 or 3, etc.; illegal if i is outside 0 to 19

9- 21 Alternative Way to Declare and Allocate an Array All At Once Arrays can be initialized by giving a list of all their elements: int[ ] primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; The declaration is on the left side of the assignment No explicit creation of the object is necessary; Java handles it automatically It must be done in a single line; this is illegal: int[ ] primes; primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};

9- 22 Let’s Use the Technique Method that takes an integer and prints out that day of the week: final String[ ] NAME= {“”, “Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}; void printName (int day) { System.out.print(NAME[day]); }

9- 23 What is the Effect of the Following? int[ ] a, b; a = new int[10]; a = b; Since arrays are objects, a and b are references to objects (in the heap, as expected) So now a and b refer to the same array An array is a mutable object; changes made to the array are reflected in “both” a and b

9- 24 Passing an Array as an Argument Between Methods public int firstMethod( ) { int[ ] a = new int[10]; a[0] = 9; secondMethod(a); return a[0]; } public void secondMethod(int[ ] b) { b[0] = 5; } a is an array object variable. b receives a copy of a, and thus points to the same object. Changes to b are reflected in a. firstMethod( ) therefore returns 5.

9- 25 The public Instance Variable “length” Every array object has a public instance variable called length It tells how many elements are in the array Since it is public, it can be freely accessed; if a is an array, a.length says how many elements it has Print all elements of the array counts: for (int i = 0; i < counts.length; i++) System.out.println( counts[i] );

9- 26 A Small Note on Variable Scope When we write for (int i = 0; i < counts.length; i++) System.out.println( counts[i] ); the variable i exists only for the scope of the for loop It cannot be reused later, unless it is redeclared This is just a convenience for writing loops

9- 27 Simple Array Processing Loops Copy all the elements from array b into array a: for (int i = 0; i < a.length; i++) a[i] = b[i]; How does this differ from a = b;

9- 28 Another Example Initialize the array counts to contain the numbers 0, 10, 20, etc. up to 90: counts [0][1][2][3][4][5][6][7][8][9] for (int i = 0; i < counts.length; i++) counts[i] = i * 10;

9- 29 Read 10 numbers into array “counts” and print them in reverse order class Simple2 { public static void main (String[ ] args) { int[ ] counts = new int[10]; SimpleInput sinp = new SimpleInput(System.in); System.out.println(“Enter ten numbers: “); for (int i = 0; i < 10; i++) counts[i] = sinp.readInt( ); for (int i = 0; i < 10; i++) System.out.print(counts[9 - i] + “ “); System.out.println( ); } }

9- 30 Another Way to Do It class Simple2 { public static void main (String[ ] args) { int[ ] counts = new int[10]; SimpleInput sinp = new SimpleInput(System.in); System.out.println(“Enter ten numbers: “); for (int i = 0; i = 0; i- -) System.out.print(counts[i] + “ “); System.out.println( ); } }

9- 31 An Array’s Size is Fixed When Created An array cannot grow Its size is determined when it is created One simple way of dealing with this is to make a large array and only partially fill it Let’s look at an example

9- 32 Encapsulate reading and echoing an array in a class We’ll make a class Collection, which will include an array and methods for handling the array The client uses Collection by creating a Collection object, passing its constructor the (large) size of the array desired Let’s look at how the client would use the Collection class, and how the class itself is defined

9- 33 The client to the Collection class class MyClient { static final int INPUT_MAX = 1000; public static void main (String[ ] arg) { Collection c = new Collection(INPUT_MAX); c.readAndEcho( ); } }

class Collection { int[ ] _item; int _size = 0; public Collection (int number) { _item = new int[number]; } public void readAndEcho( ) { SimpleInput sinp = new SimpleInput(System.in); System.out.println(“Enter first number: “); int n = sinp.readInt( ); while ( !sinp.eof( ) ) { _item[_size] = n; _size++; System.out.println(“Enter next number: “); n = sinp.readInt( ); } System.out.println( ); for (int i = 0; i < _size; i++) System.out.println(_item[i]); } }

9- 35 Another Example Create program that reads in student name and two scores and prints average for each student (until end-of-file): Enter name and two exam grades: Bill Enter name and two exam grades: Scott Enter name and two exam grades: ^D or ^Z

9- 36 The Expected Output NameAverage Bill63 Scott90 The client program: class MyClient { static final int INPUT_MAX = 100; public static void main (String[ ] arg) { GradeBook grades = new GradeBook(INPUT_MAX); grades.readAndAverage( ); } }

class GradeBook { String[ ] _names; int[ ] _exam1, _exam2; int _size = 0; public GradeBook (int number) { _names = new String[number]; _exam1 = new int[number]; _exam2 = new int[number]; } public void readAndAverage( ) { SimpleInput sinp = new SimpleInput(System.in); while ( true ) { System.out.println(“Enter name and two exam grades: “ ) ; _names[_size] = sinp.readString( ); if ( sinp.eof( ) ) break; _exam1[_size] = sinp.readInt( ); _exam2[_size] = sinp.readInt( ); _size++; } System.out.println( ); System.out.println(“\tName\tAverage”); for (int i = 0; i < _size; i++) System.out.println(“\t” + _names[i] + “\t\t” + (_exam1[i] + _exam2[i]) / 2); } }

9- 38 Arrays Can Contain Objects Arrays can contain any kind of data, not just integers and strings So instead of building GradeBook the way we did, let’s create a Student class, and fill up the array with Student objects Each object includes names and grades

9- 39 Class Student, for making Student Objects class Student { private String _name; private int _exam1, _exam2; public Student ( ) { } public void setName (String s) { _name = s; } public void setExam1 (int n) { _exam1 = n; } public void setExam2 (int n) { _exam2 = n; } public String getName ( ) { return _name; } public int getExam1 ( ) { return _exam1; } public int getExam2 ( ) { return _exam2; } public int getAvg ( ) {return (_exam1+_exam2)/2; } } } can be omitted; Java will provide a default constructor that does nothing if we left this out

class GradeBook { Student[ ] _students; int _size = 0; public GradeBook (int number) { _students = new Student[number]; } public void readAndAverage( ) { SimpleInput sinp = new SimpleInput(System.in); String nextname; while ( true ) { System.out.println(“Enter name and two exam grades: “ ) ; nextname = sinp.readString( ); if ( sinp.eof( ) ) break; _students[_size] = new Student( ); _students[_size].setName(nextname); _students[_size].setExam1(sinp.readInt( )); _students[_size].setExam2(sinp.readInt( )); _size++; } System.out.println( ); System.out.println(“\tName\tAverage”); for (int i = 0; i < _size; i++) System.out.println(“\t” + _students[i].getName( ) + “\t\t” + _students[i].getAvg( )); } }