Punteros Recomendado: 1. Nivelación Funciones

Slides:



Advertisements
Presentaciones similares
Definición Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que.
Advertisements

ESTRUCTURA DE DATOS Unidad 03 PILAS.
III - Gestión de memoria
Programación I Teoría III
Direcciones, Arreglos y Argumentos de Funciones
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
Tema 1. Introducción a la programación (Lenguaje java).
PROGRAMACION DE Pilas o Stacks y Colas
Funcionamiento, programación
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Teoría de lenguajes y compiladores
Estructuras de Datos Punteros y algo más.
Estructuras de datos M.I.A Daniel Alejandro García López.
Unidad 3 Punteros.
Herramientas para el acceso directo a memoria en C++
Vectores en java.
Material de apoyo Unidad 2 Estructura de datos
Tema Nº4.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Pilas Una pila es una estructura lineal de elementos en donde se pueden agregar o eliminar datos únicamente por uno de los dos extremos. En consecuencia.
Tema 6: Clases Antonio J. Sierra.
LENGUAJE “C” Programación.
Tema 10: Gestión de Memoria
Semana 5 Subprogramas..
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
PILAS, COLAS, RECURSIVIDAD.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Índice. Revisando conceptos acerca de la memoria.
Estructuras.
Clase 10: Estructuras de datos y arreglos.
Programa Vespertino de Automatización Equipos y Sistemas de Control Digital Lenguaje C Profesor: Felipe Páez Mejías D e p a r t a m e n t o d e I n g e.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
PUNTEROS Ing Anghello Quintero.
Administración de Memoria
Informática Ingeniería en Electrónica y Automática Industrial
Aplicación de estructuras de datos
Árboles Recomendado: 1. Nivelación Funciones
Capítulo 7 Gestión de memoria.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Informática Ingeniería en Electrónica y Automática Industrial
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
Programación en C para electrónicos
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
PUNTEROS Y REFERENCIAS
1 Definición y Conversión de datos Agustín J. González ELO-329.
Los punteros Programación modular.
Son estructuras de datos que almacenan y recuperan sus elementos atendiendo a un estricto orden (LIFO Last – in, first –out Ultimo en entrar – primero.
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
INSTITUTO TECNOLOGICO DE APIZACO
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Ayudantia 3: Pilas- Colas
IMPLEMENTACION DE COLAS MEDIANTE LISTAS
Lic. En C.C. Ann Margareth Meza Rodríguez
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Estructura de Datos..
PROGRAMACION DE Pilas o Stacks
PUNTEROS EN EL LENGUAJE C
M.C. Meliza Contreras González
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
PROGRAMACION DE Pilas o Stacks y Colas
MEMORIA DINÁMICA.
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Listas Dinámicas.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
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.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

Punteros Recomendado: http://c.conclase.net 1. Nivelación Funciones Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas Árboles 3. Archivos Archivos de texto Archivos Binarios Punteros Recomendado: http://c.conclase.net

Punteros Un Puntero es una variable que tiene la dirección de memoria de otra variable. Por ejemplo: si la variable c almacena un char y p es un puntero a c, se representaría: El & es un operador que devuelve la dirección de memoria de una variable p = &c; Se dice que p apunta a c. c p

Operadores & Devuelve la dirección de memoria de una variable Ya era usado en scanf() No se usaba con vectores y string porque éstos son punteros al primer valor. * es el operador de indirección o desreferencia, devuelve el contenido de memoria apuntada por un puntero

Ejemplo //Se declara x, y, z int x = 1, y= 2, z[10]; //ip apunta a un entero //ip apunta a x //y = 1 //x es ahora 0 //ip apunta al vector z[0] //ip apunta a z[1] int x = 1, y= 2, z[10]; int *ip; ip = &x; y = *ip; *ip = 0; ip = &z[0]; ip++;

Asignación Dinámica Los punteros proporcionan el soporte necesario para el potente sistema de asignación dinámica de memoria de C. La asignación dinámica es la forma en la que un programa puede obtener memoria mientras se está ejecutando. A las variables globales por ejemplo, se les asigna memoria en tiempo de compilación. Durante la ejecución no se pueden añadir variables globales o locales, pero existen ocasiones en las que un programa necesita usar cantidades de memoria variables.

NEW - Asigna memoria New devuelve una referencia a una posición en memoria que a guardar el tipo indicado en la sentencia new. Tras una llamada fructífera, new devuelve un puntero. Si no hay suficiente memoria libre para satisfacer la petición, se da un fallo de asignación y devuelve un NULL. El siguiente código asigna memoria para guardar datos de una estructura persona: persona *p; p = new persona;

DELETE – Libera memoria La instrucción delete es la opuesta a new porque devuelve al sistema la memoria previamente asignada. Una vez que la memoria ha sido liberada, puede ser reutilizada en una posterior llamada a new. Ejemplo: persona *p; p = new persona; …….. delete p;

Estructuras Dinámicas de Datos Las estructuras básicas disponibles en C y C++ tienen una importante limitación: no pueden cambiar de tamaño durante la ejecución. Los vectores están compuestos por un determinado número de elementos, número que se decide en la fase de diseño, antes de que el programa ejecutable sea creado. En muchas ocasiones se necesitan estructuras que puedan cambiar de tamaño durante la ejecución del programa. Podemos hacer vectores dinámicos, pero una vez creados, su tamaño también será fijo, y para hacer que crezcan o diminuyan de tamaño, deberemos reconstruirlos desde el principio.

Estructuras Dinámicas de Datos Las estructuras dinámicas nos permiten crear estructuras de datos que se adapten a las necesidades reales a las que suelen enfrentarse nuestros programas. También nos permitirán crear estructuras de datos muy flexibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen. Las estructuras de datos están compuestas de otras pequeñas estructuras a las que llamaremos nodos, que agrupan los datos con los que trabajará nuestro programa y además uno o más punteros autoreferenciales, es decir, punteros a objetos del mismo tipo nodo.

Nodos Una estructura básica de un nodo para crear listas de datos sería: El campo “siguiente" apunta a un objeto del tipo nodo. De este modo, cada nodo puede usarse como un ladrillo para construir listas de datos, y cada uno mantendrá ciertas relaciones con otros nodos.

Nodos Para acceder a un nodo de la estructura sólo necesitaremos un puntero al primer nodo. El nodo anterior se representará así: En estos tipos de datos el interés se centra más en la estructura de los datos que en el tipo concreto de información que almacenan. Dependiendo del número de punteros y de las relaciones entre nodos, podemos distinguir varios tipos de estructuras dinámicas.

Estructuras a Estudiar Pilas: conocidas como listas LIFO (Last In, First Out: el último en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que sólo el elemento que está encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila. Colas: conocidas como listas FIFO (First In, First Out: El primero en entrar es el primero en salir). Los elementos se almacenan en fila, pero sólo pueden añadirse por un extremo y leerse por el otro. Listas: cada elemento sólo dispone de un puntero, que apuntará al siguiente elemento de la lista o valdrá NULL si es el último elemento. Cada dato queda ordenado Arboles Binarios: cada elemento dispone de dos punteros, pero las referencias nunca son a elementos anteriores, de modo que la estructura se ramifica y crece igual que un árbol.