Librerias en C
Librerias en C
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.
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.
<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 ( 5.1.1e4).
<memory> Utilidades relativas a la gestión de memoria, incluyendo
asignadores y punteros inteligentes (auto_ptr).
<new> Manejo de memoria dinámica
<numeric> Parte de la librería numérica de la STL relativa a operaciones
numéricas .
<ostream> Algoritmos estándar para los flujos de salida.
<queue> Parte de la STL relativa a contenedores tipo queue; colas de
objetos ( 1.8).
<set> Parte de la STL relativa a contenedores tipo set ( 5.1.1e2).
<sstream> Flujos hacia/desde cadenas alfanuméricas.
<stack> Parte de la STL relativa a contenedores tipo stack ( 5.1.1c5);
pilas de objetos ( 1.8).
<stdexcept> Parte de la STL relativa a las clases de las que derivan los
objetos lanzados por las excepciones ocasionadas en los
algoritmos de la propia STL y otras expresiones. Estas clases
son utilizadas para reportar errores detectados durante runtime.
Los usuarios también pueden utilizar excepciones para reportar
errores en sus propios programas ( 1.6.1a).
<streambuf> Parte de la STL relativa al Almacenamiento de flujos de E/S
("Stream buffers"). Define los tipos que controlan la capa de
transporte ( 5.3.2f).
<string> Parte de la STL relativa a contenedores tipo string ( ); una
generalización de las cadenas alfanuméricas para albergar
cadenas de objetos.
<typeinfo> Mecanismo de identificación de tipos en tiempo de ejecución (
4.9.14).
<utility> Parte de la STL que contiene elementos auxiliares como
operadores y pares (pairs).
<valarray> Parte de la librería numérica de la STL relativa a manejo de
matrices numéricas ()
<vector> Parte de la STL relativa a los contenedores tipo vector; una
generalización de las matrices unidimensionales C/C++ (
5.1.1c1)
Tipos
En lo que respecta al lenguaje C++, existen dos tipos fundamentales de
librerías: estáticas y dinámicas, que aunque comparten el mismo nombre
genérico "librería", utilizan mecanismos distintos para proporcionar su
funcionalidad al ejecutable.
Librerías estáticas
Nota: una posición extrema la constituyen aquellas librerías en las que toda la
funcionalidad se ha incluido en el fichero de cabecera .h, en cuyo caso no
existen los módulos compilados .lib, .a, etc. Es el caso de la Librería Estándar
de Plantillas STL que está compuesta casi exclusivamente por ficheros de
cabecera. No obstante, lo anterior representa un caso extremo que suele ser
evitado, ya que por lo general, los autores incluyen en los ficheros de cabecera
la información mínima indispensable para utilizar la librería (la interfaz),
incluyendo la operatoria en forma de ficheros compilados. La razón no suele
ser otra que proteger la propiedad intelectual (el "know how").
§2.1.1 Diccionario
Junto con los módulos .obj que las componen, las librerías estáticas incluyen
una especie de índice o diccionario con información sobre su contenido. Este
índice contiene los nombres de los recursos públicos de los distintos módulos
(que pueden ser accedidos desde el exterior) y su dirección. Estos nombres
deben ser distintos para evitar ambigüedades durante el enlazado, y sirven
para incrementar la velocidad de enlazado cuando el "Linker" debe incluir
alguno en un ejecutable.
Nota: cuando se crea una librería estática a partir de uno o varios ficheros
relocalizables (objetos), el proceso de incluir esta tabla o diccionario de
símbolos puede ejecutarse en un solo paso o en dos, aunque siempre en el
momento de crear la librería. Por ejemplo, tlib de Boland crea la librería y la
tabla en un solo proceso. En cambio, ar de GNU puede crear la librería y
posteriormente añadir la tabla (esto último puede también hacerse con ranlib).
Cuando se añade un nuevo módulo a una librería existente, la misma
herramienta que añade el contenido, se encarga de actualizar el índice.
Los ejecutables que utilizan librería estática solo incorporan los módulos
de aquellas que necesitan para resolver sus símbolos externos. Por
contra, las librerías dinámicas deben ser cargadas en su totalidad
aunque no solo se utilice una parte de su funcionalidad (no son
divisibles).
Utilizar Librerías
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
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
HEADERS O ENCABEZADOS.
Son librerias que contienen las funciones que vamos a usar en el programa.
Por lo general se colocan al principio del programa.
formato:
#include <nombre_func.h>
Operador Función
() llamada a función
[] subíndice de un arreglo
. punto. acceso a miembro de una estructura.
-> Flecha. Apunta a miembro " " "
! Inversor Lógico
- Resta
-- Decrementar en uno
++ Incrementar en uno
& Obtener la dirección de memoria
* Obtiene la indirección (contenido de)
/ division
% modulo (resto de la division)
+ suma
< menor que
> mayor que
<= menor igual
>= mayor igual
== igualdad de comparacion
!= desigualdad
&& operador logico AND
|| operador logico OR
?: condicional evalua dos expresiones
= asignacion
separador de variables, constantes y
, expresiones dentro de funciones,
estructuras de control, etc.
determina el tamaño de una variable o una
sizeof
estructura.
void fn()
int z;
int x=5;
int y=5;
z = ++x; /* el valor de z es 6 */
z = y++; /* el valor de z es 5 */
Operadores de Asignación:
Operador Significado
multiplicado
*=
por
/= dividido por
%= modulo de
+= añadir a
-= sustraer desde
Miscelaneos:
a ? b : c;
Constantes
int main()
constante */
*cPc='a'; // legal
Existen otro tipo de constantes, que son las definidas, que se utilizan para
suplir un extenso codigo:
por ejemplo:
Sentencias de Control.
scanf("%f", &x);
if (x<0) {
...
}
continue continue; for (n=1; n<=100; ++n) {
scanf("%f", &x);
if (x<0) {
...
}
do do
indicador: printf("ERROR");
if (expresion) if (x < 0)
if
sentencia printf("%f",x);
if (expresion) if (estado == 'S')
sentencia 1 tasa=0.20*paga;
if-else
else else
sentencia 2 tasa=0.14*paga;
return return expresion return (n1 + n2);
switch switch (expresion) { switch (eleccion = getchar()) {
sentencia 1 printf("ROJO");
sentencia 2 break;
...
sentencia m;
break;
case expresion 2:
case 'B':
sentencia 1
printf("BLANCO");
sentencia 2
break;
...
case 'A':
sentencia n
printf("AZUL");
break;
break;
...
default:
default:
printf("ERROR");
sentencia 1
}
sentencia 2
...
sentencia k
}
while (expresion) while (digito<=9)
while
sentencia printf("%d\n", digito++);
ESTRUCTURAS:
sintaxis:
typedef struct nombre1 {
variable 1;
...
variable n;
} NOMBRE1;
funcion 1;
funcion 2;
...
función n;
Donde existe una prelación, es decir la funcion n-1 accesa todas las funciones
menos la función n, asi la unica función que puede disponer de todas las
demás es la función principal o main.
sintaxis:
main( ) { }
NOTAS:
- No se pueden declarar funciones dentro de otras funciones.
iostream.h
Funciones
Cout : Muestra los datos que uno desea que se vean en la pantalla.
stdio.h
Define los tipos y macros necesitados para el paquete definido de I/O normal
en Kernighan y Ritchie, extendido bajo el Sistema de UNIX V.
Funciones
gets
Sintaxis:
#include <stdio.h>
Description:
Gets colecciona una cadena de caracteres terminados por una nueva línea
desde la cadena estándar de entrada “stdin” y lo pone en s. La nueva línea es
reemplazada por un carácter nulo (\0) en s.
Gets permite las cadenas de la entrada para contener ciertos caracteres del
“whitespace o espacio en blanco” (los espacios, etiquetas). Gets vuelve cuando
encuentra una nueva línea; a toda la nueva línea la copia en s.
Note: Para Win32s o Win32 las aplicaciones de GUI, deben remitirse los
“stdin”.
El Valor de retorno:
putchar
Sintaxis:
#include <stdio.h>
Descripción:
Note: Para Win32s o Win32 las aplicaciones de GUI, deben remitirse los
“stdout”.
El Valor de retorno:
math.h
Cos, cosl
Sintaxis:
#include <math.h>
Descripción:
El Valor de retorno:
pow, powl
Sintaxis:
#include <math.h>
Descripción:
El Valor de retorno:
sqrt, sqrtl
Sintaxis:
#include <math.h>
Descripción:
Esta función puede usarse con los bcd y tipos del complejo.
El Valor de retorno:
string.h
Strcpy
Sintaxis:
#include <string.h>
Descripción:
El Valor de retorno:
Strcmp
Sintaxis:
#include <string.h>
Descripción:
Strcmp realiza una comparación sin firmar de s1 al s2, empieza con el primer
carácter de cada cordón y continúa con los caracteres subsecuentes hasta que
los caracteres correspondientes difieren o hasta el fin que alcance la cadena.
El Valor de retorno:
igual que el s2 == 0
conio.h
Declara varias funciones usadas llamando la consola del sistema operativo las
rutinas de I/O.
Clrscr
Sintaxis:
#include <conio.h>
void clrscr(void);
Descripción:
El Valor de retorno:
Ninguno.
Clreol
Sintaxis:
#include <conio.h.>
void clreol(void);
Descripción:
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la
línea dentro de la ventana de texto actual, sin mover el cursor.
El Valor de retorno:
Ninguno.
Gotoxy
Sintaxis:
#include <conio.h>
void gotoxy(int x
int y);
Descripción:
Gotoxy mueve el cursor a la posición dada en la ventana del texto actual. Si las
coordenadas no son valías entonces la función gotoxy se ignora. Un ejemplo
de esto es si gotoxy(40,30) cuando (35,25) es la correcta posición del fondo de
la ventana. Ningún argumento de gotoxy puede ser el cero.
Ninguno.
Switch
Sintaxis:
default : <statement>;
Descripción:
Use la declaración switch para pasar el mando a un caso que empareja el <el
interruptor inconstante>. A que el punto las declaraciones que siguen el caso
emparejando evalúa.
iomanip.h
Declara la I/O de las cadenas en C++ y contiene los macros por crear a los
manipuladores del parametro.
Incluye:
IOSTREAM.H