Practica 02: Construcción de bibliotecas en CCreación de bibliotecas para C ... lenguaje...

19
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://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

Transcript of Practica 02: Construcción de bibliotecas en CCreación de bibliotecas para C ... lenguaje...

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