Está en la página 1de 4

D E

H O JA

IN G E N IE R O E N
C O M P U TA C I N
ESIME CULHUACAN
N O M BR E D EL ALU M NO

A p e l lid o p a te r n o

N o m b re (s )

A p e l l id o m a t e r n o

G R UPO

N o. B O LE TA

FECH A

D IA

M ES

A O

A S IG N A T U R A
PROGRAMACION ORIENTADA A
OBJETOS

PRO FESO R

PRCTICA No. 14
OPERADOR NEW
PARTE II
I.- OBJETIVO:
Al trmino de la practica el alumno podr:
- Hacer programas con el operador new y delete

II.- MATERIAL Y EQUIPO:


1
1
1
1
1

EQUIPO DE CMPUTO
CPU
Marca_____________ Mod. _________________ N. ______________
Monitor
Marca_____________ Mod. _________________ N ______________
Teclado
Marca_____________ Mod. _________________ N. ______________
DISKETE DE 3.5

III.- INTRODUCCIN TERICA.


Para llevar a cabo la asignacin dinmica de la memoria libre, C++ dispone de los operadores
new y delete. Los operadores new y delete son parte de C++; esto es, no estn disponibles en ANS C,
en donde la asignacin dinmica de memoria por lo general se lleva a cabo con las funciones malloc y
free de la biblioteca de C.
La sintaxis para utilizar estos operadores es:
puntero = new tipo-del-objeto
puntero = new (tipo-del-objeto)
delete puntero
delete [] puntero

LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

PRACTICA 13

PAGINA

El operador new permite asignar memoria para un objeto o para un array de objetos. El operador
new asigna memoria desde el rea de memoria de almacenamiento libre (free store). En C, el rea de
memoria de almacenamiento libre se denomina "montn o pila" (heap). En el caso de un objeto, el
tamao viene definido por su tipo. En el caso de arrays, el tamao de un elemento viene dado por su
tipo, pero el tamao del array hay que especificarlo explcitamente. El tipo puede ser un tipo
predefinido o un tipo definido por el usuario. El operador new devuelve un puntero a un objeto del tipo
especificado, que referencia el espacio reservado. Si no hay espacio suficiente para crear un objeto del
tipo especificado, el operador new devuelve un puntero nulo (O o NULL). Por ejemplo,
1ong *p1 = new long;

// asignacin para un long


/ / notacin sin parntesis

f1oat *pf = new (float);

// asignacin para un flota

Cuando el tipo especificado corresponde a un array, el operador new devuelve un puntero al


primer elemento de dicho array. En el ejemplo anterior, el arrayqueda referenciado por a y los
elementos del array son a[0], a[l], a[2],...
A la hora de especificar la dimensin de un array, no slo podemos utilizar constantes o
variables, sino tambin expresiones. Por ejemplo, el siguiente cdigo crea un array a de dos
dimensiones. Para acceder a sus elementos podemos utilizar la notacin a[0][0], a[0][l], a[0][2], ...
int di = 5;
int d2- 10;
double **a = new double *[dl * 2];
// array de punteros a
for (int i = 0; i < di * 2; 1++)
a[i] = new doub1e[d2]; // array a[i]
Cuando new se utiliza para asignar memoria para un nico objeto, devuelve un puntero a ese
objeto:
double *a = new double;

// devuelve el tipo (*)

Si se utiliza para asignar memoria para un array de objetos unidimensional, devuelve un puntero
al elemento primero del array:
double *a = new doub1e[d]: // devuelve el tipo (*)
Y si se utiliza para asignar memoria para un array de objetos multidimensional, devuelve un
puntero al elemento primero del array que a su vez es un array; por ejemplo, un array de dos
dimensiones, es un array de una dimensin donde cada elemento es a su vez un array. El tipo resultante
conserva el tamao de todo menos de la dimensin primera del array. Esto implica que todas las
dimensiones menos la primera tienen que ser constantes.

LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

PRACTICA 13

PAGINA

IV. DESARROLLO
EL ALUMNO SEGUIR LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO
LOS PASOS QUE SIGA:
4.1. Realice un programa con Programacin orientada a objetos en C++ con Class:
"PROGRAMA QUE tenga datos miembros privados , una funcion publica donde:
a) Pida cuantas calificaciones (n) flotantes va a promediar por semestre (8 semestres solo voy a pedir el
promedio de un semestre)

b) por medio del operador new crear una asignacin de memoria de numeros (n) flotantes y pida el valor para
almacenarlo

c) Calcule el promedio
d) Imprima los datos y el promedio con 2 decimales
e) Eliminar la asignacion dinamica

LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

ROS

PRACTICA 14

PAGINA

#include <iostream.h>
#include <stdlib.h>
// Definicin de la clase Calificaciones
class Calificaciones
{
private:
int numcalif,i;
public:
Calificaciones( int numcalif= 1, int i=1);
~Calificaciones();
void menu();
void Pedir();
};

// Datos miembro de la clase Calificaciones


// Funciones miembro de la clase
// constructor
// destructor

// Constructor
Calificaciones::Calificaciones(int z, int w){
numcalif = z;
i = w;
}
// Destructor
Calificaciones::~Calificaciones(){
cout << "Objeto destruido\n";
}
// Establecer menu
void Calificaciones::menu(){
cout << "\nPROGRAMA QUE PIDE LA CANTIDAD DE CALFICACIONES QUE SE PROMEDIARAN";
cout << "\n EL RANGO DE LA CALIFICACION ES ENTRE O Y 10 (enteros)\n\n";
}
void Calificaciones::Pedir(){
cout<<" Introduce el numero de calificaciones a procesar: "; cin>>numcalif;
int *calif = new int[numcalif];
//se crea el arreglo
for(i=0; i<numcalif; i++){
cout<<" Introduzca una calificacion: ";
cin>>calif[i];
}
cout<<"\nSe creo un arreglo para "<<numcalif<<" numeros enteros\n";
cout<<" Los valores almacenados en el arreglo son: ";
for(i=0; i<numcalif; i++)
cout<<"\n "<<calif[i];
cout<< "\n" << endl;
delete calif;

//devuelve el espacio de almacenaje al monton

}
void main()
{
Calificaciones semestre1 ;

// crear e inicializar el objeto dato

semestre1.menu();
semestre1.Pedir();
system ("pause");
}

V. CUESTIONARIO (TRABAJO COMPLEMENTARIO).


1. Explique que hace operador new para un arreglo ?
2.- Explique que hace el operador delete para un arreglo y como se elimina?

VI.- CONCLUSIONES Y OBSERVACIONES:


LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

ROS

PRACTICA 14

PAGINA

También podría gustarte