Programming Fundamentals/Arrays

This lesson introduces arrays.

Objectives and Skills

Objectives and skills for this lesson include:

• Understand single and multi-dimensional arrays
• Understand dynamic arrays
• Understand associative arrays
• Use arrays to implement program functionality

Activities

Complete the following activities using pseudocode, a flowcharting tool, or your selected programming language. Use separate functions for input, each type of processing, and output. Avoid global variables by passing parameters and returning results. Create test data to validate the accuracy of each program. Add comments at the top of the program and include references to any resources used.

1. Review MathsIsFun: Definition of Average. Create a program that asks the user to enter grade scores. Start by asking the user how many scores they would like to enter. Then use a loop to request each score and add it to a static (fixed-size) array. After the scores are entered, calculate and display the high, low, and average for the entered scores.
2. Review MathsIsFun: Leap Years. Create a program that asks the user for a year, and then calculate whether or not the given year is a leap year. Build an array where each entry is the number of days in the corresponding month (January = 31, February = 28 or 29 depending on year, March = 31, etc.). Build a parallel string array with the names of each month. Then ask the user to enter a month number, and look up the corresponding month name and number of days and display the information. Continue accepting input and displaying results until the user enters a number less than 1 or greater than 12.
3. Review Wikipedia: Zeller's congruence. Create a program that asks the user for their birthday (year, month, and day) and then calculate and display the day of the week on which they were born. Use an array lookup to convert the numeric day of the week to the correct string representation (Monday, Tuesday, Wednesday, etc.).
4. Review Khan Academy: A guessing game. Write a program that allows the user to think of a number between 0 and 100, inclusive. Then have the program try to guess their number. Start at the midpoint (50) and ask the user if their number is (h)igher, (l)ower, or (e)qual to the guess. If they indicate lower, guess the new midpoint (25). If they indicate higher, guess the new midpoint (75). Record each guess in an array and continue efficiently guessing higher or lower until they indicate equal. Finally, display the array/list of guesses made while attempting to guess their number and end the program.
5. Review Wikipedia: Monty Hall problem. Create a program that uses an array to simulate the three doors. Use 0 (zero) to indicate goats and 1 (one) to indicate the car. Clear each "door" and then use a random number function to put the number 1 in one of the array elements. Then use the random number function to randomly select one of the three elements. Run the simulation in a loop 100 times to confirm a 1/3 chance of winning. Then run the simulation again, this time switching the selection after a 0 (goat) is removed from the remaining choices. Run the simulation in a loop 100 times to confirm a 2/3 chance of winning by switching.
6. If your programming language supports it, use a built-in sort function to sort the grade scores from the activity above and display the array in order from highest score to lowest score.
7. If your programming language supports it, update one or more of the programs above to replace the static array with a dynamic array, and extend the array as each item is added to the array. Continue accepting scores until the user enters no value (empty input).

Lesson Summary

• Depending on the language, array types may overlap (or be identified with) other data types that describe aggregates of values, such as lists and strings. Array types are often implemented by array data structures, but sometimes by other means, such as hash tables, linked lists, or search trees. In Python, the built-in array data structure is a list.
• Arrays can have multiple axes (more than one axis). Each axis is a dimension. Thus a single-dimension array is also known as a list. A two-dimension array is commonly known as a table.
• Arrays are an important complex data type used in almost all programming. We continue to concentrate on simple one dimension arrays also called a list. Most programmers develop a series of user-defined specific task functions that can be used with an array for normal processing. These functions are usually passed the array along with the number of elements within the array. Some functions also pass another piece of data needed for that particular functions task.
• Finding a specific member of an array means searching the array until the member is found. It’s possible that the member does not exist and the programmer must handle that possibility within the logic of his or her algorithm.

Key Terms

array
Data structure consisting of a collection of elements, each identified by at least one index or key.
dynamic array
A random access, variable-size list data structure that allows elements to be added or removed.
index notation
Used to specify the elements of an array. Most current programming languages use square brackets [] as the array index operator.
linear search
Sequentially checks each element of the list for the target value until a match is found or until all the elements have been searched.[source?]
list
A single dimension array.[source?]
offset
The method of referencing array members by starting at zero.[source?]
parallel array
A form of implicit data structure that uses multiple arrays to represent a singular array of records.
static array
An array with its length not changing. Items can be replaced or changed but no more can be added or subtracted.
table
A two dimensional array.[source?]