1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin....

25
1 One Dimensional Arrays Chapter 11

Transcript of 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin....

Page 1: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

1

One Dimensional Arrays

Chapter 11

Page 2: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

2"All students to receive arrays!" reports Dr. Austin.

Declaring arrays

scores : 85 79 92 57 68 80 . . . scores : 85 79 92 57 68 80 . . . 0 1 2 3 4 5 98 99

Inspecting arrays

Passing arrays as parameters

Page 3: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

3

Design Problem

Consider a program to calculate class average

Why??Why??

?

Page 4: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

4

Add to Design Problem

Now your client says, I need to ALSO calculate and display “deviations” from the average

Describe why this will or will NOT workDescribe why this will or will NOT work

Page 5: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

5

Enter in the scores again Use 100 separate variables

» and cout and cin commands Read (then re-read) from a file The real answer …

Possible Solutions

Use arrays!!

Page 6: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

6Simple vs Structured Data Types

Simple data type => data element contains a single value

Structured data type => a data element contains a collection of data values

x : 15x : 15 avg : 84.35avg : 84.35 ch : ‘A’ch : ‘A’

scores : 85 79 92 57 68 80scores : 85 79 92 57 68 80

name : ‘C’ ‘L’ ‘Y’ ‘D’ ‘E’name : ‘C’ ‘L’ ‘Y’ ‘D’ ‘E’

Page 7: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

7

Arrays

Arrays are Structured Data Types They have a means of accessing

individual components Values can be retrieved from and stored

in the structure

scores : 85 79 92 57 68 80scores : 85 79 92 57 68 800 1 2 3 4 5

cout << scores[2];scores[0] = 100;cout << scores[2];scores[0] = 100;

Page 8: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

8

One Dimensional Array

Structured collection of components» All of the same type

Structure given a single name Individual elements accessed by index

indicating relative position in collection Type of elements stored in an array can be

“just about” anything Index of an array must be an integer

Page 9: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

9Use of Array for Our Problem

Store elements in array as read in Go back and access for deviations

Note declarationNote declaration

Page 10: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

10

Declaring Arrays

Syntax: Data_type Array_name [constant];

Note declaration from our example

Tells how many elements set asideTells how many elements set aside

Page 11: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

11

Declaring Arrays

Example specifies an array…» each element is an integer» there is space for 100 elements» the are numbered 0 through 99

scores : 85 79 92 57 68 80 . . . scores : 85 79 92 57 68 80 . . . 0 1 2 3 4 5 98 99

Page 12: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

12Accessing Individual Components

Use the name of the array Followed by an integer expression

inside the square brackets [ ]

scores : 85 79 92 57 68 80 . . . scores : 85 79 92 57 68 80 . . . 0 1 2 3 4 5 98 99

max = scores[0];for (x = 0; x < 100; x++) if (scores[x] > max) max = scores[x];

max = scores[0];for (x = 0; x < 100; x++) if (scores[x] > max) max = scores[x];

Index can be:- constant- variable- expressionMUST be an integer

Index can be:- constant- variable- expressionMUST be an integer

Page 13: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

13

Out of Bounds Index What happens if …

C++ does NOT check for index out of range Possible to walk off into “far reaches” of

memory -- clobbers ...» other variable locations» .exe code » the operating system (??)

float f_list [50];

f_list [100] = 123.456;

float f_list [50];

f_list [100] = 123.456;

Page 14: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

14Initializing Arrays in Declarations

Possible to declare the size & initialize

Possible to omit size at declaration» Compiler figures out size of array

int results [5] = {14, 6, 23, 8, 12 }int results [5] = {14, 6, 23, 8, 12 }

float prices [ ] = { 2.41, 85.06, 19.95, 3.91 }float prices [ ] = { 2.41, 85.06, 19.95, 3.91 }

Page 15: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

15

Aggregate Operations

Defn => an operation on the data structure as a whole» as opposed to operation on a SINGLE

element within the structure Example

» would be nice to read in a WHOLE array

Page 16: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

16Lack of Aggregate Operations

Would be nice but . . . C++ does NOT have . . .

Assignment operator for whole array Arithmetic operations for whole array

(think matrix) Comparisons for arrays (not even = =) Return of an array type by a function

Page 17: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

17How to Accomplish Aggregate Operations?

Most such tasks (assignment, read, write) can be performed some other way» CS II course will write “classes” to

provide these functions Otherwise

» these operations must be performed by the programmer

» element by element in a loop

Page 18: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

18

Arrays as Parameters

This is one task that CAN be done to the WHOLE array

C++ always passes arrays by reference

Page 19: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

19

Arrays as Parameters

The name of the array is a pointer constant

The address of the array is passed to the function

Size of thearray alsopassed tocontrol loop

Page 20: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

20

Arrays as Parameters

Note the empty brackets in parameter list » A number can be placed here but it

will beignored

Page 21: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

21

Sub-array Processing

Note we specified an array size of 100» but we don’t anticipate that many scores

Array always declared larger than needed Must keep track of how many have been

used» this is our limit when doing other things to

the array

Page 22: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

22

Design Problem

Consider the task of keeping track of data about parts for manufacture» part number,

description, qty needed, unit price

Page 23: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

23

Design Problem

Use “Parallel” arrays One array each for

part num, descrip, qty, price

nth item in any one of the arrays associated with same nth item of all the arrays

part # descrip qty price

A100 xxx 5 1.23

B25 yyy 23 8.95

0

1

2

Page 24: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

24Testing and Debugging Hints

Range of legal index values is 0 to array_size - 1 Individual elements of the array are of the

component type No aggregate operations in arrays

» you must write the code to do this If array parameter is incoming, specify formal

parameter as const » prevents function from modifying

Page 25: 1 One Dimensional Arrays Chapter 11 2 "All students to receive arrays!" reports Dr. Austin. Declaring arrays scores : 85 79 92 57 68 80... 0 1 2 3 4.

25Testing and Debugging Hints

Omitting array size in declaration» when array declared formal parameter» when array initialized at declaration

Don’t pass component when function expects entire array

Declare array size as max ever needed» process only part of array which is used

Pass array name and length to functions which process array or sub array