ESTRUCTURAS
Enviado por luznury • 1 de Noviembre de 2012 • 1.435 Palabras (6 Páginas) • 243 Visitas
DESARROLLO DE LA ACTIVIDAD
1. Conceptualización de la memoria dinámica.
De acuerdo a la conceptualización del módulo referente a la unidad 1 y a las consultas bibliográficas en la Biblioteca virtual de la UNAD, de respuesta en la columna de la derecha a los siguientes interrogantes:
ENUNCIADO RESPUESTA
En la gestión dinámica de memoria ¿Qué utilidad tiene la función Malloc()?
Es una función que asigna memoria propias del lenguaje de programación C, donde se pasa la cantidad de bytes que se necesita. Malloc reserva y encuentra un bloque de memoria del tamaño pedido y regresa la dirección del primer byte del bloque. Esta función regresa una dirección y su tipo de retorno es un apuntador a tipo void porque es compatible con todos los tipos de datos.
Cual es la utilidad del operador sizeof en la gestión dinámica de memoria?
Es un operador que determina el tamaño en bytes que se requiere en la asignación dinámica de memoria, por medio de los operadores New y Delete o por las funciones Malloc y Free, de un arreglo o de cualquier otro tipo de datos.
Establezca la diferencia relacionadas con el operador sizeof entre las dos instruciones de código siguientes:
Instrucción 1.
valor = (float * ) malloc (10 * sizeof (float));
Instrucción 2.
valor = (float * ) malloc (sizeof (float)); En la instruccion 1, asigna memoria para un arreglo de 10 valores float.
En la instrucción 2, asigna memoria para un arreglo de tipo float.
La diferencia es que en la primera instrucción se da un numero especifico de los valores float a reservar, y en la segunda instrucción la asignación es general.
Si se requiere liberar la memoria previamente asignada en un programa codificado en C++ se puede hacer uso de:
Se puede utilizar Delete siempre y cuando se utilice con el operador New.
O se utiliza la función Free, utilizada con la función Malloc.
Indique la instrucción de código necesaria en utilizando la sintaxis de C++ para liberar memoria dinámica previamente asignada a una variable apuntador de tipo entero llamada número, a través de la función Free().
#include <stdlib.h>
#include <stdio.h>
int main()
{
clrscr();
int *numero=NULL;
int npersonas=25;
numero=(int *)malloc(npersonas);
if(numero==NULL)
{
cout<<"No hay personas en el salon\n";
return -1;
}
cout<< "Numero de personas\n\n";
cout<<"Hay" <<npersonas <<" personas en salon\n";
free(numero);
getch();
}
Indique la instrucción de código utilizando la sintaxis de C++ para la asignar memoria dinámica a una variable apuntador de tipo float llamada código a través del operador New.
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
float *codigo;
codigo = new float ;
*codigo = 203010 ;
cout <<"Codigo estudiante\n\n";
cout <<"El codigo es :" <<*codigo ;
delete codigo ;
getch();
}
Haga una consulta en la biblioteca virtual de la UNAD para indicar en pocas palabras la importancia de los apuntadores en la programación de C++.
Los apuntadores son indispensables porque, se pueden apuntar a cualquier tipo de variable y usar de manera extensiva; es la única forma de expresar algunos cálculos, los códigos son compactos y eficientes lo que lo hace una herramienta poderosa. Además, otorga rapidez y flexibilidad a los programas.
2. Aplicación de los apuntadores.
Analice el siguiente código que es una parte de un programa como aplicación de apuntadores a apuntadores, complete las líneas de código que faltan, compílelo y lo ejecuta y así confirma la salida en pantalla, documente cada una de las líneas de código y exprese el resultado que arrojan las variables: a, *x, **y, ***z, para lo cual se debe realizar y anexar a este punto la prueba de escritorio.
LINEA CODIGO DOCUMENTACION Y RESULTADOS
1 void main(){
No retorna ningún valor y se coloca la llave de apertura a la función principal.
2 int a=10;
La variable a es de tipo entero y se le asigna un valor de 10.
3 int *x, **y, ***z ;
X es un apuntador de tipo entero, y es un apuntador a puntador de tipo entero y z es un apuntador a apuntador a apuntador de tipo entero.
4 *x=NULL,**y=NULL,***z=NULL;
*x,**y y ***z no apunta a nada o están inicializados a 0.
5 clrscr();
Es para limpiar la pantalla para que las salidas de anteriores ejecuciones se sigan mostrando.
6 x = &a;
Asigna a x la dirección de a, x apunta a.
7 *x = 120;
Almacena en a el valor 120.
8 y = &x ;
Asigna a y la dirección de x.
9 **y += *x;
Apuntador a apuntador de y avanza un entero y es igual el valor de x (120).
10 z = &y;
Asigna a z la dirección de y.
11 ***z += **y + *x;
Apuntador a apuntador a apuntador de z avanza un entero y es igual a apuntador a apuntador de y mas el valor de x.
12 cout << "El valor de a es:"<<a;
Imprime el contenido de a que es 720.
13 cout << "El valor de *x es:"<<*x;
Imprime el contenido del apuntador de x que es 720
14 cout <<"El valor de **y es:"<<**y;
Imprime el contenido del apuntador a apuntador de y que es 720
15 cout <<"El valor de ***z es:"<<***z;
Imprime el contenido de apuntador a apuntador a apuntador de z que es 720
16 getch();}
Hace que después de ejecutado el programa termine presionando una tecla.
3. Aplicación de las estructuras y gestión dinámica de memoria con las funciones Malloc() y Free().
La UNAD requiere que los estudiantes del curso Estructura de datos diseñen un programa codificado en C++ que haga uso de la gestión dinámica de memoria con las funciones malloc() y free(), el cual permita insertar y visualizar la información de tres cursos académicos en una estructura llamada Cursos; En la estructura Cursos se requiere almacenar el código del curso, el nombre del curso y el número de créditos del curso.
Como resultado se espera el código fuente debidamente documentado cada línea y la captura de pantalla de las imágenes del resultado después
...