Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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++
Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
1 2 3 4 5 6
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.
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
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
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-
max_expone int nt
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.
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 () .
is_bounded bool
trampas
bool
verdadero si la captura se lleva a cabo para el tipo. verdadero si tinyness se detecta antes de redondeo.
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)
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.