practica 02: construcción de bibliotecas en ccreación de bibliotecas para c ... lenguaje...
TRANSCRIPT
Estructuras de datos (Prof. Edgardo A. Franco)
1
Practica 02: Construcción de bibliotecas en C
M. en C. Edgardo Adrián Franco Martínez http://[email protected]
@edfrancom edgardoadrianfrancom
Contenido• Concepto de Librería en Programación
• Biblioteca estándar de C
• Creación de bibliotecas para C
• Generación de código ejecutable
• Requerimientos de la Practica 02
• Observaciones
• Formato de la documentación de la practica
• Envió de practica 02 en la Web
2
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Concepto de Librería en Programación
• Es un conjunto de subprogramas utilizados paradesarrollar software.
• Las bibliotecas contienen código y datos, queproporcionan servicios a programas independientes,es decir, pasan a formar parte de estos. Esto permiteque el código y los datos se compartan y puedanmodificarse de forma modular.
3
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Algunos programas ejecutables pueden ser a la vezprogramas independientes y bibliotecas, pero lamayoría de estas no son ejecutables.
• Ejecutables y bibliotecas hacen referencias (enlaces)entre sí a través de un proceso conocido comoenlace, que por lo general es realizado por unsoftware denominado enlazador.
• Las bibliotecas o librerías, pueden ser clasificadas según el tipo de enlace que se realice para ser parte de un programa final en:• Bibliotecas estáticas
• Bibliotecas dinámicas4
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Biblioteca estándar de C
• La biblioteca estándar de C es una recopilación dearchivos cabecera y bibliotecas con funciones,estandarizadas por un comité de la OrganizaciónInternacional para la Estandarización (ISO), queimplementan operaciones comunes, tales como lasde entrada y salida o el manejo de cadenas. Adiferencia de otros lenguajes como COBOL, Fortran,o PL/1, C no incluye palabras clave para estas tareas,por lo que prácticamente todo programaimplementado en C se basa en la biblioteca estándarpara funcionar
5
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Creación de bibliotecas para C
• Es posible generar biblioteca para C generando nuestrospropios archivos cabecera y bibliotecas con funciones.
Archivos cabecera
• Es un archivo, que el compilador incluye al procesaralgún código fuente, este contiene, normalmente, unadeclaración directa funciones, variables, u otrosidentificadores. Aquellos programadores que deseandeclarar identificadores estándares en más de un archivofuente pueden colocar esos identificadores en un únicoheader file, que se incluirá cuando el código quecontiene sea requerido por otros archivos.
6
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Bibliotecas con funciones
• Son los códigos fuentes que definen las funciones delos archivos de cabecera y son independientes. Estospueden ser compilados por separados y tenersecomo el código fuente original o códigos objetoscapaces de ser enlazados por otros códigos fuentesque hagan uso de estas definiciones y programas.
7
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
CompiladorCódigo objeto
EnlazadorPrograma ejecutable
Biblioteca / Otros códigos objeto
Archivos de Cabecera / Cabeceras
independientes
Código fuente
Generación de código ejecutable
• Como se ve en la etapa de compilación de unlenguaje compilado, se obtiene un código objeto, elcuál contiene sólo la traducción del código fuente.Esto no es suficiente para ejecutar realmente elprograma. Es necesario incluir los archivos debiblioteca o módulos compilados de maneraindependiente. http://www.geeksforgeeks.org/compiling-a-c-program-behind-the-scenes/
Compilador Código objeto EnlazadorPrograma ejecutable
Biblioteca / Otros códigos objeto
Archivos de Cabecera / Cabeceras
independientes
Código fuente
8
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Generando una biblioteca de C• Generar los siguientes archivos, con los contenidos que se
muestran y guardarlos con los nombres dados.
9
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
#include <stdio.h>
#include "mi_libreria.h"
int main (void)
{
int n,res;
printf("\nIntroduce un número entero")
scanf("%d",n);
res=mi_funcion01(n);
printf("\nEl resultado es: %d",res)
return 0;
}
programa.c
10
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
def_mi_libreria.c
#include "mi_libreria.h"
int mi_funcion01(int numero)
{
return numero*CONSTANTE;
}
#define CONSTANTE 100
int mi_funcion01(int numero);
mi_libreria.h
• Generar el código objeto de la librería
gcc def_mi_libreria.c –c
• Compilar el programa
gcc programa.c def_mi_libreria.o –o programa
Requerimientos de la Practica 02• Realizar un conjunto de 8 bibliotecas para C, las
cuales incluyan la conversión de 8 tipos de unidadesde medida.
1. Unidades de longitud
2. Unidades de superficie
3. Unidades de volumen
4. Unidades de masa
5. Unidades de densidad
6. Unidades de presión
7. Unidades de energía
8. Unidades de potencia 11
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Unidades de longitud
• Unidades de superficie
12
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Unidades de volumen
• Unidades de masa
13
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Unidades de densidad
• Unidades de presión
14
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Unidades de energía
• Unidades de potencia
15
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Se deberán de construir las 8 bibliotecas que se pidencon todas las funciones necesarias para poder convertirde cualquier unidad a cualquier unidad del mismo tipo.
• Las funciones deberán ser reutilizables y fáciles de utilizarpor cualquier persona, por lo que cada una de ellas sedocumentará en el .h y .c.
• Para demostrar el funcionamiento de cada librería crearun programa demo que haga uso de esta.
• No usar conceptos no vistos en clase (estructuras,apuntadores, arreglos, etc.).
16
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Observaciones
Formato de la documentación de la practica
• Portada
• Manual técnico de cada librería.
• Manual de uso de las funciones de la librería, revisar comomuestra el manual de Linux la documentación de lasfunciones de C.
17
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Envió de practica 02 en la Web
• En un solo archivo (ZIP, RAR, TAR, JAR oGZIP)
• 8 Carpetas que incluyen
• Códigos fuente (.C y .H) de la biblioteca, archivoobjeto de la librería y programa demo quemuestra el uso de algunas de sus funciones.
• Manual técnico del uso de la librería18
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Fechasde entrega1. Mostrar el funcionamiento de la practica en la sesión de
laboratorio del miércoles 29 de Mayo de 2019.
2. Enviar vía Web en un archivo comprimido (ZIP, RAR oTAR), reporte y códigos de C antes del día Sábado 01 dejunio de 2019 (23:59:59 hora limite).
Grupo Contraseña1CM12 algoritmia1cm12
19
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Pra
ctic
a 0
2:
Co
nst
rucc
ión
de
bib
liote
cas
en C
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez