Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas"

Transcripción

1 Algorítmica Lenguajes de Programación Punteros Introducción a estructuras dinámicas Punteros estructuras dinámicas. Introducción! Las variables globales pertenecen al programa princil eisten desde que éste se inicia hasta que finaliza; también se las denomina estáticas.! Las variables locales pertenecen a funciones subrutinas sólo eisten durante la ejecución del subprograma; también se les denomina automáticas.! Las variables cua creación destrucción no coincide con el el fin de un o subprograma; es decir, es controlada por el programador se denominan variables dinámicas.! La maor rte de lenguajes de programación pueden manipular este tipo de variables.

2 Punteros estructuras dinámicas. Punteros (i)! Un puntero es un tipo simple que siempre está asociado a otro tipo (punteros a enteros, a reales, a registros, etc.)! Se pueden ver los punteros como variables que almacenan direcciones de memoria; de aquí se deduce:! Un puntero es un medio ra acceder al contenido real apuntado por la variable.! La declaración de un puntero no implica que eista contenido apuntado por el misma.! Es necesario crear destruir eplícitamente el contenido apuntado por punteros.! Se puede establecer una analogía entre los punteros las direcciones postales:! Una dirección postal permite acceder al lugar físico indicado.! El hecho de disponer de una dirección postal no garantiza que el lugar eista.! Para declarar variables de tipo puntero en la notación algorítmica se utiliza la sintais siguiente: variable puntero a tipo! Por ejemplo, preal puntero a real 3 Punteros estructuras dinámicas. Punteros (ii)! Una vez se declara un puntero pueden llevarse a cabo dos acciones básicas sobre el mismo:! Asignarle memoria ra almacenar un dato del tipo al que apunta: crear.! Eliminar la memoria que tiene asignada con ella el dato apuntado: destruir. crear (variable puntero) destruir (variable puntero)! Es posible asignar a un puntero el contenido de otro; ra hacer esto es necesario que la variable a la que vamos a asignar un valor no apunte a ningún dato pues en ese caso el dato original quedaría inaccesible.! Así pues, sólo deberíamos asignar un puntero a otro si el puntero asignado no tiene memoria reservada. 4

3 Punteros estructuras dinámicas. Punteros (iii)! Una vez se reserva memoria ra un puntero es posible almacenar un dato en dicho escio de memoria: puntero " epresión del tipo apuntado! La siguiente sentencia asigna un valor a un puntero a real: preal " Punteros estructuras dinámicas. Punteros (iv)! Ejemplo sencillo: variables, a entero, puntero a entero " " crear() " 0 " escribir + escribir + destruir () fin 6

4 Punteros estructuras dinámicas. Punteros (v) " " crear() " 0 " " " 0 crear() " 0 " " " 0 crear() " 0 " 7 Punteros estructuras dinámicas. Punteros (vi) destruir () Al liberar la memoria asignada a la variable continua apuntando a la posición de memoria anteriormente asignada que, tras la destrucción de la variable referenciada, no contiene ningún dato válido. Por tanto, cuando a un puntero se asigna el contenido de otro puntero ha que cuidar que el puntero no termine referenciando posiciones sin datos válidos; ra lograr esto eiste una constante que se asigna a un puntero indicando que el referencia ninguna posición de memoria, nos referimos a NIL. En el anterior una vez se ha destruido el puntero habría que ejecutar: " NIL 8

5 Punteros estructuras dinámicas. Punteros (vii) El hecho de asignar NIL a un puntero no libera la memoria asignada sino que simple llanamente la hace inaccesible. Si en el anterior se sustitue la sentencia destruir () por esta otra " NIL se tendría crear () " 0 " NIL crear () " 0 " NIL crear () " 0 " NIL 9 Punteros estructuras dinámicas. Punteros (viii)! Reglas ra trabajar con punteros:! Por cada sentencia de reserva de memoria tiene que haber una sentencia de liberación.! Para asignar un puntero a otro, el puntero asignado no debe tener asignada memoria previamente.! Para asignar un valor a la memoria referenciada por un puntero es necesario que se haa reservado memoria previamente.! Cuando la memoria apuntada por un puntero ha desarecido se debe asignar el valor NIL al puntero.! Nunca se pueden perder todas las referencias a memoria reservada pues entonces a no se podría liberar. 0

6 Punteros estructuras dinámicas. Referencias (i)! Se recen a los punteros.! Se trata de alias puesto que se trata de variables que apuntando a otra variable pueden ser utilizadas como si se tratase directamente con la variable apuntada.! Poseen una serie de propiedades que las hacen diferentes de los punteros:! Los punteros pueden declararse no reservarse memoria ra los mismos (no apuntan a ninguna rte). Las referencias deben inicializarse en el momento de crearlas.! La memoria asignada a un puntero puede destruirse en cualquier momento. La variable apuntada por una referencia no puede ser destruida.! Es posible cambiar en cualquier momento la variable apuntada por un puntero. No se puede hacer esto con una referencia. Punteros estructuras dinámicas. Referencias (ii) Referencias Puntero

7 Punteros estructuras dinámicas. Punteros FORTRAN (i)! Mediante la labra reservada pointer es posible utilizar los punteros o referencias de FORTRAN 90 (no son eactamente punteros ni tampoco referencias).! Para declarar variables con el atributo pointer en FORTRAN 90 se utiliza la sintais siguiente: tipo, pointer:: variable! Una vez un puntero ha sido declarado pueden llevarse a cabo las dos acciones básicas de asignación liberación de memoria; ra ello se emplean las funciones allocate deallocate 3 Punteros estructuras dinámicas. Punteros FORTRAN (ii)! NO es posible asignar el contenido de un pointer a otro pointer mediante el operador asignación (=); ra hacer que un puntero "apunte" al mismo objetivo que otro se emplea el operador =>.! El operador de asignación se utiliza ra dar valores a la variable referenciada por el puntero (es decir, a la memoria asignada al mismo). 4

8 Punteros estructuras dinámicas. Punteros FORTRAN (iii)! Ejemplo sencillo: program programa implicit none integer, pointer ::, integer, = = allocate() = 0 => print *, + print *, + deallocate() end 5 Punteros estructuras dinámicas. Punteros FORTRAN (iv)! Para lograr en FORTRAN que un puntero apunte a NIL se utiliza la función nullif: nullif (variable pointer)! También aquí es cierto que el hecho de hacer que un pointer apunte al equivalente de NIL no significa que la memoria haa sido liberada sólo que es inaccesible.! Para saber si un pointer apunta a algo o no se dispone de la función booleana: associated (variable pointer) 6

9 Punteros estructuras dinámicas. Estructura Dinámica (i) Ejemplo algorítmico: tipos cliente = tupla nombre carácter siguientecliente puntero a cliente fin tupla variables colasuper puntero a cliente nombre carácter colasuper " NIL mientras nombre. hacer escribir Deme su nombre (pulse. ra finalizar): leer nombre si nombre. entonces ponersecola (nombre, colasuper) fin si fin mientras 7 Punteros estructuras dinámicas. Estructura Dinámica (ii) mientras nombre hacer nombre " atendercliente (colasuper) escribir nombre fin mientras accion ponersecola (nombrecliente caracter,cola puntero a cliente) si cola = NIL entonces crear (cola) cola.nombre " nombrecliente cola.siguientecliente " NIL si no llamar ponersecola (nombrecliente,cola.siguientecliente) fin si fin accion 8

10 Punteros estructuras dinámicas. Estructura Dinámica (iii) carácter funcion atendercliente (cola puntero a cliente) variables cursor puntero a cliente si cola = NIL entonces atendercliente " si no cursor = cola.siguientecliente atendercliente " cola.nombre destruir (cola) cola " cursor fin si fin funcion fin 9 Punteros estructuras dinámicas. Estructura Dinámica (iv) Ejemplo FORTRAN 90: program ejemplocola implicit none! Se define el tipo base de la cola! tpe cliente character*64 nombre tpe(cliente), pointer :: siguientecliente end tpe cliente! La cola es un puntero al tipo base! tpe(cliente), pointer :: colasuper character*64 nombre! Se inicializa la cola! nullif (colasuper) 0

11 Punteros estructuras dinámicas. Estructura Dinámica (v) do while (nombre/='.') print *, 'Deme su nombre (pulse. ra finalizar):' read *, nombre if (nombre/='.') then call ponersecola (nombre, colasuper) end if end do do while (nombre/='') nombre = atendercliente (colasuper) print *, nombre end do Punteros estructuras dinámicas. Estructura Dinámica (vi)! Subprogramas utilizados por el programa princil! contains! Subrutina recursiva ra añadir al final de la cola! recursive subroutine ponersecola (nombrecliente, cola) implicit none character*64, nombrecliente tpe(cliente), pointer :: cola if (.not.associated(cola)) then allocate(cola) cola%nombre=nombrecliente nullif(cola%siguientecliente) else call ponersecola (nombrecliente, cola%siguientecliente) end if end subroutine ponersecola

12 Punteros estructuras dinámicas. Estructura Dinámica (vii)! Función que retorna el nombre del primer cliente lo elimina de la cola! character*64 function atendercliente (cola) implicit none tpe(cliente), pointer :: cola, cursor if (.not.associated(cola)) then atendercliente = '' else cursor => cola%siguientecliente atendercliente = cola%nombre deallocate(cola) cola => cursor end if end function atendercliente end 3 Punteros estructuras dinámicas. Resumen (i)! Frente a las variables globales (estáticas) locales (automáticas) eiste un tercer tipo denominadas variables dinámicas puesto que son creadas destruidas en tiempo de ejecución.! Las variables dinámicas son la base ra construir estructuras dinámicas de datos (como colas, pilas, árboles, etc.)! Los punteros permiten crear destruir variables dinámicas; un puntero es una variable que almacena una dirección de memoria (por tanto, apunta a la dirección ocuda por otra variable).! Los punteros presentan una serie de características:! Un puntero es un medio ra acceder al contenido real apuntado por la variable.! La declaración de una variable de tipo puntero no implica que eista un contenido apuntado por la misma.! Es necesario crear destruir eplícitamente el contenido apuntado por las variables de tipo puntero.! Para declarar variables de tipo puntero en la notación algorítmica se utiliza la siguiente sintais: variable puntero a tipo! Una vez un puntero ha sido declarado puede asignársele memoria eliminar la memoria asignada; ra ello se emplean las acciones crear destruir.! Para trabajar con punteros es necesario tener en cuenta las siguientes reglas:! Por cada sentencia de reserva de memoria tiene que haber una sentencia de liberación.! Para asignar un puntero a otro, el puntero asignado no debe tener asignada memoria previamente.! Para asignar un valor a la memoria referenciada por un puntero es necesario que se haa reservado memoria previamente.! Cuando la memoria apuntada por un puntero ha desarecido se debe asignar el valor NIL al puntero.! Nunca se pueden perder todas las referencias a memoria reservada pues entonces a no se puede liberar. 4

13 Punteros estructuras dinámicas. Resumen (ii)! Las referencias se recen a los punteros aunque, en realidad, son alias a que, aunque apuntan a una variable, se utilizan como si se tratase directamente con la variable apuntada.! Ha varias propiedades que diferencian a una referencia de un puntero:! Los punteros pueden declararse no reservarse memoria ra los mismos; las referencias deben inicializarse en el momento de su creación.! La memoria asignada a un puntero puede destruirse en cualquier momento; sin embargo, la variable referenciada por una referencia no puede ser destruida.! Siempre se puede cambiar la variable apuntada por un puntero; en cambio, no se puede cambiar el objetivo de una referencia.! FORTRAN 90 dispone de la labra reservada pointer; esta labra permite modificar el comportamiento de una variable de tal manera que se comporte como un puntero en algunos aspectos como una referencia en otros.! Las acciones ra reservar liberar memoria en FORTRAN 90 son allocate deallocate, respectivamente.! El operador ra cambiar la referencia a la que apunta un pointer es => a que el operador = sirve ra asignar un valor a la variable referenciada.! En FORTRAN 90 no eiste una constante NIL pero sí una función nullif que consigue un efecto análogo. Para saber si un pointer es nulo o apunta a alguna referencia se utiliza la función booleana associated. 5

Punteros e introducción a estructuras dinámicas

Punteros e introducción a estructuras dinámicas Punteros e introducción a estructuras dinámicas Introducción Hasta este momento hemos visto dos tipos de variables: globales locales; las primeras pertenecen al /programa princil eisten desde que éste

Más detalles

Funciones y subrutinas

Funciones y subrutinas Algorítmica y Lenguajes de Programación Funciones y subrutinas Funciones y subrutinas. Introducción El diseño descendente permite obtener un programa que resuelva un problema dividiendo este en subproblemas

Más detalles

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS Programación en Fortran Valentín Moreno ÍNDICE 1. Subprogramas 2. Funciones 3. Subrutinas 2 3 1. SUBPROGRAMAS 1. SUBPROGRAMAS Si necesitamos usar con frecuencia

Más detalles

Ficheros. Introducción. Apertura y cierre de ficheros

Ficheros. Introducción. Apertura y cierre de ficheros s Introducción Podemos deir un fichero o archivo como una unidad de información almacenada en memoria secundaria, un disco, a la que se asigna un identificador único; los ficheros nos ofrecen la posibilidad

Más detalles

TEMA 0 Gestión de Memoria Dinámica

TEMA 0 Gestión de Memoria Dinámica TEMA 0 Gestión de Memoria Dinámica ESTRUCTURAS DE DATOS 1 Objetivos Tema preliminar para entender el uso de la herramienta básica en la gestión de memoria dinámica: punteros Objetivos: Conocer el concepto

Más detalles

Algorítmica y Lenguajes de Programación. Ficheros

Algorítmica y Lenguajes de Programación. Ficheros Algorítmica y Lenguajes de Programación Ficheros Ficheros. Introducción Un fichero es una unidad de información almacenada en disco a la que se asigna un identificador único. Los ficheros nos ofrecen la

Más detalles

Subprogramas en Fortran 90. Seminario de Computación 2009

Subprogramas en Fortran 90. Seminario de Computación 2009 Seminario de Computación 2009 1. Algoritmos con nombre en Fortran 90 Un algoritmo con nombre es la generalización de un operador En Fortran 90 los algoritmos con nombre pueden ser: - Intrínsecos (propios

Más detalles

Estructuras dinámicas lineales (i)

Estructuras dinámicas lineales (i) Estructuras dinámicas lineales (i) Introducción En la lección anterior se explicaron los conceptos de dinámicas y puntero; vimos la forma en que se implementan dichas tanto en la notación algorítmica como

Más detalles

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España.

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España. Estructura de Datos y de la Información Tema 1: Gestión dinámica de la memoria Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION Capítulo 3 Subprogramas Con lo explicado hasta aquí se pueden escribir programas sencillos y no demasiado largos. Pero varias razones justifican la necesidad de disponer de otro tipo de recursos. Por una

Más detalles

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Práctica 4. TAD lista posicional

Práctica 4. TAD lista posicional Objetivos. Práctica 4. TAD lista posicional Se trata de construir el TAD lista posicional con una implementación acotada. Haciendo uso de este TAD, se implementará una biblioteca de cálculos estadísticos

Más detalles

Introducción a Fortran

Introducción a Fortran mario.merino@upm.es Escuela Técnica Superior de Ingenieros Aeronáuticos Universidad Politécnica de Madrid 4 de marzo de 2011 Índice Introducción 1 Introducción 2 3 4 Fin? Qué es programar? Un ordenador

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

El FORTRAN da la posibilidad de subdividir las tareas de un programa complejo en partes simples y claras. Procedimientos Externos SUBRUTINAS

El FORTRAN da la posibilidad de subdividir las tareas de un programa complejo en partes simples y claras. Procedimientos Externos SUBRUTINAS El FORTRAN da la posibilidad de subdividir las tareas de un programa complejo en partes simples y claras. Procedimientos Externos SUBRUTINAS Subprogramas FUNSIONES Testeo independiente: un subprograma

Más detalles

Algoritmo, Estructuras y Programación II Ing. Marglorie Colina

Algoritmo, Estructuras y Programación II Ing. Marglorie Colina Unidad III Punteros Algoritmo, Estructuras y Programación II Ing. Marglorie Colina Ejemplo: Paso de Punteros a una Función Arreglos (Arrays) Unidimensionales Los Arreglos son una colección de variables

Más detalles

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo ESTRUCTURA DE DATOS Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo DATOS ESTÁTICOS Su tamaño y forma es constante durante la ejecución

Más detalles

Enumerados, subrangos y tuplas

Enumerados, subrangos y tuplas Enumerados, subrangos y tuplas Introducción Hasta el momento hemos visto los siguientes de datos: entero (integer), real (real), lógico (logical) y carácter (character); aunque estos resultan imprescindibles

Más detalles

Programación en Pascal. Memoria dinámica

Programación en Pascal. Memoria dinámica Programación en Pascal. Memoria dinámica Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos gsyc-profes (arroba) gsyc.urjc.es Diciembre de 2018 GSyC - 2018 Programación

Más detalles

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS BÁSICAS Programación en Fortran Valentín Moreno ÍNDICE 1. Introducción al lenguaje Fortran 2. Estructura de un programa 3. Variables y constantes 4. Tipos de

Más detalles

PUNTEROS (APUNTADORES)

PUNTEROS (APUNTADORES) 2010 UNAN LEON Departamento de Computación Ing. En Sistemas Sabatino Autor: Ing: Karina Esquivel Alvarado. Asignatura: Algoritmo y Estructura de Datos. PUNTEROS (APUNTADORES) TEMA 4: PUNTEROS (APUNTADORES)

Más detalles

Algorítmica y Lenguajes de Programación. Declaración de variables Sentencias de entrada/salida

Algorítmica y Lenguajes de Programación. Declaración de variables Sentencias de entrada/salida Algorítmica y Lenguajes de Programación Declaración de variables Sentencias de entrada/salida Variables y E/S. Introducción En esta lección veremos: Estructura de un programa FORTRAN. Declaración de variables.

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Manual de referencia de C++ Parte IV Variables Punteros. Preparado por Prof. Luis A. Ortiz Ortiz

Manual de referencia de C++ Parte IV Variables Punteros. Preparado por Prof. Luis A. Ortiz Ortiz Manual de referencia de C++ Parte IV Variables Punteros Preparado por Prof. Luis A. Ortiz Ortiz TABLA DE CONTENIDO Memoria de la computadora... 1 Representación de la memoria de la computadora... 1 Declaración

Más detalles

Módulo I. Tipos de datos, estructuras de datos y tipos de datos abstractos.

Módulo I. Tipos de datos, estructuras de datos y tipos de datos abstractos. Módulo I Tipos de datos, estructuras de datos y tipos de datos abstractos. Aunque los conceptos de tipo de datos (TD), estructura de datos (ED) y tipo de datos abstracto (TDA) se han visto en los cursos

Más detalles

Agenda. Lenguaje FORTRAN. Actualizacion y nivelacion de conocimientos de computación. Fortran 77. DIA 2 (15 de julio): Lenguaje FORTRAN

Agenda. Lenguaje FORTRAN. Actualizacion y nivelacion de conocimientos de computación. Fortran 77. DIA 2 (15 de julio): Lenguaje FORTRAN Agenda Actualizacion y nivelacion de conocimientos de computación orientado para futuros participantes del curso de HPC DIA 2 (15 de julio): Lenguaje FORTRAN FORTRAN 77, FORTRAN 90, FORTRAN 95 Estructuras

Más detalles

Diseño Computarizado 15023

Diseño Computarizado 15023 Diseño Computarizado 15023 PROGRAMACIÓN: FORTRAN Profesor: Claudio García Herrera Departamento de Ingeniería Mecánica Universidad de Santiago de Chile Índice 1 Introducción 2 Estructura 3 Sentencias y

Más detalles

Parte I: Elementos del lenguaje Ada

Parte I: Elementos del lenguaje Ada Parte I: Elementos del lenguaje Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas

Más detalles

MEMORIA DINÁMICA y PUNTEROS

MEMORIA DINÁMICA y PUNTEROS MEMORIA DINÁMICA y PUNTEROS Introducción Conceptos básicos Definición y declaración de punteros Creación y destrucción de variables dinámicas. Operaciones básicas con datos referenciados Operaciones básicas

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada

Más detalles

Programación I Teoría III.

Programación I Teoría III. Programación I Teoría III http://proguno.unsl.edu.ar proguno@unsl.edu.ar DATOS ESTRUCTURADOS Estructuras de Datos Hasta ahora hemos trabajado con Datos simples enteros reales Caracteres punteros Sin embargo,

Más detalles

2. Variables dinámicas

2. Variables dinámicas 2. Variables dinámicas 1. Introducción 2. Gestión de memoria dinámica 3. Punteros y variables dinámicas en lenguaje algorítmico 4. Gestión de memoria dinámica y punteros en C Bibliografía Biondi y Clavel.

Más detalles

1.2.4 Listas enlazadas

1.2.4 Listas enlazadas 1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina

Más detalles

El operador contenido ( ) permite acceder al contenido de

El operador contenido ( ) permite acceder al contenido de 3. Memoria Dinámica y Punteros Objetivos: Distinguir los conceptos de memoria estática y memoria dinámica Comprender el concepto de puntero como herramienta de programación Conocer cómo se definen y cómo

Más detalles

TEMA 8: Gestión dinámica de memoria

TEMA 8: Gestión dinámica de memoria TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras

Más detalles

EXAMENES RESUELTOS DE PROGRAMACION I

EXAMENES RESUELTOS DE PROGRAMACION I EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994, Reserva Soluciones no oficiales 1.- Determinar los valores reales válidos en Modula-2: a) 56.2F-54 y 2.2

Más detalles

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Programación Web Tema 3.2 Java Script Estructura del Lenguaje Miguel Ángel Manso Emerson Castañeda Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Contenido Variables Operadores Estructuras

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción

Más detalles

Departamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 2: MEMORIA DINÁMICA y PUNTEROS

Departamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 2: MEMORIA DINÁMICA y PUNTEROS Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 2: MEMORIA DINÁMICA y PUNTEROS 1 MEMORIA DINÁMICA y PUNTEROS Introducción Conceptos básicos Definición y declaración de punteros

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación COMENTARIOS Microsoft Visual Basic interpreta que todo lo que está a la derecha del carácter ( ) en una línea cualquiera de programa es un comentario y no ejecuta acción alguna.

Más detalles

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27 ÍNDICE Prefacio 25 Organización de la Unidad Didáctica.................... 25 Cómo utilizar el libro............................. 26 Objetivos docentes.............................. 27 1 Fundamentos de

Más detalles

Estructuras Dinámicas

Estructuras Dinámicas Departamento de Lenguajes yciencias de la Computación 4 Estructuras Dinámicas Contenido 1. Gestión dinámica de memoria. 2. El tipo puntero. 3. Operaciones con punteros. 4. Operaciones básicas sobre listas

Más detalles

Tipos de Datos Recursivos

Tipos de Datos Recursivos 1/1 Tipos de Datos Recursivos Josefina Sierra Santibáñez 15 de mayo de 2018 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones), sino

Más detalles

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Lógica: Algoritmo: Archivo: Base de datos: Bit: Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones

Más detalles

COMO SE PROGRAMA EN VISUAL FOXPRO

COMO SE PROGRAMA EN VISUAL FOXPRO LECCION N 06 COMO SE PROGRAMA EN VISUAL FOXPRO En Visual FoxPro, no hay una norma de programación a seguir como se hace por ejemplo en Delphi o C++, donde en una sección se declaran las variables globales,

Más detalles

Análisis semántico. Análisis semántico. Índice (I)

Análisis semántico. Análisis semántico. Índice (I) Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Una función es un miniprograma dentro de un programa. Las funciones contienen varias

Una función es un miniprograma dentro de un programa. Las funciones contienen varias TEMA 6. FUNCIONES. Una función es un miniprograma dentro de un programa. Las funciones contienen varias sentencias bajo un solo nombre, que un programa puede utilizar una o más veces para ejecutar dichas

Más detalles

Estructuras dinámicas lineales (ii)

Estructuras dinámicas lineales (ii) Estructuras dinámicas lineales (ii) Introducción Continúa la exposición de los distintos algoritmos existentes para manipular s simplemente enlazadas; sin el lección anterior se presentaban algoritmos

Más detalles

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Programación MODULAR: Subalgoritmos - funciones y procedimientos Programación MODULAR: Subalgoritmos - funciones y procedimientos Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. Estos problemas

Más detalles

Repaso 02: Apuntadores y manejo de memoria dinámica

Repaso 02: Apuntadores y manejo de memoria dinámica Repaso 02: Apuntadores y manejo de memoria dinámica Solicitado: Ejercicios 02: Programación con memoria dinámica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom

Más detalles

directamente indirectamente

directamente indirectamente PUNTEROS EN C PUNTEROS Permiten simular el pasaje de parámetros por referencia. Permiten crear y manipular estructuras de datos dinámicas. Su manejo es de fundamental importancia para poder programar en

Más detalles

EXAMENES RESUELTOS DE PROGRAMACION I

EXAMENES RESUELTOS DE PROGRAMACION I EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994 Soluciones no oficiales 1.- Cuál de las siguientes sentencias es incorrecta?: VAR A : ARRAY [0..3] OF ARRAY

Más detalles

Tema: Punteros.Puntero this en C#.

Tema: Punteros.Puntero this en C#. POO. Guía No.7 1 Tema: Punteros.Puntero this en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos Materiales y Equipo Computadora con el software C#. Guía Número

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL.

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL. 8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL. PROCEDIMIENTOS. CONCEPTO Un procedimiento es un programa que realiza una tarea específica. Puede recibir cero o más valores del

Más detalles

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones

Más detalles

Lenguaje de Programación: C++ Apuntadores y Alocación din

Lenguaje de Programación: C++ Apuntadores y Alocación din UG Lenguaje de Programación: C++ y Universidad de Guanajuato Octubre 2010 en memoria En C++ guardamos la misma organización de las variables en memoria: locales en M. PILA en memoria En C++ guardamos la

Más detalles

PUNTEROS O APUNTADORES C++

PUNTEROS O APUNTADORES C++ PUNTEROS O APUNTADORES C++ TRANSVERSAL DE PROGRAMACIÓN BÁSICA INGENIERÍA DE SISTEMAS En el presente documente se hace una breve explicación a la gestión dinámica de memoria en el lenguaje C++. Se incluyen

Más detalles

Índice general 7. Presentación 15

Índice general 7. Presentación 15 ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.

Más detalles

Tema: Punteros: Puntero this en C#.

Tema: Punteros: Puntero this en C#. Programación II. Guía No.11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Punteros: Puntero this en C#. Objetivos Conocer el manejo de los punteros en C#. Utilizar el puntero

Más detalles

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

1 Introducción. 1.2 Estructuras de datos y Tipos de Datos Abstractos. Estructura de Datos y Algoritmos. Tema I Introducción y conceptos fundamentales

1 Introducción. 1.2 Estructuras de datos y Tipos de Datos Abstractos. Estructura de Datos y Algoritmos. Tema I Introducción y conceptos fundamentales 1 Introducción En este capitulo se presentan los conceptos y definiciones fundamentales que acompañarán al alumno a lo largo de toda la asignatura. Es muy importante fijar estos conceptos ya que de ello

Más detalles

Notas de estructura de datos con lenguaje C. Estructuras de datos dinámicas

Notas de estructura de datos con lenguaje C. Estructuras de datos dinámicas Listas Enlazadas que está prohibida su impresión y distribución. Estructuras de datos dinámicas Contrariamente a las estructuras de datos estáticas (arreglos-listas, vectores y tablas- y estructuras) en

Más detalles

Esquemas repetitivos en Fortran 90

Esquemas repetitivos en Fortran 90 Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

Más detalles

3 - Tipos Inductivos (Recursivos)

3 - Tipos Inductivos (Recursivos) Programación 2 3 - Tipos Inductivos (Recursivos) Estructuras Dinámicas: Punteros y Listas 1 Tipos inductivos tienen, en general, cardinalidad infinita contienen valores de "tamaño arbitrario" Ejemplos:

Más detalles

Tema 6: Memoria dinámica

Tema 6: Memoria dinámica : Programación 2 Curso 2013-2014 Índice 1 2 3 El tamaño es fijo y se conoce al implementar el programa Declaración de variables int i=0; char c; float vf[3]={1.0, 2.0, 3.0}; i c vf[0] vf[1] vf[2] 0 1.0

Más detalles

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de punteros: SOLUCIONES

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de punteros: SOLUCIONES H AC LUCE FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información Ejercicios de punteros: SOLUCIONES 1. Suponga que tenemos las declaraciones: Indice = 0..9; ApuntIndice

Más detalles

Tema 6: Clases. Índice

Tema 6: Clases. Índice Tema 6: Clases Antonio J. Sierra Índice 1. Fundamentos. 2. Declaración de objetos. 3. Asignación de objetos a variables referencia. 4. Métodos. 5. Constructores. 6. this. 7. Recogida de basura. 8. Modelado

Más detalles

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades: Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades: La prueba es individual y sin material. La duración es 3 horas.

Más detalles

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1 Solución al Ejercicio de Autocomprobación 1 PREGUNTA 1 (1 punto) Señale razonadamente la veracidad o falsedad de las afirmaciones siguientes: A. La diferencia fundamental entre los lenguajes ensamblador

Más detalles

GESTIÓN DE MEMORIA DINÁMICA

GESTIÓN DE MEMORIA DINÁMICA UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación E.T.S.I. Telecomunicación GESTIÓN DE MEMORIA DINÁMICA Tema 3 Programación II Programación II 0 Tema 3: GESTIÓN DE MEMORIA DINÁMICA Tema 3: GESTIÓN

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Fundamentos de Informática

Fundamentos de Informática Fundamentos de Informática Tema 5 Estructuras de Control 1 Contenidos La estructura secuencial La estructura condicional Condicional simple Multicondicional Sentencia SELECT CASE Estructuras de control

Más detalles

Apuntadores en C/C++ INTRODUCTION TO PROGRAMMING

Apuntadores en C/C++ INTRODUCTION TO PROGRAMMING Apuntadores en C/C++ JUAN CARLOS CONDE RAMÍREZ INTRODUCTION TO PROGRAMMING Memoria de la Computadora La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden

Más detalles

GESTIÓN DE MEMORIA DINÁMICA EN C 1. Creación y destrucción de variables dinámicas

GESTIÓN DE MEMORIA DINÁMICA EN C 1. Creación y destrucción de variables dinámicas GESTIÓN DE MEMORIA DINÁMICA EN C 1. Creación y destrucción de variables dinámicas en lenguaje algorítmico Partimos de: p: puntero de tipo T; ok, lógico; En general, el MGMD dispondrá d de alguna versión

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...

Más detalles

Tipos definidos: Enumerados, subrangos y tuplas

Tipos definidos: Enumerados, subrangos y tuplas Algorítmica y Lenguajes de Programación Tipos definidos: Enumerados, subrangos y tuplas Tipos definidos. Introducción Tipos de datos predefinidos: entero (integer) real (real) lógico (logical) carácter

Más detalles

Asignación de Memoria (Allocation) Algoritmos y Estructuras de Datos I. Asignación de Dinámica de Memoria

Asignación de Memoria (Allocation) Algoritmos y Estructuras de Datos I. Asignación de Dinámica de Memoria Asignación de Memoria (Allocation) Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 14 Memoria dinámica y listas

Más detalles

Unidad 2: Estructuras de Datos Tema III. Estructuras de datos Compuestas. Pilas, Colas y Listas implementadas con punteros

Unidad 2: Estructuras de Datos Tema III. Estructuras de datos Compuestas. Pilas, Colas y Listas implementadas con punteros Unidad 2: Estructuras de Datos Tema III. Estructuras de datos Compuestas. Pilas, Colas y Listas implementadas con punteros Programación I (Plan 1999) Algoritmos y Estructuras de Datos II (Plan 2009) Mgter.

Más detalles

Clase Práctica Administración de Memoria en C. Organización de Computadoras Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur

Clase Práctica Administración de Memoria en C. Organización de Computadoras Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur Clase Práctica Administración de Memoria en C Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur Copyright Copyrigth 2018 Ing. Federico Joaquín. Las presentes transparencias constituyen una guía

Más detalles

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales ARREGLOS Introducción Primero que todo, es importante conocer el concepto de estructura de datos. Una estructura de datos es "una colección de datos organizados de un modo particular." Las estructuras

Más detalles

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ OBJETIVO En este documento se presentan las construcciones básicas de orientación a objetos del lenguaje de programación C++, y recomendaciones

Más detalles

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM UNIDAD IV Programación Funcional Porqué? 2 Introducción Porque aprender programación funcional? - Recursión - Abstracción funcional - Funciones de primer orden Estos conceptos se han incorporado en la

Más detalles

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables

Más detalles

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones

Más detalles

Capitulo V Listas Enlazadas

Capitulo V Listas Enlazadas Capitulo V Listas Enlazadas Muere lentamente, quien abandona un proyecto antes de iniciarlo, no preguntando de un asunto que desconoce o no respondiendo cuando le indagan sobre algo que sabe. Evitemos

Más detalles

Examen de Programación 2 Diciembre de 2012

Examen de Programación 2 Diciembre de 2012 Ejercicio 1 ( puntos) Examen de Programación 2 Diciembre de 2012 La Administración Nacional de Puertos (ANP) quiere sistematizar la inspección de contenedores en tránsito en el puerto de Montevideo. El

Más detalles

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados. Pseudocódigo Introducción La importancia de sistematizar procesos y crear programas de cómputo radica esencialmente en que estos se puedan utilizar como resolución de problemas similares en muchos casos,

Más detalles

Sistemas Operativos Problemas frecuentes con el lenguaje C

Sistemas Operativos Problemas frecuentes con el lenguaje C Sistemas Operativos Problemas frecuentes con el lenguaje C Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenidos Errores comunes: Generales Tiras de caracteres Entrada y salida Problemas

Más detalles

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos

Más detalles