100% encontró este documento útil (1 voto)
7K vistas22 páginas

Librerias en C

Este documento describe las librerías en C++. Explica que una librería es un conjunto de recursos prefabricados como algoritmos que pueden ser utilizados por programadores. También describe las diferentes clases de librerías estándar de C++ como las de soporte del lenguaje, cadenas, entrada/salida, y contenedores. Finalmente, resume los dos tipos principales de librerías - estáticas y dinámicas - y cómo proporcionan funcionalidad a los programas.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
7K vistas22 páginas

Librerias en C

Este documento describe las librerías en C++. Explica que una librería es un conjunto de recursos prefabricados como algoritmos que pueden ser utilizados por programadores. También describe las diferentes clases de librerías estándar de C++ como las de soporte del lenguaje, cadenas, entrada/salida, y contenedores. Finalmente, resume los dos tipos principales de librerías - estáticas y dinámicas - y cómo proporcionan funcionalidad a los programas.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

LIBRERIAS EN C++

Una librería es un conjunto de recursos (algoritmos) prefabricados, que


pueden ser utilizados por el programador para realizar determinadas
operaciones. Las declaraciones de las funciones (prototipos 4.4.1) utilizadas
en estas librerías, junto con algunas macros y constantes predefinidas que
facilitan su utilización, se agrupan en ficheros de nombres conocidos que
suelen encontrarse en sitios predefinidos. Por ejemplo, en los sistemas UNIX,
en  /usr/include. Estos ficheros se suelen llamar "de cabecera", porque es
tradición utilizar las primeras líneas del programa para poner las directivas
#include ,que los incluirá en el fuente durante la fase de reprocesado .

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 [3] 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.
<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)

Es digno de mención que aunque generalmente las librerías no aportan


ninguna característica al lenguaje (se supone que son utilidades auxiliares que
no forman parte del lenguaje propiamente dicho), una pequeña porción de la
Librería Estándar C++ sí aporta características que se consideran
pertenecientes a este, de forma que deben estar presentes los ficheros de
cabecera correspondientes si se desea usarlas. En concreto se refieren a los
siguientes elementos:

 Operadores new, new[], delete y delete[] .


 Clase type_info que corresponde al mecanismo RTTI de identificación
de tipos en tiempo de ejecución representado por el operador typeid.
 Rutinas de inicio y terminación.
 Las excepciones estándar lanzadas por los algoritmos anteriores
Sinopsis

Al tratar de la construcción de un programa señalamos que en ocasiones no se


desea construir un ejecutable, al menos no en el sentido tradicional del término,
sino una librería, y que estas librerías son trozos de código que contienen
alguna funcionalidad pre-construida que puede ser utilizada por un ejecutable.
Por supuesto, las librerías contienen en su interior variables y funciones. Si
como suponemos son librerías C++, lo más probable es que estas variables y
funciones estén encapsuladas en forma de clases.  Observe que la idea central
de librería es precisamente la de ser un módulo de software preconstruido
-generalmente por terderos- para cuya utilización no es necesario conocer los
detalles íntimos de su funcionamiento, sino su interfaz. Es decir, que
respuestas nos puede dar y cómo hay que preguntar -a la librería- para
obtenerlas.

En general, el término librería se utiliza para referirse a un conjunto de


módulos objeto .obj / .o (resultados de compilación) agrupados en un solo
fichero que suele tener las extensiones .lib, .bpl [6] .a, .dll, etc. Estos ficheros
permiten tratar las colecciones de módulos como una sola unidad, y
representan una forma muy conveniente para el manejo y desarrollo de
aplicaciones grandes, además de ser un concepto muy fértil para la industria
del software, ya que permiten la existencia de las librerías de los propios
compiladores y de un mercado de utilidades y componentes adicionales. Son
las denominadas librerías 3pp (de terceras partes), en referencia a que no son
incluidas de forma estándar con los compiladores ni creadas por el
programador de la aplicación.

En este sentido el software se parece a cualquier otro mercado de


componentes. Además de las librerías más o menos extensas que acompañan
a los compiladores, pueden adquirirse otras, que permiten añadir a nuestros
programas las funcionalidades más diversas sin necesidad de ser un experto
en cada área de la programación y sin necesidad de que tengamos que estar
reinventando la rueda constantemente.  Si quiere una opinión autorizada -en
inglés- sobre la filosofía de uso e importancia de las librerías en C++, puede
consultar este documento del Sr. Stroustrup:  Abstraction, libraries, and
efficiency in C++

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.

En ambos casos es costumbre, que junto a las librerías propiamente dichas


(ficheros .lib, .a, .dll etc), se incluya un fichero .h denominado "de cabecera",
porque es tradición utilizar las primeras líneas del programa para poner las
directivas #include que los incluirán en el fuente durante la fase de
preproceso.  Este fichero contiene las declaraciones de las entidades
contenidas en la librería, así como las macros y constantes predefinidas
utilizadas en ella, de forma que el programador solo tiene que incluir el
correspondiente fichero .h en su aplicación para poder utilizar los recursos de
la librería en cuestión (recuerde que en C/C++ es imprescindible incluir la
declaración de cualquier función o clase antes de su utilización. Este sistema
tiene la ventaja adicional de que proporciona al usuario la información mínima
para su uso.  Es decir, la "interfaz" de las funciones o clases que utilizará.  En
el caso de funciones esto se concreta en el prototipo; en el caso de clases, en
la especificación de sus métodos y propiedades públicas.

Librerías estáticas

Denominadas también librerías-objeto, son colecciones de ficheros objeto


(compilados) agrupados en un solo fichero de extensión .lib, .a, etc. junto con
uno o varios ficheros de cabecera (generalmente .h).

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").

Durante la construcción de la aplicación, el preprocesador incluye en los


fuentes los ficheros de cabecera. Posteriormente, durante la fase de enlazado,
el linker incluye en el ejecutable los módulos correspondientes a las funciones y
clases de librería que hayan sido utilizadas en el programa, de forma que el
conjunto entra a formar parte del ejecutable. De ahí su nombre: Librerías
enlazadas estáticamente .

Dejando aparte consideraciones de comodidad y rapidez, el  resultado de


utilizar una de tales librerías no se diferencia en nada al que puede obtenerse
escribiendo en al fuente las funciones o clases correspondientes y
compilándolas como un módulo más de nuestra aplicación.

Nota:  genralmente los compiladores disponen de herramientas específicas


para la creación de librerías estáticas. Por ejemplo, la del compilador Borland
C++ es el ejecutable TLIB.EXE; las de GNU se denominan ar y ranlib. Como
tendremos ocasión de ver en los ejemplos, también pueden crearse mediante
opciones específicas en la orden de compilación.

§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. 

 §2.2  Librerías dinámicas

Otra forma de añadir funcionalidad a un ejecutable son las denominadas


librerías de enlazado dinámico (repasar en el significado de "enlazado
dinámico"), generalmente conocidas como DLLs, acrónimo de su nombre en
inglés ("Dynamic Linked Library"). Estas librerías se utilizan mucho en la
programación para el SO Windows. Este Sistema contiene un gran número de
tales librerías de terminación .DLL, aunque en realidad pueden tener cualquier
otra terminación .EXE, .FON, .BPI, .DRV etc. Cualquiera que sea su
terminación, de forma genérica nos referiremos a ellas como DLLs, nombre por
el que son más conocidas.

Nota:  la programación tradicional de aplicaciones Windows utilizando la API


del Sistema es en realidad una sucesión de invocación a funciones contenidas
en librerías de este tipo.  En realidad este Sistema Operativo está constituido
por un conjunto de DLLs; la mayoría de los ficheros de disco asociados con el
Sistema son de este tipo, y se ha llegado a afirmar que escribir una DLL es
escribir una extensión del propio Windows ( PW2E Petzold p.878).

Diferencias:  librería Estática "versus" Dinámica

Las diferencias más relevantes de las librerías dinámicas respecto a las


estáticas son fundamentalmente dos:

 Las librerías estáticas quedan incluidas en el ejecutable, mientras las


dinámicas son ficheros externos, con lo que el tamaño de la aplicación
(nuestro ejecutable) es mayor en el primer caso que en el segundo. Esto
puede ser de capital importancia en aplicaciones muy grandes, ya que el
ejecutable debe ser cargado en memoria de una sola vez .

 Las librerías dinámicas son ficheros independientes que pueden ser


invocados desde cualquier ejecutable, de modo que su funcionalidad
puede ser compartida por varios ejecutables. Esto significa que solo se
necesita una copia de cada fichero de librería (DLL) en el Sistema. Esta
característica constituye la razón principal de su utilización, y es también
origen de algunos inconvenientes, principalmente en sistemas como
Windows en los que existen centenares de ellas.

Como consecuencia de las diferencias citadas se derivan otras. Por ejemplo:

 Si se realizan modificaciones en los módulos de una librería estática, es


necesario recompilar todos los ejecutables que la utilizan, mientras que
esto no es necesario en el caso de una librería dinámica, siempre que su
interfaz se mantenga.

 Como consecuencia de lo anterior, generalmente es más difícil la


depuración y mantenimiento de aplicaciones que utilizan librerías
dinámicas que las estáticas, ya que en el primer caso, es necesario
controlar qué versiones de los ejecutables (.EXE) son compatibles con
qué versiones de las DLLs y de estas entre sí, de forma que el usuario
no utilice un versiones incompatibles de los ficheros que componen la
aplicación.

 Durante la ejecución de un ejecutable, las librerías estáticas que


hubiesen intervenido en su construcción no necesitan estar presentes,
en cambio las dinámicas deben estar en el mismo directorio o en el
camino de búsqueda "Path" .

 Las librerías estáticas solo se utilizan en la fase de construcción del


ejecutable. Las dinámicas se utilizan durante la ejecución.

 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).

 Las librerías estáticas, que entran a formar parte indivisible del


ejecutable, son cargadas con el proceso de carga de este.  Las librerías
dinámicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo). De hecho, una librería dinámica puede ser
cargada bajo demanda en el momento en que se necesita su
funcionalidad, e incluso puede ser descargada cuando no resulta
necesaria.

 El mecanismo de enlazado estático depende del compilador.  El de


enlazado dinámico depende del SO, de forma que manteniendo ciertas
precauciones, las DLLs construidas con un lenguaje y un compilador
pueden ser utilizadas por cualquier aplicación.

Utilizar Librerías

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.

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>

Librerias mas comunes en C++.

stdio.h, conio.h, iostream.h, string.h, ctype.h, etc.

Funciones más utilizadas en C++.

printf, scanf, malloc, free, cin, cout

Secuencias de escape que actuan como caracteres:

Accion realizada por la


secuencia
Comp.
\a Alarma
\b retroceso
\f avance de pagina
\n nueva linea
\r retorno al carro
\t tabulacion horizontal
\v tabulacion vertical
\\ backslash
\' comilla simple
\" comilla doble

Operadores en C++ utilizados comunmente:

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.

Un pequeño programa interesante de analizar es el siguiente:

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:

El operador terciario es por lo general confundido con una estructura de control.


Este trabaja de la siguiente manera:

a ? b : c;

Si a es verdadero el resultado del operador es el valor de b, sino el resultado es


el valor de c, a tambien puede ser una condición o alguna otra estructura que
genere verdadero o falso.

Constantes

Como siempre se ha definido en cualquier otro lenguaje las constantes son


datos que siempre van a conservar el mismo valor durante todo el programa.

Para la declaración de las constantes comunes utilizaremos:

const int radioTierra = 3959; // en millas

const float radioTierraEnKm = 1.609 * radioTierra;

Debemos hacer incapie en lo que son las constante en toda su extensión, en el


siguiente ejemplo a lo mejor no queda tan claro el uso de constantes:

int main()

const char * pCC = "Esto es una cadena constante"

char * const cPc = "Esto es un puntero constante"

*pCC='a'; /* ilegal porque es una cadena

constante */

*cPc='a'; // legal

pCC="otra cadena"; // legal

cPc="otra cadena"; // ilegal


return 0;

La regla es const se aplicara directamente a la cosa que se encuentre


inmediatamente a su derecha.

Existen otro tipo de constantes, que son las definidas, que se utilizan para
suplir un extenso codigo:

#define <nemonico> <funcion>

por ejemplo:

#define peso 1.645

#define imprima(a) printf("%i:",a);

#define color(x,y) textcolor(x); textbackground(y);

Sentencias de Control.

for (n=1; n<=100; ++n) {

scanf("%f", &x);

if (x<0) {

printf("ERROR- Valor negativo");


break break;
break;

...

}
continue continue; for (n=1; n<=100; ++n) {

scanf("%f", &x);

if (x<0) {

printf("ERROR- Valor negativo");


continue;

...

}
do do

do-while sentencia printf("%d\n", digito++);

while (expresión) while(digito <=9 );


for (digito=0; digito<=9; ++digito)
for(exp1;exp2;exp3)
for printf("%d\n", digito);
sentencia
for (x=0, y=0; x < y; x+=10, y-=10)
if (x < 0)

goto etiqueta; goto indicador;


goto
etiqueta: sentencia ...

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()) {

case expresion 1: case 'R':

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:

2. Definida: La cual representa la definición de un tipo de dato creado por el


usuario, aunque la estructura anterior también representa un tipo de dato
definido, la diferencia radica en que la "definida" puede ser pasada por
parámetro o encabezar los requerimientos de una función mientras que la otra
no.

sintaxis:
typedef struct nombre1 {

variable 1;

...

variable n;

} NOMBRE1;

NOMBRE1: es el utilizado para hacer posteriores declaraciones.

CUERPO DEL PROGRAMA.

El programa esta compuesto de la siguiente manera:

funcion 1;

funcion 2;

...

función n;

main o funcion principal;

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.

Toda función excepto el main debe retornar un valor, en caso de que no se


retorna nada puede declararse de tipo void (cualquier tipo).

sintaxis:

<tipo_retorno> <nombre_función> (param 1, param 2, ..., param n) {

la función main debe declararse de la siguiente forma:

main( ) { }

Esta función será la primera en ejecutarse.

NOTAS:
- No se pueden declarar funciones dentro de otras funciones.

- Las palabras reservadas deben ir en minusculas.

DESCRIPCIÓN DE CADA LIBRERÍA


Bibliotecas más importantes en C++

iostream.h

Declara en el C++ básico los datos de (I/O).

Funciones

Cin : Declara los datos de entrada para alas variables

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.

Define el estándar de I/O predefinido vierte stdin, stdout, stdprn, y stderr, y


declara I/O de datos.

Funciones

gets

Sintaxis:

#include <stdio.h>

char *gets(char *s);

Description:

Recibe un cadena del “stdin” (cadena estándar de entrada).

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:

Si el programa esta bien, Gets devuelve s al argumento de la cadena.

Si hay error, Gets devuelve NULO

putchar

Sintaxis:

#include <stdio.h>

int putchar(int c);

Descripción:

putchar(c) es un macro definido para putc(c, stdout).

Note: Para Win32s o Win32 las aplicaciones de GUI, deben remitirse los
“stdout”.

El Valor de retorno:

Si el programa esta bien, putchar devuelve el carácter c.

Si hay error, putchar devuelve EOF.

math.h

Math.h realiza cálculos matemáticos y conversiones.

Cos, cosl

Sintaxis:

#include <math.h>

double cos(double x);

long double cosl(long double x);

Descripción:

Calcula el coseno de un valor.

Cos computa el coseno del valor de la entrada. El ángulo se especifica en los


radianes.
Cosl es la versión doble larga; toma un argumento doble largo y devuelve un
resultado doble largo.

Esta función puede usarse con “bcd” y tipos del complejo.

El Valor de retorno:

Si el programa esta bien, Cos de un argumento real devuelve un valor en el


rango -1 a 1

Si hay error, estas funciones pueden modificarse a través de _matherr (o


_matherrl).

pow, powl

Sintaxis:

#include <math.h>

double pow(double x, double y);

long double powl(long double x, long double y);

Descripción:

Calcula x a la potencia y (xy).

Powl es la versión larga doble; toma argumentos dobles y regresa un resultado


doble largo.

Esta función puede usarse con los bcd y tipos complejos.

El Valor de retorno:

Si el programa esta bien, el pow y powl devuelven el valor calculado de x


elevado a y.

A veces los resultados dados son grandes o son incalculables. Cuando el


resultado es correcto pero grandes o incalculables las funciones devuelven
HUGE_VAL (pow) or _LHUGE_VAL (powl).

Los resultados de magnitud excesivamente grande pueden causar el errno


inconstante global para ser puesto a

ERANGE Resultado fuera de rango

Si el argumento x pasó al pow o usted llama el pow(0,0).

EDOM Error de Dominio


Error que maneja para estas funciones puede modificarse a través de las
funciones _matherr y _matherrl.

sqrt, sqrtl

Sintaxis:

#include <math.h>

double sqrt(double x);

long double sqrtl(long double x);

Descripción:

Calcula la raíz cuadrada positiva.

Sqrt calcula la raíz cuadrada positiva del argumento x.

Sqrtl es la versión larga doble; toma argumentos dobles y regresa un resultado


doble largo. Error que maneja para estas funciones puede ser modificadas a
través de las funciones _matherr y _matherrl.

Esta función puede usarse con los bcd y tipos del complejo.

El Valor de retorno:

Si el programa esta bien, sqrt y sqrtl devuelven el valor calculado, la raíz


cuadrada de x. Si x es real y positivo, el resultado es positivo. Si x es real y
negativo, el retorno será inconstante global se pone a EDOM (Error de
Dominio).

string.h

Declara varios cadenas-manipulación y memorias de rutinas de manipulación.

Strcpy

Sintaxis:

#include <string.h>

char *strcpy(char *dest, const char *src);

Descripción:

Copia de una cadena a otra.


Copia las cadenas del src al dest, se detiene después que el carácter nulo haya
terminando de moverse.

El Valor de retorno:

el strcpy devuelve el dest.

Strcmp

Sintaxis:

#include <string.h>

int strcmp(const char *s1, const char *s2);

Descripción:

Compara de una cadena a otra.

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:

Si el s1 es... el strcmp devuelve un valor que es...

menos del s2 <0

igual que el s2 == 0

mayor 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:

Aclara el modo de texto de la ventana.


clrscr aclara el texto de la actual y lugares del cursor en la esquina izquierda
superior o en la posición (1,1).

La nota: no use esta función para Win32s o Win32 o aplicaciones de GUI.

El Valor de retorno:

Ninguno.

Clreol

Sintaxis:

#include <conio.h.>

void clreol(void);

Descripción:

Aclara el final de la línea en la ventana de texto.

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.

La nota: no use esta función para Win32s o Win32 o aplicaciones de GUI.

El Valor de retorno:

Ninguno.

Gotoxy

Sintaxis:

#include <conio.h>

void gotoxy(int x

int y);

Descripción:

Posiciona el cursor en la ventana del texto.

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.

La nota: no use esta función para Win32s o Win32 o aplicaciones de GUI.


El Valor de retorno:

Ninguno.

Switch

Sintaxis:

switch ( <switch variable> ) {

case <constant expression> : <statement>; [break;]

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.

Si ningún caso satisface la condición que el caso predefinido evalúa. Evitar


evaluar cualquier otro caso y abandonar el mando del interruptor, termine cada
caso break.

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

También podría gustarte