Array Processing

1 / 47

# Array Processing - PowerPoint PPT Presentation

Array Processing. Lecture 7. Motivation. One of the most powerful programming tools available Help to organize a collection of homogeneous data items (same type and lenght). The individual data items that make up the array are called as Element of the array

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Array Processing' - panthea

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Array Processing

Lecture 7

Motivation
• One of the most powerful programming tools available
• Help to organize a collection of homogeneous data items (same type and lenght). The individual data items that make up the array are called as Element of the array
• Example: Scores[3]  indicated the third exam score
Operation on Arrays
• Processing the elements of the array
• Searching an array (linear or binary search)
• Writing out the array content to the report

### Simple Algorithm to manipulate Array

Example 7.1 Find the sum of the elements of an array
• Each elemen of the array is accumulated into a variable called sum. When all elements have been added, the variable sum is printed.
Find_sum_of_elements

Set sum to zero

DO index = 1 to number_of_elements

sum = sum + array(index)

ENDO

Print sum

END

Example 7.2 Find the average of the elements of an array
• Each element of the array is accumulated into a variable called sum. When all elements have been added, the average of the elements is found and printed.
Find_element_average

Set sum to zero

DO index = 1 to number_of_elements

sum = sum + array(index)

ENDO

Average = sum / number_of_elements

Print average

END

Example 7.3 Find the largest elements of an array
• The elements of an array are searched to determine which element is the largest. The algorithm starts by putting the first element of the array into the variable largest_element, and then looks at the other elements of the array to see if a larger value exists. The largest value is then printed.
Find_largest_element

Set largest_element to array(1)

DO index = 2 to number_of_elements

IF array(index) > largest_element THEN

largest_element = array(index)

ENDIF

ENDO

Print largest_element

END

Example 7.4 Find the smallest of the elements of an array
• The elements of an array are searched to determine the smallest element. The algorithm starts by putting the first element of the array into the variable smallest_element, and then looks at the other elements of the array to see if a smaller value exists. The smallest value is then printed.
Find_smallest_element

Set smallest_element to array (1)

DO index = 2 to number_of_elements

IF array(index) < smallest_element THEN

smallest_element = array(index)

ENDIF

ENDO

Print smallest_element

END

Find_range_of_element

Set smallest_element to array(1)

Set largest_element to array(1)

DO index = 2 to number_of_elements

IF array(index) < smallest_element THEN

smallest_element = array(index)

ELSE

IF array(index) > largest_element THEN

largest_element = array(index)

ENDIF

ENDIF

ENDO

Print the range as smallest_element followed by largest_element

END

Initialising the elements of an array
• Because an array is an iternal data structure, initial values must be placed into the array before any information can be retrieved from it.
• The initial values can be assigned to the element as constant or be read from file.
Loading constant values into array (only be used for data which is unlikely to be changed)

Initialise_month_table

month_table(1) = `Januari`

month_table(2) = `February`

.

.

.

month_table(12) = `December`

END

Set max_num_elements to required value

Set index to zero

DOWHILE (input value exist) AND (index<max_num_elements)

index = index + 1

array(index) = input value

ENDDO

IF (input value exist) AND index = max_num_elements THEN

Print `Array size is too small`

ENDIF

END

Array of variable size

Set max_num_elements to required value

Set index to zero

DOWHILE (input value NOT = 9999) AND (index<max_num_elements)

index = index + 1

array(index) = input value

ENDDO

IF index < max_num_elements THEN

index = index + 1

array(index) = 9999

ELSE

Print `Array size is too small`

ENDIF

END

Sentinel value  indicate the end of input records during initial processing and the last element of the array during further processing

Paired Arrays
• Two array with the same number of elements are paired because they correspond each other.
• Example:
• A student number ID array and student name array

Paired Arrays Example(Algorithm to read a file of product codes and corresponding selling price and load them into corresponding arrays)

Set max_num_elements to required value

Set index to zero

DOWHILE (NOT EOF input record) AND (index<max_num_elements)

index = index + 1

product_codes(index) = input_product_code

selling_prices (index) = input_selling_price

ENDDO

IF (NOT EOF input record) AND index = max_num_elements THEN

Print `Array size is too small`

ENDIF

END

Searching an Array
• The reason:
• To edit an input value (ie. Valid element or not)
• To retrieve information from array
• To retrieve information from corresponding element in a paired array.
Linear search array

Linear_search_of_an_array

Set max_num_elements to required value

Set element_found to false

Set index to 1

DOWHILE (NOT element_found) AND (index <= max_num_elements)

IF array(index) = input_value THEN

Set element_found to true

ELSE

index = index + 1

ENDIF

ENDDO

IF element_found THEN

Print array (index)

ELSE

ENDIF

END

Binary Search Array(effective method for elements more than 25 and sorted into ascending sequence)

Binary_search_of_an_array

Set element_found to false

Set low_element to 1

Set high_element to max_num_elements

DOWHILE (NOT element_found) AND (low_element <= high_elements)

index = (low_element + high_element)/2

IF input_value = array(index) THEN

Set element_found to true

ELSE

IF input_value < array (index) THEN

high_element = index – 1

ELSE

low_element = index + 1

ENDIF

ENDIF

ENDDO

IF element_found THEN

Print array (index)

ELSE

ENDIF

END

Writing out the contents of an Array

Write_values_of_array

DO index = 1 to number_of_elements

Print array (index)

ENDDO

END

### Programming Example Using Array

Example 7.6 Process exam scores
• Design a program that will prompt for and receive 18 examination scores from a mathematics test, compute the class average, and display all the scores and the class average to the screen.
Control Structures required
• An array to store the exam scores – called ´scores´
• An index to identify each element in the array
• A DO loop to accept the scores
• Another DO loop to display the scores to the screen.
Solution Algorithm

Process_exam_scores

Set total_score to zero

DO index = 1 to 18

Prompt operator for score

Get scores(index)

total_score = total_score + scores(index)

ENDDO

Compute average_score = total_score / 18

DO index = 1 to 18

Display scores(index)

ENDDO

Display average_score

END

Example 7.7 Process integer array
• Design an algorithm that will read an array of 100 integer values, calculate the average integer value, and count the number of integers in the array that are greater than the average integer value. The algorithm is to display the average integer value and the count of integers greater than average.
Control Structures required
• An array of integer values – called ´numbers´
• A DO loop to calculate the average of the integers
• Another DO loop to count the number of integers greater than the average.
Solution Algorithm

Process_integer_array

Set integer_total to zero

Set integer_count to zero

DO index = 1 to 100

integer_total = integer_total + numbers(index)

ENDDO

integer_average = integer_total / 100

DO index = 1 to 100

IF numbers(index) > integer_average THEN

ENDIF

ENDDO

Display integer_average, integer_count

END

Example 7.8 Validate sales number
• Design an algorithm that will read a file of sales transactions and validate the sales numbers on each record. As each sales record is read, the sales number on the record is to be verifief against an array of 35 sales numbers. Any sales number not found in the array is to be flagged as an error.
Control Structures required
• A previously initialised array of sales numbers, called ´sales_numbers´
• A DOWHILE loop to read the sales file
• A DOWHILE loop to perform linear search
• A variable element_found to stop the search
Solution Algorithm

Validate_sales_numbers

Set max_num_elements to 35

DOWHILE sales_records exist

Set element_found to false

Set index to 1

DOWHILE (NOT element_found) AND (index <= max_num_elements)

IF sales_numbers(index) = input sales number THEN

Set element_found to true

ELSE

index = index + 1

ENDIF

ENDDO

IF NOT element_found THEN

Print `invalid sales numer`, input sales number

ENDIF

ENDDO

END

Example 7.9 Calculate shipping Charge
• Design an algorithm that will read an input weight for an item to be shipped, search an array of shipping weigths and retrieve a corresponding shipping charge. In this algorithm, two paired arrays, each containing six elements, have been established and initialised. The array, shipping_weights, contains a range of shipping weights in grams, and the array, shipping_charges, contains a corresponding array of shipping charges in dollars, as follows:
Control Structures required
• Two arrays, called ´shipping_weigths´ and ´shipping_charges`
• A DOWHILE loop to search the shipping_weigths array and then retrieve the shipping_charges
• A variable element_found to stop the search when entry weight is found
Solution Algorithm

Calculate_shipping_charge

Set max_num_elements to 6

Set element found to false

Prompt for entry weigth

Get entry weight

DOWHILE (NOT element_found) AND (index <= max_num_elements)

IF shipping_weights(index) < entry weight THEN

ELSE

set element_found to true

ENDIF

ENDDO

IF element_found THEN

shipping_charge = shipping charges(index)

Display `shipping charge is`, shipping_charge

ELSE

Display `invalid shipping weight`, entry weight

ENDIF

END

Two-dimensional Arrays
• Where two subscripts are required to locate an element in an array.
• The number of elements is calculated as the product of the number of rows and the number of columns
• Specified by: array(row_index,column_index)

Set max_num_elements to 24

Set row_index to zero

DOWHILE (input values exist) AND (row_index < 6)

row_index = row_index + 1

DO column_index = 1 to 4

shipping_charges(row_index,column_index) = input value

ENDDO

ENDDO

IF (input values exist) AND row_index = 6 THEN

Print ´Array size to small`

ENDIF

END

Searching Two dimensional Array

Calculate_shipping_Charges

Set row_index to 1

Set element_found to false

Prompt for shipping_weight, zone

Get shipping_weight, zone

DOWHILE (NOT element_found) AND (row_index <= 6)

IF shipping_weights(row_index) < input shipping_weight THEN

ELSE

set element_found to true

ENDIF

ENDDO

IF element_found THEN

IF zone = (1 or 2 or 3 or 4) THEN

shipping_charge = shipping_charges(row_index, zone)

display ´shipping charge is`, shipping_charge

ELSE

display `invalid zone`, zone

ENDIF

ELSE

Display `invalid shipping weight`, input shipping_weight

ENDIF

END

Writing out the contents of 2-d array

Write_values_of_array

Set number_of_rows to required value

Set number_of_columns to required value

DO row_index = 1 to number_of_rows

DO column_index = 1 to number_of_columns

Print array (row_index, column_index)

ENDDO

ENDDO

END