csci 3328 object oriented programming in c# chapter 7: arrays 1 xiang lian the university of texas...

30
CSCI 3328 Object CSCI 3328 Object Oriented Programming Oriented Programming in C# in C# Chapter 7: Arrays Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 [email protected]

Upload: hope-mcgee

Post on 21-Jan-2016

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

CSCI 3328 Object Oriented CSCI 3328 Object Oriented Programming in C# Programming in C#

Chapter 7: ArraysChapter 7: Arrays

1

Xiang Lian

The University of Texas Rio Grande Valley

Edinburg, TX 78539

[email protected]

Page 2: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Objectives

• In this chapter, you will:– Learn how arrays are used to store elements– Get familiar with the declaration, initialization, and

reference to elements of the array– Know how to pass arrays to methods– Learn how to use multidimensional arrays– Learn how to use foreach statement to iterate

through elements in the array

2

Page 3: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Arrays

• An array is a group of variables (called elements) containing values that all have the same data type

• For most languages, the number of elements are static and defined at declaration

• Single dim, two dim and multiple dim

3

Page 4: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Example of an Array

• The first element is the zeroth element

• The highest position number is array’s upper bound– Array C on RHS: 11

• Access array elements– Use index (or subscript)– E.g., C[8]

C[0] -45

C[1] 6

C[2] 0

C[3] 72

C[4] 34

C[5] 39

C[6] 98

C[7] -1345

C[8] 939

C[9] 10

C[10] 40

C[11] 334

Page 5: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Arrays (cont'd)

• Data structure consisting of related data items of the same type

• One variable name, multiple elements

• Arrays are passed as reference type, not value

• To access an element we use name of the array and index in square bracket

5

Page 6: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Declaring and Creating Arrays

• Declaration– int[] array = new int[12]; (creates indices 0 to 11)

• Or do it this way:– int[] array;– array = new int[12];

• Or this way:– int[] array;– const int size = 12;– array = new int[size];

• Since array is an object, we can resize the array as follows:– Array.Resize(ref array, 10);

6

Page 7: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Arrays of Other Data Types

• string [] str = new string [100];

• char [] ch = new char [ 50];

• …

7

Page 8: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Initializing an Array

// creates 5-element array

•Initializing arrays while declaring– int [] arr = new int [] {10, 20, 30, 40, 50};– int [] array = {10,20,30,40,50};

8

Page 9: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Sum in an Array

• int[] array = {10,20,30,40,50};

// creates 5-element array

• Finding the sumdouble sum=0;

double average;

for (int counter =0; counter < array.Length; counter++)

sum = sum+array[counter];

size of the array

9

Page 10: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Average in an Array

• int[] array = {10,20,30,40,50};

// creates 5-element array

• Finding the sumdouble sum=0;

double average;

for (int counter =0; counter < array.Length; counter++)

sum = sum+array[counter];

average = sum/array.Length;

10

Page 11: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Standard Deviation Explained

• In your assignment, assuming array has length n, the standard deviation is given by:

11

Page 12: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

foreach Statements

• In addition to for loops, you can also work with:

• Syntax– foreach (type identifier in arrayName)

• REMEMBER: YOU HAVE TO START WITH ELEMENT 0!

12

Page 13: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Syntax of foreach Statements

• Example of computing summation of elements in an array called scores:

foreach (int score in scores)

{ sum = sum + score;

}

13

Page 14: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Passing Arrays by Value

• Declaration– int[] firstArray={1, 2, 3};– int[] firstArrayCopy = firstArray;– public static void FirstDouble (int [] array) {

for (int i = 0; i<array.Length; i++)array[i]*=2;

array = new int [] {11, 12, 13}; }

• Call– FirstDouble(firstArray);

14

Page 15: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Passing Arrays by Reference

• Declaration– int[] secondArray={1, 2, 3};– int[] secondArrayCopy = firstArray;– public static void SecondDouble (ref int [] array) {

for (int i = 0; i<array.Length; i++)array[i]*=2;

array = new int [] {11, 12, 13}; }

• Call– SecondDouble(ref secondArray);

15

Page 16: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Rectangular Arrays

• Rectangular array is a two dimensional array• Similar to a table with rows and columns

– arrayName[row, column]

• int [ , ] a = new int [3, 4];

16

a[0, 0] a[0, 1] a[0, 2] a[0, 3]

a[1, 0] a[1, 1] a[1, 2] a[1, 3]

a[2, 0] a[2, 1] a[2, 2] a[2, 3]

Column 0 Column 1 Column 2 Column 3

Row 0

Row 1

Row 2

Page 17: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Nested Array Initializer

• int [ , ] arr = {{1, 2}, {3, 4}};

1 2

3 4

17

Page 18: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Example of Rectangular Arrays

public int [,] hands = new int[5, 14];

for (i=1; i<=52; i++){

hands[player, hand] = sdeck[i];}

18

Page 19: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Jagged Arrays

• Tables that have rows of unequal columns – Somewhat like an array of arrays– Fixed students and exams not everyone taking it..

int [] [] scores = new int [students][];

scores[0] = new int [5]; // student 0 takes 5 exams

scores[1] = new int [4]; // student 1 takes 4 exams

19

Page 20: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Sort an ArrayC[0] -45

C[1] 6

C[2] 0

C[3] 72

C[4] 34

C[5] 39

C[6] 98

C[7] -1345

C[8] 939

C[9] 10

C[10] 40

C[11] 33 20

C[0] -1345

C[1] -45

C[2] 0

C[3] 6

C[4] 10

C[5] 33

C[6] 34

C[7] 39

C[8] 40

C[9] 72

C[10] 98

C[11] 939

Page 21: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Sort Method of Array

• You need to write your own sort methods later own

• For now you can use:– Array.Sort(scores);

• The identifier, scores, is the array you created

21

Page 22: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Search Method

• Searching: to determine whether a value (called search key) is in the array– Linear search

• Compare each element of the array with the search key

• For either sorted or unsorted array

• Efficient for small array

– Binary search• For sorted array

22

Page 23: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Linear Search

23

C[0] -45

C[1] 6

C[2] 0

C[3] 72

C[4] 34

C[5] 39

C[6] 98

C[7] -1345

C[8] 939

C[9] 10

C[10] 40

C[11] 33

search key

Page 24: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Binary Search

• You need to write your own binary search method later

• But now you can use:– int index = Array.BinarySearch(array, value);– If index < 0, then value is not found in the array– Otherwise, index stores the index of value in the

array

24

Page 25: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Binary Search

25

C[0] -1345

C[1] -45

C[2] 0

C[3] 6

C[4] 10

C[5] 33

C[6] 34

C[7] 39

C[8] 40

C[9] 72

C[10] 98

C[11] 939

search key: 10

first

last

middle

Page 26: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Binary Search

26

C[0] -1345

C[1] -45

C[2] 0

C[3] 6

C[4] 10

C[5] 33

C[6] 34

C[7] 39

C[8] 40

C[9] 72

C[10] 98

C[11] 939

search key: 10

first

last

middle

Page 27: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Binary Search

27

C[0] -1345

C[1] -45

C[2] 0

C[3] 6

C[4] 10

C[5] 33

C[6] 34

C[7] 39

C[8] 40

C[9] 72

C[10] 98

C[11] 939

search key: 10first

last

middle

Page 28: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Binary Search

28

C[0] -1345

C[1] -45

C[2] 0

C[3] 6

C[4] 10

C[5] 33

C[6] 34

C[7] 39

C[8] 40

C[9] 72

C[10] 98

C[11] 939

search key: 10

first

last

middle

Page 29: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

Copying an Array

• You can copy one element at a time or the entire array– Array.Copy(fromArray, fromIndex, toArray, to Index, length);

• Note: the following statement does not copy, but creates another reference to the array – string[] copyDeck = oDeck;

29

Page 30: CSCI 3328 Object Oriented Programming in C# Chapter 7: Arrays 1 Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 xiang.lian@utrgv.edu

30