Está en la página 1de 11

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Libreras o Bibliotecas para C++


Junto con los compiladores de C y C++, se incluyen ciertos archivos llamados bibliotecas mas comnmente libreras. Las bibliotecas contienen el cdigo objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar nmeros, realizar funciones matemticas, etc. Las bibliotecas estn clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemticas, de manejo de memoria, de manejo de textos y como imaginars existen muchsimas libreras disponibles y todas con una funcin especifica. Nota: Existe una discusin permanente sobre el nombre genrico de estos archivos. Una gran parte de personas consideran que el nombre adecuado es archivos de biblioteca, y estan en lo correcto. Sin embargo, la mayora llamamos a estos archivos libreras, y tambin me incluyo entre estos. El error proviene del nombre en ingls, que es archivos library. Este trmino se traduce como biblioteca, y no como librera, que es la palabra en espaol ms parecida fonticamente. Sin embargo esta discusin es poco importante, desde nuestro punto de vista, ya que nos entendemos igualmente con las dos palabras. Hay un conjunto de bibliotecas (o libreras) muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las libreras (o bibliotecas) ANSI o estndar. Pero tambin las hay no estndar, y dentro de estas las hay pblicas y comerciales. En esta seccin slo usaremos algunas bibliotecas (o libreras) ANSI. Nota 2:S que esto pinta aburrido, pero es realmente necesario, para que comprendas todo al momento de ver un cdigo Ahora veamos algunas libreras y como es su sintaxis.

Qu son exactamente las libreras?


En C++, se conoce como libreras (o bibliotecas) a cierto tipo de archivos que podemos importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras ms. Al poder incluir estas libreras con definiciones de diferentes funcionalidades podremos ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado, debamos entonces crear una funcin que lo haga (algo realmente

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

complejo), al poder contar con las libreras en C++, podremos hacer uso de una gran variedad de funciones que nos facilitaran la vida y aumentarn la modularidad de nuestros cdigos. Las libreras no son nicamente archivos externos creados por otros, tambin es posible crear nuestras propias libreras y utilizarlas en nuestros programas. Las libreras pueden tener varias extensiones diferentes, las ms comunes son: .lib, .bpl, .a, .dll, .h y algunas ms ya no tan comunes. En conclusin, las librearas son archivos (no siempre externos) que nos permiten llevar a cabo diferentes tareas sin necesidad de preocuparnos por cmo se hacen sino simplemente entender cmo usarlas. Las librearas en C++ permiten hacer nuestros programas ms modulares y reutilizables, facilitando adems crear programas con funcionalidades bastante complejas en unas pocas lneas de cdigo.

Sintaxis para declarar Libreras en C++


La declaracin de libreras, tanto en C como en C++, se debe hacer al principio de todo nuestro cdigo, antes de la declaracin de cualquier funcin o lnea de cdigo, debemos indicarle al compilador que libreras usar, para el saber que trminos estaran correctos en la escritura de nuestro cdigo y cules no. La sintaxis es la siguiente: #include <nombre de la librera> o alternativamente #include "nombre de la librera". Cualquiera de las 2 formas es vlida en C++ (no estoy seguro si en C sea vlido), ten en cuenta que siempre el nombre de la librera debe ir entre " y " o entre < y >. En tu cdigo puedes declarar todas las libreras que quieras, pero en realidad no tienen sentido, declarar una librera que no vas a usar en tu programas, sin embargo no existe lmite para esto.

Algunas Libreras Estandar de C++


Librera fstream: Flujos hacia/desde ficheros. Permite la manipulacin de archivos desde el programar, tanto leer como escribir en ellos. Librera iosfwd: Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estndar. Por ejemplo ostream. Librera iostream: Parte del a STL que contiene los algoritmos estndar, es quiz la ms usada e importante (aunque no indispensable). Librera list: Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Librera math: Contiene los prototipos de las funciones y otras definiciones para el uso y manipulacin de funciones matemticas. Librera memory: Utilidades relativas a la gestin de memoria, incluyendo asignadores y punteros inteligentes(auto_ptr). Librera new: Manejo de memoria dinmica Librera numeric: Parte de la librera numrica de la STL relativa a operaciones numricas. Librera ostream: Algoritmos estndar para los flujos de salida. Librera queue: Parte de la STL relativa a contenedores tipo queue (colas de objetos). Librera stdio: Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida. Librera stdlib: Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general. Librera string: Parte de la STL relativa a contenedores tipo string; una generalizacin de las cadenas alfanumricas para albergar cadenas de objetos. Muy til para el fcil uso de las cadenas de caracteres, pues elimina muchas d elas dificultades que generan los char Librera typeinfo: Mecanismo de identificacin de tipos en tiempo de ejecucin Librera vector: Parte de la STL relativa a los contenedores tipo vector; una generalizacin de las matrices unidimensionales C/C++

Cmo declarar una librera en C++?


Veamos a continuacin como se hara la declaracin de unas cuantas libreras conocidas, recuerda que ese pueden declarar todas las libreras necesarias y siempre debe hacerse al comienzo del cdigo fuente

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

1 2 3 4 5 6

#include #include #include #include

"iostream" "string" <math.h> <conio.h>

using namespace std;

Con esto debi quedar claro, como declarar libreras C++ al interior de un cdigo fuente. Lo nico adicional, es la lnea que dice using namespace std; esta lnea nos ayuda a declarar un espacio de nombre que evita tener que usarlo cada que accedemos a alguna funcin especifica de una librera. Teniendo este namespace declarado podemos llamar por ejemplo el comando cout >>, que pertenece a la librera iostream, sin embargo sin este namespace sera std::cout >>, imagina tener que hacer esto cada vez que uses algn comando o funcin de las libreras, sera bastante tedioso.

Acerca del namespace std


Todas las libreras estndar de C++ contienen una declaracin del espacio de nombre std, es decir que todas las libreras que hacen parte del estndar de C++ colocan entidades dentro de este espacio de nombre. Por esta razn cuando declaramos el uso del espacio de nombre std por medio de "using namespace std;", podemos evitar estar escribiendo std::cout o std::cin, etc en nuestro cdigo. El espacio de nombre std como tal no es una librera sino simplemente un namespace, por esta razn no reemplaza la declaracin de las libreras del cdigo, simplemente facilita la escritura de ste al momento de usar las entidades de las libreras estndar. Sin embargo si vamos a hacer uso de una o varias libreras estndar de C++ es recomendable que declaremos el namespace std, para no tener que estar constantemente escribiendo cosas similares a las que puse hace unas lneas como std::cin o similares, dado que nicamente se puede acceder a la entidades de las libreras estndar por medio del espacio nombre std. Ms adelante aadir una seccin dedicada a la creacin y uso de espacios de nombre en C++ Bueno!!! Es todo lo que necesitas saber sobre libreras, al menos en la lista que te he puesto, estn las que vamos a usar para ejemplos y ejercicios y algunas otras de mas. Si deseas informacin sobre alguna otra o que ample la informacin sobre alguna que ya esta aqu, hazmelo saber por medio de laseccin de comentarios

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Ahora vamos a la siguiente seccin y metamosle mano a algunos cdigos y como es su estructura. Venga!! da clic en el siguiente contenido llamadoComentarios en C++.

std :: numeric_limits
<lmites> Lmites de tipo numrico

Esta clase est especializada en cada uno de los tipos fundamentales, con sus miembros devolver o establecer a los diferentes valores que definen las propiedades que tiene en el tipo especfico de la plataforma en la que se compila. Para todos los otros tipos (no fundamentales tipos) una especializacin de esta clase no debera existir.La clase no especializado se define como:

1 plantilla < clase T> clase numeric_limits { 2 pblico : 3 esttico const bool is_specialized = false ; 4 esttico min T () throw (); 5 esttica max T () tiro (); 6 estticos const int dgitos = 0; 7 esttico const int digits10 = 0; 8 esttico const bool is_signed = false ; 9 esttico const bool is_integer = false ; 10 esttico const bool is_exact = false ; 11 esttico const int radix = 0; 12 esttico epsilon T () throw (); 13 esttico round_error T () throw (); 14 15 esttico const int min_exponent = 0; 16 esttico const int min_exponent10 = 0; 17 esttico const int max_exponent = 0; 18 esttico const int max_exponent10 = 0; 19 20 esttico const bool has_infinity = false ; 21 esttico const bool has_quiet_NaN = false ; 22 esttico const bool has_signaling_NaN = false ; 23 esttico const float_denorm_style has_denorm = denorm_absent; 24 estticos const bool has_denorm_loss = false ; 25 esttico infinito T () throw (); 26 esttico quiet_NaN T () lanzar (); 27 esttico signaling_NaN T () tiro (); 28 esttico denorm_min T () tiro (); 29

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
30 esttico const bool is_iec559 = false ; 31 esttico const bool is_bounded = false ; 32 esttico const bool is_modulo = false ; 33 34 static const bool trampas = false ; 35 esttico const bool tinyness_before = false ; 36 esttico const float_round_style round_style = 37 round_toward_zero; }

Una especializacin que existe en cada uno de los tipos fundamentales: bool , carbn , signed char , unsigned char , wchar_t , corto , unsigned short , int , unsigned int , largo , unsigned long , float , double y long double .Estas especializaciones definir los valores especficos para los diferentes const estticos miembros, y todos hanis_specialized define como verdadero .

Miembros
miembro tipo propiedad

is_special bool ized

verdadero en todas las especialidades del tipo, falso en la


versin no especializado. Mnimo valor finito. Para los tipos flotantes con desnormalizacin (nmero variable de bits de exponente):. mnimo valor normalizado positivo equivalente a CHAR_MIN , SCHAR_MIN , SHRT_MIN , INT_MIN , LONG_MIN , FLT_MIN , DBL_MIN , LDBL_MIN o 0 , dependiendo del tipo. Mximo valor finito. Equivalente dependiendo del tipo. Para los tipos de enteros: el nmero de no-signos bits ( radix dgitos de base) en la representacin.

min ()

max ()

dgitos

int

Para los tipos flotantes: nmero de dgitos (en base base) en la mantisa (equivalente a FLT_MANT_DIG , DBL_MANT_DIG o LDBL_MANT_DIG ). Nmero de dgitos (en base decimal) que se puede representar sin cambio. Equivalente a FLT_DIG , DBL_DIG o LDBL_DIG para tipos flotantes.

digits10

int

is_signed

bool

verdadero si el tipo de firma. cierto tipo si es entero.

is_integer bool

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
is_exact bool verdadero si el tipo utiliza representaciones exactas.
Para los tipos de enteros: base de la representacin. Para los tipos flotantes: base del exponente de la representacin (equivalente a FLT_RADIX ). Mquina epsilon (la diferencia entre el 1 y el menor valor mayor que 1 que es representable). Equivalente a FLT_EPSILON , DBL_EPSILON o LDBL_EPSILON para tipos flotantes. Medida del error de redondeo mximo. Mnimo valor negativo entero tal que radix elevado a (min_exponent-1)genera un normalizado nmero de punto

base

int

psilon () T

round_erro T r ()

min_expone int nt

flotante. Equivalente a FLT_MIN_EXP , DBL_MIN_EXP o LDBL_MIN_EXP para los tipos flotantes. Mnimo valor negativo entero tal que 10 elevado a la potencia normalizada genera un nmero de punto flotante. Equivalente a FLT_MIN_10_EXP , DBL_MIN_10_EXP o LDBL_MIN_10_EXPpara los tipos flotantes. Mximo valor entero tal que radix elevado a (max_exponent-

min_expone int nt10

max_expone int nt

1) genera un representable finito nmero de punto flotante.


Equivalente a FLT_MAX_EXP , DBL_MAX_EXP o LDBL_MAX_EXP para los tipos flotantes. Mximo valor entero tal que 10 elevado a la potencia normalizada genera un finito nmero de punto flotante. Equivalente a FLT_MAX_10_EXP , DBL_MAX_10_EXP o LDBL_MAX_10_EXPpar a los tipos flotantes.

max_expone int nt10

has_infini bool ty has_quiet_ bool NaN has_signal bool ing_NaN

verdadero si el tipo tiene una representacin de infinito


positivo.

verdadero si el tipo tiene una representacin para un tranquilo


(sin sealizacin) "Not-a-Number".

verdadero si el tipo tiene una representacin para una


sealizacin "Not-a-Number".

has_denorm

float_denor Valores no normalizados (representaciones con un nmero variable de bits de exponente). Un tipo puede tener cualquiera de m_style los siguientes valores de enumeracin: denorm_absent , si es

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
que no permite valores no normalizados. denorm_present , si se permite que los valores no normalizados. denorm_indeterminate , si indeterminado en tiempo de compilacin.

has_denorm bool _loss infinito () quiet_NaN () T

verdadero si una prdida de precisin es detectada como una


prdida de desnormalizacin, en lugar de un resultado inexacto. Representacin de infinito positivo , si estn disponibles.

Representacin de calma (sin sealizacin) "Not-a-Number" , si estn disponibles. Representacin de sealizacin "Not-a-Number" , si estn disponibles. Mnimo valor positivo sin normalizar. Para los tipos que no permiten valores no normalizados: igual que min () .

signaling_ T NaN () denorm_min T ()

cierto . si se adhiere a tipo IEC-559 / estndar IEEE-754 is_iec559 () T


Una IEC-559 tipo siempre tiene has_infinity , has_quiet_NaN yhas_signaling_NaN establece en verdadero , Y el

infinito , quiet_NaN ysignaling_NaN devolver un valor


distinto de cero.

is_bounded bool

cierto si el conjunto de valores representados por el tipo es


finito.

verdadero si el tipo es mdulo. Un tipo es modulo si es posible is_modulo bool


agregar dos nmeros positivos y tener un resultado que se envuelve alrededor de un tercer nmero que es menor.

trampas

bool

verdadero si la captura se lleva a cabo para el tipo. verdadero si tinyness se detecta antes de redondeo.

tinyness_b bool efore

Completan estilo. Un tipo puede tener cualquiera de los siguientes valores de enumeracin: round_toward_zero ., si se redondea hacia ceroround_to_nearest , si se redondea al valor ms cercano representable.round_toward_infinity , si se round_styl float_round redondea hacia el infinito.round_toward_neg_infinity , si se e _style redondea hacia el infinito negativo.round_indeterminate , si el estilo de redondeo es que desconocemos en tiempo de compilacin.

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Ejemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 / / Numeric_limits ejemplo # include # include <lmites> uso de espacio de nombres std; int main () { cout << boolalpha; cout << "El valor mnimo para int:" << numeric_limits < int > :: min () << endl; cout << "El valor mximo para int:" << numeric_limits < int > :: max () << endl; cout << "int se firma:" << numeric_limits < int > :: is_signed << endl; cout << "para no firmar bits int:" << numeric_limits < int > :: dgitos << endl; cout << "int tiene infinito:" << numeric_limits < int > :: has_infinity << endl; retorno 0; }

Salida posible:

El valor mnimo para int: -2147483648 El valor mximo para int: 2147483647 int es firmado: true No muestra los bits en int: 31 int tiene infinito: false

Vase tambin
<climits> (limits.h) Los tamaos de los tipos integrales (cabecera)

<cfloat> (float.h) Caractersticas de los tipos de punto flotante (cabecera)

Artculo con informacin relativa a los rangos de los tipos de datos en C y C++, usando la biblioteca limits.h. Incluye tablas con los datos concretos para datos enteros y en punto flotante.
Ahora, una de programacin:

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
De vez en cuando, puede surgirnos la necesidad de saber los valores lmit (mnimos y mximos) que tienen determinados tipos de datos. Si por ejemplo tenemos que manejar un contador que va a crecer mucho o tenemos que controlar posibles desbordamientos en operaciones aritmticas importantes, nos interesa controlar los rangos. Y si lo hacemos portable, mejor que mejor. Si estamos trabajando con C o C++, disponemos de una til herramienta en <limits.h>. En la pgina de Jack Klein se encuentra la siguiente tabla que muestra tipos de datos y sus constantes en la biblioteca mencionada junto con los valores mnimos fijado por cualquier ANSI C. Type signed char unsigned char plain char signed short unsigned short signed int unsigned int signed long unsigned long signed long long unsigned long long <limits.h> Constant SCHAR_MIN SCHAR_MAX UCHAR_MAX CHAR_MIN CHAR_MAX SHRT_MIN SHRT_MAX USHRT_MAX INT_MIN INT_MAX UINT_MAX LONG_MIN LONG_MAX ULONG_MAX LLONG_MIN LLONG_MAX ULLONG_MAX Minimum Value -127 127 0 255

(note 1)
-32767 32767 0 65535 -32767 32767 0 65535 -2147483647 214748364 0 4294967295 -9223372036854775807 9223372036854775807 0 18446744073709551615

Note 1: On implementations where default plain is signed, CHAR_MIN is equal to SCHAR_MIN and CHAR_MAX is equal to SCHAR_MAX. If plain char is unsigned, CHAR_MIN is 0 and CHAR_MAX is equal to UCHAR_MAX.
Para tipos de dato de coma flotante, recomiendo echar un vistazo a una pgina correspondiente del manual de la Biblioteca C de GNU. En ella, adems de otros datos algo ms tcnicos, estn las siguientes constantes interesantes para nuestros intereses aritmticos:
FLT_MAX The value of this macro is the maximum number representable in type float. It is supposed to be at least 1E+37. The value has type float.The smallest representable number is FLT_MAX.

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
DBL_MAX LDBL_MAX These are similar to FLT_MAX, but for the data types double and long double, respectively. The type of the macros value is the same as the type it describes. FLT_MIN The value of this macro is the minimum normalized positive floating point number that is representable in type float. It is supposed to be no more than 1E-37. DBL_MIN LDBL_MIN These are similar to FLT_MIN, but for the data types double and long double, respectively. The type of the macros value is the same as the type it describes. FLT_EPSILON This is the minimum positive floating point number of type float such that 1.0 + FLT_EPSILON != 1.0 is true. Its supposed to be no greater than 1E-5. DBL_EPSILON LDBL_EPSILON These are similar to FLT_EPSILON, but for the data types double and long double, respectively. The type of the macros value is the same as the type it describes. The values are not supposed to be greater than 1E-9.

También podría gustarte