REACH CECS 130 Exam 2 Test Review

70

description

REACH CECS 130 Exam 2 Test Review. C - Files. Do you know the syntax for each of these, used to read and write to data files? Pointers: think of it as the memory address of the file fopen () fclose () fscanf () fprintf (). fopen (“file name”, “Mode”). - PowerPoint PPT Presentation

Transcript of REACH CECS 130 Exam 2 Test Review

Page 1: REACH CECS 130 Exam 2 Test Review
Page 2: REACH CECS 130 Exam 2 Test Review

Do you know the syntax for each of these, used to read and write to data files?

Pointers: think of it as the memory address of the file

fopen()

fclose()

fscanf()

fprintf()

Page 3: REACH CECS 130 Exam 2 Test Review

fopen() returns a FILE pointer back to the pRead variable

#include <cstdio>

Main(){

FILE *pRead;pRead = fopen(“file1.dat”, “r”);

if(pRead == NULL) printf(“\nFile cannot be opened\n”);else printf(“\nFile opened for reading\n”);fclose(pRead);

}

Page 4: REACH CECS 130 Exam 2 Test Review

int main (){ FILE * pFile; char c; pFile=fopen("alphabet.txt","wt"); for (c = 'A' ; c <= 'Z' ; c++) { putc (c , pFile);//works like fprintf } fclose (pFile); return 0;}

Page 5: REACH CECS 130 Exam 2 Test Review
Page 6: REACH CECS 130 Exam 2 Test Review

Pretty basic. Always close files when you use fopen.

Page 7: REACH CECS 130 Exam 2 Test Review

Reads a single field from a data file

“%s” will read a series of characters until a white

space is found

can do fscanf(pRead, “%s%s”, name, hobby);

Page 8: REACH CECS 130 Exam 2 Test Review

#include <stdio.h>Main(){ FILE *pRead;

char name[10]; pRead = fopen(“names.dat”, “r”);

if( pRead == NULL ) printf( “\nFile cannot be opened\n”); else printf(“\nContents of names.dat\n”); fscanf( pRead, “%s”, name );

while( !feof(pRead) ) { printf( “%s\n”, name ); fscanf( pRead, “%s”, name ); }

fclose(pRead);}

Page 9: REACH CECS 130 Exam 2 Test Review

Kelly 11/12/86 6 LouisvilleAllen 04/05/77 49 AtlantaChelsea 03/30/90 12Charleston

Can you write a program that prints out the contents of this information.dat file?

Page 10: REACH CECS 130 Exam 2 Test Review

#include <stdio.h>

Main(){ FILE *pRead;

char name[10]; char birthdate[9]; float number; char hometown[20];

pRead = fopen(“information.dat”, “r”);

if( pRead == NULL ) printf( “\nFile cannot be opened\n”); else fscanf( pRead, “%s%s%f%s”, name, birthdate, &number, hometown );

while( !feof(pRead) ) { printf( “%s \t %s \t %f \t %s\n”, name, birthdate, number,

hometown ); fscanf( pRead, “%s%s%f%s”, name, birthdate, &number,

hometown ); }

fclose(pRead);}

Page 11: REACH CECS 130 Exam 2 Test Review

The fprintf() function sends information (the arguments) according to the specified format to the file indicated by stream. fprintf() works just like printf() as far as the format goes.

Page 12: REACH CECS 130 Exam 2 Test Review

#include <stdio.h>

Main(){

FILE *pWrite;

char fName[20];char lName [20];float gpa;

pWrite = fopen(“students.dat”,”w”);

if( pWrite == NULL )printf(“\nFile not opened\n”);

elseprintf(“\nEnter first name, last name, and GPA separated”printf(“Enter data separated by spaces:”);

scanf(“%s%s%f”, fName, lName, &gpa);fprintf(pWrite, “%s \t %s \t % .2f \n”, fName, lName, gpa);fclose(pWrite);

}

Page 13: REACH CECS 130 Exam 2 Test Review

Can you write a program that asks the user for their Name Phone Number Bank account balanceAnd then prints this information to a data file called accounts.dat ?

Page 14: REACH CECS 130 Exam 2 Test Review

Summary Include #include <iostream> directive

at beginning of program Use cin to take data from user Use cout to display data on screen▪ Display multiple strings and integers in the

same cout statement by separating items with <<

Page 15: REACH CECS 130 Exam 2 Test Review

#include <iostream>#include<string>using namespace std;

string name = “”;

int main(void){

cout<<“What is your name?”;cin>>name;cout<<endl<<“Hello”<<name.c_str();return 0;

}

Page 16: REACH CECS 130 Exam 2 Test Review

#include <iostream>using namespace std;int x = 25;string str2 = “This is a test”;

int main( void ){

cout<<“Test”<<1<<2<<“3”;cout<<25 %7<<endl<<str2.c_str();return 0;

}

Page 17: REACH CECS 130 Exam 2 Test Review

Test 1234This is a test

Page 18: REACH CECS 130 Exam 2 Test Review

How a computer stores data in its internal memory RAM (Random-Access Memory) -

temporary ROM (Read-Only Memory) – non volatile Store data in bytes

How you store data temporarily Create variables based on fundamental

types (bool, char, int, float) constants: #define CONSTNAME value sizeof()

Page 19: REACH CECS 130 Exam 2 Test Review

TYPE SIZE VALUES

bool 1 byte true (1) or false (0)

char 1 byte ‘a’ to‘z’ , ‘A’ to ‘Z’, ‘0’ to ‘9’, space, tab, and so on

int 4 bytes -2,147,483,648 to 2,147,483,647

short 2 bytes -32,768 to 32,767

long 4 bytes -2,147,483,648 to 2,147,483,647

float 4 bytes + - (1.2 x 10^-38 to 3.4 x 10^38)

double 8 bytes +- (2.3 x 10^-308 to -1.7 x 10^308)

Page 20: REACH CECS 130 Exam 2 Test Review

What do each of the following evaluate to?

1. long elves = 8;int dwarves = 8;if(elves==dwarves) //true or false?if(elves!=0) //true or false?

2. int elves = 4;int dwarves = 5;if(dwarves > (2/3)) //true or false?

3. if(0 < x < 99) //true or false?4. if(0<= (0<1))//true or false?

Page 21: REACH CECS 130 Exam 2 Test Review

What do each of the following evaluate to?1. long elves = 8;

int dwarves = 8;if(elves==dwarves) //trueif(elves!=0) //true

2. int elves = 4;int dwarves = 5;if(dwarves > (2/3)) //true

3. if(0 < x < 99) //true …TRUE (1) and FALSE (0) < 99

4. if(0<= (0<1))//true

Page 22: REACH CECS 130 Exam 2 Test Review

if(condition)statement;

else if (condition)statement;

condition ? expr1 : expr2 ex. z = ( x > y ) ? y : x ; Can we do next statement?

(x>y) ? cout << “x is greater than y.” : cout << “x isn’t greater than y.”

Page 23: REACH CECS 130 Exam 2 Test Review

switch(expression){case expr1:

statement;break;

case expr2:statement;break;

case expr3:statement;break;

default:statementsbreak;

}

Page 24: REACH CECS 130 Exam 2 Test Review

while (condition){

statements;}

do{

statements;}while(condition);

Page 25: REACH CECS 130 Exam 2 Test Review

for (initialization; condition; expression){

statements;} Incrementing: Prefix and Postfixint x = 5;int y = 6;int z = y++ //z=6, y=7 postfix

operator int z = ++x //z=6, x=6 prefix

operator

Page 26: REACH CECS 130 Exam 2 Test Review

Keyword Purpose

break Exits the nearest enclosing “switch” statement or iteration statement

continue Starts the next loop of the nearest enclosing iteration statement

goto Jumps to a particular place in your code

return Ends a function and returns a value

Page 27: REACH CECS 130 Exam 2 Test Review

Can you write a program that prints out the following?

0 1 2 3 4 5 6 7 8 9

Page 28: REACH CECS 130 Exam 2 Test Review

for ( int count = 0; count < 10; count ++)

{cout <<count<<“”;

}

Page 29: REACH CECS 130 Exam 2 Test Review

1. Write a conditional statement that will assign x/y to x if y doesn’t equal 0.

2. Write a while loop that calculates the summative of positive integers from 1 to some number n.

3. Write a conditional statement that assigns x*y if x is even; otherwise , if x is odd and y doesn’t equal 0, assign x to x/y; if neither of the preceding cases is true, output to the screen that y is equal to 0.

Page 30: REACH CECS 130 Exam 2 Test Review

Function declarationFunction definitionFunction call

Page 31: REACH CECS 130 Exam 2 Test Review

#include <iostream>using namespace std;

int add(int a, int b);

int main(void){

int number1, number2;cout << “Enter the first value to be summed:”;cin >> number1;cout << “\nEnter the second:”;

cin >> number2;cout << “\n The sum is: “ << add (number1, number2) <<endl;

}

int add(int a, int b){

return a+b;}

Page 32: REACH CECS 130 Exam 2 Test Review

Write a function, called multiply that multiplies two numbers and returns the result

Page 33: REACH CECS 130 Exam 2 Test Review

Declare classes Create objects

3 MAIN PRINCIPLES OF OOP Data abstraction – hiding data members and

implementation of a class behind an interface so that the user of the class corrupt that data

Encapsulation – each class represents a specific thing or concept. Multiple classes combine to produce the whole

Polymorphism-objects can be used in more than one program

Page 34: REACH CECS 130 Exam 2 Test Review

Classes are general models from which you can create objects

Classes have data members either data types or methods

Classes should contain a constructor method and a destructor method

See handout for example of a program that utilizes a class

Page 35: REACH CECS 130 Exam 2 Test Review

class ClassName{

memberList};

memberList can be either data member declarations or method declarations

Page 36: REACH CECS 130 Exam 2 Test Review

Class Bow{

//data member declarationsstring color;bool drawn;int numOfArrows;

Bow(string aColor); //constructor~Bow(); //destructor

//methodsvoid draw();int fire();

};

Page 37: REACH CECS 130 Exam 2 Test Review

Return_type ClassName::methodName(argumentList)

{methodImplementation

}

Page 38: REACH CECS 130 Exam 2 Test Review

//draws the bowVoid Bow::draw(){

drawn = true;cout<< “The “<<color<<“bow has been drawn.”<<endl;

}

Page 39: REACH CECS 130 Exam 2 Test Review

ArraysPointers

Page 40: REACH CECS 130 Exam 2 Test Review

data_type array_name [number-of-elements];

Two Dimensional Arrayarray_type array_name [number_ofelements1]

[number_of_elements2];

Page 41: REACH CECS 130 Exam 2 Test Review

type* pointer_name;

ex. int my_int;int* my_int_pointer =

&my_int;

Assigns the address of my_int to the pointer

Page 42: REACH CECS 130 Exam 2 Test Review

Copying strings from one to another char* strcpy(char* p, const char* q); char s[6];

strcpy(s, “Hello”);

To combine strings char* strcat(char* p, const char* q); char s[12] = “Hello”

strcat(s, “World”);

Page 43: REACH CECS 130 Exam 2 Test Review

To copy n characters from q to the of p.

char* strncpy(char* p, const char* q, int n); char s [7] = “Say “;

char t[] = “Hi”;strncpy (s, t, 2)

Page 44: REACH CECS 130 Exam 2 Test Review

Can you write a program using C++ that uses a FOR loop to initialize a 2D array that looks like the following {0,5,10,15}{0,2,4,6}

Page 45: REACH CECS 130 Exam 2 Test Review

#include<iostream>using namespace std;int main(){ int array[2][4], , row, column; for(row=0;row<2;row++) for(column=0;column<4;column++){ if(row==0) array[row][column]=column*5; else if(row==1) array[row][column]=column*2; } for(row=0; row<2; row++){ for(column =0; column <4; column ++) cout<<array[row][column]<<" "; cout<<endl; }system("pause");return 0;}

Page 46: REACH CECS 130 Exam 2 Test Review

Basic framework for a programHow to CommentHow to PrintHow to store variablesHow to Print stored variablesHow to find the size of a variableHow to convert from one data type

to anotherHow to Declare Constants

Page 47: REACH CECS 130 Exam 2 Test Review

If statements Conventional Using conditional operator

Switch-case statementsLoops

While Do-While For

Branching statements

Page 48: REACH CECS 130 Exam 2 Test Review

How to declare and implement functions

How to create arraysHow to create pointersUseful string functionsClasses

Page 49: REACH CECS 130 Exam 2 Test Review

//this is how you comment /*this is how

you comment */ Use for Multiple lines

Page 50: REACH CECS 130 Exam 2 Test Review

Used to create functions, classes, and variables of the same name

Ex.

Namespace combat{

void fire()}Namespace exploration{

void fire()}

Page 51: REACH CECS 130 Exam 2 Test Review

To call a namespace combat::fire()

Say (to avoid having to put combat:: every time

using namespace combat;

fire()

Page 52: REACH CECS 130 Exam 2 Test Review

class aClass// Base class{

public:int anInt;

}

class aDerivedClass : public aClass//Derived class

{protected:

float aFloat;};

Page 53: REACH CECS 130 Exam 2 Test Review

#include <iostream.h>enum BREED { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };class Mammal{public: Mammal(); // constructors ~Mammal();//destructor //accessorsint GetAge()const;void SetAge(int);int GetWeight() const;void SetWeight();//Other methodsvoid Speak();void Sleep();protected:int itsAge;int itsWeight;};class Dog : public Mammal {public: Dog(); // Constructors~Dog(); // AccessorsBREED GetBreed() const; void SetBreed(BREED); // Other methods // WagTail(); // BegForFood(); protected: BREED itsBreed;};

Animals

Mammals

Reptiles

Horse Dog

HoundTerrie

r

Yorkie Cairn

Page 54: REACH CECS 130 Exam 2 Test Review

Private members are not available to derived classes. You could make itsAge and itsWeight public, but that is not desirable. You don't want other classes accessing these data members directly.

What you want is a designation that says, "Make these visible to this class and to classes that derive from this class." That designation is protected. Protected data members and functions are fully visible to derived classes, but are otherwise private.

Page 55: REACH CECS 130 Exam 2 Test Review

When do we need to override functions? If you are a programmer example. If we consider “Woof” of the dog as speak.

When a derived class creates a function with the same return type and signature as a member function in the base class, but with a new implementation, it is said to be overriding that method.

Page 56: REACH CECS 130 Exam 2 Test Review

#include <iostream.h> enum BREED { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB }; class Mammal { public: // constructors Mammal() { cout << "Mammal constructor...\n"; } ~Mammal() { cout << "Mammal destructor...\n"; } //Other methods void Speak()const { cout << "Mammal sound!\n"; } void Sleep()const { cout << "shhh. I'm sleeping.\n"; } protected: int itsAge; int itsWeight; };

class Dog : public Mammal { public: // Constructors Dog(){ cout << "Dog constructor...\n"; } ~Dog(){ cout << "Dog destructor...\n"; } // Other methods void WagTail() { cout << "Tail wagging...\n"; } void BegForFood() { cout << "Begging for food...\n"; } void Speak()const { cout << "Woof!\n"; } private: BREED itsBreed; }; int main() { Mammal bigAnimal; Dog fido; bigAnimal.Speak(); fido.Speak(); getchar(); return 0; }

Page 57: REACH CECS 130 Exam 2 Test Review

When you overload a method, you create more than one method with the same name, but with a different signature. When you override a method, you create a method in a derived class with the same name as a method in the base class and the same signature.

Page 58: REACH CECS 130 Exam 2 Test Review

#include<iostream.h>

int area(int x); // square areaint area(int x,int y); //triangle areafloat area(int x,int y, int radius); //circle area

int main(){ int x=4, y=5, rad=3; cout<<"The Square area is :"<<area(x); cout<<"\nThe Triangle area is :"<<area(x,y); cout<<"\nThe Circle area is :"<<area(x,y,rad); getchar(); return 0;}

int area(int x) // square area{ return x*x; }

int area(int x,int y ) //triangle area{ return x*y; }float area(int x,int y, int radius) //circle area{ return radius*radius*3.14; }

Output:The Square area is: 16The Triangle area is :20The Circle area is: 28.26

Page 59: REACH CECS 130 Exam 2 Test Review

#include <iostream.h>class Mammal {public:void Move() const { cout << "Mammal move one step\n"; }void Move(int distance) const { cout << "Mammal move ";cout << distance <<" _steps.\n"; }protected:int itsAge;int itsWeight;};class Dog : public Mammal {public:// You may receive a warning that you are hiding a function!void Move() const { cout << "Dog move 5 steps.\n"; }}; int main() {Mammal bigAnimal;Dog fido;bigAnimal.Move();bigAnimal.Move(2);fido.Move(8);// can I do this?fido.Move();return 0;}

Output:Mammal move one stepMammal move 2 steps.Dog move 5 steps

Page 60: REACH CECS 130 Exam 2 Test Review

To call a function you’ve overridden in a derived class you need to use virtual functions.

Example:struct Base { virtual void do_something() = 0; }; struct Derived1 : public Base { void do_something() { cout << "I'm doing something"; } }; struct Derived2 : public Base { void do_something() { cout << "I'm doing something else"; } }; int main() { Base *pBase = new Derived1; pBase->do_something();//does something delete pBase; pBase = new Derived2; pBase->do_something();//does something else delete pBase; return 0; }

Page 61: REACH CECS 130 Exam 2 Test Review

Output: (1)dog (2)cat (3)horse (4)pig: 1(1)dog (2)cat (3)horse (4)pig: 2(1)dog (2)cat (3)horse (4)pig: 3(1)dog (2)cat (3)horse (4)pig: 4(1)dog (2)cat (3)horse (4)pig: 5Woof!Meow!Winnie!Oink!Mammal speak!

#include<stdlib.h>#include <iostream.h> class Mammal { public: Mammal():itsAge(1) { } ~Mammal() { } virtual void Speak() const { cout << "Mammal speak!\n"; } protected: int itsAge; };

class Dog : public Mammal { public: void Speak()const { cout << "Woof!\n"; } };

class Cat : public Mammal { public: void Speak()const { cout << "Meow!\n"; } };

class Horse : public Mammal { public: void Speak()const { cout << "Winnie!\n"; } };

class Pig : public Mammal { public: void Speak()const { cout << "Oink!\n"; } };

int main() { Mammal* theArray[5]; Mammal* ptr; int choice, i; for ( i = 0; i<5; i++) { cout << "(1)dog (2)cat (3)horse (4)pig: "; cin >> choice; switch (choice) { case 1: ptr = new Dog; break; case 2: ptr = new Cat; break; case 3: ptr = new Horse; break; case 4: ptr = new Pig; break; default: ptr = new Mammal; break; } theArray[i] = ptr; } for (i=0;i<5;i++) theArray[i]->Speak(); system("pause");return 0; }

Page 62: REACH CECS 130 Exam 2 Test Review

Only if you have to redefine a function in a Derived class that is already defined in Base Class, otherwise, it’s just extra resources when executed.

Page 63: REACH CECS 130 Exam 2 Test Review

#include <iostream>using namespace std;

class CPolygon { protected: int width, height; public: void set_values (int a, int b) { width=a; height=b; } };

class CRectangle: public CPolygon { public: int area () { return (width * height); } };

class CTriangle: public CPolygon { public: int area () { return (width * height / 2); } };

int main () { CRectangle rect; CTriangle trgl; CPolygon * ppoly1 = &rect; CPolygon * ppoly2 = &trgl; ppoly1->set_values (4,5); ppoly2->set_values (4,5); cout << rect.area() << endl; cout << trgl.area() << endl; getchar(); return 0;}

Output:2010

Page 64: REACH CECS 130 Exam 2 Test Review

Used in place of a specific data type. For example, use a template to add data types together, whichever data type the user wishes (i.e. integers, floats)

Page 65: REACH CECS 130 Exam 2 Test Review

#include <iostream>using namespace std;

template <class T>T GetMax (T a, T b) { T result; result = (a>b)? a : b; return (result);}

int main () { int i=5, j=6, k; float l=10.5, m=5.6, n; k=GetMax<int>(i,j); n=GetMax<float>(l,m); cout << k << endl; cout << n << endl; getchar(); return 0;}

Output:610.5

Page 66: REACH CECS 130 Exam 2 Test Review

int i;long l;k = GetMax (i,l); This would not be correct, since our GetMax function template expects two arguments of the same type.But if we did the following:template <class T, class U> T GetMin (T a, U b) { return (a<b?a:b); }Then we could call the function like this:int i,j;long l;i = GetMin<int,long> (j,l); Or simply:i = GetMin (j,l);

Page 67: REACH CECS 130 Exam 2 Test Review

#include <iostream> using namespace std; template <class T> class mypair { T a, b; public: mypair (T first, T second) {a=first; b=second;} T getmax (); }; template <class T> T mypair<T>::getmax () { T retval; retval = a>b? a : b; return retval; } int main () { mypair <int> myobject (100, 75); cout << myobject.getmax(); return 0; }

Output:100

Page 68: REACH CECS 130 Exam 2 Test Review

mypair<int> myobject (115, 36); This same class would also be used to create an object to store any other type:mypair<double> myfloats (3.0, 2.18);

Page 69: REACH CECS 130 Exam 2 Test Review

#include <iostream>using namespace std;

// class template:template <class T>class mycontainer { T element; public: mycontainer (T arg) {element=arg;} T increase () {return ++element;}};

// class template specialization:template <>class mycontainer <char> { char element; public: mycontainer (char arg) {element=arg;} char uppercase () { if ((element>='a')&&(element<='z')) element+='A'-'a'; return element; }};

int main () { mycontainer<int> myint (7); mycontainer<char> mychar ('j'); cout << myint.increase() << endl; cout << mychar.uppercase() << endl; return 0;}

Output:8J

Page 70: REACH CECS 130 Exam 2 Test Review

Questions??Good Luck from REACH in your Test