Republica Bolivariana de Venezuel Programacion Resumen

Embed Size (px)

Citation preview

  • 8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen

    1/4

  • 8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen

    2/4

    Resumen

    Los punteros son de amplia utilizacin enprogramacin y casi todos los lenguajes

    permiten la manipulacin de los mismos. La razn de ser principal de los punteros

    reside en manejar datos alojados en la zona de memoria dinmica o heap (aunque

    tambin se pueden manipular objetos en la zona esttica), bien sean datos elementales,

    estructuras (structen C) u objetos pertenecientes a una clase (en lenguajes Orientados a

    Objetos). Gracias a esta propiedad, los punteros permiten modelar un grafo, en donde

    los elementos de ste son los datos residentes en memoria y las relaciones entre loselementos son los propios apuntadores. Sin embargo, los punteros son un gran dolor de

    cabeza para los programadores novatos y para cualquier programador que deba depurar

    una aplicacin.

    En nuevos lenguajes de alto nivel, los punteros se han tratado de abstraer. De tal forma

    que en el lenguaje C# slo pueden ser usados en zonas de cdigo delimitadas como

    "inseguras", o llegando a su total desaparicin en lenguajes como Java o Eiffel.

    Un puntero o apuntador es una variableque referencia una regin de memoria; en otras

    palabras es una variable cuyo valor es una direccin de memoria. Si se tiene una

    variable ' p ' de tipo puntero que contiene una direccin de memoria en la que se

    encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '.

    Trabajar con punteros implica la no manipulacin de las variablesen s, sino manejar

    direcciones de memoria en la cuales residen los datos.

    El ejemplo:

    Que sigue es propio del lenguaje C/C++ y no es de aplicacin en otros lenguajes de

    programacin:

    struct Elemento // Ejemplo de un nodo de lista doble enlazada

    {

    int dato;

    http://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Heaphttp://es.wikipedia.org/wiki/Grafohttp://es.wikipedia.org/wiki/C_Sharphttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Javahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffelhttp://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Memoria_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Direcci%C3%B3n_de_memoriahttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Heaphttp://es.wikipedia.org/wiki/Grafohttp://es.wikipedia.org/wiki/C_Sharphttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Javahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffelhttp://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Memoria_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Direcci%C3%B3n_de_memoriahttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Programaci%C3%B3n
  • 8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen

    3/4

    struct Elemento *siguiente; // Para la declaracin de un puntero se usa '*'

    struct Elemento *anterior;

    };

    Para acceder a los atributos como punteros de una estructura que va a ser tratada como

    tal, se debe desreferenciar el puntero y acceder a sus miembros como se hara con una

    variable normal, o usar directamente el operador: ->. De tal modo que:

    Elemento *elem;

    Elemento sig1 = (*elem).siguiente;

    Elemento sig2 = elem->siguiente;

    /* Se cumple que: sig1==sig2 */

    Otro ejemplo en C++

    void swap(int *x, int *y)

    {

    int temp;

    temp = *x; // copia el valor apuntado por x a temp

    *x = *y; // copia el valor apuntado por y en la ubicacin del puntero x

    *y = temp; // copia el valor de temp en la ubicacin apuntada por y

    }

    Ejemplo en C#

    //Suma de dos nmeros enteros

    private unsafe int Suma(int* a, int* b)

    {

    return *a + *b;

    }

    // Su uso (El mtodo llamador tambin debe tener la palabra clave 'unsafe'):

    // int x, y;

    // int *ptr1 = &x;

    // int *ptr2 = &y;

    // Suma(ptr1, ptr2);

    http://es.wikipedia.org/wiki/C%2B%2Bhttp://es.wikipedia.org/wiki/C_Sharphttp://es.wikipedia.org/wiki/C%2B%2Bhttp://es.wikipedia.org/wiki/C_Sharp
  • 8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen

    4/4