240 likes | 250 Views
This presentation provides an overview of C# arrays, including how to declare and load arrays, process individual elements, and use constant arrays. It also covers topics such as partially filled arrays, using arrays as arguments, and working with arrays as tables.
E N D
CIS162AD - C# Arrays – part 112_arrays_loading.ppt
Overview of Topics • Declaring Arrays • Loading Arrays • Partially Filled Arrays • Arrays Elements as Arguments • Declaring and Loading Constant Arrays
Arrays are Tables • Array is a different word for a table. • A table is made up of columns and rows. • Just like an Excel spreadsheet.
Array Defined • An array is used to process a collection of data all of which is of the same data type (Integer, Decimal, String, etc.). • First we’ll look at single dimensional arrays (one column, many rows). • Think of a single dimensional array as a list of variables.
Declaring Array int intQty1, intQty2, intQty3;int[ ] intQty = new int[3]; //3 integer variablesdataType[ ] arrayName = new dataType[arraySize]; • An array of 3 elements of type integer is created. • The arraySize is used by C# to determine how much memory to allocate. • Arrays will usually be class-level because after values are loaded in we don’t want to lose the values.
Array Subscript dataType[ ] arrayName = new dataType[arraySize]; • Arrays are allocated consecutive memory. • Each element is referenced using a subscript. • Subscript are integers. • The number of elements that are created is arraySize. • The first element in the array is referenced with a value of zero [0]. • The last element is referenced with a subscript value of [arraySize – 1]. • A subscript is also referred to as an index. • Short variable names for subscripts are acceptable.
Subscript Out Of Range • If during execution, the subscript value referenced an element past the end of the array, the program would throw an exception (run-time error). • The programmer must make sure that the logic in the program does not allow the subscript to exceed the array size. • This is called being out of range.
Preventing Out of Range • C# will not prevent a subscript out of range error, but it will abort the execution when it happens. • It aborts because the subscript would be referencing some other section of memory than what was allocated for the array. • The programmer is responsible for preventing the out range error. • We can use some of the Array Class properties and methods to manage arrays, arrayName.Length arrayName.GetUpperBound(0). • The For Each (foreach) command may also be used to walk through arrays.
Array Class Properties & Methods int[ ] intQty = new int[3]; //3 integer variables • arrayName.Length • intQty.Length is equal to 3. • intQty.Length is the number of entries that can be loaded. • The last valid subscript value is one less than Length. • arrayName.GetUpperBound(0). • intQty.GetUpperBound(0) is equal to 2. • intQty.GetUpperBound(0) is last valid subscript value. • Depending the loop structure, we may use: • less than Length or • Equal to GetUpperBound(0)
Array Processing • Declare Array • Load Array • After creating the array, data must be loaded. • Use arrayName.Length or arrayName.GetUpperBound(0) to prevent out of range errors. • Note: Arrays can be declared and loaded with constant values. • Process Array • Use individual elements in calculations or as arguments. • Send entire arrays to methods for processing. • Sort, Search, Display • Use a lot of For loops or For Each loops.
Declare Array //Arrays are declared at the class level, //so they can be referenced by all methods.int[ ] cintTestScores = new int[20];int cintNumberOfStudents; //We can load up to 20 scores, but we will //save how many tests are actually loaded in cintNumberOfStudents.
Declare Array with a Const //Arrays can be declared using a constant for the size.const int intARRAY_SIZE = 20;int[ ] cintTestScores = new int[intArraySize];//We can still load up to 20 scores
Load Array cs12ex.txt 5040100301020 //Loads Array with scores saved in a data file. private void btnLoadArray_Click( ) {FileStream studentFile = new FileStream("cs12ex.txt", FileMode.Open); StreamReader studentStreamReader = new StreamReader(studentFile); int i = 0; //subscript initialized to zerowhile (studentStreamReader.Peek() != -1){ if (i < cintTestScores.Length) {cintTestScores[i] = int.Parse(studentStreamReader.ReadLine( )); i ++; //Increment subscript by one } else { MessageBox.Show (“Array Size Exceeded”); break; //Get of out of loop; Array is full. }}cintNumberOfStudents = i; //Save how many students were loadedstudentFile.Close( ); //Close file }
Process Array – Individual Elements private void btnProcessArray_Click( ) {int i;int intSum = 0; for (i = 0; i <= cintTestScores.GetUpperBound(0); i++){ intSum += cintTestScores[i]; } txtSum.Text = intSum.ToString(“N0”); }
For Each - Example private void btnProcessArray_Click( ) {int i; //subscript not neededint intSum = 0; foreach (int intTestScore in cintTestScores){ intSum += intTestScore; } txtSum.Text = intSum.ToString(“N0”); }
Individual Elements as Arguments private void btnProcessArray_Click( ) {int i;decimal decPercent; for (i = 0; i <= cintTestScores.GetUpperBound(0); i++){ decPercent = calcPercent(cintTestScores[i]); txtPercent.Text = decPercent.ToString(“N0”); } } private decimal calcPercent(int intScore) { return (intScore / 100); }
Partially Filled Arrays • In the for loop on the prior slide it was assumed that the arrays were filled by going up to GetUpperBound(0). • Up to 20 scores could be loaded, but in the example only 6 scores were actually loaded. • When the array is not full, it is considered a partially filled array. • The for loops need to be modified to only process the number scores loaded. • The number of scores loaded are counted in the load routine, and the count should then be saved in a variable like cintNumberOfStudents. • This variable should then be used when processing the arrays.
Load Array – Partially Filled //Loads Array with scores saved in a data file. private void btnLoadArray_Click( ) {FileStream studentFile = new FileStream("cs12ex.txt", FileMode.Open); StreamReader studentStreamReader = new StreamReader(studentFile); int i = 0; //subscript initialized to zerowhile (studentStreamReader.Peek() != -1){ if (i < cintTestScores.Length) {cintTestScores[i] = int.Parse(studentStreamReader.ReadLine( )); i ++; //Increment subscript by one } else { MessageBox.Show (“Array Size Exceeded”); break; //Get of out of loop; Array is full. }}cintNumberOfStudents = i; //Save how many students were loadedstudentFile.Close( ); //Close file }
Processing Partially Filled Arrays private void btnProcessArray_Click( ) {int i;int intSum; //for (i = 0; i <= cintTestScores.GetUpperBound(0); i++) //process entire arrayfor (i = 0; i <cintNumberOfStudents; i++) //process partially filled array{ intSum += cintTestScores[i]; } txtAverage.Text = (intSum / cintNumberOfStudents).ToString(“N0”); }
Declare and Load Constant Arrays • Arrays that will hold constants or some initial values can be loaded at declaration. • When the values are provided at declaration, do not include the size. The size is determined by the number of values provided. • The values are enclosed in braces and not parenthesis.decimal[ ] cdecPERCENT_RANGE = new decimal[ ] {90D, 80D, 70D, 60D, 0D};string[ ] cstrLETTER_GRADE = new string[ ] {"A", "B", "C", "D", "F"}; • C# does NOT allow const for arrays.
Summary • Declaring Arrays • Loading Arrays • Partially Filled Arrays • Arrays Elements as Arguments • Declaring and Loading Constant Arrays