Reach cecs 130 test 2 review
This presentation is the property of its rightful owner.
Sponsored Links
1 / 49

REACH CECS 130 Test 2 Review PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on
  • Presentation posted in: General

REACH CECS 130 Test 2 Review. Sizeof (). Malloc (). Please enter how long your name is: 21 Please enter your name: Nawaf Hello Nawaf. Please enter how long your name is: -7 Failed allocation memory. free (). Calloc and Realloc (). int *n; int * n1;

Download Presentation

REACH CECS 130 Test 2 Review

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Reach cecs 130 test 2 review

REACH CECS 130 Test 2 Review


Sizeof

Sizeof()


Malloc

Malloc()

Please enter how long your name is: 21

Please enter your name:

Nawaf

Hello Nawaf

Please enter how long your name is: -7

Failed allocation memory


Reach cecs 130 test 2 review

free()


Calloc and realloc

Calloc and Realloc()

int *n;

int * n1;

n=( int * ) calloc(5, sizeof(int)); // Reserves a block of memory for 5 integers

//Decide you need to reallocate more memory later in the program

n1= (int *) realloc(n, 10 * sizeof(int));//allocate 10 integers instead of 5

if (n1!=NULL)

{

n=n1;

}

else printf("Out of memory!");

realloc() returns null if unable to complete or a pointer to the newly reallocated memory.


How to declare and implement functions

How to declare and implement functions

  • Function declaration

  • Function definition

  • Function call


Reach cecs 130 test 2 review

#include <iostream>

using namespace std;

int add(int, int);

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;}


Functions challenge

Functions Challenge

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


C files

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

fopen(“file name”, “Mode”)

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

  • #include <cstdio>

  • Main()

  • {FILE *pRead;

  • pRead = fopen(“c:\\folder1\\folder2\\file1.dat”, “r”);

  • if(pRead == NULL)

  • printf(“\nFile cannot be opened\n”);

  • else

  • printf(“\nFile opened for reading\n”);

  • fclose(pRead);

  • }


What does this code do

What does this code do?

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;

}


Common text file modes

Common Text File Modes


Fclose file pointer

fclose(file pointer)

  • Pretty basic.

  • Always close files when you use fopen.


Fscanf file pointer data type variable in which to store the value

fscanf(FILE pointer, “data type”, variable in which to store the value)

  • 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);


Reach cecs 130 test 2 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) ) { // While end of file not reached

  • printf( “%s\n”, name ); // output content of name

  • fscanf( pRead, “%s”, name ); // scan from file next string

  • }

  • fclose(pRead);

  • }


Reach cecs 130 test 2 review

Quiz

Kelly11/12/866Louisville

Allen04/05/7749Atlanta

Chelsea03/30/9012Charleston

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


Reach cecs 130 test 2 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);

  • }


Fprintf file pointer list of data types list of values or variables

fprintf(FILE pointer, “list of data types”,list of values or variables)

  • 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.


Reach cecs 130 test 2 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”);

else

printf(“\nEnter first name, last name, and GPA ”);

printf(“separated by spaces:”);

scanf(“%s%s%f”, fName, lName, &gpa);

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

fclose(pWrite);

}


Reach cecs 130 test 2 review

Quiz

  • Can you write a program that asks the user for their

    • Name

    • Phone Number

    • Bank account balance

      And then prints this information to a data file called accounts.dat ?


Reach cecs 130 test 2 review

exit()

/* exit example */

#include <stdio.h>

#include <stdlib.h>

int main ()

{

FILE * pFile;

pFile = fopen ("myfile.txt","r");

if (pFile==NULL)

{

printf ("Error opening file");

exit (EXIT_FAILURE);

}

else

{

/* file operations here */

}

return 0;

}


Perror

perror()

/* perror example */

#include <stdio.h>

int main () {

FILE * pFile;

pFile=fopen ("unexist.ent","rb");

if (pFile==NULL)

perror ("The following error occurred");

else

fclose (pFile);

return 0;

}


Function overloading

Function overloading

  • void swap (int *a, int *b) ;

  • void swap (float *c, float *d) ;

  • void swap (char *p, char *q) ;

  • The other way is to have different number of input parameters for the function


Default arguments

Default Arguments

int boxVolume(int length = 1, int width = 1,int height = 1)

{

return (length * width * height);

}

If the function was called with no parameters then the default values will be used.


Scope

Scope ::

  • Used to go out one level.

  • If you have a global and local variables with same name, and need to call global from local scope then you need to use

    ::VariableName


Static vs automatic variables

Static vs. Automatic variables

  • All your declared variables are automatic.

  • Static variables keep there values as long as they exist.


Reach cecs 130 test 2 review

OOP

  • 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


Classes

Classes

  • 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


Declaring classes

Declaring Classes

class ClassName

{

memberList

};

memberList can be either data member declarations or method declarations


Class declaration example

Class Declaration Example

Class Bow

{

//data member declarations

string color;

bool drawn;

intnumOfArrows;

Bow(string aColor); //constructor

~Bow(); //destructor

//methods

void draw();

int fire();

};


Creating methods

Creating Methods

Return_type ClassName::methodName(argumentList)

{

methodImplementation

}


Methods creation example

Methods Creation Example

//draws the bow

Void Bow::draw()

{

drawn = true;

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

}


Union

Union

Output:

9

3.1416

#include <stdio.h>

#include<stdlib.h>

union NumericType

{

int iValue;

long lValue;

double dValue;

};

int main()

{

union NumericType Values; // iValue = 10

Values.iValue=9;

printf("%d\n", Values.iValue);

Values.dValue = 3.1416;

printf("%f\n", Values.dValue);

system("pause");

}


Inline function

Inline function

  • An inline function is one in which the function code replaces the function call directly.

    #include <stdio.h>

    inline void test(void){ puts("Hello!");}

    int main ()

    {

    test(); // This will be replaced with puts("Hello!") on run time

    return 0;

    }


Friend functions

Friend functions

  • Friend declarations introduce extra coupling between classes

  • Once an object is declared as a friend, it has access to all non-public members as if they were public

  • A friend function of a class is defined outside of that class's scope


Inheritance

Inheritance

class aClass // Base class

{

public:

intanInt;

}

class aDerivedClass : public aClass //Derived class

{

protected:

float aFloat;

};


Inheritance for mammals kingdome

Inheritance for Mammals Kingdome

#include <iostream.h>

enum BREED { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };

class Mammal{

public:

Mammal(); // constructors

~Mammal(); //destructor

//accessors

int GetAge()const;

void SetAge(int);

int GetWeight() const;

void SetWeight();

//Other methods

void Speak();

void Sleep();

protected:

int itsAge;

int itsWeight;

};

class Dog : public Mammal {

public:

Dog(); // Constructors

~Dog();

// Accessors

BREED GetBreed() const;

void SetBreed(BREED);

// Other methods

// WagTail();

// BegForFood();

protected:

BREED itsBreed;

};

Animals

Mammals

Reptiles

Horse

Dog

Hound

Terrier

Yorkie

Cairn


Private vs protected

Private vs. Protected

  • 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.


Overriding vs overloading functions

Overriding vs. Overloading functions


Overriding functions

Overriding Functions

  • When do we need to override functions?

    • If you are a programmer example in your slides.

    • If we consider “Woof” of the dog as speak example.

  • 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 overridingthat method.


Overriding example

Overriding example

#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"; } // This function is overriding the base class Speak() function

private:

BREED itsBreed;

};

int main() {

Mammal bigAnimal;

Dog fido;

bigAnimal.Speak();

fido.Speak();

getchar();

return 0;

}


Overloading functions

Overloading Functions

  • 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.


Overloading example

Overloading example

#include<iostream.h>

int area(int x); // square area

int area(intx,int y); //triangle area

float area(intx,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(intx,inty ) //triangle area

{ return x*y; }

float area(intx,int y, int radius) //circle area

{ return radius*radius*3.14; }

Output:

The Square area is: 16

The Triangle area is :20

The Circle area is: 28.26


Another overloading example

Another overloading example

#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:

intitsAge;

intitsWeight;

};

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"; }

};

intmain() {

Mammal bigAnimal;

Dog fido;

bigAnimal.Move();

bigAnimal.Move(2);

fido.Move(8);// canI do this?

fido.Move();

return 0;

}

Output:

Mammal move one step

Mammal move 2 steps.

Dog move 5 steps


Virtual functions

Virtual Functions

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

  • Example:

    struct Base {

    virtualvoiddo_something() = 0;

    };

    structDerived1 : public Base {

    voiddo_something() {

    cout << "I'm doing something"; }

    };

    struct Derived2 : public Base {

    voiddo_something() {

    cout << "I'm doing something else"; }

    };

    int main() {

    Base *pBase = new Derived1;

    pBase->do_something();//does something

    deletepBase;

    pBase = new Derived2;

    pBase->do_something();//does something else

    deletepBase;

    return 0;

    }


Another example

Another Example

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;

}

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: 5

Woof!

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"; }

};


Virtual functions when

Virtual functions, When?

  • 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.


Pointers to base class

Pointers to base class

#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:

20

10


Reach cecs 130 test 2 review

  • Questions??

  • Good Luck from REACH in your Test


  • Login