Librerias en c
-
Upload
mariuxi-cisne-jimbo-salinas -
Category
Documents
-
view
3.897 -
download
0
Transcript of Librerias en c
LIBRERIAS EN C++
Una libreriacutea es un conjunto de recursos (algoritmos) prefabricados que pueden ser utilizados por el programador para realizar determinadas operaciones Las declaraciones de las funciones (prototipos 441) utilizadas en estas libreriacuteas junto con algunas macros y constantes predefinidas que facilitan su utilizacioacuten se agrupan en ficheros de nombres conocidos que suelen encontrarse en sitios predefinidos Por ejemplo en los sistemas UNIX en usrinclude Estos ficheros se suelen llamar de cabecera porque es tradicioacuten utilizar las primeras liacuteneas del programa para poner las directivas include que los incluiraacute en el fuente durante la fase de reprocesado
Clases de libreriacuteas
Los compiladores C++ incluyen un amplio repertorio de clases funciones y macros que permiten realizar una amplia variedad de tareas incluyendo entradassalidas de bajo y alto nivel manipulacioacuten de cadenas alfanumeacutericas y ficheros control de procesos (incluyendo multiproceso) manejo de memoria caacutelculos matemaacuteticos y un largo etceacutetera
Este repertorio de recursos es denominado colectivamente como Rutinas de libreriacutea Libreriacuteas de ejecucioacuten RTL (Runtime Librarys) o simplemente Libreriacuteas Puede decirse que el lenguaje aislado (tal cual) no tiene praacutecticamente ninguna utilidad sin la concurrencia de estas utilidades El Estaacutendar C++ las clasifica seguacuten su utilidad
Soporte del lenguaje [7] Diagnoacutestico Utilidades generales Cadenas alfanumeacutericas (Strings) Localizacioacuten Contenedores Iteradores Algoritmos Caacutelculo numeacuterico EntradaSalida
Libreriacutea Estaacutendar C++
Para poner un poco de orden el Estaacutendar C++ define la denominada Libreriacutea Estaacutendar [3] que debe acompantildear a cada implementacioacuten del compilador que se adhiera al estaacutendar Es decir la norma determina cuales son como se llaman y como se utiliza este conjunto de algoritmos que deben acompantildear (como miacutenimo) a cada implementacioacuten del compilador que quiera llamarse
Estaacutendar La uacuteltima versioacuten ISOIEC 14882 del antildeo 1998 especifica que se compone de 32 ficheros de cabecera de nombres fijos y conocidos agrupados seguacuten la funcionalidad de los algoritmos Son los siguientes
Ficheros Funcionalidadfunciones
ltalgorithmgt Parte de la STL que describe los algoritmos
ltbitsetgt Parte de la STL relativa a contenedores tipo bitset Set de valores booleanos
ltcomplexgt Parte de la libreriacutea numeacuterica de la STL relativa a los
ltdequegt Parte de la STL relativa a contenedores tipo deque un tipo de colas Double-ended-queue
ltexceptiongt Parte de la libreriacutea de diagnoacutestico relativa al manejo de excepciones
ltfstreamgt Flujos haciadesde ficheros
ltfunctionalgt Parte de la STL relativa a Objetos-funcioacuten
ltiomanipgt Manipuladores
ltiosgt Supreclases para manejo de flujos de ES
ltiosfwdgt Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estaacutendar Por ejemplo ostream
ltiostreamgt Parte del a STL que contiene los algoritmos estaacutendar de ES
ltistreamgt Algoritmos estaacutendar de flujos de entrada
ltiteratorgt Parte de la STL relacionada con iteradores un tipo de puntero que permite utilizar los algoritmos de la Libreriacutea con las estructuras de datos representadas por los contenedores
ltlimitsgt Descripcioacuten de propiedades dependientes de la implementacioacuten que afectan a los tipos fundamentales
ltlistgt Parte de la STL relativa a contenedores tipo list listas doblemente enlazadas
ltlocalegt Parte de la STL relativa a la internacionalizacioacuten
ltmapgt Parte de la STL relativa a contenedores tipo map ( 511e4)
ltmemorygt Utilidades relativas a la gestioacuten de memoria incluyendo asignadores y punteros inteligentes (auto_ptr)
ltnewgt Manejo de memoria dinaacutemica
ltnumericgt Parte de la libreriacutea numeacuterica de la STL relativa a operaciones numeacutericas
ltostreamgt Algoritmos estaacutendar para los flujos de salida
ltqueuegt Parte de la STL relativa a contenedores tipo queue colas de objetos ( 18)
ltsetgt Parte de la STL relativa a contenedores tipo set ( 511e2)
ltsstreamgt Flujos haciadesde cadenas alfanumeacutericas
ltstackgt Parte de la STL relativa a contenedores tipo stack ( 511c5) pilas de objetos ( 18)
ltstdexceptgt 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 tambieacuten pueden utilizar excepciones para reportar errores en sus propios programas ( 161a)
ltstreambufgt Parte de la STL relativa al Almacenamiento de flujos de ES (Stream buffers) Define los tipos que controlan la capa de transporte ( 532f)
ltstringgt Parte de la STL relativa a contenedores tipo string ( ) una generalizacioacuten de las cadenas alfanumeacutericas para albergar cadenas de objetos
lttypeinfogt Mecanismo de identificacioacuten de tipos en tiempo de ejecucioacuten ( 4914)
ltutilitygt Parte de la STL que contiene elementos auxiliares como operadores y pares (pairs)
ltvalarraygt Parte de la libreriacutea numeacuterica de la STL relativa a manejo de matrices numeacutericas ()
ltvectorgt Parte de la STL relativa a los contenedores tipo vector una generalizacioacuten de las matrices unidimensionales CC++ ( 511c1)
Es digno de mencioacuten que aunque generalmente las libreriacuteas no aportan ninguna caracteriacutestica al lenguaje (se supone que son utilidades auxiliares que no forman parte del lenguaje propiamente dicho) una pequentildea porcioacuten de la Libreriacutea Estaacutendar C++ siacute aporta caracteriacutesticas 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 identificacioacuten
de tipos en tiempo de ejecucioacuten representado por el operador typeid Rutinas de inicio y terminacioacuten Las excepciones estaacutendar lanzadas por los algoritmos anteriores
Sinopsis
Al tratar de la construccioacuten de un programa sentildealamos que en ocasiones no se desea construir un ejecutable al menos no en el sentido tradicional del teacutermino sino una libreriacutea y que estas libreriacuteas son trozos de coacutedigo que contienen alguna funcionalidad pre-construida que puede ser utilizada por un ejecutable Por supuesto las libreriacuteas contienen en su interior variables y funciones Si como suponemos son libreriacuteas C++ lo maacutes probable es que estas variables y funciones esteacuten encapsuladas en forma de clases Observe que la idea central de libreriacutea es precisamente la de ser un moacutedulo de software preconstruido -generalmente por terderos- para cuya utilizacioacuten no es necesario conocer los detalles iacutentimos de su funcionamiento sino su interfaz Es decir que respuestas nos puede dar y coacutemo hay que preguntar -a la libreriacutea- para obtenerlas
En general el teacutermino libreriacutea se utiliza para referirse a un conjunto de moacutedulos objeto obj o (resultados de compilacioacuten) agrupados en un solo fichero que suele tener las extensiones lib bpl [6] a dll etc Estos ficheros permiten tratar las colecciones de moacutedulos como una sola unidad y representan una forma muy conveniente para el manejo y desarrollo de aplicaciones grandes ademaacutes de ser un concepto muy feacutertil para la industria del software ya que permiten la existencia de las libreriacuteas de los propios compiladores y de un mercado de utilidades y componentes adicionales Son las denominadas libreriacuteas 3pp (de terceras partes) en referencia a que no son incluidas de forma estaacutendar con los compiladores ni creadas por el programador de la aplicacioacuten
En este sentido el software se parece a cualquier otro mercado de componentes Ademaacutes de las libreriacuteas maacutes o menos extensas que acompantildean a los compiladores pueden adquirirse otras que permiten antildeadir a nuestros programas las funcionalidades maacutes diversas sin necesidad de ser un experto en cada aacuterea de la programacioacuten y sin necesidad de que tengamos que estar reinventando la rueda constantemente Si quiere una opinioacuten autorizada -en ingleacutes- sobre la filosofiacutea de uso e importancia de las libreriacuteas 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 libreriacuteas estaacuteticas y dinaacutemicas que aunque comparten el mismo nombre geneacuterico libreriacutea utilizan mecanismos distintos para proporcionar su funcionalidad al ejecutable
En ambos casos es costumbre que junto a las libreriacuteas propiamente dichas (ficheros lib a dll etc) se incluya un fichero h denominado de cabecera
porque es tradicioacuten utilizar las primeras liacuteneas del programa para poner las directivas include que los incluiraacuten en el fuente durante la fase de preproceso Este fichero contiene las declaraciones de las entidades contenidas en la libreriacutea asiacute como las macros y constantes predefinidas utilizadas en ella de forma que el programador solo tiene que incluir el correspondiente fichero h en su aplicacioacuten para poder utilizar los recursos de la libreriacutea en cuestioacuten (recuerde que en CC++ es imprescindible incluir la declaracioacuten de cualquier funcioacuten o clase antes de su utilizacioacuten Este sistema tiene la ventaja adicional de que proporciona al usuario la informacioacuten miacutenima para su uso Es decir la interfaz de las funciones o clases que utilizaraacute En el caso de funciones esto se concreta en el prototipo en el caso de clases en la especificacioacuten de sus meacutetodos y propiedades puacuteblicas
Libreriacuteas estaacuteticas
Denominadas tambieacuten libreriacuteas-objeto son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensioacuten lib a etc junto con uno o varios ficheros de cabecera (generalmente h)
Nota una posicioacuten extrema la constituyen aquellas libreriacuteas en las que toda la funcionalidad se ha incluido en el fichero de cabecera h en cuyo caso no existen los moacutedulos compilados lib a etc Es el caso de la Libreriacutea Estaacutendar de Plantillas STL que estaacute 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 informacioacuten miacutenima indispensable para utilizar la libreriacutea (la interfaz) incluyendo la operatoria en forma de ficheros compilados La razoacuten no suele ser otra que proteger la propiedad intelectual (el know how)
Durante la construccioacuten de la aplicacioacuten el preprocesador incluye en los fuentes los ficheros de cabecera Posteriormente durante la fase de enlazado el linker incluye en el ejecutable los moacutedulos correspondientes a las funciones y clases de libreriacutea que hayan sido utilizadas en el programa de forma que el conjunto entra a formar parte del ejecutable De ahiacute su nombre Libreriacuteas enlazadas estaacuteticamente
Dejando aparte consideraciones de comodidad y rapidez el resultado de utilizar una de tales libreriacuteas no se diferencia en nada al que puede obtenerse escribiendo en al fuente las funciones o clases correspondientes y compilaacutendolas como un moacutedulo maacutes de nuestra aplicacioacuten
Nota genralmente los compiladores disponen de herramientas especiacuteficas para la creacioacuten de libreriacuteas estaacuteticas Por ejemplo la del compilador Borland C++ es el ejecutable TLIBEXE las de GNU se denominan ar y ranlib Como
tendremos ocasioacuten de ver en los ejemplos tambieacuten pueden crearse mediante opciones especiacuteficas en la orden de compilacioacuten
sect211 Diccionario
Junto con los moacutedulos obj que las componen las libreriacuteas estaacuteticas incluyen una especie de iacutendice o diccionario con informacioacuten sobre su contenido Este iacutendice contiene los nombres de los recursos puacuteblicos de los distintos moacutedulos (que pueden ser accedidos desde el exterior) y su direccioacuten Estos nombres deben ser distintos para evitar ambiguumledades 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 libreriacutea estaacutetica a partir de uno o varios ficheros relocalizables (objetos) el proceso de incluir esta tabla o diccionario de siacutembolos puede ejecutarse en un solo paso o en dos aunque siempre en el momento de crear la libreriacutea Por ejemplo tlib de Boland crea la libreriacutea y la tabla en un solo proceso En cambio ar de GNU puede crear la libreriacutea y posteriormente antildeadir la tabla (esto uacuteltimo puede tambieacuten hacerse con ranlib) Cuando se antildeade un nuevo moacutedulo a una libreriacutea existente la misma herramienta que antildeade el contenido se encarga de actualizar el iacutendice
sect22 Libreriacuteas dinaacutemicas
Otra forma de antildeadir funcionalidad a un ejecutable son las denominadas libreriacuteas de enlazado dinaacutemico (repasar en el significado de enlazado dinaacutemico) generalmente conocidas como DLLs acroacutenimo de su nombre en ingleacutes (Dynamic Linked Library) Estas libreriacuteas se utilizan mucho en la programacioacuten para el SO Windows Este Sistema contiene un gran nuacutemero de tales libreriacuteas de terminacioacuten DLL aunque en realidad pueden tener cualquier otra terminacioacuten EXE FON BPI DRV etc Cualquiera que sea su terminacioacuten de forma geneacuterica nos referiremos a ellas como DLLs nombre por el que son maacutes conocidas
Nota la programacioacuten tradicional de aplicaciones Windows utilizando la API del Sistema es en realidad una sucesioacuten de invocacioacuten a funciones contenidas en libreriacuteas de este tipo En realidad este Sistema Operativo estaacute constituido por un conjunto de DLLs la mayoriacutea 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 extensioacuten del propio Windows ( PW2E Petzold p878)
Diferencias libreriacutea Estaacutetica versus Dinaacutemica
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Estaacutendar La uacuteltima versioacuten ISOIEC 14882 del antildeo 1998 especifica que se compone de 32 ficheros de cabecera de nombres fijos y conocidos agrupados seguacuten la funcionalidad de los algoritmos Son los siguientes
Ficheros Funcionalidadfunciones
ltalgorithmgt Parte de la STL que describe los algoritmos
ltbitsetgt Parte de la STL relativa a contenedores tipo bitset Set de valores booleanos
ltcomplexgt Parte de la libreriacutea numeacuterica de la STL relativa a los
ltdequegt Parte de la STL relativa a contenedores tipo deque un tipo de colas Double-ended-queue
ltexceptiongt Parte de la libreriacutea de diagnoacutestico relativa al manejo de excepciones
ltfstreamgt Flujos haciadesde ficheros
ltfunctionalgt Parte de la STL relativa a Objetos-funcioacuten
ltiomanipgt Manipuladores
ltiosgt Supreclases para manejo de flujos de ES
ltiosfwdgt Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estaacutendar Por ejemplo ostream
ltiostreamgt Parte del a STL que contiene los algoritmos estaacutendar de ES
ltistreamgt Algoritmos estaacutendar de flujos de entrada
ltiteratorgt Parte de la STL relacionada con iteradores un tipo de puntero que permite utilizar los algoritmos de la Libreriacutea con las estructuras de datos representadas por los contenedores
ltlimitsgt Descripcioacuten de propiedades dependientes de la implementacioacuten que afectan a los tipos fundamentales
ltlistgt Parte de la STL relativa a contenedores tipo list listas doblemente enlazadas
ltlocalegt Parte de la STL relativa a la internacionalizacioacuten
ltmapgt Parte de la STL relativa a contenedores tipo map ( 511e4)
ltmemorygt Utilidades relativas a la gestioacuten de memoria incluyendo asignadores y punteros inteligentes (auto_ptr)
ltnewgt Manejo de memoria dinaacutemica
ltnumericgt Parte de la libreriacutea numeacuterica de la STL relativa a operaciones numeacutericas
ltostreamgt Algoritmos estaacutendar para los flujos de salida
ltqueuegt Parte de la STL relativa a contenedores tipo queue colas de objetos ( 18)
ltsetgt Parte de la STL relativa a contenedores tipo set ( 511e2)
ltsstreamgt Flujos haciadesde cadenas alfanumeacutericas
ltstackgt Parte de la STL relativa a contenedores tipo stack ( 511c5) pilas de objetos ( 18)
ltstdexceptgt 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 tambieacuten pueden utilizar excepciones para reportar errores en sus propios programas ( 161a)
ltstreambufgt Parte de la STL relativa al Almacenamiento de flujos de ES (Stream buffers) Define los tipos que controlan la capa de transporte ( 532f)
ltstringgt Parte de la STL relativa a contenedores tipo string ( ) una generalizacioacuten de las cadenas alfanumeacutericas para albergar cadenas de objetos
lttypeinfogt Mecanismo de identificacioacuten de tipos en tiempo de ejecucioacuten ( 4914)
ltutilitygt Parte de la STL que contiene elementos auxiliares como operadores y pares (pairs)
ltvalarraygt Parte de la libreriacutea numeacuterica de la STL relativa a manejo de matrices numeacutericas ()
ltvectorgt Parte de la STL relativa a los contenedores tipo vector una generalizacioacuten de las matrices unidimensionales CC++ ( 511c1)
Es digno de mencioacuten que aunque generalmente las libreriacuteas no aportan ninguna caracteriacutestica al lenguaje (se supone que son utilidades auxiliares que no forman parte del lenguaje propiamente dicho) una pequentildea porcioacuten de la Libreriacutea Estaacutendar C++ siacute aporta caracteriacutesticas 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 identificacioacuten
de tipos en tiempo de ejecucioacuten representado por el operador typeid Rutinas de inicio y terminacioacuten Las excepciones estaacutendar lanzadas por los algoritmos anteriores
Sinopsis
Al tratar de la construccioacuten de un programa sentildealamos que en ocasiones no se desea construir un ejecutable al menos no en el sentido tradicional del teacutermino sino una libreriacutea y que estas libreriacuteas son trozos de coacutedigo que contienen alguna funcionalidad pre-construida que puede ser utilizada por un ejecutable Por supuesto las libreriacuteas contienen en su interior variables y funciones Si como suponemos son libreriacuteas C++ lo maacutes probable es que estas variables y funciones esteacuten encapsuladas en forma de clases Observe que la idea central de libreriacutea es precisamente la de ser un moacutedulo de software preconstruido -generalmente por terderos- para cuya utilizacioacuten no es necesario conocer los detalles iacutentimos de su funcionamiento sino su interfaz Es decir que respuestas nos puede dar y coacutemo hay que preguntar -a la libreriacutea- para obtenerlas
En general el teacutermino libreriacutea se utiliza para referirse a un conjunto de moacutedulos objeto obj o (resultados de compilacioacuten) agrupados en un solo fichero que suele tener las extensiones lib bpl [6] a dll etc Estos ficheros permiten tratar las colecciones de moacutedulos como una sola unidad y representan una forma muy conveniente para el manejo y desarrollo de aplicaciones grandes ademaacutes de ser un concepto muy feacutertil para la industria del software ya que permiten la existencia de las libreriacuteas de los propios compiladores y de un mercado de utilidades y componentes adicionales Son las denominadas libreriacuteas 3pp (de terceras partes) en referencia a que no son incluidas de forma estaacutendar con los compiladores ni creadas por el programador de la aplicacioacuten
En este sentido el software se parece a cualquier otro mercado de componentes Ademaacutes de las libreriacuteas maacutes o menos extensas que acompantildean a los compiladores pueden adquirirse otras que permiten antildeadir a nuestros programas las funcionalidades maacutes diversas sin necesidad de ser un experto en cada aacuterea de la programacioacuten y sin necesidad de que tengamos que estar reinventando la rueda constantemente Si quiere una opinioacuten autorizada -en ingleacutes- sobre la filosofiacutea de uso e importancia de las libreriacuteas 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 libreriacuteas estaacuteticas y dinaacutemicas que aunque comparten el mismo nombre geneacuterico libreriacutea utilizan mecanismos distintos para proporcionar su funcionalidad al ejecutable
En ambos casos es costumbre que junto a las libreriacuteas propiamente dichas (ficheros lib a dll etc) se incluya un fichero h denominado de cabecera
porque es tradicioacuten utilizar las primeras liacuteneas del programa para poner las directivas include que los incluiraacuten en el fuente durante la fase de preproceso Este fichero contiene las declaraciones de las entidades contenidas en la libreriacutea asiacute como las macros y constantes predefinidas utilizadas en ella de forma que el programador solo tiene que incluir el correspondiente fichero h en su aplicacioacuten para poder utilizar los recursos de la libreriacutea en cuestioacuten (recuerde que en CC++ es imprescindible incluir la declaracioacuten de cualquier funcioacuten o clase antes de su utilizacioacuten Este sistema tiene la ventaja adicional de que proporciona al usuario la informacioacuten miacutenima para su uso Es decir la interfaz de las funciones o clases que utilizaraacute En el caso de funciones esto se concreta en el prototipo en el caso de clases en la especificacioacuten de sus meacutetodos y propiedades puacuteblicas
Libreriacuteas estaacuteticas
Denominadas tambieacuten libreriacuteas-objeto son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensioacuten lib a etc junto con uno o varios ficheros de cabecera (generalmente h)
Nota una posicioacuten extrema la constituyen aquellas libreriacuteas en las que toda la funcionalidad se ha incluido en el fichero de cabecera h en cuyo caso no existen los moacutedulos compilados lib a etc Es el caso de la Libreriacutea Estaacutendar de Plantillas STL que estaacute 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 informacioacuten miacutenima indispensable para utilizar la libreriacutea (la interfaz) incluyendo la operatoria en forma de ficheros compilados La razoacuten no suele ser otra que proteger la propiedad intelectual (el know how)
Durante la construccioacuten de la aplicacioacuten el preprocesador incluye en los fuentes los ficheros de cabecera Posteriormente durante la fase de enlazado el linker incluye en el ejecutable los moacutedulos correspondientes a las funciones y clases de libreriacutea que hayan sido utilizadas en el programa de forma que el conjunto entra a formar parte del ejecutable De ahiacute su nombre Libreriacuteas enlazadas estaacuteticamente
Dejando aparte consideraciones de comodidad y rapidez el resultado de utilizar una de tales libreriacuteas no se diferencia en nada al que puede obtenerse escribiendo en al fuente las funciones o clases correspondientes y compilaacutendolas como un moacutedulo maacutes de nuestra aplicacioacuten
Nota genralmente los compiladores disponen de herramientas especiacuteficas para la creacioacuten de libreriacuteas estaacuteticas Por ejemplo la del compilador Borland C++ es el ejecutable TLIBEXE las de GNU se denominan ar y ranlib Como
tendremos ocasioacuten de ver en los ejemplos tambieacuten pueden crearse mediante opciones especiacuteficas en la orden de compilacioacuten
sect211 Diccionario
Junto con los moacutedulos obj que las componen las libreriacuteas estaacuteticas incluyen una especie de iacutendice o diccionario con informacioacuten sobre su contenido Este iacutendice contiene los nombres de los recursos puacuteblicos de los distintos moacutedulos (que pueden ser accedidos desde el exterior) y su direccioacuten Estos nombres deben ser distintos para evitar ambiguumledades 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 libreriacutea estaacutetica a partir de uno o varios ficheros relocalizables (objetos) el proceso de incluir esta tabla o diccionario de siacutembolos puede ejecutarse en un solo paso o en dos aunque siempre en el momento de crear la libreriacutea Por ejemplo tlib de Boland crea la libreriacutea y la tabla en un solo proceso En cambio ar de GNU puede crear la libreriacutea y posteriormente antildeadir la tabla (esto uacuteltimo puede tambieacuten hacerse con ranlib) Cuando se antildeade un nuevo moacutedulo a una libreriacutea existente la misma herramienta que antildeade el contenido se encarga de actualizar el iacutendice
sect22 Libreriacuteas dinaacutemicas
Otra forma de antildeadir funcionalidad a un ejecutable son las denominadas libreriacuteas de enlazado dinaacutemico (repasar en el significado de enlazado dinaacutemico) generalmente conocidas como DLLs acroacutenimo de su nombre en ingleacutes (Dynamic Linked Library) Estas libreriacuteas se utilizan mucho en la programacioacuten para el SO Windows Este Sistema contiene un gran nuacutemero de tales libreriacuteas de terminacioacuten DLL aunque en realidad pueden tener cualquier otra terminacioacuten EXE FON BPI DRV etc Cualquiera que sea su terminacioacuten de forma geneacuterica nos referiremos a ellas como DLLs nombre por el que son maacutes conocidas
Nota la programacioacuten tradicional de aplicaciones Windows utilizando la API del Sistema es en realidad una sucesioacuten de invocacioacuten a funciones contenidas en libreriacuteas de este tipo En realidad este Sistema Operativo estaacute constituido por un conjunto de DLLs la mayoriacutea 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 extensioacuten del propio Windows ( PW2E Petzold p878)
Diferencias libreriacutea Estaacutetica versus Dinaacutemica
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
ltsstreamgt Flujos haciadesde cadenas alfanumeacutericas
ltstackgt Parte de la STL relativa a contenedores tipo stack ( 511c5) pilas de objetos ( 18)
ltstdexceptgt 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 tambieacuten pueden utilizar excepciones para reportar errores en sus propios programas ( 161a)
ltstreambufgt Parte de la STL relativa al Almacenamiento de flujos de ES (Stream buffers) Define los tipos que controlan la capa de transporte ( 532f)
ltstringgt Parte de la STL relativa a contenedores tipo string ( ) una generalizacioacuten de las cadenas alfanumeacutericas para albergar cadenas de objetos
lttypeinfogt Mecanismo de identificacioacuten de tipos en tiempo de ejecucioacuten ( 4914)
ltutilitygt Parte de la STL que contiene elementos auxiliares como operadores y pares (pairs)
ltvalarraygt Parte de la libreriacutea numeacuterica de la STL relativa a manejo de matrices numeacutericas ()
ltvectorgt Parte de la STL relativa a los contenedores tipo vector una generalizacioacuten de las matrices unidimensionales CC++ ( 511c1)
Es digno de mencioacuten que aunque generalmente las libreriacuteas no aportan ninguna caracteriacutestica al lenguaje (se supone que son utilidades auxiliares que no forman parte del lenguaje propiamente dicho) una pequentildea porcioacuten de la Libreriacutea Estaacutendar C++ siacute aporta caracteriacutesticas 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 identificacioacuten
de tipos en tiempo de ejecucioacuten representado por el operador typeid Rutinas de inicio y terminacioacuten Las excepciones estaacutendar lanzadas por los algoritmos anteriores
Sinopsis
Al tratar de la construccioacuten de un programa sentildealamos que en ocasiones no se desea construir un ejecutable al menos no en el sentido tradicional del teacutermino sino una libreriacutea y que estas libreriacuteas son trozos de coacutedigo que contienen alguna funcionalidad pre-construida que puede ser utilizada por un ejecutable Por supuesto las libreriacuteas contienen en su interior variables y funciones Si como suponemos son libreriacuteas C++ lo maacutes probable es que estas variables y funciones esteacuten encapsuladas en forma de clases Observe que la idea central de libreriacutea es precisamente la de ser un moacutedulo de software preconstruido -generalmente por terderos- para cuya utilizacioacuten no es necesario conocer los detalles iacutentimos de su funcionamiento sino su interfaz Es decir que respuestas nos puede dar y coacutemo hay que preguntar -a la libreriacutea- para obtenerlas
En general el teacutermino libreriacutea se utiliza para referirse a un conjunto de moacutedulos objeto obj o (resultados de compilacioacuten) agrupados en un solo fichero que suele tener las extensiones lib bpl [6] a dll etc Estos ficheros permiten tratar las colecciones de moacutedulos como una sola unidad y representan una forma muy conveniente para el manejo y desarrollo de aplicaciones grandes ademaacutes de ser un concepto muy feacutertil para la industria del software ya que permiten la existencia de las libreriacuteas de los propios compiladores y de un mercado de utilidades y componentes adicionales Son las denominadas libreriacuteas 3pp (de terceras partes) en referencia a que no son incluidas de forma estaacutendar con los compiladores ni creadas por el programador de la aplicacioacuten
En este sentido el software se parece a cualquier otro mercado de componentes Ademaacutes de las libreriacuteas maacutes o menos extensas que acompantildean a los compiladores pueden adquirirse otras que permiten antildeadir a nuestros programas las funcionalidades maacutes diversas sin necesidad de ser un experto en cada aacuterea de la programacioacuten y sin necesidad de que tengamos que estar reinventando la rueda constantemente Si quiere una opinioacuten autorizada -en ingleacutes- sobre la filosofiacutea de uso e importancia de las libreriacuteas 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 libreriacuteas estaacuteticas y dinaacutemicas que aunque comparten el mismo nombre geneacuterico libreriacutea utilizan mecanismos distintos para proporcionar su funcionalidad al ejecutable
En ambos casos es costumbre que junto a las libreriacuteas propiamente dichas (ficheros lib a dll etc) se incluya un fichero h denominado de cabecera
porque es tradicioacuten utilizar las primeras liacuteneas del programa para poner las directivas include que los incluiraacuten en el fuente durante la fase de preproceso Este fichero contiene las declaraciones de las entidades contenidas en la libreriacutea asiacute como las macros y constantes predefinidas utilizadas en ella de forma que el programador solo tiene que incluir el correspondiente fichero h en su aplicacioacuten para poder utilizar los recursos de la libreriacutea en cuestioacuten (recuerde que en CC++ es imprescindible incluir la declaracioacuten de cualquier funcioacuten o clase antes de su utilizacioacuten Este sistema tiene la ventaja adicional de que proporciona al usuario la informacioacuten miacutenima para su uso Es decir la interfaz de las funciones o clases que utilizaraacute En el caso de funciones esto se concreta en el prototipo en el caso de clases en la especificacioacuten de sus meacutetodos y propiedades puacuteblicas
Libreriacuteas estaacuteticas
Denominadas tambieacuten libreriacuteas-objeto son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensioacuten lib a etc junto con uno o varios ficheros de cabecera (generalmente h)
Nota una posicioacuten extrema la constituyen aquellas libreriacuteas en las que toda la funcionalidad se ha incluido en el fichero de cabecera h en cuyo caso no existen los moacutedulos compilados lib a etc Es el caso de la Libreriacutea Estaacutendar de Plantillas STL que estaacute 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 informacioacuten miacutenima indispensable para utilizar la libreriacutea (la interfaz) incluyendo la operatoria en forma de ficheros compilados La razoacuten no suele ser otra que proteger la propiedad intelectual (el know how)
Durante la construccioacuten de la aplicacioacuten el preprocesador incluye en los fuentes los ficheros de cabecera Posteriormente durante la fase de enlazado el linker incluye en el ejecutable los moacutedulos correspondientes a las funciones y clases de libreriacutea que hayan sido utilizadas en el programa de forma que el conjunto entra a formar parte del ejecutable De ahiacute su nombre Libreriacuteas enlazadas estaacuteticamente
Dejando aparte consideraciones de comodidad y rapidez el resultado de utilizar una de tales libreriacuteas no se diferencia en nada al que puede obtenerse escribiendo en al fuente las funciones o clases correspondientes y compilaacutendolas como un moacutedulo maacutes de nuestra aplicacioacuten
Nota genralmente los compiladores disponen de herramientas especiacuteficas para la creacioacuten de libreriacuteas estaacuteticas Por ejemplo la del compilador Borland C++ es el ejecutable TLIBEXE las de GNU se denominan ar y ranlib Como
tendremos ocasioacuten de ver en los ejemplos tambieacuten pueden crearse mediante opciones especiacuteficas en la orden de compilacioacuten
sect211 Diccionario
Junto con los moacutedulos obj que las componen las libreriacuteas estaacuteticas incluyen una especie de iacutendice o diccionario con informacioacuten sobre su contenido Este iacutendice contiene los nombres de los recursos puacuteblicos de los distintos moacutedulos (que pueden ser accedidos desde el exterior) y su direccioacuten Estos nombres deben ser distintos para evitar ambiguumledades 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 libreriacutea estaacutetica a partir de uno o varios ficheros relocalizables (objetos) el proceso de incluir esta tabla o diccionario de siacutembolos puede ejecutarse en un solo paso o en dos aunque siempre en el momento de crear la libreriacutea Por ejemplo tlib de Boland crea la libreriacutea y la tabla en un solo proceso En cambio ar de GNU puede crear la libreriacutea y posteriormente antildeadir la tabla (esto uacuteltimo puede tambieacuten hacerse con ranlib) Cuando se antildeade un nuevo moacutedulo a una libreriacutea existente la misma herramienta que antildeade el contenido se encarga de actualizar el iacutendice
sect22 Libreriacuteas dinaacutemicas
Otra forma de antildeadir funcionalidad a un ejecutable son las denominadas libreriacuteas de enlazado dinaacutemico (repasar en el significado de enlazado dinaacutemico) generalmente conocidas como DLLs acroacutenimo de su nombre en ingleacutes (Dynamic Linked Library) Estas libreriacuteas se utilizan mucho en la programacioacuten para el SO Windows Este Sistema contiene un gran nuacutemero de tales libreriacuteas de terminacioacuten DLL aunque en realidad pueden tener cualquier otra terminacioacuten EXE FON BPI DRV etc Cualquiera que sea su terminacioacuten de forma geneacuterica nos referiremos a ellas como DLLs nombre por el que son maacutes conocidas
Nota la programacioacuten tradicional de aplicaciones Windows utilizando la API del Sistema es en realidad una sucesioacuten de invocacioacuten a funciones contenidas en libreriacuteas de este tipo En realidad este Sistema Operativo estaacute constituido por un conjunto de DLLs la mayoriacutea 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 extensioacuten del propio Windows ( PW2E Petzold p878)
Diferencias libreriacutea Estaacutetica versus Dinaacutemica
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Al tratar de la construccioacuten de un programa sentildealamos que en ocasiones no se desea construir un ejecutable al menos no en el sentido tradicional del teacutermino sino una libreriacutea y que estas libreriacuteas son trozos de coacutedigo que contienen alguna funcionalidad pre-construida que puede ser utilizada por un ejecutable Por supuesto las libreriacuteas contienen en su interior variables y funciones Si como suponemos son libreriacuteas C++ lo maacutes probable es que estas variables y funciones esteacuten encapsuladas en forma de clases Observe que la idea central de libreriacutea es precisamente la de ser un moacutedulo de software preconstruido -generalmente por terderos- para cuya utilizacioacuten no es necesario conocer los detalles iacutentimos de su funcionamiento sino su interfaz Es decir que respuestas nos puede dar y coacutemo hay que preguntar -a la libreriacutea- para obtenerlas
En general el teacutermino libreriacutea se utiliza para referirse a un conjunto de moacutedulos objeto obj o (resultados de compilacioacuten) agrupados en un solo fichero que suele tener las extensiones lib bpl [6] a dll etc Estos ficheros permiten tratar las colecciones de moacutedulos como una sola unidad y representan una forma muy conveniente para el manejo y desarrollo de aplicaciones grandes ademaacutes de ser un concepto muy feacutertil para la industria del software ya que permiten la existencia de las libreriacuteas de los propios compiladores y de un mercado de utilidades y componentes adicionales Son las denominadas libreriacuteas 3pp (de terceras partes) en referencia a que no son incluidas de forma estaacutendar con los compiladores ni creadas por el programador de la aplicacioacuten
En este sentido el software se parece a cualquier otro mercado de componentes Ademaacutes de las libreriacuteas maacutes o menos extensas que acompantildean a los compiladores pueden adquirirse otras que permiten antildeadir a nuestros programas las funcionalidades maacutes diversas sin necesidad de ser un experto en cada aacuterea de la programacioacuten y sin necesidad de que tengamos que estar reinventando la rueda constantemente Si quiere una opinioacuten autorizada -en ingleacutes- sobre la filosofiacutea de uso e importancia de las libreriacuteas 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 libreriacuteas estaacuteticas y dinaacutemicas que aunque comparten el mismo nombre geneacuterico libreriacutea utilizan mecanismos distintos para proporcionar su funcionalidad al ejecutable
En ambos casos es costumbre que junto a las libreriacuteas propiamente dichas (ficheros lib a dll etc) se incluya un fichero h denominado de cabecera
porque es tradicioacuten utilizar las primeras liacuteneas del programa para poner las directivas include que los incluiraacuten en el fuente durante la fase de preproceso Este fichero contiene las declaraciones de las entidades contenidas en la libreriacutea asiacute como las macros y constantes predefinidas utilizadas en ella de forma que el programador solo tiene que incluir el correspondiente fichero h en su aplicacioacuten para poder utilizar los recursos de la libreriacutea en cuestioacuten (recuerde que en CC++ es imprescindible incluir la declaracioacuten de cualquier funcioacuten o clase antes de su utilizacioacuten Este sistema tiene la ventaja adicional de que proporciona al usuario la informacioacuten miacutenima para su uso Es decir la interfaz de las funciones o clases que utilizaraacute En el caso de funciones esto se concreta en el prototipo en el caso de clases en la especificacioacuten de sus meacutetodos y propiedades puacuteblicas
Libreriacuteas estaacuteticas
Denominadas tambieacuten libreriacuteas-objeto son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensioacuten lib a etc junto con uno o varios ficheros de cabecera (generalmente h)
Nota una posicioacuten extrema la constituyen aquellas libreriacuteas en las que toda la funcionalidad se ha incluido en el fichero de cabecera h en cuyo caso no existen los moacutedulos compilados lib a etc Es el caso de la Libreriacutea Estaacutendar de Plantillas STL que estaacute 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 informacioacuten miacutenima indispensable para utilizar la libreriacutea (la interfaz) incluyendo la operatoria en forma de ficheros compilados La razoacuten no suele ser otra que proteger la propiedad intelectual (el know how)
Durante la construccioacuten de la aplicacioacuten el preprocesador incluye en los fuentes los ficheros de cabecera Posteriormente durante la fase de enlazado el linker incluye en el ejecutable los moacutedulos correspondientes a las funciones y clases de libreriacutea que hayan sido utilizadas en el programa de forma que el conjunto entra a formar parte del ejecutable De ahiacute su nombre Libreriacuteas enlazadas estaacuteticamente
Dejando aparte consideraciones de comodidad y rapidez el resultado de utilizar una de tales libreriacuteas no se diferencia en nada al que puede obtenerse escribiendo en al fuente las funciones o clases correspondientes y compilaacutendolas como un moacutedulo maacutes de nuestra aplicacioacuten
Nota genralmente los compiladores disponen de herramientas especiacuteficas para la creacioacuten de libreriacuteas estaacuteticas Por ejemplo la del compilador Borland C++ es el ejecutable TLIBEXE las de GNU se denominan ar y ranlib Como
tendremos ocasioacuten de ver en los ejemplos tambieacuten pueden crearse mediante opciones especiacuteficas en la orden de compilacioacuten
sect211 Diccionario
Junto con los moacutedulos obj que las componen las libreriacuteas estaacuteticas incluyen una especie de iacutendice o diccionario con informacioacuten sobre su contenido Este iacutendice contiene los nombres de los recursos puacuteblicos de los distintos moacutedulos (que pueden ser accedidos desde el exterior) y su direccioacuten Estos nombres deben ser distintos para evitar ambiguumledades 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 libreriacutea estaacutetica a partir de uno o varios ficheros relocalizables (objetos) el proceso de incluir esta tabla o diccionario de siacutembolos puede ejecutarse en un solo paso o en dos aunque siempre en el momento de crear la libreriacutea Por ejemplo tlib de Boland crea la libreriacutea y la tabla en un solo proceso En cambio ar de GNU puede crear la libreriacutea y posteriormente antildeadir la tabla (esto uacuteltimo puede tambieacuten hacerse con ranlib) Cuando se antildeade un nuevo moacutedulo a una libreriacutea existente la misma herramienta que antildeade el contenido se encarga de actualizar el iacutendice
sect22 Libreriacuteas dinaacutemicas
Otra forma de antildeadir funcionalidad a un ejecutable son las denominadas libreriacuteas de enlazado dinaacutemico (repasar en el significado de enlazado dinaacutemico) generalmente conocidas como DLLs acroacutenimo de su nombre en ingleacutes (Dynamic Linked Library) Estas libreriacuteas se utilizan mucho en la programacioacuten para el SO Windows Este Sistema contiene un gran nuacutemero de tales libreriacuteas de terminacioacuten DLL aunque en realidad pueden tener cualquier otra terminacioacuten EXE FON BPI DRV etc Cualquiera que sea su terminacioacuten de forma geneacuterica nos referiremos a ellas como DLLs nombre por el que son maacutes conocidas
Nota la programacioacuten tradicional de aplicaciones Windows utilizando la API del Sistema es en realidad una sucesioacuten de invocacioacuten a funciones contenidas en libreriacuteas de este tipo En realidad este Sistema Operativo estaacute constituido por un conjunto de DLLs la mayoriacutea 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 extensioacuten del propio Windows ( PW2E Petzold p878)
Diferencias libreriacutea Estaacutetica versus Dinaacutemica
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
porque es tradicioacuten utilizar las primeras liacuteneas del programa para poner las directivas include que los incluiraacuten en el fuente durante la fase de preproceso Este fichero contiene las declaraciones de las entidades contenidas en la libreriacutea asiacute como las macros y constantes predefinidas utilizadas en ella de forma que el programador solo tiene que incluir el correspondiente fichero h en su aplicacioacuten para poder utilizar los recursos de la libreriacutea en cuestioacuten (recuerde que en CC++ es imprescindible incluir la declaracioacuten de cualquier funcioacuten o clase antes de su utilizacioacuten Este sistema tiene la ventaja adicional de que proporciona al usuario la informacioacuten miacutenima para su uso Es decir la interfaz de las funciones o clases que utilizaraacute En el caso de funciones esto se concreta en el prototipo en el caso de clases en la especificacioacuten de sus meacutetodos y propiedades puacuteblicas
Libreriacuteas estaacuteticas
Denominadas tambieacuten libreriacuteas-objeto son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensioacuten lib a etc junto con uno o varios ficheros de cabecera (generalmente h)
Nota una posicioacuten extrema la constituyen aquellas libreriacuteas en las que toda la funcionalidad se ha incluido en el fichero de cabecera h en cuyo caso no existen los moacutedulos compilados lib a etc Es el caso de la Libreriacutea Estaacutendar de Plantillas STL que estaacute 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 informacioacuten miacutenima indispensable para utilizar la libreriacutea (la interfaz) incluyendo la operatoria en forma de ficheros compilados La razoacuten no suele ser otra que proteger la propiedad intelectual (el know how)
Durante la construccioacuten de la aplicacioacuten el preprocesador incluye en los fuentes los ficheros de cabecera Posteriormente durante la fase de enlazado el linker incluye en el ejecutable los moacutedulos correspondientes a las funciones y clases de libreriacutea que hayan sido utilizadas en el programa de forma que el conjunto entra a formar parte del ejecutable De ahiacute su nombre Libreriacuteas enlazadas estaacuteticamente
Dejando aparte consideraciones de comodidad y rapidez el resultado de utilizar una de tales libreriacuteas no se diferencia en nada al que puede obtenerse escribiendo en al fuente las funciones o clases correspondientes y compilaacutendolas como un moacutedulo maacutes de nuestra aplicacioacuten
Nota genralmente los compiladores disponen de herramientas especiacuteficas para la creacioacuten de libreriacuteas estaacuteticas Por ejemplo la del compilador Borland C++ es el ejecutable TLIBEXE las de GNU se denominan ar y ranlib Como
tendremos ocasioacuten de ver en los ejemplos tambieacuten pueden crearse mediante opciones especiacuteficas en la orden de compilacioacuten
sect211 Diccionario
Junto con los moacutedulos obj que las componen las libreriacuteas estaacuteticas incluyen una especie de iacutendice o diccionario con informacioacuten sobre su contenido Este iacutendice contiene los nombres de los recursos puacuteblicos de los distintos moacutedulos (que pueden ser accedidos desde el exterior) y su direccioacuten Estos nombres deben ser distintos para evitar ambiguumledades 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 libreriacutea estaacutetica a partir de uno o varios ficheros relocalizables (objetos) el proceso de incluir esta tabla o diccionario de siacutembolos puede ejecutarse en un solo paso o en dos aunque siempre en el momento de crear la libreriacutea Por ejemplo tlib de Boland crea la libreriacutea y la tabla en un solo proceso En cambio ar de GNU puede crear la libreriacutea y posteriormente antildeadir la tabla (esto uacuteltimo puede tambieacuten hacerse con ranlib) Cuando se antildeade un nuevo moacutedulo a una libreriacutea existente la misma herramienta que antildeade el contenido se encarga de actualizar el iacutendice
sect22 Libreriacuteas dinaacutemicas
Otra forma de antildeadir funcionalidad a un ejecutable son las denominadas libreriacuteas de enlazado dinaacutemico (repasar en el significado de enlazado dinaacutemico) generalmente conocidas como DLLs acroacutenimo de su nombre en ingleacutes (Dynamic Linked Library) Estas libreriacuteas se utilizan mucho en la programacioacuten para el SO Windows Este Sistema contiene un gran nuacutemero de tales libreriacuteas de terminacioacuten DLL aunque en realidad pueden tener cualquier otra terminacioacuten EXE FON BPI DRV etc Cualquiera que sea su terminacioacuten de forma geneacuterica nos referiremos a ellas como DLLs nombre por el que son maacutes conocidas
Nota la programacioacuten tradicional de aplicaciones Windows utilizando la API del Sistema es en realidad una sucesioacuten de invocacioacuten a funciones contenidas en libreriacuteas de este tipo En realidad este Sistema Operativo estaacute constituido por un conjunto de DLLs la mayoriacutea 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 extensioacuten del propio Windows ( PW2E Petzold p878)
Diferencias libreriacutea Estaacutetica versus Dinaacutemica
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
tendremos ocasioacuten de ver en los ejemplos tambieacuten pueden crearse mediante opciones especiacuteficas en la orden de compilacioacuten
sect211 Diccionario
Junto con los moacutedulos obj que las componen las libreriacuteas estaacuteticas incluyen una especie de iacutendice o diccionario con informacioacuten sobre su contenido Este iacutendice contiene los nombres de los recursos puacuteblicos de los distintos moacutedulos (que pueden ser accedidos desde el exterior) y su direccioacuten Estos nombres deben ser distintos para evitar ambiguumledades 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 libreriacutea estaacutetica a partir de uno o varios ficheros relocalizables (objetos) el proceso de incluir esta tabla o diccionario de siacutembolos puede ejecutarse en un solo paso o en dos aunque siempre en el momento de crear la libreriacutea Por ejemplo tlib de Boland crea la libreriacutea y la tabla en un solo proceso En cambio ar de GNU puede crear la libreriacutea y posteriormente antildeadir la tabla (esto uacuteltimo puede tambieacuten hacerse con ranlib) Cuando se antildeade un nuevo moacutedulo a una libreriacutea existente la misma herramienta que antildeade el contenido se encarga de actualizar el iacutendice
sect22 Libreriacuteas dinaacutemicas
Otra forma de antildeadir funcionalidad a un ejecutable son las denominadas libreriacuteas de enlazado dinaacutemico (repasar en el significado de enlazado dinaacutemico) generalmente conocidas como DLLs acroacutenimo de su nombre en ingleacutes (Dynamic Linked Library) Estas libreriacuteas se utilizan mucho en la programacioacuten para el SO Windows Este Sistema contiene un gran nuacutemero de tales libreriacuteas de terminacioacuten DLL aunque en realidad pueden tener cualquier otra terminacioacuten EXE FON BPI DRV etc Cualquiera que sea su terminacioacuten de forma geneacuterica nos referiremos a ellas como DLLs nombre por el que son maacutes conocidas
Nota la programacioacuten tradicional de aplicaciones Windows utilizando la API del Sistema es en realidad una sucesioacuten de invocacioacuten a funciones contenidas en libreriacuteas de este tipo En realidad este Sistema Operativo estaacute constituido por un conjunto de DLLs la mayoriacutea 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 extensioacuten del propio Windows ( PW2E Petzold p878)
Diferencias libreriacutea Estaacutetica versus Dinaacutemica
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Las diferencias maacutes relevantes de las libreriacuteas dinaacutemicas respecto a las estaacuteticas son fundamentalmente dos
Las libreriacuteas estaacuteticas quedan incluidas en el ejecutable mientras las dinaacutemicas son ficheros externos con lo que el tamantildeo de la aplicacioacuten (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 libreriacuteas dinaacutemicas 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 libreriacutea (DLL) en el Sistema Esta caracteriacutestica constituye la razoacuten principal de su utilizacioacuten y es tambieacuten 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 moacutedulos de una libreriacutea estaacutetica es necesario recompilar todos los ejecutables que la utilizan mientras que esto no es necesario en el caso de una libreriacutea dinaacutemica siempre que su interfaz se mantenga
Como consecuencia de lo anterior generalmente es maacutes difiacutecil la depuracioacuten y mantenimiento de aplicaciones que utilizan libreriacuteas dinaacutemicas que las estaacuteticas ya que en el primer caso es necesario controlar queacute versiones de los ejecutables (EXE) son compatibles con queacute versiones de las DLLs y de estas entre siacute de forma que el usuario no utilice un versiones incompatibles de los ficheros que componen la aplicacioacuten
Durante la ejecucioacuten de un ejecutable las libreriacuteas estaacuteticas que hubiesen intervenido en su construccioacuten no necesitan estar presentes en cambio las dinaacutemicas deben estar en el mismo directorio o en el camino de buacutesqueda Path
Las libreriacuteas estaacuteticas solo se utilizan en la fase de construccioacuten del ejecutable Las dinaacutemicas se utilizan durante la ejecucioacuten
Los ejecutables que utilizan libreriacutea estaacutetica solo incorporan los moacutedulos de aquellas que necesitan para resolver sus siacutembolos externos Por contra las libreriacuteas dinaacutemicas deben ser cargadas en su totalidad aunque no solo se utilice una parte de su funcionalidad (no son divisibles)
Las libreriacuteas estaacuteticas que entran a formar parte indivisible del ejecutable son cargadas con el proceso de carga de este Las libreriacuteas dinaacutemicas no necesariamente tienen que cargarse con la carga inicial
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
(aunque pueden serlo) De hecho una libreriacutea dinaacutemica 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 estaacutetico depende del compilador El de enlazado dinaacutemico depende del SO de forma que manteniendo ciertas precauciones las DLLs construidas con un lenguaje y un compilador pueden ser utilizadas por cualquier aplicacioacuten
Utilizar Libreriacuteas
Desde la oacuteptica del programador C++ el manejo de libreriacuteas comprende dos aspectos totalmente diferenciados su utilizacioacuten y quizaacutes la construccioacuten de alguna de ellas si nuestras aplicaciones son medianamente grandes
En cuanto al primer punto es seguro que cualquier aplicacioacuten por pequentildea que sea utilice algunas de la Libreriacutea Estaacutendar Por ejemplo cada vez que en su coacutedigo aparece una sentencia del tipo
cout ltlt Hola mundo ltlt endl
Estaacute utilizando una libreriacutea estaacutetica y cada vez que en la programacioacuten de una aplicacioacuten Windows utiliza un mensaje del tipo
MessageBox(NULL Hola mundo Mi primer programa MB_OK)
Estaacute usando una libreriacutea dinaacutemica En cuanto a su construccioacuten si se dedica a esto de programar en C++ antes o despueacutes pondraacute manos a la obra Por cierto existen empresas de software cuya principal actividad es precisamente fabricar y vender libreriacuteas (ya hemos indicado que el mercado de las 3pp es todo un mundillo dentro de la informaacutetica)
Cualquiera que sea el caso tanto la utilizacioacuten como la construccioacuten son diferentes seguacuten se trate de libreriacuteas estaacuteticas o dinaacutemicas En las paacuteginas que siguen se describen en detalle ambas situaciones Empezaremos por una descripcioacuten general de su funcionamiento para continuar con la descripcioacuten de los pasos necesarios para construirlas A continuacioacuten exponemos los detalles de su utilizacioacuten incluyendo un ejemplo de construccioacuten de un ejecutable que utiliza los recursos de una libreriacutea
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 ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Son librerias que contienen las funciones que vamos a usar en el programa Por lo general se colocan al principio del programa
formato
include ltnombre_funchgt
Librerias mas comunes en C++
stdioh conioh iostreamh stringh ctypeh etc
Funciones maacutes utilizadas en C++
printf scanf malloc free cin cout
Secuencias de escape que actuan como caracteres
secuencia Accion realizada por la 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 Funcioacuten
( ) llamada a funcioacuten
[ ] subiacutendice de un arreglo
punto acceso a miembro de una estructura
-gt Flecha Apunta a miembro
Inversor Loacutegico
- Resta
-- Decrementar en uno
++ Incrementar en uno
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
amp Obtener la direccioacuten de memoria
Obtiene la indireccioacuten (contenido de)
division
modulo (resto de la division)
+ suma
lt menor que
gt mayor que
lt= menor igual
gt= mayor igual
== igualdad de comparacion
= desigualdad
ampamp operador logico AND
|| operador logico OR
condicional evalua dos expresiones
= asignacion
separador de variables constantes y expresiones dentro de funciones estructuras de control etc
sizeof determina el tamantildeo de una variable o una estructura
Un pequentildeo 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 Asignacioacuten
Operador Significado
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
=multiplicado por
= dividido por
= modulo de
+= antildeadir 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 condicioacuten 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 declaracioacuten de las constantes comunes utilizaremos
const int radioTierra = 3959 en millas
const float radioTierraEnKm = 1609 radioTierra
Debemos hacer incapie en lo que son las constante en toda su extensioacuten 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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
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 ltnemonicogt ltfunciongt
por ejemplo
define peso 1645
define imprima(a) printf(ia)
define color(xy) textcolor(x) textbackground(y)
Sentencias de Control
break break
for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
break
continue continue for (n=1 nlt=100 ++n)
scanf(f ampx)
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
if (xlt0)
printf(ERROR- Valor negativo)
continue
do-while
do
sentencia
while (expresioacuten)
do
printf(dn digito++)
while(digito lt=9 )
for for(exp1exp2exp3)
sentencia
for (digito=0 digitolt=9 ++digito)
printf(dn digito)
for (x=0 y=0 x lt y x+=10 y-=10)
goto goto etiqueta
etiqueta sentencia
if (x lt 0)
goto indicador
indicador printf(ERROR)
if if (expresion)
sentencia
if (x lt 0)
printf(fx)
if-else
if (expresion)
sentencia 1
else
sentencia 2
if (estado == S)
tasa=020paga
else
tasa=014paga
return return expresion return (n1 + n2)
switch switch (expresion)
case expresion 1
switch (eleccion = getchar())
case R
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
sentencia 1
sentencia 2
sentencia m
break
case expresion 2
sentencia 1
sentencia 2
sentencia n
break
default
sentencia 1
sentencia 2
sentencia k
printf(ROJO)
break
case B
printf(BLANCO)
break
case A
printf(AZUL)
break
default
printf(ERROR)
while while (expresion)
sentencia
while (digitolt=9)
printf(dn digito++)
ESTRUCTURAS
2 Definida La cual representa la definicioacuten de un tipo de dato creado por el usuario aunque la estructura anterior tambieacuten representa un tipo de dato definido la diferencia radica en que la definida puede ser pasada por
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
paraacutemetro o encabezar los requerimientos de una funcioacuten 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
funcioacuten n
main o funcion principal
Donde existe una prelacioacuten es decir la funcion n-1 accesa todas las funciones menos la funcioacuten n asi la unica funcioacuten que puede disponer de todas las demaacutes es la funcioacuten principal o main
Toda funcioacuten excepto el main debe retornar un valor en caso de que no se retorna nada puede declararse de tipo void (cualquier tipo)
sintaxis
lttipo_retornogt ltnombre_funcioacutengt (param 1 param 2 param n)
la funcioacuten main debe declararse de la siguiente forma
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
main( )
Esta funcioacuten seraacute la primera en ejecutarse
NOTAS
- No se pueden declarar funciones dentro de otras funciones
- Las palabras reservadas deben ir en minusculas
DESCRIPCIOacuteN DE CADA LIBRERIacuteA
Bibliotecas maacutes importantes en C++
iostreamh
Declara en el C++ baacutesico los datos de (IO)
Funciones
Cin Declara los datos de entrada para alas variables
Cout Muestra los datos que uno desea que se vean en la pantalla
stdioh
Define los tipos y macros necesitados para el paquete definido de IO normal en Kernighan y Ritchie extendido bajo el Sistema de UNIX V
Define el estaacutendar de IO predefinido vierte stdin stdout stdprn y stderr y declara IO de datos
Funciones
gets
Sintaxis
include ltstdiohgt
char gets(char s)
Description
Recibe un cadena del ldquostdinrdquo (cadena estaacutendar de entrada)
Gets colecciona una cadena de caracteres terminados por una nueva liacutenea desde la cadena estaacutendar de entrada ldquostdinrdquo y lo pone en s La nueva liacutenea es reemplazada por un caraacutecter nulo (0) en s
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Gets permite las cadenas de la entrada para contener ciertos caracteres del ldquowhitespace o espacio en blancordquo (los espacios etiquetas) Gets vuelve cuando encuentra una nueva liacutenea a toda la nueva liacutenea la copia en s
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdinrdquo
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 ltstdiohgt
int putchar(int c)
Descripcioacuten
putchar(c) es un macro definido para putc(c stdout)
Note Para Win32s o Win32 las aplicaciones de GUI deben remitirse los ldquostdoutrdquo
El Valor de retorno
Si el programa esta bien putchar devuelve el caraacutecter c
Si hay error putchar devuelve EOF
mathh
Mathh realiza caacutelculos matemaacuteticos y conversiones
Cos cosl
Sintaxis
include ltmathhgt
double cos(double x)
long double cosl(long double x)
Descripcioacuten
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Calcula el coseno de un valor
Cos computa el coseno del valor de la entrada El aacutengulo se especifica en los radianes
Cosl es la versioacuten doble larga toma un argumento doble largo y devuelve un resultado doble largo
Esta funcioacuten puede usarse con ldquobcdrdquo 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 traveacutes de _matherr (o _matherrl)
pow powl
Sintaxis
include ltmathhgt
double pow(double x double y)
long double powl(long double x long double y)
Descripcioacuten
Calcula x a la potencia y (xy)
Powl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo
Esta funcioacuten 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 pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Si el argumento x pasoacute al pow o usted llama el pow(00)
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a traveacutes de las funciones _matherr y _matherrl
sqrt sqrtl
Sintaxis
include ltmathhgt
double sqrt(double x)
long double sqrtl(long double x)
Descripcioacuten
Calcula la raiacutez cuadrada positiva
Sqrt calcula la raiacutez cuadrada positiva del argumento x
Sqrtl es la versioacuten larga doble toma argumentos dobles y regresa un resultado doble largo Error que maneja para estas funciones puede ser modificadas a traveacutes de las funciones _matherr y _matherrl
Esta funcioacuten 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 raiacutez cuadrada de x Si x es real y positivo el resultado es positivo Si x es real y negativo el retorno seraacute inconstante global se pone a EDOM (Error de Dominio)
stringh
Declara varios cadenas-manipulacioacuten y memorias de rutinas de manipulacioacuten
Strcpy
Sintaxis
include ltstringhgt
char strcpy(char dest const char src)
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Descripcioacuten
Copia de una cadena a otra
Copia las cadenas del src al dest se detiene despueacutes que el caraacutecter nulo haya terminando de moverse
El Valor de retorno
el strcpy devuelve el dest
Strcmp
Sintaxis
include ltstringhgt
int strcmp(const char s1 const char s2)
Descripcioacuten
Compara de una cadena a otra
Strcmp realiza una comparacioacuten sin firmar de s1 al s2 empieza con el primer caraacutecter de cada cordoacuten y continuacutea 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 lt0
igual que el s2 == 0
mayor que el s2gt 0
conioh
Declara varias funciones usadas llamando la consola del sistema operativo las rutinas de IO
Clrscr
Sintaxis
include ltconiohgt
void clrscr(void)
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
Descripcioacuten
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 posicioacuten (11)
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Clreol
Sintaxis
include ltconiohgt
void clreol(void)
Descripcioacuten
Aclara el final de la liacutenea en la ventana de texto
clreol aclara todos los caracteres donde el cursor se posicione hasta el fin de la liacutenea dentro de la ventana de texto actual sin mover el cursor
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Gotoxy
Sintaxis
include ltconiohgt
void gotoxy(int x
int y)
Descripcioacuten
Posiciona el cursor en la ventana del texto
Gotoxy mueve el cursor a la posicioacuten dada en la ventana del texto actual Si las coordenadas no son valiacuteas entonces la funcioacuten gotoxy se ignora Un ejemplo
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-
de esto es si gotoxy(4030) cuando (3525) es la correcta posicioacuten del fondo de la ventana Ninguacuten argumento de gotoxy puede ser el cero
La nota no use esta funcioacuten para Win32s o Win32 o aplicaciones de GUI
El Valor de retorno
Ninguno
Switch
Sintaxis
switch ( ltswitch variablegt )
case ltconstant expressiongt ltstatementgt [break]
default ltstatementgt
Descripcioacuten
Use la declaracioacuten switch para pasar el mando a un caso que empareja el ltel interruptor inconstantegt A que el punto las declaraciones que siguen el caso emparejando evaluacutea
Si ninguacuten caso satisface la condicioacuten que el caso predefinido evaluacutea Evitar evaluar cualquier otro caso y abandonar el mando del interruptor termine cada caso break
iomaniph
Declara la IO de las cadenas en C++ y contiene los macros por crear a los manipuladores del parametro
Incluye
IOSTREAMH
- LIBRERIAS EN C++
- Clases de libreriacuteas
- Libreriacutea Estaacutendar C++
- Tipos
- Libreriacuteas estaacuteticas
- sect211 Diccionario
- sect22 Libreriacuteas dinaacutemicas
- Diferencias libreriacutea Estaacutetica versus Dinaacutemica
- Utilizar Libreriacuteas
-