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

22
LECTURE 20: ARRAYS CSC 107 – Programming For Science

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

Page 1: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

LECTURE 20: ARRAYS

CSC 107 – Programming For Science

Page 2: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 3: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 4: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 5: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

Could Have Spent Time

Page 6: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 7: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 8: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 9: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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];

Page 10: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 11: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 12: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 13: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 14: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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;}

Page 15: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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;}

Page 16: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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;}

Page 17: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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;}

Page 18: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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;

}

Page 19: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

Your Turn

Get into your groups and try this assignment

Page 20: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 21: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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

Page 22: CSC 107 – Programming For Science. Today’s Goal  Become familiar with simple arrays  Declaring an array variable  Assigning data to array entries

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!