Top Banner
Arrays One-Dimensional initialize & display Arrays as Arguments Part I
36

Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Dec 28, 2015

Download

Documents

Frederick Hall
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Arrays

One-Dimensionalinitialize & display

Arrays as Arguments

Part I

Page 2: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Data Types

a simple or atomic

a structured

* *

char, int, float, double

array, struct, union, class

Page 3: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.
Page 4: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Structured Data Type - Array

An array is a collection of data storage locations, each of which holds the same type of data. Each storage location is called an element of the array.

An homogeneous aggregate of elements

Each element is referred to as an indexed or subscripted variable.

Page 5: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.
Page 6: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.
Page 7: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.
Page 8: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.
Page 9: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Array Declaration

SyntaxdataType arrayName [[ ConstIntExpression ]]

The number of elements in an array is stated within square brackets, [ ][ ].

Examplesdouble angle [4]; const int POLY = 8;int testScore [12]; double angle [POLY]; char password [8];

Page 10: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Array Storage

Each array has sufficient memory reserved to hold the number of data items of the given type.

Initializing an array sets up the address of the first element. Addresses of all other elements are offsets from the starting address.

Array elements occupy contiguous memory locations.

Page 11: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Array Element Access

Syntax

arrayName [ indexExpression ]

Program access to each of the array elements is by referring to an offset from the array name. Array elements are counted beginning with zero.

A[0] => add zero to the address of A (1st element)

A[3] => add (3 * width of element) to the address of A (4th element)

Page 12: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Array Element Access

double angle[4]; // declaration

Exampleangle [0] = 6.21;angle [1] = 15.89;angle [2] = 7.5;angle [3] = -45.7;

angle sub zero = 6.21angle sub one = 15.89angle sub two = 7.5angle sub three = -45.7

* * *

6.21

15.89

7.5

-45.7

angle3

--Mathematical notation

Page 13: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Using Array Elements

a write the contents of an array element:cout << angle[2]; // the third element

a assign values to an array element:cin >> angle[3]; // the fourth element angle[2] = pow(axis,4); // the third element

a use it as a parameter:y = sqrt(angle[0]); // the first element

a use it in an expression:x = 2.5 * angle[1] + 64; // the second

element

* * * *

Page 14: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Declare an Array

float myArray[100];

Want to reset myArray to zerosmyArray = 0.0; // works in some languages

In C++, the array name is a pointer to an address in memory

myArray is an address in memory

An attempt to assign a float to a pointer to a float

Page 15: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Array Component Access

for(indexindex=0; index index < arraySize; indexindex++)myArray[indexindex] = 0.0;

100

* *

Zero out an entire array. (Initialize every element to 0.0.)

For loops were “made for” arrays

You always know how many times the loop will execute – once for each element

Page 16: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Off Set

memoryaddresses

starting address

off set by one unit

off set by two units

off set by three units

[ 0 ]

[ 1 ]

[ 2 ]

[ 3]

@#$

@#$

angle int angle[4];

Page 17: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Out-of-Bounds Array Index

memoryaddresses

angle[4] = 135;

cout << angle[5];

[ 0 ]

[ 1 ]

[ 2 ]

[ 3]

@#$

@#$

angle

grade

score

Overwrites value in memory without warning!

Page 18: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Declare an Array

Syntaxtype arrayName[index];

Exampledouble dailyHigh[31] ;

int quizGrade[29] ;

char YSUID[9] ;

*

Page 19: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Initialize an Array Element

SyntaxarrayName[index] = value;

ExampledailyHigh[18] = 16.7;

quizGrade[2] = 15;

YSUID[3] = ‘7’;

*

Page 20: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Initialize an Array at Declaration Time

double angle[4] = {16.21, 15.89, 7.5, -45.7};

double convert[5] = {.64, .89, .76, .83, .65};

int scores[12] = {210, 198, 203, 188, 200, 224, 220, 217, 211, 194, 197, 189};

double iona[8] = {0.0}; // fill with zeros*

Page 21: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Initialize an Array - Variations

int scores[ ] = {210, 198, 203, 188, 200, 224, 220, 217, 211, 194, 197, 189};

char name1[4] = {‘Z’, ‘o’, ‘l’, ‘a’};

char name2[4] = “Zola”; // no braces or ,char phrase [ ] = “Hello World”;

* *

Space for 12 integers

Compiler will allocate 12 bytesWill not compile: “init string too long”

5

Page 22: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Character Arrays - \0

char name1[4] = {‘Z’, ‘o’, ‘l’, ‘a’};

char name2[5] = “Zola”; // no braces or ,needs 5 slots to have space for the end

of string character, \0

char phrase [ ] = “Hello World”;

* *

Compiler will allocate 12 bytes

Page 23: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Sequencing Through an ArrayUse the for statement to sequence through an array.Assume an array with 7 grades in it…Total the contents of an array:

sum = 0;for (index=0; index < 7; index++)

sum += grades[index];

char name1[4] = {‘Z’, ‘o’, ‘l’, ‘a’};Print out an array

for (i = 0, i < 4 , i++) cout << name1[i]; // prints Zola

Page 24: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Loading an Array – with cin

double grade[10];

int index;

for(index=0; index < 10; index++){

cout<<“Enter a grade “;

cin >> grade[index];

}

75 85 65 95 77 88 68 93 59 90

grade0

9

Page 25: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Finding the Max/Min Value

• Set the max or min to element zero.

• Use a for loop to cycle through the array.

• Compare each element to the max/min.

• If necessary, assign a new value to max/min.

How would you do this?

*

Page 26: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Finding the Maximum Value

double find_max(int temp[30]){

int max = temp[0]; //only max seen thus far

for(int index=1; index < 30; index++)if (temp[index] > max)

max = temp[index];return (max);

}

*

If the current temp[ ] is bigger than the max seen thus far. Remember this one!

Page 27: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Finding the Minimum Value

double find_min(int temp[30]){

int min = temp[0]; // minimum thus far

for(int index = 1; index < 30; index++)if (temp[index] << min)

min = temp[index];return ( min );

}

*

Page 28: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Aggregate Assignment - NOT!

There are no aggregate assignments with arrays. That is, you may not assign one array to another.

int x[5] = {11, 22, 33, 44, 55};

int y[5];

y = x; y[ ] = x[ ];

for (i=0;i<5;i++)

y[i] = x[i];

Page 29: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Arrays as Arguments

double find_max(int temp[ ]temp[ ]){

max = temp[0];

for(index = 1; index < 30; index++)if (temp[index] > max)

max = temp[index];return max;

}

double find_max(int temp[ ]temp[ ])

*

Leave blank or use constant

Page 30: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Passing an Array or Elements

find_max(temptemp); // whole array, no [ ]

inventory(priceprice, quantityquantity, amountamount); // 3 arrays

words(cupletcuplet);

find_max(temp[3]temp[3]);

inventory(priceprice, quantity[4]quantity[4], amount[12]amount[12]);

words(cuplet[0]cuplet[0]);

*

Elements of an array

Page 31: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Comparing Arrays as Arguments to Simple Data Types

formal parameterformal parameter formal parameterformal parameterdeclaration fordeclaration for declaration fordeclaration for

parameterparameter Pass-by-ValuePass-by-Value Pass-by-ReferencePass-by-Reference

simple var. int cost int& pricearray impossible int myArray[ ]

array const int source[ ]Keeps function from changing values in the array

Page 32: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

Passing an Array Element

Follows the rules for the type of an element in the array

int cntA[1111];cntA[33] is an int and is treated as any

other int when used as an actual argument.

cntA refers to the entire array. It is the address of the array or a pointer to the array.

Page 33: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

                                                                                          

      

                                              

Slide 39 of 55

Page 34: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

                                                                                          

      

                                              

Slide 40 of 55

Page 35: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

1-D Array Review

An array is a structured data type

1st element is “arrayName subzero”

Array Declarationint myArray [9];

Array Initializationint myArray [9 ] = { 9, 9, 9, 8, 7, 6, 5, 4,

3};

Array Element ReferencemyArray [3]; // value = 8 *

99

const int MAXELS = 9;

Use everywhere instead of the literal

Page 36: Arrays One-Dimensional initialize & display Arrays as Arguments Part I.

1-D Array Review

Arrays are always passed by reference, unless const added to the formal parameter.

Array in a Function Prototypevoid myFunction(int [9]);

Array in a Function CallmyFunction(myArray);

Array in a Function Headervoid myFunction(int anyArrayName[9])

optional