Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-

Slides:



Advertisements
Presentaciones similares
Unidad 15 Características de C++ no relacionadas con el DOO.
Advertisements

DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Estructura de Datos En C++
Clase 3: Punteros y Referencias
Programación I Teoría III
Programación I Teoría IV
Programación, Algoritmos y Estructuras de Datos
Direcciones, Arreglos y Argumentos de Funciones
Estructuras de datos. Programación, Algoritmos y Estructuras de Datos.
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.
Una variable en un programa es algo con un nombre, cuyo valor puede variar. La manera en que el compilador y enlazador maneja esto es asignando un bloque.
Punteros Universidad Nacional Mayor de San Marcos
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
Funcionamiento, programación
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Implementación de Listas
Unidad 3 Punteros.
Ingeniero Anyelo Quintero
Herramientas para el acceso directo a memoria en C++
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Tema 6: Clases Antonio J. Sierra.
Diseño de algoritmos “Punteros”
Tema 9 Estructuras.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Introducción a los punteros
Archivos Binarios Lenguaje C Prof. Gonzalo Pastor.
Informática Ingeniería en Electrónica y Automática Industrial
Índice. Revisando conceptos acerca de la memoria.
Estructuras.
Programación Científica
Estructura de Datos y Algoritmos
Listas enlazadas.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
PUNTEROS Ing Anghello Quintero.
1 Estructuras de Datos Elementales:stacks (pilas), queues (colas), linked lists (listas enlazadas), y rooted trees (árboles con raíz) Agustín J. González.
Informática Ingeniería en Electrónica y Automática Industrial
Aplicación de estructuras de datos
Archivos Programación I MC Beatriz Beltrán Martínez.
Unidad II Introducción a la programación en C++

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.
Memoria estática versus dinámica con Estructuras
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.
PUNTEROS Y REFERENCIAS
Diseño de Algoritmos. Curso J.L. Leiva O. TEMA3TEMA3 TEMA3TEMA3 Estructuras Dinámicas Contenido del Tema Profesor: José Luis Leiva Olivencia. Despacho:
Unidad 4: LISTAS.
Memoria dinámica con Estructuras. Memoria dinámica ¿Qué hacer cuando las variables declaradas son insuficientes o cuando no se conoce anticipadamente.
Los punteros Programación modular.
Programación Procedural y Recursiva en C++
Punteros Recomendado: 1. Nivelación Funciones
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
INTRODUCCION A LA PROGRAMACION
Fundamentos de Programación
PROGRAMACION DE Pilas o Stacks
PUNTEROS EN EL LENGUAJE C
Laboratorio de programación
M.C. Meliza Contreras González
Laboratorio de programación
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.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-

2 Asignación Dinámica de Memoria para una Variable   Se refiere a las variables cuya memoria se reserva de forma dinamica, es decir, memoria que se crea y se debe liberar de forma explicita en tiempo de ejecucion   El tiempo de vida de las variables depende del momento en que se les asigna y desasigna memoria.   La biblioteca estandar de C proporciona, entre otras, las funciones malloc, y free para el manejo de memoria dinamica con punteros. cabecera stdlib.h   El operador unario sizeof es fundamentales para el manejo dinamico de la memoria. Programación I – Datos Recursivos Asignación Dinámica de Memoria

3 malloc:   Toma como argumento el numero de bytes que se solicitan y retorna un puntero a void (void *) que apunta a la memoria asignada. Un puntero a void puede ser asignado a una variable de cualquier tipo puntero. Si no hay suficiente memoria para asignar, entonces retorna NULL, Esto permite controlar si se pudo realizar o no la asignacion de memoria.   malloc es usada en combinacion con sizeof para indicar la cantidad de bytes a pedir.   sizeof es un operador que recibe como operando un tipo de dato y retorna el tamano que ocupa en memoria un objeto del tipo de dato al cual se le aplico el operador. Ejemplo, sizeof(float) me permitira conocer cuantos bytes ocupa un float. Programación I – Datos Recursivos Asignación Dinámica de Memoria

4 newPtr = malloc(sizeof(struct nodo));   evalua sizeof(struct node) para determinar el tamano en bytes de un registro de tipo struct nodo,   asigna una nueva area de memoria con esa cantidad de bytes y devuelve un puntero a esa area el cual es almacenado en la variable newPtr. Si no hubiese habido suficiente memoria para asignar, malloc retornaria NULL. Programación I – Datos Recursivos Asignación Dinámica de Memoria

5   La funcion free desasigna memoria. Esto significa que la memoria apuntada por el puntero al que se le aplica free es retornada al sistema y en consecuencia la misma podra ser reasignada en el futuro.   Ejemplo:   Si se quesiera liberar la memoria previamente solicitada por la sentencia malloc, se hace free(newPtr);   Esto es de suma utilidad a la hora de implementar estructuras de datos con datos recursivos, manejadas con asignacion dinamica de la memoria. Programación I – Datos Recursivos Asignación Dinámica de Memoria

6   Se pueden dar soluciones recursivas cuando los datos a tratar tienen una definicion recursiva.   Listas: El caso de listas de elementos es un ejemplo de datos que pueden definirse recursivamente y en consecuencia ser tratados de la misma manera.   Asi, dados e, que denota un elemento de lista y  que denota la lista vacia, podemos definir una lista L, en forma recursiva, diciendo que: L =   L = e L Programación I – Datos Recursivos

7   Definición en C de un tipo de dato recursivo struct nodo { char vipd; struct nodo *next; } …. typedef struct nodo *PNodo; /*Luego la declaracion de lisChar, puede ser hecha como*/ PNodo lisChar = NULL; Programación I – Datos Recursivos

8 Lista Vacia Lista con Elementos Programación I – Datos Recursivos

9 Impresión de una Lista Recursiva Programación I – Datos Recursivos

10 Para Recordar antes de la Implementación Programación I – Datos Recursivos

11 Programación I – Datos Recursivos Implementación de Lista con DR

12 Redefinición de función imprimeLista Programación I – Datos Recursivos Implementación de Lista con DR

13 Pseudocódigo de función insertar: void insertar(lista, elem) // tipos de param? { Si la lista esta vacia { //inserto en el 1º lugar // acomodo Acc y el ps de elem. // acomodo Acc y el ps de elem. }sino { /* acomodo siguiente de elem, (elem.ps = curaux.ps) y /* acomodo siguiente de elem, (elem.ps = curaux.ps) y al ps de curaux le doy la dir del elem.*/ al ps de curaux le doy la dir del elem.*/ }} Pregunta: ¿Como hago para crear elem e insertarlo en la lista? Programación I – Datos Recursivos Implementación de Lista con DR