Material de apoyo Unidad 2 Estructura de datos

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Curso de java básico (scjp)
Métodos y parámetros.
Introducción a C#.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
III - Gestión de memoria
Herencia en C#.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Programación I Teoría III
Herencia y Polimorfismo
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Implementación de Listas
Programación Orientada a Objetos en Java
Herramientas para el acceso directo a memoria en C++
Vectores en java.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Arreglos: Vectores en JAVA
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Programación I Teoría VI: Recursividad
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Creación de Aplicaciones
Tema 6: Clases Antonio J. Sierra.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Programación III Clase 07 Funciones.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Clase 10: Estructuras de datos y arreglos.
Proyecto de Programación de Sistemas “Uso de Java Native Interface para envío y recepción de datos por puerto paralelo” Nombre: Ignacio Zamora R. Profesor:
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Capítulo 7 Gestión de memoria.
Manejo de Punteros y objetos en memoria dinámica en C++
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)

Clase 10 Apuntadores & Memoria Dinámica
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Punteros Recomendado: 1. Nivelación Funciones
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Introducción a los TADs
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Transcripción de la presentación:

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.

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

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.

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

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

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.

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.

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.

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.

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.

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

Í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];

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;

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

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;

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