¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrollo informático
  3. Librerías de funciones
Extrait - Desarrollo informático Aprenda a diseñar antes de programar
Extractos del libro
Desarrollo informático Aprenda a diseñar antes de programar Volver a la página de compra del libro

Librerías de funciones

Objetivos del capítulo

Dividir una aplicación en funciones reutilizables.

Llamar a estas funciones en una aplicación.

Presentación

Este capítulo muestra, a partir del ejemplo del trabajo práctico «Estructuras de datos» del capítulo anterior, cómo dividir una aplicación.

Se trata de:

  • agrupar las funciones en un archivo separado;

  • agrupar los prototipos y las definiciones de datos (typedef) en otro archivo;

  • introducir el programa principal en un tercer archivo.

De esta manera, las funciones se pueden utilizar en cualquier aplicación que lo necesite. 

Creación de una librería de funciones

1. División de la aplicación "Estructura de datos"

La aplicación «Estructura de datos» del capítulo anterior, tiene tres partes:

  • Las declaraciones de la estructura (typedef) y de los prototipos de las funciones.

  • La función main() para realizar las comprobaciones.

  • Las funciones de gestión de las fracciones.

typedef y prototipos

typedef struct  
{  
   int Num;  
   int Den;  
} FRACCION;  
  
void introduceValor(FRACCION*);  
void visualizar(FRACCION);  
FRACCION suma(FRACCION, FRACCION);  
int mcd(int, int); 

Programa principal

int main()  
{  
   FRACCION f1, f2, f3;  
   . . .  
   return 0;  
} 

Funciones

void introduceValor(FRACCION* pf)  
{  
   . . .  
}  
  
FRACCION suma(FRACCION f1, FRACCION f2)  
{  
   . . .  
}  
  
int mcd(int n1, int n2)  
{  
   . . .  
}  
  
void visualizar(FRACCION f)  
{  
   . . .  
} 

2. Creación de un nuevo proyecto

Cada uno de los fragmentos de la división se sitúa...

Utilización de una librería de funciones

1. Creación de directorios para la librería de gestión de las fracciones

La siguiente copia de pantalla representa la arborescencia de un directorio llamado «C».

Contiene un subdirectorio herramientas, que se divide en dos subdirectorios: binarios y encabezados:

images/107-3.png

El directorio encabezados está destinado a recibir los «headers» de las funciones: aquí, el archivo fracciones.h.

images/107-4.png

El directorio binarios está destinado a recibir la librería compilada: aquí, el resultado de la compilación de fracciones.c. El archivo generado por el compilador se llama fracciones.o

images/107-5.png

Los archivos «fracciones.o» y «fracciones.h» se han vuelvo a copiar (copiar/pegar) desde el proyecto «librFracciones».

2. Utilización de la librería de gestión de las fracciones

a. Creación de un nuevo proyecto: librFraccionesReference

images/107-6.png

Este proyecto solo contiene un archivo main.c, en el que solo se «copia-pega» el main.c del proyecto original librFracciones:

. . . 
#include "fracciones.h"  
  
int main()  
{  
   . . .     
} 

b. Compilación del proyecto librFraccionesReference

Como tal, la compilación produce un error porque el compilador no puede encontrar fracciones.h en el proyecto librFraccionesReference....

Trabajo práctico: librería de funciones - cadenas

1. Objetivo

Este ejercicio es una aplicación directa del curso. Se trata de organizar las funciones en forma de una librería para poder reutilizarla en otras aplicaciones. No hay desarrollo de funciones.

2. Tema

  • Reagrupar las funciones de gestión de cadenas (Trabajo práctico «Funciones y cadenas» del capítulo Las funciones) en una librería.

  • Escribir un programa de prueba.

3. Librería de funciones - cadenas: proposición de corrección

a. Proyecto librlcadenas

images/107-11.png

b. Archivo cadenas.h

Es la agrupación de los prototipos de los cinco ejercicios:

int cuentaLetras(char* fila, char letra);  
void eliminarLetras(char* fila, char letra);  
char* inverse(char* fila);  
int pcdc(char* cadena, int* pc, int *dc);  
void situaSubCadena(char* cadena, char* sCadena, int pos, char cuadrado); 

c. Archivo cadenas.c

Es copiar de nuevo las cinco funciones. Hay que añadir el include del header:

. . .  
  
#include "cadenas.h"  
  
int cuentaLetras(char* fila, char letra)  
{  
   . . .  
}  
void eliminarLetras(char* fila, char letra)  
{  
   . . .  
}  
char* inverse(char* fila)  
{  
   . . .  
}  
int pcdc(char* cadena, int* pc, int *dc)  
{  
   . . .  ...