Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,

Slides:



Advertisements
Presentaciones similares
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Advertisements

Abstracción de Datos Arrays.
Repaso para la construcción del intérprete 2012
Clase 3: Punteros y Referencias
Programación I Teoría III
Programación I Teoría IV
Direcciones, Arreglos y Argumentos de Funciones
Tipos de Datos Básicos y Estructurados
Punteros Universidad Nacional Mayor de San Marcos
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Ismael Camarero1. 2 ¿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.
Implementación de Listas
Estructuras de Datos Punteros y algo más.
Unidad 3 Punteros.
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.
Vectores en java.

Material de apoyo Unidad 2 Estructura de datos
Tema 6: Clases Antonio J. Sierra.
PUNTEROS Ó (apuntadores) EN LENGUAJE C
Diseño de algoritmos “Punteros”
Tema 9 Estructuras.
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
Introducción a los punteros
Capítulo 5. Punteros y Cadenas de Caracteres
UNIDAD V Arreglos y Cadenas
Informática Ingeniería en Electrónica y Automática Industrial
Índice. Revisando conceptos acerca de la memoria.
Programación III Clase 08 Arreglos.
Estructuras.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 4 - Arrays Índice del Capítulo 4.1Introducción 4.2Arrays 4.3Declaración de Arrays 4.4Ejemplos.
Clase 10: Estructuras de datos y arreglos.
Unidad VI Registros (estructuras, uniones y enumeraciones)
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Tipo de Datos Básicos.
PUNTEROS Ing Anghello Quintero.
Informática Ingeniería en Electrónica y Automática Industrial
Introducción a los punteros Prof. Domingo Hernández.
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
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.
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
PUNTEROS Y REFERENCIAS
APUNTADORES.
CAPITULO V ARREGLOS Y CADENAS.
1 Definición y Conversión de datos Agustín J. González ELO-329.
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.
Matrices Prof. Flor Narciso Departamento de Computación
Punteros Recomendado: 1. Nivelación Funciones
Términos algoritmo diseñar algoritmo implementar algoritmo
Programación III Clase #03 Operadores. Expresiones Es cualquier cosa que retorne un valor. En C++ CASI todo son expresiones. Ejemplo: –5 –3 + 2 Las expresiones.
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
PUNTEROS EN EL LENGUAJE C
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
TIPOS DE DATOS PARCIAL III Punteros. Un puntero es una variable que hace referencia a una dirección de memoria Sintaxis: Tipo_Dato *nombre_variable_puntero;
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
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.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Computación II Capitulo VII Punteros

Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros, arreglos y cadenas. –Comprender la utilización de punteros a funciones. –Ser capaces de declarar y utilizar arreglos de cadenas.

Presentación de la unidad Contenidos: –Concepto de punteros; declaración e inicialización. –Operadores de punteros. –Relaciones entre punteros y arreglos. –Aritmética de punteros. –Arreglos de punteros. –Punteros a funciones. –Punteros a estructuras.

Concepto de puntero; declaración e inicialización Los punteros son variables que contienen direcciones de memoria como sus valores. Sintaxis: * ; El tipo de dato de una variable de tipo puntero se corresponde con el tipo de dato de la variable a la que apunta. Los punteros pueden ser inicializados cuando son declarados o en un enunciado de asignación. Pueden ser inicializados a 0, NULL o a una dirección; un puntero con un valor NULL apunta a nada.

Inicialización –Estática: Asignar una dirección de memoria a un puntero utilizando el operador de dirección (&). Ejemplo: int x = 0; int *xPtr = &x; –Dinámica: Asignación dinámica de memoria. Se utiliza el operador new(), de reserva de memoria; y el operador delete(), para la liberación de la memoria reservada. Concepto de puntero; declaración e inicialización xPtrx 0

Operadores de punteros &: operador de dirección; regresa la dirección de su operando. *: operador de indirección; regresa el valor del objeto hacia el cual se apunta. Ejemplo: int x = 7; int *xPtr = &x; cout<<"x="<<x<<endl; cout<<"xPtr="<<xPtr<<endl; cout<<"*xPtr="<<*xPtr<<endl;

Representación en memoria: Operadores de punteros xPtr x xPtr 7 x

Un puntero puede apuntar a otra variable de tipo puntero. Ejemplo: int x = 7; int *xPtr = &x; int **xPtr1 = *xPtr; cout<<"x="<<x<<endl; cout<<"xPtr="<<xPtr<<endl; cout<<"*xPtr="<<*xPtr<<endl; cout<<"**xPtr="<<**xPtr<<endl; Este concepto se utiliza para problemas largos y complejos. Operadores de punteros

Relaciones entre punteros y arreglos Los punteros y los arreglos están relacionados y pueden ser utilizados “casi” en forma indistinta. El nombre de un arreglo (sin subíndice) puede ser considerado un puntero constante. int y[4]={0,5,7,15}; int *yPtr; yPtr = y  yPtr =&y[0] El elemento del arreglo y[3] puede ser referenciado de las siguientes formas: –Notación puntero/desplazamiento: y[3] == *(yPtr + 3) ; // 3 es el desplazamiento del puntero y[3] == *(y + 3) ; –Notación puntero /subíndice: y[3] == yPtr[1];

Aritmética de punteros Los punteros son operandos validos en expresiones aritméticas, en expresiones de asignación y de comparación. Operaciones validas: –Incremento (++) –Decremento(--) –Añadir un entero a un puntero (+ ó +=) –Restar un entero a un puntero (+ ó +=) –Un puntero puede ser sustraído o restado a otro.

Aritmética de punteros Ejemplo para una maquina con enteros de 4 bytes. int v[4]; int *vPtr = &v[0]; Posiciones en memoria: v[0]v[1]v[2]v[3] vPtr

Cuando se añade o se resta un entero al puntero, el puntero se incrementa o decrementa el valor de dicho entero multiplicado por el tamaño del objeto al cual apunta. vPtr+=2 (3000+2*4) = 3008 Las variables de tipo puntero pueden ser restadas la una a la otra: int V[4]; int *vPtr = v; int *vPtr1 = &v[2]; x = vPtr1 – vPtr; Aritmética de punteros X es el numero de elementos del arreglo v, desde vPtr hasta vPtr1; en este caso 2;

Arreglo de punteros Los arreglos pueden contener punteros, por ejemplo, cadena de caracteres. Cada entrada en el arreglo es una cadena; en C++ una cadena es de hecho un puntero al primer elemento. char *suit[4]={“Corazones”, “Diamantes”,”Espadas”,”Treboles”}; ‘c’‘o’‘r’‘a’‘z’‘o’‘n’‘e’‘s’‘\0’ ‘d’‘i’‘a’‘m’‘a’‘n’‘t’‘e’‘s’‘\0’ ‘e’‘s’‘p’‘a’‘d’‘a’‘s’‘\0’ ‘t’‘r’‘e’‘b’‘o’‘l’‘e’‘s’‘\0’ suit[0] suit[1] suit[2] suit[3]

Punteros a funciones Un puntero a función contiene la dirección de la función en memoria. Sintaxis: tipo_de_retorno (*puntero_funcion) ( ) Los punteros a funciones pueden ser pasados a funciones, regresados a funciones, almacenados en arreglos y asignados a otros punteros. Ejemplo: La función ordenamientoBurbuja ha sido modificada para que reciba un puntero a la función ascendente o descendente como argumento. El programa solicita al usuario que elija como va ser ordenado el arreglo. void swap(int *, int *); int ascendente(const int, const int); int descendente(const int, const int); void ordenamientoBurbuja(int *, int, int (*)(int, int));

Puntero a estructuras Se puede declarar un puntero a una estructura tal y como se declara un puntero a otro objeto. Cuando se referencia una estructura utilizando un puntero se utiliza el operador flecha ->, para acceder a un miembro de ella. Ejemplo: struct fecha{ int dia, mes, anyo; }; struct datos{ char *nombre; struct fecha *fec; } ; struct datos dato; dato.nombre =“Carolina”; dato.fec->dia = 2; dato.fec->mes=10; dato.fec->anyo = 2008;