CSC 107 – Programming For Science. Today’s Goal Become familiar with simple arrays Declaring...

Post on 05-Jan-2016

217 views 2 download

Tags:

Transcript of CSC 107 – Programming For Science. Today’s Goal Become familiar with simple arrays Declaring...

LECTURE 20: ARRAYS

CSC 107 – Programming For Science

Today’s Goal

Become familiar with simple arrays Declaring an array variable Assigning data to array entries Using values stored in an array

Know connection between arrays and loops

Variables

Variable name location to store data Only for humans; 0x7E8A2410 harder to

remember Assignments update memory location with

new value Memory location updated by assignment

ONLY When variable is used in program…

…uses current value at that memory location

Variable can store only one value Often want multiple values, like adjusting

for interest

Adjusting For Interest

First call, computed result for every year Then all but last year computed in second

call Third time we called function, computed all

but last 3… and so on…

Only adjusted for 1 year last time we called function

Interest rate, amount, and results were constant Unless save in variables, we have to

recompute Using variables required knowing years

when coding

Could Have Spent Time

Can Make Stronger, Bigger

Arrays are variables that can hold many items Creates range of locations in which to store

data Locations are numbered sequentially from 0

Array entries like variables in their own right To be able to use them, must declare array

(& entries) Value unknown until assigned in the

program But not a true variable, entries depend

on array Access only via array using the entry's

index

Declaring Array Variables

Like all variables, must declare before use

Type, name, & size needed for array declaration Still variables, so names follow usual rules Variable is array of the type, so use any

legal type Each of the array's entries hold value of

that type Size must be integer since ½ a value hard

to use

Declaring Array Variables

Like all variables, must declare before use

Type, name, & size needed for array declaration Still variables, so names follow usual rules Variable is array of the type, so use any

legal type Each of the array's entries hold value of

that type Size must be integer since ½ a value hard

to use

Declaring Array Size

When declaring array, best use constant for size Changing is easy if larger size needed later Have simple way to find array's size during

program Explain reasoning for size using good

constant name Type, name, & size needed for array

declarationint planetsWeight[NOT_PLUTO];float armada[MAX_SHIPS];double annualIncomes[MAX_LIFETIME];char responses[17];long timeToWait[35];

Initializing an Array

Can set initial values when declaring array

Will need to list value for every entry in array Initialize all entries to same value, if desired Or the value of each entry specified separately Additional way of specifying size also provideddouble taxrate[LEVELS] ={0.15, 0.25, 0.3};

int vector[100]={0}; // all 100 entries set to 0

int eger[]={5,0,-5}; // eger's size will be 3

Legal Array Entries

Access array's entries indexed from 0 to size-1 0, 1, 2, 3, 4 legal if size of 5 used to declare

array Array created with size of 8: 0, 1, 2, 3, 4, 5, 6, 7 legal

0 only legal index if size declared as 1

Legal Array Entries

Access array's entries indexed from 0 to size-1 0, 1, 2, 3, 4 legal if size of 5 used to declare

array Array created with size of 8: 0, 1, 2, 3, 4, 5, 6, 7 legal

0 only legal index if size declared as 1 Stupidity defense legal, if array declared

with size 0

Guns (& C++) Don't Kill

C++ make arrays easy, but mistakes easy also Code can access any index within an array No problems compiling, as long as index an int

Includes indices like -1 or 1029374729192 that stupid

To find size, could try using sizeof(array variable)

Entry outside array bounds accessed by program Program may crash with “Segmentation

Fault” Other variable's value used and updated Program may be able to complete normally

Using An Array

Each array entry behaves like variable Accessed via array variable is only

difference To use or assign entry, specify index inside

brackets Example code snippet computing

powers of 2:

long loserArray[10];loserArray[0] = 1;for (long i=0; i < sizeof(loserArray);i++){ loserArray[i] = loserArray[i-1] * 2; cout << loserArray[i] << endl;}

Using An Array

Each array entry behaves like variable Accessed via array variable is only

difference To use or assign entry, specify index inside

brackets Example code snippet computing

powers of 2:

long loserArray[10];loserArray[0] = 1;for (long i=0; i < sizeof(loserArray);i++){ loserArray[i] = loserArray[i-1] * 2; cout << loserArray[i] << endl;}

Using An Array

Each array entry behaves like variable Accessed via array variable is only

difference To use or assign entry, specify index inside

brackets Example code snippet computing

powers of 2:

long loserArray[10];loserArray[0] = 1;for (int i=0; i < sizeof(loserArray); i++){ loserArray[i] = loserArray[i-1] * 2; cout << loserArray[i] << endl;}

Using An Array

Each array entry behaves like variable Accessed via array variable is only

difference To use or assign entry, specify index inside

brackets Example code snippet computing

powers of 2: const int BORED_NOW = 10;long loserArray[BORED_NOW];loserArray[0] = 1;for (int i=0; i < BORED_NOW; i++){ loserArray[i] = loserArray[i-1] * 2; cout << loserArray[i] << endl;}

Let's Trace This Code

int main() {const int BORED_NOW = 4;long loserArray[BORED_NOW];loserArray[0] = 1;for (int i=1; i < BORED_NOW; i++){ loserArray[i] = loserArray[i-1] * 2; cout << loserArray[i] << endl;}cout << "Sorry its stupid!" << endl;return 0;

}

Your Turn

Get into your groups and try this assignment

For Midterm

You can use on this midterm: Your textbook & notes Printout of slides IF has notes on that day's

slides At the same time, you may NOT use:

Computer, calculator, cell phone, or similar Copies of daily activities and/or solutions Friends, Romans, countrymen or their ears

To be certain rules are followed, when test ends Hand in all printed material you had with

you

How to Prepare for Midterm

DO DON'T

Make cheat sheets for the test

Converting to & from decimal

Add post-its to important pages

Review what parts of C++ do

Assume notes replace studying

Memorize Drink case of 40s before

test Use post-its as clothing

For Next Lecture

Read about arrays in Section 10.5 How can we pass arrays as parameters? Can values be changed in the array no

matter what? Why couldn't they be consistent about

params? Midterm on Tuesday

Test will be open-book, open-note, but closed activity

Programming Assignment #2 now on Angel This is a larger assignment; start it now!