Download presentation

Presentation is loading. Please wait.

1
**An introduction to arrays**

2
**Problem: a hotel reservation system**

Say we have a hotel of 100 rooms and we need to know if the rooms are occupied or not. What data type should we use to indicate whether or not a particular room is occupied?

3
**One solution: Let’s declare 100 boolean variables (one for each room).**

//false will indicate that the room is not // occupied boolean room1 = false; boolean room2 = false; … boolean room100 = false;

4
**How can we determine if a particular room is occupied?**

5
**How do we determine if a particular room is occupied (w/ an if)?**

int which = in.nextInt(); if (which==1) { if (room1) System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); } else if (which==2) { if (room2) System.out.println( “ occupied” ); } else if (which==3) { … } else if (which==100) { if (room100) System.out.println( “ occupied” ); }

6
Is a switch any better?

7
**How do we determine if a particular room is occupied (w/ a switch)?**

int which = in.nextInt(); switch (which) { case 1: if (room1) System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); break; case 2: if (room2) System.out.println( “ occupied” ); case 3: … case 100: if (room100) System.out.println( “ occupied” ); }

8
**What if we want to determine the # of rooms that are occupied?**

9
**What if we want to determine the # of rooms that are occupied?**

int count = 0; if (room1) ++count; if (room2) ++count; … if (room100) ++count; System.out.println( count + " rooms are occupied." );

10
**More hotel problems: What if we add more rooms to our hotel?**

What if we want to see if we have a block (say 3) of adjacent rooms available? Our current approach quickly becomes unwieldy! So let’s introduce something new (arrays) to help us.

11
**Recall scalars and vectors from math.**

Scalar – one number Vectors – list of numbers Vector X = < 1, -2, 52 > Or more generally, X = < x1, x2, x3 > subscript

12
**Arrays List of the same type of things.**

Subscript (numbering) starts with 0. How do we declare an array? int x[] = new int [ 100 ]; How do we refer to a particular int? x[0] = 1; //first one x[1] = 7; … x[99] = 52; //last one

13
Hint: Remember that an array of 100 elements is subscripted by

14
**What happens if I try the following?**

int ray[] = new int [100]; // ok System.out.println( ray[-1] ); // ? int k = ray[100]; // ?

15
**What happens if I try the following?**

int ray[] = new int [100]; System.out.println( ray[-1] ); int k = ray[100]; Boom!

16
**How long (how many elements) is an array?**

Ask it! int howLongIsMyArray = a.length; (Reminds one of .length() and Strings.)

17
**Back to the room reservation problem (now using arrays).**

It becomes much easier! How can we use arrays?

18
**Back to the room reservation problem (now using arrays).**

It becomes much easier! final int N = 100; //# of rooms boolean rooms[] = new boolean[ N ]; //init all rooms to unoccupied How?

19
**Back to the room reservation problem (now using arrays).**

It becomes much easier! final int N = 100; //# of rooms boolean rooms[] = new boolean[ N ]; //init all rooms to unoccupied for (int i=0; i<N; i++) { rooms[i] = false; }

20
**Back to the room reservation problem (now using arrays).**

It becomes much easier! final int N = 100; //# of rooms boolean rooms[] = new boolean[ N ]; //init all rooms to unoccupied for (int i=0; i<N; i++) { rooms[i] = false; } What happens is we use <= instead of <?

21
**Back to the room reservation problem (now using arrays).**

It becomes much easier! final int N = 100; //# of rooms boolean rooms[] = new boolean[ N ]; //init all rooms to unoccupied for (int i=0; i<N; i++) { rooms[i] = false; } I keep forgetting if false means occupied or not. Can you suggest a change to make it clearer?

22
**Back to the room reservation problem (now using arrays).**

It becomes much easier! final int N = 100; //# of rooms boolean rooms[] = new boolean[ N ]; final boolean occupied = true; //init all rooms to unoccupied for (int i=0; i<N; i++) { rooms[i] = false; } I keep forgetting if false means occupied or not. Can you suggest a change to make it clearer? Here’s a hint.

23
**Back to the room reservation problem (now using arrays).**

It becomes much easier! final int N = 100; //# of rooms boolean rooms[] = new boolean[ N ]; final boolean occupied = true; //init all rooms to unoccupied for (int i=0; i<N; i++) { rooms[i] = !occupied; } I keep forgetting if false means occupied or not. Can you suggest a change to make it clearer? Here’s a hint.

24
**Interesting code to write:**

Write a piece of code to find a free room. It should determine the free room #. (It should yield -1 if no rooms are free.) Can you write this code?

25
**Interesting code to write:**

Write a piece of code to randomly find a free room. It should determine the free room #. It should yield -1 if no rooms are free. Why is this a better approach in practice (in the “real world”)? Can you write this code?

26
**Interesting code to write:**

Write a piece of code to count the total number of free rooms. Or conversely, write a piece of code to count the number of rooms in use. Can you write this code?

27
**Interesting code to write:**

Write a piece of code to find a block of 3 free rooms. It should determine the lowest room number of the 3 free rooms (otherwise, -1). Can you write this code?

28
**Interesting code to write:**

Use another array for wakeup calls. Use another array to indicate whether or not a room allows smoking or not. Can you write this code?

Similar presentations

OK

Decision Structures - If / Else If / Else. Decisions Often we need to make decisions based on information that we receive. Often we need to make decisions.

Decision Structures - If / Else If / Else. Decisions Often we need to make decisions based on information that we receive. Often we need to make decisions.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google