ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Librerias


Enviado por   •  19 de Abril de 2013  •  5.443 Palabras (22 Páginas)  •  357 Visitas

Página 1 de 22

Librería Estándar

C++ no llega al nivel de simplicidad de su antecesor C, pero al igual que aquél, tampoco dispone de utilidades o funciones para entrada o salida implementadas en el propio lenguaje, de modo que estas y otras muchas, como manejo de cadenas de caracteres (strings), manejo de ficheros, funciones matemáticas Etc. son implementadas en forma de librerías externas.

Desde la óptica del programador C++, el manejo de librerías comprende dos aspectos totalmente diferenciados: su utilización y quizás la construcción de alguna de ellas si nuestras aplicaciones son medianamente grandes.

En cuanto al primer punto, es seguro que cualquier aplicación por pequeña que sea, utilice algunas de la Librería Estándar. Por ejemplo, cada vez que en su código aparece una sentencia del tipo

cout << "Hola mundo" << endl;

Está utilizando una librería estática, y cada vez que en la programación de una aplicación Windows utiliza un mensaje del tipo

MessageBox(NULL, "Hola mundo!", "Mi primer programa", MB_OK);

Está usando una librería dinámica. En cuanto a su construcción, si se dedica a esto de programar en C++, antes o después pondrá manos a la obra. Por cierto: existen empresas de software cuya principal actividad es precisamente fabricar y vender librerías (ya hemos indicado que el mercado de las 3pp es todo un "mundillo" dentro de la informática).

Cualquiera que sea el caso, tanto la utilización como la construcción, son diferentes según se trate de librerías estáticas o dinámicas. En las páginas que siguen se describen en detalle ambas situaciones. Empezaremos por una descripción general de su funcionamiento, para continuar con la descripción de los pasos necesarios para construirlas. A continuación exponemos los detalles de su utilización, incluyendo un ejemplo de construcción de un ejecutable que utiliza los recursos de una librería.

Recordemos que en C++, uno de los significados del término "estático" es algo que ha sido resuelto en tiempo de compilación.

Existen utilidades que permiten compactar ("Squeeze") un ejecutable disminuyendo su tamaño como fichero, lo que puede ser de utilidad a la hora de transportarlo (por redes por ejemplo). Pero incluso en estos casos, después de cargados en memoria deben ser "expandidos" a su tamaño normal y reacomodados en memoria según un patrón definido por el SO.

BPI; acrónimo de Borland Package Import Library. Un tipo especial de librería dinámica del citado compilador, que utiliza enlazado estático con el ejecutable que las usa.

En el caso del compilador BC++, durante la construcción de un programa o librería, este "path" puede ser controlado mediante el comando de compilación -L o de enlazado /L. Más tarde durante la ejecución (runtime) el "path" depende de las variables de entorno del sistema.

En los programas para Windows caben tres opciones: poner las librerías específicas en el mismo directorio que el ejecutable (o un subdirectorio del anterior); en nuestra opinión esto sería lo recomendado. Otra opción es ponerlas junto con el resto de librerías del sistema (Windows\System) o en un directorio particular cualquiera (no es aconsejable).

Clases de librerías

Los compiladores C++ incluyen un amplio repertorio de clases, funciones y macros que permiten realizar una amplia variedad de tareas, incluyendo entradas/salidas de bajo y alto nivel; manipulación de cadenas alfanuméricas y ficheros; control de procesos (incluyendo multiproceso); manejo de memoria; cálculos matemáticos y un largo etcétera.

Este repertorio de recursos es denominado colectivamente como "Rutinas de librería"; "Librerías de ejecución" RTL ("Runtime Librarys") o simplemente "Librerías". Puede decirse que el lenguaje aislado (tal cual) no tiene prácticamente ninguna utilidad sin la concurrencia de estas utilidades. El Estándar C++ las clasifica según su utilidad:

• Soporte del lenguaje [7]

• Diagnóstico

• Utilidades generales

• Cadenas alfanuméricas ("Strings")

• Localización

• Contenedores

• Iteradores

• Algoritmos

• Cálculo numérico

• Entrada/Salida

Librería Estándar C++

Para poner un poco de orden, el Estándar C++ define la denominada Librería Estándar que debe acompañar a cada implementación del compilador que se adhiera al estándar. Es decir: la norma determina cuales son, como se llaman y como se utiliza este conjunto de algoritmos que deben acompañar (como mínimo) a cada implementación del compilador que quiera llamarse "Estándar". La última versión, ISO/IEC 14882 del año 1998, especifica que se compone de 32 ficheros de cabecera de nombres fijos y conocidos agrupados según la funcionalidad de los algoritmos. Son los siguientes:

Ficheros Funcionalidad/funciones

<algorithm> Parte de la STL que describe los algoritmos

<bitset> Parte de la STL relativa a contenedores tipo bitset . Set de valores booleanos.

<complex> Parte de la librería numérica de la STL relativa a los complejos.

<deque> Parte de la STL relativa a contenedores tipo deque; un tipo de colas: "Double-ended-queue" .

<exception> Parte de la librería de diagnóstico relativa al manejo de excepciones.

<fstream> Flujos hacia/desde ficheros.

<functional> Parte de la STL relativa a Objetos-función.

<iomanip> Manipuladores.

<ios> Supreclases para manejo de flujos de E/S.

<iosfwd> Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.

<iostream> Parte del a STL que contiene los algoritmos estándar de E/S.

<istream> Algoritmos estándar de flujos de entrada.

<iterator> Parte de la STL relacionada con iteradores , un tipo de puntero que permite utilizar los algoritmos de la Librería con las estructuras de datos representadas por los contenedores.

<limits> Descripción de propiedades dependientes de la implementación que afectan a los tipos fundamentales.

<list> Parte de la STL relativa a contenedores tipo list ; listas doblemente enlazadas.

<locale> Parte de la STL relativa a la internacionalización.

<map> Parte de la STL relativa a contenedores tipo map.

<memory> Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes (auto_ptr).

<new> Manejo de memoria

...

Descargar como (para miembros actualizados) txt (39 Kb)
Leer 21 páginas más »
Disponible sólo en Clubensayos.com