HTTPS SSH

Pautas y técnicas de programación en C

"Pautas y técnicas de programación en C" es un libro introductorio
a técnicas intermedias
y avanzadas de programación en C, escrito por Pedro Fortuny
Ayuso
.

Contenido

Tomando como punto de partida el problema del circuito
hamiltoniano
, se
tratan las materias siguientes:

  • El uso de makefiles.
  • Llamadas al sistema y gestión de errores.
  • Estructuras, estructuras anidadas
  • Números aleatorios
  • Eliminación de la recursión
  • Reutilización de código
  • Optimización mediante cambio de algoritmos
  • Programación en paralelo con hilos POSIX
  • Introducción a comunicación entre procesos (IPC)

Código implementado

A lo largo del libro, se implementan diversas aplicaciones:

  • Un generador de grafos con un circuito hamiltoniano.
  • Un buscador de circuitos hamiltonianos en grafos. Este
    programa se reproduce de cuatro maneras diferentes, cada
    una más rápida que la anterior.
  • Una aplicación que verifica si un camino es un circuito
    hamiltoniano de un grafo o no.

Todo el código se ha probado en Linux y en OS X.

Qué se incluye

En este repositorio púbilo se incluye:

  • El libro en formato pdf listo para ser impreso y encuadernado.
    (Se ha realizado en un formato de página más pequeño que A4 para
    que sea más agradable su lectura).
  • Todo el código de las secciones finales de cada capítulo relevante.

Compilación

El archivo makefile.true continene las directrices necesarias
para generar todos los programas del libro en todas sus versiones.
En concreto:

  1. make-ham: el generador de grafos.
  2. seek-ham-rec: el buscador de circuitos hamiltonianos. Versión
    recursiva.
  3. seek-ham-unrec: el mismo buscador, versión no recursiva.
  4. seek-ham-refactor: el buscador, tras una refactorización de código.
  5. seek-ham-adj: el buscador, versión utilizando matrices de adyacencia.
  6. seek-ham-thread: el buscador en paralelo.
  7. test-ham: el verificador (si un camino en un grafo es hamiltoniano
    o no).

Así pues, para generar, por ejemplo, la versión con la matriz de adyacencia
del programa de búsqueda, puede usarse make como:

$ make -f makefile.true seek-ham-adj

y se generará el programa seek-ham-adj.

La receta clean limpia todos los ejecutables y códigos objeto creados.

Requisitos

Se requiere la librería OpenSSL para compilar
el programa
de generación de grafos. Para el resto, técnicamente no se requiere pero para
simplificar, se ha incluido en la macro LIBS de makefile.true en todas
las compilaciones, así que, si se usa make para construirlos, será necesario
que OpenSSL esté instalada.

Licencia y distribución

El libro es propiedad de Pedro Fortuny Ayuso, quien posee el copyright. El
código de este repositorio está sujeto a una licencia ISC, como se puede leer
en el archivo licence.

La redistribución del libro no está permitida sin permiso expreso del autor.
Ahora bien: está disponible gratuitamente en este sitio web, así que quizás
no sea precisa.

Precio

El libro, tal y como se presenta en este repositorio,
es (obviamente) accesible de manera directa. Ahora bien, el autor asume que
cualquier lector interesado puede contribuir con al menos 1Euro, mediante
PayPal, ingresables en la cuenta info@pfortuny.net, a nombre de
Pedro Fortuny Ayuso.

Es decir: el libro tiene un precio pero el autor no tiene medios para
garantizar el cobro.

¿Pero por qué no es Creative Commons?

No se ha publicado este material bajo una licencia Creative Commons por
dos razones.

  1. Las licencias CC son irrevocables y no sé si en el futuro necesitaré
    este material para ganarme la vida.
  2. El hecho de que tenga copyright no implica que "el autor prohiba su
    uso si no se puede pagar por él" como es evidente. Para esto no hace
    falta una licencia de ese estilo.

Errores

Es evidente que el libro contendrá errores, erratas, inconsistencias y otras
molestas inconveniencias. Agradecería que se me comunicaran con un mensaje
de correo electrónico a info@pfortuny.net.