La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Material de apoyo Unidad 2 Estructura de datos

Presentaciones similares


Presentación del tema: "Material de apoyo Unidad 2 Estructura de datos"— Transcripción de la presentación:

1 Material de apoyo Unidad 2 Estructura de datos
Instituto Tecnológico de Culiacán Ingeniería en Sistemas Computacionales Estructura de datos Material de apoyo Unidad 2 Prof. Felipe E. Muñiz R.

2 TEMARIO Unidad 2.-Manejo de memoria . 2.1 Manejo de memoria estática.
2.2 Manejo de memoria dinámica.

3 Unidad II Manejo de memoria
Es una zona de almacenamiento organizada en unidades individuales (celdas). La acción de guardar información en memoria se llama “Acceso de escritura” y a la acción de recuperar la información se le llama “Acceso de lectura” y estos accesos son coordinados por la Unidad de Control. Manejo de memoria Todas las variables, arreglos y objetos en general tienen una duración determinada durante el transcurso de un programa, esto quiere decir que son creados y destruidos de acuerdo a la ejecución del programa. Existen 3 formas de utilizar la memoria para almacenar valores.

4 1.-Memoria Estática Son aquellas en las que se asigna una cantidad fija de memoria cuando se declara la variable. Se utiliza para las variables globales y las declaradas como estáticas, tales objetos tienen asignada la misma dirección de memoria desde el comienzo hasta el final del programa. Variables globales Variables static

5 2.-Memoria Automática Es la utilizada por los argumentos y las variables locales en una función o procedimiento, cada ejecución de este crea tales objetos y son destruidos al salir de ellos. Argumentos Variables locales

6 3.-Memoria Dinámica Son aquellas cuya ocupación de memoria puede aumentar o disminuir en tiempo de ejecución. Es también llamado almacenamiento libre y en estos casos el programador solicita memoria para almacenar un objeto y es el responsable de liberar tal memoria para que pueda ser reutilizada por otros objetos. La operación de reservar y liberar memoria para variables globales estáticas o globales son realizadas de modo implícito por el programa, la única que realiza el programador directamente es la de reservar memoria de forma dinámica.

7 Memoria estática: Es la memoria que se reserva en el momento de la compilación antes de comenzar a ejecutarse el programa. Los objetos mantienen la misma localización en memoria durante todo el transcurso del programa. Los objetos administrados de este modo son variables globales, variables static de funciones y miembros static de clases y literales de cualquier tipo.

8 Ejemplo 1: class CSimple { static void Main(string[] args) int [] numeros=new int[] {1,2,3,4,5}; for (int i = 0; i < 5; i++) Console.WriteLine("Numeros {0}= {1}",i+1, numeros[i]); Console.ReadLine(); } Nota: En el ejemplo 1 se muestra la declaración estática de un arreglo de números enteros y la de la variable i para controlar el ciclo for.

9 Ejemplo 2 class CSimple { static int Funcion(int p, int q) return (p + q); } static void Main(string[] args) int Resultado = Funcion(7, 2); Console.WriteLine("El resultado es:{0}", Resultado); Console.ReadLine(); Nota: En el ejemplo 2 se muestra la declaración estática de una función entera y de otra variable entera para guardar el resultado de la ejecución de la función. El problema con la memoria estática de memoria es que siempre se reserva antes de conocer los datos concretos del problema y esto origina reservar siempre un máximo de memoria que en la mayoría de las veces no se va a necesitar.

10 Memoria dinámica: La reserva de memoria dinámica se hace en tiempo de ejecución después de leer los datos y de conocer el tamaño exacto del problema. Como consecuencia se adapta mucho mejor a las necesidades en cada caso. El sitio donde se almacenan los objetos se denominan en ingles heap o free store traducido como montículo o memoria libre, y el sitio preciso donde se encuentre depende del compilador y el tipo de puntero utilizado. La creación y destrucción de los objetos está en manos del programador a través de los operadores new y delete.

11 Ventajas de utilizar memoria dinámica vs memoria estática
La memoria dinámica sirve para que los programadores se adapten siempre al tamaño del problema que tienen que resolver sin desperdiciar recursos de memoria y esto se traduce en una mayor eficiencia en la ejecución de los programas, las ventajas de utilizar memoria dinámica se valoran mejor en comparación con la utilización de la reserva de la memoria estática. Creación del los Objetos Los objetos locales son creados al entrar en la función que los declara. Los globales son creados al iniciarse en programa. La memoria se reserva explícitamente con el operador new. Duración de los objetos Los objetos locales se destruyen al salir de la función en que son creados. Los globales se destruyen al salir del programa. Los objetos son destruidos explícitamente con el operador delete. (En Java la función la realiza el recolector de basura automáticamente).

12 Índice de los Arreglos El valor del índice debe ser un valor constante Ejemplo: int A [20]; El valor de un arreglo puede ser un valor de una variable, de modo que la cantidad de memoria reservado puede variar en tiempo de ejecución. int A = new int[variable];

13 Ejemplos Extras de la aplicación de memoria dinámica y estática.
Ejemplo Aplicación Estática public class Empleado { public string id; public string nombre; public Empleado () } public Empleado(string nombre, string id) this.nombre = nombre; this.id = id; public static int ContadorEmpleado; //Aplicacion de memoria estática public static int AgregarEmpleado() return ++ContadorEmpleado;

14 class MainClass : Empleado
{ public static void Main() Console.Write("Ingresa el nombre del empleado: "); string nombre = Console.ReadLine(); Console.Write("Ingresa el Id del empleado: "); string id = Console.ReadLine(); //Creando el objeto empleado: Empleado e =new Empleado(nombre, id); Console.Write("Ingresa el No. de empleados: "); string n = Console.ReadLine(); Empleado.ContadorEmpleado =Int32.Parse(n); Empleado.AgregarEmpleado(); //Nueva informacion: Console.WriteLine("Nombre: {0}", e.nombre); Console.WriteLine("ID: {0}", e.id); Console.WriteLine("Nuevo No. de empleados: {0}", Empleado.ContadorEmpleado); Console.ReadLine(); }

15 Ejemplo Aplicacián Dinámica
public class Persona { public string nombre; //constructor public Persona() nombre ="Desconocido"; } //método public void leerNombre(string nom) nombre = nom;

16 class Program { static void Main(string[] args) Persona persona1 =new Persona(); System.Console.WriteLine(persona1.nombre); persona1.leerNombre("Susana Davalos"); persona1.leerNombre("Gisela Rios"); persona1.leerNombre("Argelia Corona"); Console.ReadLine(); }


Descargar ppt "Material de apoyo Unidad 2 Estructura de datos"

Presentaciones similares


Anuncios Google