190 likes | 257 Views
C++ Programming Lecture 14 Arrays – Part I. By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department. Outline. Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples. Introduction . Arrays
E N D
C++ ProgrammingLecture 14Arrays – Part I By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department
Outline • Introduction. • Arrays declarations and initialization. • Const variables. • Character arrays. • Static arrays. • Examples. The Hashemite University
Introduction • Arrays • Structures of related data items. • Static entity - same size throughout program. • Structures and classes are also static entities that group related data items. • In chapter 5 dynamic arrays concepts will be introduced in which you can change the ize of the array throughout the program based on pointers concepts. • Queues, vectors, link lists, and stacks are some examples of dynamic arrays in C++ which are based on pointers. The Hashemite University
Arrays I • Array • One type of data structures. • Consecutive group of memory locations • Same name and type • Static data structure in which its size remain the same during the program execution. • To refer to an element, specify • Array name and position number • Format: arrayname[ position number ] • First element at position 0 • n element array c: c[ 0 ], c[ 1 ]…c[ n - 1 ] The Hashemite University
Arrays II • Array elements are like normal variables c[ 0 ] = 3; cout << c[ 0 ]; • Performing operations in subscript. If x = 3, c[ 5 – 2 ] == c[ 3 ] == c[ x ] • ith element in an array has the index (or subscript) of i – 1. • Array element i has a an index of i. • The subscript must be an integer value, where it could be: • Constant. • Variable. • Expression. • A result of a function call. The Hashemite University
Arrays III Name of array (Note that all elements of this array have the same name, c) c[0] -45 c[1] 6 c[2] 0 c[3] 72 c[4] 1543 c[5] -89 c[6] 0 c[7] 62 c[8] -3 c[9] 1 c[10] 6453 Position number of the element within array c c[11] 78 The Hashemite University
Declaring Arrays • Declaring arrays - specify: • Name • Type of array • Number of elements • Examples int c[ 10 ]; float hi[ 3284 ]; • Declaring multiple arrays of same type • Similar format as other variables • Example int b[ 100 ], x[ 27 ]; The Hashemite University
Arrays Initialization • Two methods to initialize an array: • Using a loop. • Using an initializers list. • Initializers int n[ 5 ] = { 1, 2, 3, 4, 5 }; • If not enough initializers, rightmost elements become 0 • If too many initializers, a syntax error is generated int n[ 5 ] = { 0 } • Sets all the elements to 0 since the first element is initialized to 0 and the rest are implicitly initialized to 0. • If size omitted, the initializers determine it int n[] = { 1, 2, 3, 4, 5 }; • 5 initializers, therefore n is a 5 element array The Hashemite University
1 // Fig. 4.4: fig04_04.cpp 2 // Initializing an array with a declaration Notice how they array is declared and elements referenced. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <iomanip> 9 10 using std::setw; 11 12 int main() 13 { 14 int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; 15 16 cout << "Element" << setw( 13 ) << "Value" << endl; 17 18 for ( int i = 0; i < 10; i++ ) 19 cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << endl; 20 21 return 0; 22 } Element Value 0 32 1 27 2 64 3 18 4 95 5 14 6 90 7 70 8 60 9 37 The Hashemite University
const Variables • Also called named constants or read-only variables. • Reserve space in memory. • Must be initialized when declared to avoid getting a syntax error. • A constant variable cannot be modified throughout the program after it is being declared. • Arrays sizes are usually declared with type const since they are static. • If you want to declare the size of an array using a variable this variable must be declared const, otherwise you will get a syntax error, e.g.: int x = 10; int c_class[x]; // syntax error //But const int x = 10; int c_class[x]; //Correct The Hashemite University
1 // Fig. 4.7: fig04_07.cpp 2 // A const object must be initialized Notice that const variables must be initialized because they cannot be modified later. 3 4 int main() 5 { 6 const int x; // Error: x must be initialized 7 8 x = 7; // Error: cannot modify a const variable 9 10 return 0; 11 } Fig04_07.cpp: Error E2304 Fig04_07.cpp 6: Constant variable 'x' must be initialized in function main() Error E2024 Fig04_07.cpp 8: Cannot modify a const object in function main() *** 2 errors in Compile *** The Hashemite University
Character Arrays I • Strings is the same as array of characters. • All strings end with NULL or '\0' • Character array initialization: • With string literal, Examples: char string1[] = "hello"; • With initializers, Examples: char string1[] = { 'h', 'e', 'l', 'l', 'o', '\0’ }; • Input from keyboard char string2[ 10 ]; cin >> string2; • Takes user input • Side effect: if too much text entered, data written beyond array The Hashemite University
Character Arrays II • Subscripting is the same as for a normal array String1[ 0 ] is 'h' string1[ 2 ] is 'l' • Remember that cin stop reading from keyboard at the first white space. • If you enter a string with smaller size than the array size using cin, cin will automatically add a NULL at the end of the string within the array. • cout stop printing an array of character when it reaches the ‘\0’. • Character arrays that do not terminate with NULL (i.e. not strings) cannot be printed using cout , it will enter an infinite loop logical error. The Hashemite University
1 // Fig. 4_12: fig04_12.cpp 2 // Treating character arrays as strings Inputted strings are separated by whitespace characters. "there"stayed in the buffer. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; Notice how string elements are referenced like arrays. 8 9 int main() 10 { 11 char string1[ 20 ], string2[] = "string literal"; 12 13 cout << "Enter a string: "; 14 cin >> string1; 15 cout << "string1 is: " << string1 16 << "\nstring2 is: " << string2 17 << "\nstring1 with spaces between characters is:\n"; 18 19 for ( int i = 0; string1[ i ] != '\0'; i++ ) 20 cout << string1[ i ] << ' '; 21 22 cin >> string1; // reads "there" 23 cout << "\nstring1 is: " << string1 << endl; 24 25 cout << endl; 26 return 0; 27 } Enter a string: Hello there string1 is: Hello string2 is: string literal string1 with spaces between characters is: H e l l o string1 is: there The Hashemite University
Static Arrays • Similar to static storage variable you can define an array to be static. • So this array will not be destroyed when you outside the scope in which it exists. • If you do not initialize a static array, by default the compiler will initialize all its elements to 0. The Hashemite University
Examples • On board: • Drawing histograms. • Average, sum, product, and display of an array. • Static arrays. The Hashemite University
Notes • Going outside the range of an array is a logical error in C++. • There are additional examples of using arrays in the textbook, study them. The Hashemite University
Additional Notes • This lecture covers the following material from the textbook: • Fourth Edition • Chapter 4: Sections 4.1 – 4.4 The Hashemite University