csci 3328 object oriented programming in c# chapter 7: arrays 1 xiang lian the university of texas...
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/1.jpg)
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
![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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062807/5697c0151a28abf838ccd9bf/html5/thumbnails/30.jpg)
30