Publi

  • Número variable de argumentos en una función de C

    photo-1416339212457-ef9ffadc2903_rSi habéis programado en C, seguramente la primera función que aprendisteis a utilizar era printf() ; y en todo el tiempo que pasasteis estudiando C no encontrasteis una función similar. Y es que esta función puede tener un número indeterminado de parámetros y es capaz de analizarlos todos.

    Y es que quitando printf(), scanf() y derivadas de estas, la necesidad de una función con múltiples parámetros casi no se nos presenta.… Leer artículo completo

  • Callbacks, retrollamadas o delegados o cómo crear código más flexible en C

    Uno de los grandes objetivos de la programación es la de evitar repetirse. Ok, depende del contexto en el que estemos trabajando. Pero en general, querremos escribir poco cuando trabajamos en un proyecto (y así terminamos antes) y de paso que lo que escribamos para un programa nos sirva para otro (reaprovechamiento del código).

    Un callback nos permite llamar a una función u otra dependiendo de la ocasión. Imaginemos dos funciones y la función principal (la sintaxis utilizada nos es correcta, pero mi objetivo es que en este punto se vea claramente)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void funcion_a()
    {
      printf("Has llamado a la función A");
    }  

    void funcion_x(funcion ayudante)
    {
      printf("Aquí procesamos información");
      ayudante();
      printf("Aquí seguimos procesando información");
    }

    int main()
    {
      funcion_x(funcion_a);
    }

    Lo que hcemos es llamar a función_x() y, como parámetro, le decimos que llame a funcion_a(), lo que conseguimos es que cuando funcion_x() esté ejecutándose, necesitará ayuda en algún momento de otra función, y desde main() decimos que esa función sea funcion_a().… Leer artículo completo

  • DWGO – Nueva versión con bugs corregidos

    Dwgo es un programa que hice hace un par de años para mostrar la temperatura en varios lugares. Concretamente es una dockapp (sé que están algo anticuados ya) compatible con WindowMaker, Fluxbox, Openbox, Blackbox y algunos gestores de ventanas más. Aunque con proyectos como xdock podemos utilizar este tipo de programas en cualquier otro gestor que no sea compatible (como KDE, Gnome y estos más grandes).

    dwgoSe trata de una versión de corrección de bugs : como un problema con MySock y con la gestión de errores; así como un problema a compilar en algunos sistemas.… Leer artículo completo

  • Cronometrando en C

    cronometro
    Puede que queramos hacer una comparativa de cuánto tarda nuestro código en ejecutarse, o que tengamos varios algoritmos y queramos saber cuál es el más rápido. O que estemos haciendo un programa que mida el tiempo de reacción de un usuario en una cierta tarea. Aquí vemos ejemplos con diferentes precisiones.

    Minutos

    Este método viene bien para ver el tiempo transcurrido en un proceso que puede durar varios minutos. Si algo tarda 20 minutos, suele darnos igual segundo arriba, segundo abajo.… Leer artículo completo

  • Separar palabras de una cadena de caracteres en un array [ C ]

    Si conocéis PHP, habréis visto la función explode(). Tiene una utilidad curiosa, separa cadenas de caracteres en elementos de un array. Es como hacer un corte a la cadena cada vez que encontremos un carácter delimitador. Por ejemplo:

    «Bienvenido al blog Poesía Binaria», si usamos como delimitador » » (un espacio), los elementos del array quedarían así:

    [0] = «Bienvenido»
    [1] = «al»
    [2] =»blog»
    [3] =»Poesía»
    [4] = «Binaria»

    Pero en C, no encontramos ninguna función que haga esto, tenemos que currar un poco; aunque tenemos una función de string.h que hace algo que se parece en cierto modo: strtok(), esta función, va a separar una cadena en fragmentos modificando la propia cadena, es decir, introduciremos caracteres terminadores al final de cada palabra.… Leer artículo completo

  • Curioso e interesante IV: El miedo a emprender, un profesor curioso, redimensionado de imágenes, módulos del kernel

    Hace casi 4 meses que no publico una recopilación de links interesantes, y creo que es constructivo compartir con los demás mis descubrimientos de blogs y webs que me han llamado la atención; e intentaré hacerlo más a menudo:

    El miedo a emprender

    Es el blog de un amigo, y ha sido retomado con fuerza y artículos interesantes. Aquí os dejo los links de tres de sus últimos artículos:

    El miedo a Emprender (I): El origen (post-1)

    El miedo a emprender (II): Consejos para gestionalo (post-2)

    El miedo a emprender (III): Herramientas para enfrentarlo (post-3)

    Ver para creer

    El profesor que a todos nos hubiera encantado tener: Es interesante ver cómo se curra las clases este profesor de matemáticas, y el tiempo que habrá echado para montarlo todo.… Leer artículo completo

  • Creando un navegador web basado en gtkwebkit y gtkmm [Actualizado: 15/11/2010]

    webkitAhora, vamos a ir un poco más allá, aunque los ejemplos están hechos por mí, en parte me he basado un poco en la documentación de gtkmm (recomendable, llena de ejemplos e información interesante de cada widget), aunque ahora voy a utilizar algo de investigación propia.

    El método a seguir será parecido a veces anteriores, un archivo principal, y una clase (con archivos cpp y h). Al compilar el proyecto, ha ocupado entre 45Kb y 60Kb, por lo que para ser un navegador no ocupa demasiado.… Leer artículo completo

  • Un método para gobernarlos a todos. Identificando quién me llama. [ gtkmm ]

    culpablesUna de las características que primero quise probar con Gtk era la posibilidad de crear varios botones, que en su signal_clicked llamaran todos al mismo método, y sea éste el que identifique de dónde viene la llamada. Por ejemplo, en Delphi, siempre que se genera un evento onClick se envía la información del Sender al evento para este mismo propósito.

    En el siguiente ejemplo, crearemos un objeto de la clase Sender (que será nuestra ventana principal)

    [ sendermain.cpp ]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <gtkmm.h>
    #include "sender.h"

    int main(int argc, char *argv[])
    {
      Main entorno (argc, argv);

      // Creamos la ventana
      Sender swin;

      // Ejecutamos
      entorno.
    Leer artículo completo
  • Programar en C++ puede llegar a ser frustrante

    cuchilloSiempre se dice que una de las reglas de la programación es «escribir poco», tenemos que aunque en ciertos lenguajes, tenemos que escribir dos veces las cosas. Por ejemplo, para un sencillo hola mundo con clases en C++ (se puede hacer todo en el mismo archivo, pero queremos el código bien organizado):
    [ hwclass.h ]

    1
    2
    3
    4
    5
    6
    7
    8
    class HolaMundo
    {
     public:
      HolaMundo();
      ~HolaMundo();

      void coutVersion();
    };

    [ hwclass.cpp ]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <iostream>
    #include "hwclass.h"

    using namespace std;

    HolaMundo::HolaMundo()
    {
      cout<<"Hola Mundo!!"<<endl;
    }

    HolaMundo::~HolaMundo()
    {
      cout<<"Adiós Mundo!!"<<endl;
    }

    void HolaMundo::coutVersion()
    {
      cout<<"HolaMundo Versión 1.0"<<endl;
    }

    [ main.cpp ]

    1
    2
    3
    4
    5
    6
    7
    #include "hwclass.h"

    int main()
    {
      HolaMundo hm;
      hm.
    Leer artículo completo
  • 25 años de C++ . Entrevista a Bjarne Stroustrup

    Hace dos días, el 14 de Octubre, se cumplieron 25 años de la publicación del primer manual de referencia de C++.

    En wired.com podemos leer una interesante entrevista a Bjarne Stroustrup.

    Lo ví ayer en BarrapuntoLeer artículo completo