250 likes | 582 Views
Review for Exam 3. arrays strings files classes. Hanly Chapter 6 skip sections 1, 7 Chapter 7 skip section 6 Chapter 9. Friedman-Koffman Section 3.7 Chapter 8 Chapter 9 not section 7 Chapter 10 Section 11.7. Chapters covered.
E N D
Review for Exam 3 arrays strings files classes CS 117 Spring 2002
Hanly Chapter 6 skip sections 1, 7 Chapter 7 skip section 6 Chapter 9 Friedman-Koffman Section 3.7 Chapter 8 Chapter 9 not section 7 Chapter 10 Section 11.7 Chapters covered • Don't forget that there are web notes about all of these • http://cs.boisestate.edu/~tcole/cs117/notes.html
Arrays • a collection of values/objects of the same type • they can be of any type int values[20] • sets aside memory for 20 integers • The elements are accessed by putting the index of the element in square brackets, e.g. values[3] • For an array declared to have n elements, the array index runs from 0 to n-1 • You have to keep track of how many of the array elements have been assigned values.
For arrays, know how to • declare an array int score[30]; • initialize an array when it is declared double x[ ] = {1.9, 2.8, 3.7, 4.6, 5.5}; • access an element of the array score[3] • first element has index 0
Array know how cont. • use a loop to do something with every element of the array for (int i=0; i<numElements; i++) sum = sum + score[i]; • pass the entire array to a function highScore = max( score, nstudents);
C-style strings • A C-style string is an array with elements of type char • It should be terminated with the null character • character whose ASCII code is 0 • '\0' • Some useful functions for using C-style strings are in <string.h>
C-style Strings know how to • declare a C-style string char cstr[6]; • this can hold 5 characters plus the termination character • access an element of a C-style string • array index starts at 0 • ith element is cstr[i-1] • initialize a C-style string when you declare it • char dstr[7]="bat"; • number of elements optional in this case
I/O for C-style strings • input a C-style string with >> • get next sequence of non-space characters from the input stream • get multiple words with istream::getline( char[], int) • output a C-style string with <<
string.h • strlen - returns number of characters in the string • doesn't count the null character • strlen(dstr) will return 3 • strcpy - to copy a string into another one • strcpy( cstr, "man") will put man into cstr • strcat - to append one string onto another • strcat( dstr, cstr) puts "batman in dstr • strcomp - for comparing two string: • returns 0 if they are the same • strcomp( dstr, cstr) will be non-zero • strcomp( cstr, "man") will return 0
C++ string class • An object-oriented way to work with text strings #include <string> • You can • declare a string string str1; • initialize a string when you declare it string str2("two"); • access an element of a string • the ith element is str[I-1] or str1.at(i-1) • get the length with str1.length()
C++ string class operators • input a string with >> - get a sequence of non-space characters • output a string with << • assign a value using = str1 = "one"; • compare using familiar operators str1 == str2 str2 < str1 • concatenate with + str1 + str2
File I/O #include <fstream.h> • classes • ifstream for input • ofstream for output • Constructors • default • initializing takes c-string filename
File I/O • functions you should know how to use • open( char filename[]) • eof() - to test for end of file • fail() - to test for all errors • close() • read/write the same as for cin/cout
iomanip • setiosflags(ios::flagname) resetiosflags(ios::flagname) • right / left • fixed • scientific • showpoint • setw( int fieldwidth) • setprecision( int digits)
Class Declaration • what member variables are needed • data needed to represent the object • what functions are needed • functions represent behavior and/or services
Form of declaration class aClass { public: aClass(); // zero parameter constructor aClass( int v1, double v2); int getVar1() const; // accessors void setVar2( double d); // mutator functions private: int var1; double var2; friend operator<<( ostream &, const Angle &); };
Class functions • constructors used to initialize objects • name of constructor is same as the class name • member functions • accessors provide read-only access to member variables • mutators allow user to change member variables • friend functions • overloaded operators
Functions associated with classes • overloaded operators provide arithmetic and/or comparisons in same ways as for numbers • friend functions allowed access to the private members of the class
Member functions • function declarations (prototypes) go into class definition • function definitions • usually outside of class definition (need scope resolution operator ::) • inline definitions (usually very short) are contained in the class definition and don't need the scope resolution operator
Member Function Signatures • Inside the class definition, prototypes look just like those of a regular function double someFunction( int param1, int param2); • member function has access to • member variables • parameters • any locally declared variables
Member Function Definitions • The function definition contains the code that is executed when the function is called. double aClass::memberFunction( int param1, int param2) { // code that is executed return aDouble; } • scope resolution operator: aClass:: indicates to the compiler that this is a member function of class aClass
Declaring Objects • You declare an object by giving the className (its type) and a variable name. theClass obj1; • This calls the zero parameter constructor • You can initialize an object when you declare it by providing arguments theClass obj2( 12, 3.4); • This calls a constructor which has int and double parameters.
Calling member functions • From outside the class, you call a member function using the . operator double x = obj1.someFunction( arg1, arg2); • Inside the class, only need the . operator for an object other than the current one • You use overloaded operators the same way you always use operators: obj1 < obj2; cout << obj1;
Things to remember • member variables should not be passed to member functions • these functions already have access to them • all class members are private unless they appear in the public section of the class definition • private members are not directly accessible from outside the class • don't redeclare the member variables • they are declared in the class declaration • member functions that use only member variables need no parameters
Member Functions • accessor functions (get functions) return the values of the member variables • don't always have one for every member variable • provide set functions if you want the user of the class to be able to change the value of a member variable