viernes, 26 de agosto de 2016

Estructuras

Del tema Estructuras falta definir lo siguiente:
Typedef 
La palabra reservada typedef proporciona un mecanismo para la creación de sinónimos (o alias) para tipos de datos anteriormente definidos. Por ejemplo: typedef struct ejemplo Ejemplo; define Ejemplo como un sinónimo de ejemplo. Una forma alternativa de definir una estructura es: 
typedef struct { char c; int i;} 
Ejemplo; Podemos ahora utilizar Ejemplo para declarar variables del tipo struct, por ejemplo Ejemplo a[10]; typedef se utiliza a menudo para crear seudónimos para los tipos de datos básicos. Si tenemos por ejemplo un programa que requiere enteros de 4 bytes podría usar el tipo int en un programa y el tipo long en otro. Para garantizar portabilidad podemos utilizar typedef para crear un alias de los enteros de 4 bytes en ambos sistemas. 

Ejemplo de estructura de la cual se guiaran para realizar sus 2  prácticas de  estructura
#include <iostream>
using namespace std;

int main()
{
    struct
    {
        string nombre;
        char  inicial;
        int   edad;
        float nota;
    } persona;

    persona.nombre = "Ana";
    persona.inicial = 'A';
    persona.edad = 22;
    persona.nota = 10;
    cout << "La edad es " << persona.edad;

    return 0;
}

La utilidad de los punteros a función

La utilidad de los punteros a funciones se manifiesta sobre todo cuando se personalizan ciertas funciones de biblioteca. Podemos por ejemplo, diseñar una función de biblioteca que admita como parámetro una función, que debe crear el usuario (en este caso otro programador), para que la función de biblioteca complete su funcionamiento.
Este es el caso de la función qsort, declarada en cstdlib. Si nos fijamos en su prototipo:
void qsort(void *base, size_t nmemb, size_t tamanyo,
   int (*comparar)(const void *, const void *));
Vemos que el cuarto parámetro es un puntero a una función comparar que devuelve un int y admite dos parámetros de tipo puntero genérico.
Esto permite a la biblioteca cstdib definir una función para ordenar arrays independientemente de su tipo, ya que para comparar elementos del array se usa una función definida por el usuario, y qsort puede invocarla después.

Ejemplo de puntero a función

#include <iostream>
void printMensaje (float dato);
void printNumero (float dato);
void (*funcPuntero)(float);

main()
{
  float pi = 3.14159;
  printMensaje(pi);
  funcPuntero = printMensaje;
  funcPuntero (pi);
  funcPuntero = printNumero;
  funcPuntero (pi);
  printNumero(pi);
}

void printMensaje(float dato)
{
  cout <<" Esta es la funcion printMensaje " <<'\n';
}

void printNumero(float dato)
{
  cout <<" Este es el dato: " << dato << '\n';
}
Desarrolle una practica de punteros a función










No hay comentarios:

Publicar un comentario