06-arrays.student

# 06-arrays.student - Last time: tail recursion/iteration...

This preview shows pages 1–3. Sign up to view the full content.

Last time: tail recursion/iteration duality 1: Any tail recursive function has an equivalent iterative version 2: Proof by construction: 5 steps 3: Dependency graphs/shadow vars for solving the "order problem" Today: aggregate types * Array basics * Array pitfalls * Arrays of characters: C-strings * Pointers vs. arrays ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ So far, we've worked with two sorts of data types. The first are "atoms": types with singleton values. For example: something of type "int" holds one "integer". Something of type "char" holds one character. The second are "aggregate" types: types that hold "sets" of values, where each value is of some type. When all values have the same type, we call it a "homogeneous" aggregate, otherwise it is "heterogeneous." These are sometimes also called "container" types, because they contain other types. The two we've seen so far, in the context of project 2, are lists and trees: each holds a collection of integers. We've spent most of our time talking about lists. Lists have an important restriction: you cannot talk about an arbitrary element of a list. You can only talk about "the first element" and "the rest of the list". We say such a structure is "linked"; you have to move from one link to the next. For example, suppose we have the following list: ( 1 2 3 4 ) To talk about element "4", you have to call list_rest three times (to skip past 1, 2, and 3), and then call list_first. Lists have an important advantage too: because they are defined recursively, there is no "maximum-sized" list. A list can grow as large as it needs to be (assuming the resources of the computer are infinite). In contrast, C++ has a structure called an *array*. An array is a fixed-sized, indexed, homogeneous aggregate type (a collection of items, all of the same type.) To declare and define an array of four integers (the same size as our list above), we would say the following: int array[4]; For comparison purposes, let's also declare and define an integer, foo: int foo; The environment that we get when we do this is: +--------------------------+ | +----+ |

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
| foo | | | | +----+ | | | | / +----+ | | / | | | | / +----+ | | / | | | | array | +----+ | | \ | | | | \ +----+ | | \ | | | | \ +----+
This is the end of the preview. Sign up to access the rest of the document.

## This note was uploaded on 02/14/2012 for the course EECS 280 taught by Professor Noble during the Winter '08 term at University of Michigan.

### Page1 / 7

06-arrays.student - Last time: tail recursion/iteration...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document
Ask a homework question - tutors are online