You are on page 1of 66

Profesor Paulo Moyano M.

Operadores
Operadores Aritméticos Operadores Relacionales Operadores Lógicos
- Resta
+ Suma
* Multiplicación
/ División real
% Residuo
= Asignación
< Menor que
Ma!or que
<= Menor igual que
= Ma!or igual que
"= Desigualdad
= = #gualdad
$$ %
&& '
" (egación
++ #ncremento
-- Decremento
Declaración de Variables
Tipo Declaración Limite Inferior Limite Superior
Entero
Entero Corto
Entero Largo
Entero sin Signo
Entero con Signo
Real
Real Doble
Real Largo
Carácter
Carácter sin signo
Carácter con signo
Palabra
Valor Nulo
Arreglo
Int A
S!ort Int A
Long Int A
"nsigne# Int A
Signe# Int A
$loat A
Double A
Long DoubleA
C!ar A
"nsigne# C!ar A
Signe# C!ar A
C!ar% & A
Voi#
Int A%N&
'()*+,
'-),
)E '+
.
'+/...
'(01E(*
'-0*E '(.1
(01E '12()
'-),
.
()*+*
-)*
)E +
+//(/
+/...
(01E (,
-0*E (.,
-0-E 12()
-)*
.
Usos de printf y scanf
printf345ensa6e47
printf345ensa6e 8#49Variable7
printf345ensa6e 8#49Variable:):(7
Escribe 5ensa6e en la pantalla
Escribe 5ensa6e ; el <alor #e la Variable en pantalla
Escribe 5ensa6e ; el <alor #e la Variable con ) enteros ; ( #ecimales
scanf348#49=Variable7
scanf348# 8f49=Variable-9=Variable)7
Asigna <alor entero a Variable
Asigna <alor entero a Variable- ; <alor real a Variable)
Formato para Variable Formato de Barra Invertida
$ormato Descripción $ormato Descripción
8c
8#
8i
8e
8E
8f
8g
8>
8s
8u
"n carácter
Real o Entero
Real
Notación con 4e4
Notación con 4E4
Real
Real
Real con notación 4E4
Ca#ena
Real sin signo
?b
?f
?n
?r
?t
?4
?@
?n
??
?<
Retroceso
Salto #e lAnea
Nue<a lAnea
Retorno #e carro
Tabula#or !oriBontal
Comillas
Apóstrofo
Carácter nulo
Carra in<erti#a
Tabula#or Vertical
88 Imprime 8
?a
Campanilla
Funciones de Caracteres
$unción Descripción
gets
getc!ar
getc!e
getc!
cgets
puts
putc!ar
Db!it
gotoE;
Lee un string
Lee un carácter ; espera enter
Lee un carácter #el tecla#o ; lo refle6a en pantalla
Lee un carácter #el tecla#o sin refle6arlo en pantalla
Lee string #el tecla#o sin refle6ar en pantalla
Escribe un string ; retorna
Escribe un carácter
Verifica acti<i#a# teclas #e función
Posiciona el cursor en <entana #e teEto 3columna F $ilas7
1)
#include <stdio.h>
main()
{char cadena[80];
printf("n!rese una cadena"");
!ets(cadena);
printf("#a cadena in!resada es" $s%n"&cadena);
'
()
#include <stdio.h>
main()
{ int c;
)hile ((c * !etchar()) +* ,%n,)
printf("$c"& c);
'
-)
#include <stdio.h>
#include <conio.h>
main()
{ char ch;
printf("n!rese un caracter"");
ch * !etche();
printf("%nn!resaste ,$c,%n"& ch);
'
.)
#include <stdio.h>
#include <conio.h>
main()
{char ch;
printf("n!rese caracter"");
ch * !etch();
printf("%nn!resaste ,$c,%n"&ch);
'
/)
#include <stdio.h>
#include <conio.h>
#include <strin!.h>
main()
{ char 0uffer[8-];
int i& can;
0uffer[0] * 81;
printf("n!rese caracteres"");
c!ets(0uffer);
can*strlen(0uffer);
for(i*(;i<*can;i11)
printf("$c"& 0uffer[i]);
printf("%n");
'
2)
#include <stdio.h>
main()
{
char cadena[] * "3ste es una
cadena de entrada como e4emplo%n";
puts(cadena);
'
II
5)
#include <stdio.h>
67 8i0u4o de un cuadrado 76
#define #39:;:<= 0>8?
#define @AB:;:<= 0>C9
#define B<@D 0>E.
#define F3@: 0>C-
#define #39:;C<: 0>E0
#define @AB:;C<: 0>8G
main()
{
char i& 4;
putchar(#39:;:<=);
for (i*0; i<10; i11)
putchar(B<@D);
putchar(@AB:;:<=);
putchar(,%n,);
for (i*0; i<.; i11)
{
putchar(F3@:);
for (4*0; 4<10; 411)
putchar(, ,);
putchar(F3@:);
putchar(,%n,);
'
putchar(#39:;C<:);
for (i*0; i<10; i11)
putchar(B<@D);
putchar(@AB:;C<:);
putchar(,%n,);
'
8)
#include <conio.h>
main()
{
cprintf("=resiona una tecla"");
)hile (+H0hit()); 67 3sta sentencia no hace nada76
cprintf("%r%n=resionaste una tecla%r%n");
'
G)
#include <conio.h>
main()
{
clrscr();
!oto>I(-/& 1();
cprintf("B<#?");
!etch();
'
Sentencias de Control
)or*+ontador = ,-+ontador <= (-+ontador++.
/
Sentencia-
0
De Conta#orG- !asta Conta#orHGN Incremento
if3Con#ición G G -7
I
Sentencia
J
else
I
Sentencia
J
Si Con#ición G - Entonces
Si no
K!ile3Con#iciónG G-7
I
Sentencia
J
5ientras Con#ición G - !aB
#oI
Sentencia
J3Con#ición G G -7
LaB
Lasta Con#ición G -
sKitc!3Mpción7
I
-: Sentencia- breaD
): Sentencia) breaD
#efault: Sentencia( breaD
J
En caso #e Mpción
Si Mpción G - Sentencia- rompe
Si Mpción G ) Sentencia) rompe
Si no Sentencia( rompe
III
Procedimiento Función
<oi# Nombre3VariableInt7
I
Sentencia
J
<oi# main3<oi#7
I
Nombre3Variable7
J
float Nombre 3Variable int7
I
Sentencia
VarReal G Variable
return 3VarReal7
J
<oi# main3<oi#7
I
A G Nombre 3N7
J
IV
Funciones para Cadenas
$unción Descripción
strcp;
strncp;
stpcp;
str#up
strstr
strrc!r
strc!r
strspn
strcspn
strpbrD
strtoD
strcmp
stricmp
strcmpi
strcoll
strncmp
strnicmp
strncmpi
strcat
strlen
strncat
strre<
strset
strnset
Copia un string origen a un #estino
Copia !asta n caracteres #e origen a #estino
Copia uno string en otro
Copia un string #entro una locación nue<amente crea#a
Cusca la primera ocurrencia #e un subca#ena en otro string
Cusca la ultima ocurrencia #e un carácter en un string
Cusca un string por la primera ocurrencia #e un carácter #a#o
Cusca un string por un segmento Oue no contiene
Cusca un string por un segmento Oue no contiene
Cusca un string- la primera ocurrencia #e cualOuier carácter Oue esta string)
Cusca s- por el primera sePal no conteni#a en s)
Compara #os strings
Compara #os strings sin caso sensiti<o
Compara #os strings sin caso sensiti<o
Compara #os strings
Compara porciones #e #os strings
Compara porciones #e #os strings
Comparas porciones #e #os strings
APa#e un string a otro
Calcula la longitu# #e un string
APa#e un string a otro
Re<ierte to#o caracteres en string3eEcepto el nulo7
Pone to#os caracteres en s a c!
Pone los primeros n caracteres #e origen a #estino
Funciones de Conversión
$unción Descripción
fc<t
ec<t
gc<t
itoa
ltoa
ultoa
ctime
atoi
atol
Qatol#
atof
strtol
strtoul
strto#
asctime
strlKr
strupr
strEfrm
toupper
toloKer
toascii
Con<ierte un real a string
Con<ierte un real a string
Con<ierte un real a string
Con<ierte un entero a string
Con<erts a long to a string
Con<ierte un unsigne# long a string
Con<ierte fec!a ; !ora a un string
Con<ierte un string a entero0
Con<ierte un string a un long
Con<ierte un string to un long #ouble
Con<ierte un string a real
Con<ierte un string a long
Con<ierte un string a unsigne# long
Con<ierte un string a #ouble real
Con<ierte fec!a ; !ora a ASCII
Con<ierte el conteni#o #e un apunta#or a caracteres a minRsculas
Con<ierte el conteni#o #e un apunta#or a caracteres a ma;Rsculas
Transforma una porción #e un string
Trasla#a caracteres a ma;Rsculas
Trasla#a caracteres a minRsculas
Trasla#a caracteres a ASCII formato
V
Funciones de Comparación
$unción Descripción
isupper
isE#igit
isspace
isloKer
isprent
ispunct
isgrap!
iscntrl
is#igit
isalp!a
isascii
isalnum
Es una letra ma;Rscula 3A'S7
Es un !eEa#ecimal #Agito 3.'29A'$9a'f7
Es un espacio9tab9acarreo9retorno9nue<a lAnea
Es un letra minRscula3a'B7
Es un prenteng carácter3.E).'.E*E7
Es un signo puntuación3control space7
Es un carácter imprimible
Es un carácter #elete o carácter #e control3.E*$9.E..'.E-$7
Es un #Agito3.'27
Es una letra3A'S o a'B7
Es el b;te mas ba6o en el rango . a -)*3.E.. ' .E*$7
Es alfanumTrico
Funciones de Creación de Archivo
$unción Descripción
int creattemp3c!ar Upat!9 int attrib7
int creatneK3 c!ar Upat!9 int mo#o7
int Q#osQcreatneK3 c!ar Upat!9 int attrib9 int U!an#lep7
int creat3 c!ar Upat!9 int amo#e7
int Qcreat3 c!ar Upat!9 int attrib7
int Q#osQcreat3 c!ar Upat!9 int attrib9 int U!an#lep7
int #up3int !an#le7
int #up)3int ol#!an#le9 int neK!an#le7
Crea un arc!i<o unico en #irectorio #a#o por el pat!
Crea ; Abre un arc!i<o nue<o para eVs en mo#o binario
Crea ; Abre un nue<o arc!i<o para eVs en mo#o binario
Crea un nue<o arc!i<o o sobreescribe en uno eEistente
Crea un nue<o arc!i<o o sobreescribe en uno eEistente
Crea un nue<o arc!i<o o sobreescribe en uno eEistente
Duplica un arc!i<o !an#le
Duplica un arc!i<o !an#le en uno eEistente arc!i<o !an#le
Funciones de Apertura y Cierre de Archivos
$unción Descripción
$ILE Ufopen3c!ar Unombre9 c!ar Umo#e7
$ILE Ufreopen3c!ar Unombre9c!ar Umo#o9 $ILE Uflu6o7
$ILE UQfsopen3c!ar Unombre9c!ar Umo#o9 int s!flg7
int Q#osQopen3c!ar Unombre9 unsigne# flags9int U!an#lep7
int Qopen3c!ar Unombre9 int flags7
int close3int !an#le7
int Qclose3int !an#le7
int Q#osQclose3int !an#le7
int fclose3$ILE Uflu6o7
int fcloseall3<oi#7
Abre un flu6o
Conecta nue<o arc!i<o con un flu6o abierto
Abre un flu6o con arc!i<o s!aring
Abre un arc!i<o para escritura o lectura
Abre un arc!i<o para escritura or lectura
Cierra arc!i<o asocia#o con un !an#le
Cierra arc!i<o asocia#o con un !an#le
Cierra arc!i<o asocia#o con un !an#le
Cierra flu6o
Cierra to#os flu6os abiertos
Funciones de Posicionamiento en Archivos
$unción Descripción
long ftell3$ILE Uflu6o7
int fstat3int !an#le9 struct stat Ustatbuf7
int stat3c!ar Upat!9 struct stat Ustatbuf7
long tell3int !an#le7
<oi# reKin#3$ILE Uflu6o7
long lseeD3int !an#le9 long offset9 int fromK!ere7
int fseeD3$ILE Uflu6o9 long offset9 int K!ence7
int fgetpos3$ILE Uflu6o9 fposQt Upos7
int fsetpos3$ILE Uflu6o9 fposQt Upos7
De<uel<e el apunta#or actual #e el arc!i<o
Toma informacion acerca un arc!i<o abierto
Toma informacion acerca un arc!i<o
Toma posicion actual #e apunta#or a arc!i<o
Reposiciona apunta#or #e flu6o para arc!i<o
5ue<e apunta#or leeVescribe arc!i<o
Reposiciona el apunta#or #e flu6o a un arc!i<o
Toma posicion actual #e apunta#or #e arc!i<o
Posiciona el apunta#or #e flu6o a un arc!i<o
VI
Funciones de Archivos Unicos
$unción Descripción
$ILE Utmpfile3<oi#7
c!ar UmDtemp3c!ar Utemplate7
c!ar Utmpnam3c!ar Usptr7
c!ar Utempnam3c!ar U#ir9 c!ar UprefiE7
int rmtmp3<oi#7
Abre a 4scratc!4 arc!i<o en mo#o binario
Lace un arc!i<o #e nombre unico
Crea un arc!i<o #e nombre unico
Crea arc!i<o #e nombre unico en el especifica#o #irectorio0
Remue<e temporalmente arc!i<os0
Funciones Varias de Archivos
$unción Descripción
fposQt
$ILE
EM$9W#efine
int f#37
int eof37
int eof3int !an#le7
int feof3$ILE Uflu6o7
int flus!all3<oi#7
int fflus!3$ILE Uflu6o7
int fileno3$ILE Uflu6o7
long filelengt!3int !an#le7
int ferror3$ILE Uflu6o7
c!ar Ustrerror3int errnum7
<oi# clearerr3$ILE Uflu6o7
int Qc!mo#3 c!ar Upat!9 int func %int attrib&7
int Q#osQgetfileattr3c!ar Upat!9 unsigne# Uattribp7
int Q#osQsetfileattr3c!ar Upat!9 unsigne# attrib7
int renom3c!ar Uol#nom9 c!ar UneKnom7
int remo<e3c!ar Unombre7
struct #irent rea##ir3DIR U#irp7
fcb
int c!mo#3c!ar Upat!9int amo#e7
int c!siBe3int !an#le9long siBe7
int access3c!ar Unombre9int amo#e7
c!ar UQsearc!en<3c!ar Uarc!i<o9c!ar U<arnom9c!ar Ubuf7
unsigne# umasD 3unsigne# mo#o5asD7
"n arc!i<o posicion t;pe
Estructura #e control #e arc!i<o para flu6os
Ante in#ican#o Oue fin #e arc!i<o alcanBa#o
De<uel<e el arc!i<o #escriptor o EM$
De<uel<e nonBero si es fin #e arc!i<o
Verifica para fin #e arc!i<o
Ensa;a si fin #e arc!i<o !a si#o alcanBa#o en un flu6o
Refresca to#os los flu6os abiertos
Refresca un flu6o
De<uel<e el arc!i<o !an#le para el flu6o
Toma tamaPo #e arc!i<o en b;tes
Ensa;a si un error !a ocurri#o en un flu6o
De<uel<e un apunta#or a un mensa6e #e error
Limpia in#ica#or #e error
Pone atributos #e arc!i<o
Toma el atributos
Pone el atributos
Renombra un arc!i<o
Remue<e un arc!i<o
Lee la actual entra#a #es#e un #irectorio flu6o
Arc!i<o bloOues #e control
Pone permiso #e acceso a arc!i<o
Cambia arc!i<o tamaPo
Determina accesibili#a# #e un arc!i<o
Cusca un ambiente pat! para un arc!i<o
Pone arc!i<o leeVescribe permiso masD
Funciones de manejo de ytes en Archivos
$unción Descripción
int Krite3int !an#le9<oi# Ubuf9int len7
int QKrite3int !an#le9<oi# Ubuf9int len7
int Q#osQKrite3int !an#le9<oi# Ubuf9int len9int UnKritten7
int rea#3int !an#le9<oi# Ubuf9int len7
int Qrea#3int !an#le9<oi# Ubuf9int len7
int Q#osQrea#3int !an#le9<oi# far Ubuf9int len9int Unrea#7
<oi# setbuf3$ILE Uflu6o9 c!ar Ubuf7
int set<buf3$ILE Uflu6o9 c!ar Ubuf9 int t;pe9 siBeQt siBe7
int setmo#e3int !an#le9 int amo#e7
Escribe un buffer #e #atos a un arc!i<o o #ispositi<o
"sa funcion .E1. para escribir b;tes #e un buffer a un arc!i<o
"sa funcion .E1. para escribir b;tes #e un buffer a un arc!i<o
Intenta para leer b;tes #es#e un arc!i<o #entro un buffer
"sa funcion .E($ 3lectura7 para leer b;tes #e un arc!i<o a un buffer
"sa funcion .E($ 3lectura7 para leer b;tes #e un arc!i<o a un buffer
Asigna buffering !asta un flu6o
Asigna buffering !asta un flu6o
Pone mo#o #e apertura #e un arc!i<o
VII
Funciones de !ntrada y "alida de Archivos
$unción Descripción
int ungetc3int c9 $ILE Uflu6o7
int getK3$ILE Uflu6o7
int fgetc!ar3<oi#7
int fgetc3$ILE Uflu6o7
c!ar Ufgets3c!ar Us9 int n9 $ILE Uflu6o7
int putK3int K9 $ILE Uflu6o7
int fputc3int c9 $ILE Uflu6o7
int fputs3 c!ar Us9 $ILE Uflu6o7
int fputc!ar3int c7
int fprintf 3$ILE Uflu6o9c!ar Uformat %arg&7
int fscanf 3$ILE Uflu6o9c!ar Uformat %a##ress&7
Empu6a un carácter a la entra#a #e un flu6o
Toma un entero #e un flu6o
Toma un carácter #e un flu6o
Toma un carácter #e un flu6o
Toma un string #e un flu6o
Sali#a #e un entero en un flu6o
Sali#a #e un carácter a un flu6o
Sali#a #e a string a un flu6o
Sali#a #e un carácter a un flu6o
5an#a formato #e sali#a a un flu6o
Recibe formato #e entra#a #e un flu6o
Constantes Para Funciones de Archivo
MQRDMNLX
MQYRMNLX
MQRDYR
MQAPPEND
MQCREAT
MQENCL
MQTR"NC
MQCINARX
MQTENT
MQNMINLERIT
MQDENXALL
MQDENXYRITE
MQDENXREAD
MQDENXNMNE
MQCLAN>ED
MQ#ispZsiti<o
Abre para escritura solamente
Abre para lectura solamente
Abre para escritura ; lectura
Si pone9 el apunta#or #e arc!i<o en fin #e arc!i<o anterior a cualOuiera escribe0
Crea ; abre arc!i<o Si el arc!i<o eEiste no tiene efecto si no9 el arc!i<o es crea#o0
Apertura eEclusi<a: "sa#o con MQCREAT0Si el arc!i<o ;a eEiste9 un error es #e<uelto0
Abre con truncacion Si el arc!i<o ;a eEiste9es trunca#o en . los atributos no cambian
No translacion EEplicitamente Abre el arc!i<o en binario mo#o
CR'L$ translacion EEplicitamente Abre el arc!i<o en mo#o teEto
Proceso !i6o !ere#an#o arc!i<o
Error si abierto para lecturaVescritura
Error si abierto para escritura
Error si abierto para lectura
Permite acceso concurrente
Especial DMS lee'solamente bit
Especial DMS lee'solamente bit
st#in
st#out
st#err
st#auE
st#prn
Stan#ar# #ispositi<o entra#a
Stan#ar# #ispositi<o sali#a
Stan#ar# error sali#a #ispZsiti<o
Stan#ar# #ispZsiti<o auEiliar
Stan#ar# impresora
SEE[QSET
SEE[QC"R
SEE[QEND
. CusOue#a #es#e principio #e arc!i<o
- CusOue#a #es#e actual posicion
) CusOue#a #es#e fin #e arc!i<o
Q$QRDYR
Q$QREAD
Q$QYRIT
Q$QLC"$
Q$QERR
Q$QEM$
Q$QCIN
Q$QIN
Q$QM"T
Q$QTER5
Lee ; escribe
Lee'solamente arc!i<o
Escribe'solamente arc!i<o
Linea'buffere# arc!i<o
In#icator #e error
In#icator EM$
In#ica#or binario arc!i<o
Datos por llegar
Datos por salir
Arc!i<o es un terminal
VIII
Funciones de #ivision
$unción Descripción
#ouble freEp3#ouble E9 int UeEponent7
#ouble fmo#3#ouble E9 #ouble ;7
long #ouble freEp3long #ouble 3E79 int U3eEponent77
long #ouble fmo#3long #ouble 3E79 long #ouble 3;77
#ouble mo#f3#ouble E9 #ouble Uipart7
long #ouble mo#fl3long #ouble 3E79 long #ouble U3ipart77
#i<Qt #i<3int numer9 int #enom7
l#i<Qt l#i<3int numer9int #enom7
Di<i#e a #ouble numero en mantisa ; eEponente
Calcula E mo#ulo ;9 el resi#uo #e EV;
Di<i#e un long #ouble numero en mantisa ; eEponente
Calcula E mo#ulo ;9el resi#uo #e EV;
Di<i#e #ouble en entero ; fraccion
Di<i#e long #ouble en entero ; fraccion
Di<i#e #os enteros
Di<i#e #os longs
Funciones de Potenciacion
$unción Descripción
#ouble poK3#ouble E9 #ouble ;7
#ouble poK-.3int p7
long #ouble poK3long #ouble 3E79 long #ouble 3;77
long #ouble poK-.l3int 3p77
long #ouble l#eEpl3long #ouble 3E79int 3eEpon77
#ouble l#eEp3#ouble E9int eEpon7
#ouble eEp3#ouble E7
long #ouble eEp3long #ouble 3E77
#ouble sOrt3#ouble E7
long #ouble sOrtl3long #ouble \E3E77
$uncion Potenciacion 9 E a la ; 3EUU;7
$uncion Potenciacion 9 -. a el p3-.UUp7
$uncion Potenciacion 9 E a la ; 3EUU;7
$uncion Potenciacion 9 -. a el p 3-.UUp7
Calcula E times 3) raiB a eEp7
Calcula E times 3) raise# to eEp7
Calcula Potenciacion e a el Et!
Calcula Potenciacion e a el Et!
Calcula raiB cua#ra#a
Calcula raiB cua#ra#a
Funciones de Logaritmos
$unción Descripción
#ouble log3#ouble E7
#ouble log-.3#ouble E7
long #ouble logl3long #ouble 3E77
long #ouble log-.l3long #ouble 3E77
#ouble !;pot3#ouble E9#ouble ;7
long #ouble !;potl3long #ouble 3E79long #ouble 3;77
$uncion logaritmo natural
$uncion logaritmo comun
$uncion logaritmo natural
$uncion logaritmo comun
Calcula !ipotenusa #e #erec!a triangulo
Calcula !ipotenusa #e #erec!a triangulo
Funciones $rigonometricas
$unción Descripción
#ouble cos3#ouble E7
#ouble sin3#ouble E7
#ouble tan3#ouble E7
long #ouble sinl3long #ouble E7
long #ouble tanl3long #ouble E7
long #ouble cos!l3long #ouble 3E77
#ouble cos!3#ouble E7
#ouble sin!3#ouble E7
#ouble tan!3#ouble E7
long #ouble cosl3long #ouble E7
long #ouble sin!l3long #ouble 3E77
long #ouble tan!l3long #ouble 3E77
#ouble acos3#ouble E7
#ouble asin3#ouble E7
#ouble atan3#ouble E7
#ouble atan)3#ouble ;9 #ouble E7
long #ouble acosl3long #ouble 3E77
long #ouble asinl3long #ouble 3E77
$uncion Coseno
$uncion Seno
$uncion Tangente
$uncion Seno
$uncion Tangente
$uncion Coseno !iperbolico
$uncion Coseno !iperbolico
$uncion Seno !iperbolico
$uncion Tangente !iperbolico
$uncion Coseno
$uncion Seno !iperbolico
$uncion Tangente !iperbolico
$uncion in<ersa #e conseno
$uncion in<ersa #e seno
$uncion in<ersa #e tangente
$uncion in<ersa #e tangente)
$uncion in<ersa #e Coseno
$uncion in<ersa #e Seno
IN
long #ouble atanl3long #ouble 3E77 $uncion in<ersa #e Tangente
Funciones para %anejo de &ytes
$unción Descripción
<oi# sKab3c!ar U#e9c!ar Uto9int nb;tes7
<oi# Umemset 3<oi# Us9int c9siBeQt n7
<oi# far Ufar Qfmemset3<oi# far Us9int c9siBeQt n7
<oi# mo<e#ata3int srcseg9int srcoff9int #estseg9int #estoff9siBeQt n7
<oi# Umemccp;3<oi# U#est9<oi# Uorigen9int c9siBeQt n7
<oi# Umemcp; 3<oi# U#est9<oi# Uorigen9siBeQt n7
<oi# Umemmo<e3<oi# U#est9<oi# Uorigen9siBeQt n7
<oi# Umemc!r 3<oi# Us9int c9 siBeQt n7
int far Qfmemcmp 3<oi# far Us-9<oi# far Us)9iBeQt n7
int far Qfmemicmp3<oi# far Us-9<oi# far Us)9 siBeQt n7
<oi# far U far Qfmemc!r3<oi# far Us9int c9 siBeQt n7
bc# bc#3int E7
bc# bc#3#ouble E7
bc# bc#3#ouble E9int #ecimals7
SKaps b;tes
Pone n b;tes #e s to b;te c
Pone n b;tes #e s a b;te c
Copia n b;tes
Copia un bloOue #e n b;tes #e origen a #estino
Copia un bloOue #e n b;tes #e origen a #estino
Copia un bloOue #e n b;tes #e origen a #estino
Searc!es n b;tes for caracter c
Compara el primer n b;tes #e strings s- ; s)
Compara el primer n b;tes #e strings s- ; s)
Cusca n b;tes para caracter c
Con<ierte numero #ecimal a binario
Con<ierte numero #ecimal a binario
Con<ierte numero #ecimal a binario
Funciones de %anejo de &ytes
$unción Descripción
int Qcontrol,*3int int neKcK9int int masD7
int memcmp3<oi# Us-9<oi# Us)9 siBeQt n7
int memicmp3<oi# Us-9<oi# Us)9 siBeQt n7
int mbtoKc3Kc!arQt UpKc9c!ar Us9 siBeQt n7
int mblen3c!ar Us9 siBeQt n7
int mat!err3struct eEception Ue7
int Qmat!errl3struct QeEceptionl U3e77
int mat!err3struct eEception Ue7
int Qmat!errl3struct QeEceptionl U3e77
siBeQt mbstoKcs3Kc!arQt UpKcs9c!ar Us9 siBeQt n7
Cambia real control Kor#
Compara el primer n b;tes #e strings s- ; s)
Compara el primer n b;tes #e strings s- ; s)9 ignoring case
Con<ierte un multib;te caracter a Kc!arQt co#e
Determina la longitu# #e un multib;te caracter
"ser'mo#ifiable mat! error !an#ler
"ser'mo#ifiable mat! error !an#ler
"ser'mo#ifiable mat! error !an#ler
"ser'mo#ifiable mat! error !an#ler
Con<ierte un multib;te string aarQt arra;
Funciones de Valor 'umerico
$unción Descripción
int abs3int E7
#ouble fabs3#ouble E7
long #ouble fabsl3long #ouble \E3E77
long int labs3long int E7
#ouble ceil3#ouble E7
#ouble floor3#ouble E7
long #ouble ceill3long #ouble 3E77
long #ouble floorl3long #ouble 3E77
int Qrotl3unsigne# <al9 int count7
int Qrotr3unsigne# <al9 int count7
long Qlrotr3unsigne# long <al9 int count7
long Qlrotl3unsigne# long <al9 int count7
maE
min
Mbtiene el absoluto <alor #e un entero
Calcula el absoluto <alor #e un real
Calcula el absoluto <alor #e un real
Calcula el absoluto <alor #e un long
Re#on#ear !acia arriba
Re#on#ear !acia aba6o
Re#on#ear !acia arriba
Re#on#ear !acia aba6o
Rota un entero <alor a la iBOuier#a
Rota un entero <alor a la #erec!a
Rota un long <alor a la #erec!a
Rota un long <alor a la iBOuier#a
De<uel<e el alto #e #os <alores
De<uel<e el ba6o #e #os <alores TLMSS
N
Funciones de 'umeros Complejos
$unción Descripción
compleE cos3compleE B7
compleE sin3compleE B7
compleE tan3compleE E7
compleE cos!3compleE B7
compleE sin!3compleE B7
compleE tan!3compleE E7
compleE acos3compleE B7
compleE asin3compleE B7
compleE atan3compleE E7
#ouble abs3compleE E7
#ouble cabs3struct compleE B7
long #ouble cabsl3struct QcompleEl 3B77
compleE poK3compleE E9 compleE ;7
compleE poK3compleE E9 #ouble ;7
compleE poK3#ouble E9 #ouble ;7
compleE log3compleE E7
compleE log-.3compleE E7
compleE eEp3compleE B7
#ouble imag3compleE E7
compleE sOrt3compleE E7
#ouble con63compleE B7
#ouble arg3compleE B7
#ouble real3compleE E7
compleE compleE3#ouble real9#ouble imag7
compleE polar3#ouble mag9 #ouble angulo7
#ouble pol;3#ouble E9 int #egree9 #ouble coeffs%&7
struct compleE I#ouble E9 ;J
$uncion Coseno
$uncion Seno
$uncion Tangente
$uncion Coseno !iperbolico
$uncion Seno !iperbolico
$uncion Tangente !iperbolico
$uncion In<ersa #e Coseno
$uncion In<ersa #e Seno
$uncion In<ersa #e Tangente
Mbtiene el <alor absoluto #e un entero
Calcula el <alor absoluto #e un numero compleE
Calcula el <alor absoluto #e un numero compleE
$uncion Potenciacion 9 E to t!e ; 3EUU;7
$uncion Potenciacion 9 E to t!e ; 3EUU;7
$uncion Potenciacion 9 E to t!e ; 3EUU;7
$uncion logaritmo natural
$uncion logaritmo comun
Calcula e a el Bt! potenciacion3B is a compleE numero7
De<uel<e la imaginaria parte #e un numero compleE
Calcula raiB cua#ra#a
Con6uga #e un numero compleE
Mbtiene el angulo #e un numero en el plano compleE
De<uel<e parte real #e numero compleE
Crea numeros compleE
Calcula numero compleE
Calcula numero compleE
Crea numeros compleE
Constante Descripción
EDM5
ERAN>E
L">EQVAL
DM5AIN
SIN>
MVER$LMY
"NDER$LMY
TLMSS
CYQDE$A"LT
CITSPERCXTE
5QPI
5QPIQ)
5QPIQ1
5Q-QPI
5Q)QPI
5Q-QS]RTPI
5Q)QS]RTPI
5QE
5QLM>)E
5QLM>-.E
5QLN)
5QLN-.
5QS]RT)
5QS]RTQ)
Co#igo error para mat! #ominio
Co#igo error para resulta#o fuera #e rango
M<erfloK <alor para mat! funciones
Argumento no fue en #ominio #e funcion log3'-7
Argumento #ebe ser resulta#o en una singulari#a# poK3.9 ')7
Argumento #ebe tener un funcion result ^ 5ANDM"CLE eEp3-...7
Argumento #ebe tener un funcion result H 5INDM"CLE eEp3'-...7
Argumento #ebe tener el total #e #igitos significantes per#i#os in3-.e*.7
Default control Kor# for ,.,*V,.),* mat! coprocessor0
Numero #e bits en un b;te0
_
"no'!alf _ 3_V)7
"no'cuatro _ 3_V17
"no #i<i#i#o por _ 3-V_7
Dos #i<i#i#o por _ 3)V_7
"no #i<i#i#o por raiB cua#ra#a #e _ 3-V`_7
Dos #i<i#i#o por raiB cua#ra#a #e _ 3)V`_7
El <alor #e e
El <alor #e log3e7
El <alor #e log-.3e7
El <alor #e ln3)7
El <alor #e ln3-.7
RaiB Cua#ra#a #e ) 3`)7
-V) la raiB cua#ra#a #e ) 3`)7V)
NI
Funciones varias para #isco
$unción Descripción
int s;stem3c!ar Ucomman#7
<oi# soun#3int freO7
<oi# nosoun#3<oi#7
<oi# #ela;3int milseg7
<oi# sleep3int seg7
<oi# set<erif;3int <alor7
<oi# eEit3int status7
<oi# QceEit3<oi#7
<oi# Q#osQDeep3c!ar status9int n7
<oi# Deep3c!ar status9int n7
c!ar UQstrerror3c!ar Us7
c!ar Ustrerror3int errnum7
int fail37
int #oseEterr3struct DMSERRMR UeblDp7
int getcbrD3<oi#7
int setcbrD3int <alor7
<oi# ctrlbrD3int 3U!an#ler73<oi#77
<oi# getfat3int c!ar #is9struct fatinfo Utable7
<oi# getfat#3struct fatinfo U#table7
int getpi#3<oi#7
int get<erif;3<oi#7
int isatt;3int !an#le7
int mbtoKc3Kc!arQt UM9c!ar UD9 siBeQt n7
int mblen3c!ar Us9siBeQt n7
<oi# QQemitQQ3argument97
<oi# poDe3int seg9int offset9int <alor7
<oi# poDeb3int seg9int offset9c!ar <alor7
c!ar Ugeten<3c!ar Unom7
int puten<3c!ar Unom7
int freemem3int segE7
int setblocD3int segE9int n7
int ran#br#3struct fcb Ufcb9int rcnt7
int ran#bKr3struct fcb Ufcb9int rcnt7
<oi# mo<mem3<oi# UM9<oi# UD9int n7
int eEecl3c!ar Upat!9c!ar Uarg.99N"LL7
int fnsplit3c!ar Upat!9c!ar U#is9c!ar U#ir9c!ar Unom9c!ar UeEt7
<oi# fnmerge 3c!ar Upat!9c!ar U#is9c!ar U#ir9c!ar Unom9c!ar UeEt7
Se e6ecuta un coman#o #e el DMS
Pone una freOuencia en la bocina
Apaga el soni#o #e la bocina
Suspen#e e6ecucion para el inter<alo
Suspen#e e6ecucion para inter<alo
Pone <erificacion esta#o
Terminacion #e el programa
E6ecuta la sali#a limpia sin salir #e el programa
Sale ; permanece resi#ente
Sale ; permanece resi#ente
Constru;e un mensa6e #e error or#inario
De<uel<e un apunta#or a un mensa6e #e error
De<uel<e nonBero si una fallo la operacion
Mbtiene informacion DMS #e error eEten#i#o
Mbtiene la <erificacion #e el control'breaD
Pone <erificacion ctrl'breaD
Pone mane6a#or #e control'breaD
Mbtiene informacion #e $AT
Mbtiene informacion #e $AT
Mbtiene el proceso ID #e el programa
Mbtiene el <erificacion #e esta#o
Verifica para un tipo #e #ispositi<o
Con<ierte un multib;te caracter a un Kc!arQt
Determina la longitu# #e un multib;te caracter
Inserta literal <alor #irectamente en el co#igo
Mbtiene un <alor entero #e la memoria
Mbtiene un b;te <alor #e locacion #e memoria
Mbtiene un string #es#e el ambiente
APa#e un string a el actual ambiente
Libera un bloOue #e la memoria
5o#ifica el tamaPo #e un bloOue
E6ecuta una lectura aleatoria usan#o $CC
E6ecuta una escritura aleatoria usan#o $CC
5ue<e un bloOue #e n b;tes #e origen a #est
Carga un programa ; corre otro3proceso !i6o7
Di<i#e un pat! en sus componentes
Constru;e un pat!
Funciones de %anejo de Archivos
$unción Descripción
int umasD 3int mo#e5asD7
c!ar Utempnam3c!ar U#ir9c!ar UprefiE7
c!ar Usearc!pat!3c!ar Uarc!7
int renom3c!ar Uol#nom9c!ar UneKnom7
int remo<e3c!ar Unom7
c!ar Uparsfnm3c!ar Ucm#line9struct fcb Ufcb9int opt7
Pone permiso aparente #e eVs al arc!i<o
Crea un nombre #e arc!i<o unico en #irectorio especifica#o
Cusca el pat! #e el DMS para un arc!i<o
Renombra un arc!i<o
Remue<e un arc!i<o
AnaliBa arc!i<o ; constru;e un arc!i<o #e control bloOues
NII
Funciones de (nterrupciones
$unción Descripción
<oi# #isable3<oi#7
<oi# Q#isable3<oi#7
<oi# enable3<oi#7
<oi# Qenable3<oi#7
<oi# set<ect3int interruptno9<oi# interrupt 3Uisr7 3 77
<oi# interrupt3UQ#osQget<ect3int intnum77 37
<oi# interrupt 3Uget<ect3int interruptno7737
<oi# geninterrupt3int intrQnum7
<oi# Q#osQset<ect3int interruptno9<oi# interrupt 3Uisr7 377
<oi# Qc!ainQintr3<oi# 3interrupt far UneK!an#ler7377
<oi# intr3int intno9struct RE>PAC[ Upreg7
int int,+3int intno9union RE>S Uinregs9union RE>S Uoutregs7
int int,+E3int intno9union RE>S Uinregs9union RE>S Uoutregs9struct SRE>S
Usegregs7
int int#os3union RE>S Uinregs9union RE>S Uoutregs7
int int#osE3union RE>S Uinregs9union RE>S Uoutregs9struct SRE>S Usegregs7
Des!abilita interrupciones
Des!abilita interrupciones
Labilita interrupciones
Labilita interrupciones
Pone <ector #e interrupcion
Mbtiene el <ector #e interrupcion
Mbtiene el <ector #e interrupcion
>enera una softKare interrupcion
Pone <ector #e interrupcion
Cambia a otro mane6a#or
interrupcion
Alterna Interrupciones #el ,.,+
Interrupciones #el ,.,+
Interrupciones #el ,.,+
Interrupciones #el DMS
Interrupciones #el DMS
Funciones del &(O"
$unción Descripción
long biostime3int cm#9long neKtime7
int bioseOuip3<oi#7
int biosDe;3int cm#7
int biosmemor;3<oi#7
int biosprint3int cm#9int ab;te9int puerto7
int bioscom3int cm#9c!ar ab;te9int puerto7
int QbiosQtime#e#ia3int cm#9long Utimep7
int QbiosQeOuiplist3<oi#7
int QbiosQDe;br#3int cm#7
int QbiosQmemsiBe3<oi#7
int QbiosQserialcom3int cm#9int puerto9c!ar ab;te7
int QbiosQprinter3int cm#9int puerto9int ab;te7
int QbiosQ#isco3int cm#9struct #iscoinfoQt U#info7
Lee o pone la !ora #el CIMS
Verifica eOuipo
Interface con tecla#o9usan#o ser<icios #el CIMS
De<uel<e tamaPo #e memoria
Impresora eVs usan#o ser<icios #el CIMS0
RS')() communicaciones 3serial eVs7
Lee o pone la CIMS !ora
Verifica eOuipo
Interface con tecla#o9usan#o ser<icios CIMS
De<uel<e tamaPo #e memoria
RS')() communicaciones 3serial eVs7
Impresora eVs usan#o ser<icios CIMS
Ser<icios CIMS #isco #isco
Funciones de #ireccionamiento
$unción Descripción
int inp3int porti#7
int inpK3int porti#7
int inport3int porti#7
int c!ar inportb3int porti#7
int outp3int porti#9int <alue7
int outpK3int porti#9int <alue7
<oi# outport 3int porti#9int <alue7
<oi# outportb3int porti#9int c!ar <alue7
<oi# segrea#3struct SRE>S Usegp7
int $PQM$$3<oi# far Up7
int $PQSE>3<oi# far Up7
<oi# far U5[Q$P3int seg9int ofs7
int b#os3int #osfun9int #os#E9int #osal7
int b#osptr3int #osfun9<oi# Uargument9int #osal7
<oi# !ar#resume3int aEret7
<oi# !ar#retn3int retn7
int getpsp3<oi#7
Lee un b;te #es#e un puerto #el !ar#Kare
Lee un Kor# #es#e un puerto #el !ar#Kare
Lee a Kor# #es#e un puerto #el !ar#Kare
Lee a b;te #es#e un puerto #el !ar#Kare
Sale un b;te a un puerto #el !ar#Kare
Sale un Kor# a un puerto #el !ar#Kare
Sale un Kor# a un puerto #el !ar#Kare
Sale un b;te a un puerto #el !ar#Kare
Lee segmento #e registros
Pone una #ireccion #e #esplaBamiento
Pone una #ireccion #e segmento
Lace un apunta#or far
Accesos a llama#as #el sistema DMS
Accesos a llama#as #el sistema 5S'DMS
Error #e !ar#Kare mane6a#or rutinas
Error #e !ar#Kare mane6a#or rutinas
Mbtiene el prefi6o #e segmento #el programa
NIII
Funciones de #isco
$uncion Descripcion
int set#isD3int #is7
int Qc!#ri<e3int #is7
int Q#osQset#ri<e3int #is9int Un#is7
int get#isD3<oi#7
int Qget#ri<e3<oi#7
<oi# Q#osQget#ri<e3int U#is7
int absrea#3int #is9int nsec9long lsect9<oi# Ubuf7
int absKrite3int #is9int nsec9long lsect9<oi# Ubuf7
<oi# set#ta3c!ar far U#ta7
c!ar far Uget#ta3<oi#7
int Q#osQget#iscofree3c!ar #is9struct #isfreeQt Utable7
<oi# get#free3c!ar #is9struct #free Utable7
Pone el actual numero #e #isco
Pone el actual numero #e #isco
Pone el actual numero #e #isco
Mbtiene el actual numero #e #isco
Mbtiene el actual numero #e #isco
Mbtiene el actual numero #e #isco
Lee sectores absoluto #isco
Escribe sectores absoluto #isco
Pone #ireccion transferencia #e #isco
Mbtiene #ireccion transferencia #e #isco
Mbtiene espacio libre #el #isco
Mbtiene espacio libre #el #isco
Funciones de #irectorio
$uncion Descripcion
int mD#ir3c!ar Upat!7
int c!#ir3c!ar Upat!7
int rm#ir3c!ar Upat!7
c!ar UgetcK#3c!ar Ubuf9int buflen7
int getcur#ir3int #ri<e9c!ar U#irectorio7
c!ar UQget#cK#3int #ri<e9c!ar Ubuffer9 int buflen7
DIR Uopen#ir3c!ar U#irnom7
<oi# close#ir3DIR U#irp7
struct #irent rea##ir3DIR U#irp7
int Q#osQfin#neEt3struct fin#Qt UffblD7
int fin#neEt3struct ffblD UffblD7
Crea un #irectorio
Cambia #irectorio actual
Remue<e un arc!i<o DMS #irectorio
Mbtiene el #irectorio actual traba6o
Mbtiene #irectorio actual para #isco especifica#o
Mbtiene el #irectorio actual para #isco especifica#o
Abre un #irectorio stream para lectura
Cierra un #irectorio stream
Lee la entra#a actual #es#e un #irectorio stream
Continua la busOue#a un #isco #irectorio para arc!i<os
Continua busOue#a un #isco #irectorio para arc!i<os
Funciones de Fecha y )ora
$uncion Descripcion
timeQt time3timeQt Utimer7
<oi# settime3struct time Utimep7
int Q#osQsettime3struct #ostimeQt Utimep7
<oi# gettime3struct time Utimep7
<oi# Q#osQgettime3struct #ostimeQt Utimep7
int stime3timeQt Utp7
<oi# get#ate3struct #ate U#atep7
<oi# Q#osQget#ate3struct #os#ateQt U#atep7
<oi# set#ate3struct #ate U#atep7
<oi# Q#osQset#ate3struct #os#ateQt U#atep7
timeQt mDtime3struct tm Ut7
long #ostouniE3struct #ate U#9struct #ostime Ut7
clocDQt clocD3<oi#7
siBeQt Qc#ecl strftime3c!ar Us9 siBeQt maEsiBe9c!ar
Ufmt9struct tm Ut7
Pone !ora #e #ia
Pone !ora sistema
Pone !ora sistema
Mbtiene !ora sistema
Mbtiene !ora sistema
Pone fec!a ; !ora #e el sistema
Mbtiene fec!a sistema DMS
Mbtiene fec!a sistema DMS
Pone fec!a sistema DMS
Pone fec!a sistema DMS
Con<ierte !ora a formato calen#ario
Con<ierte fec!a ; !ora a formato "NIN
De<uel<e n #e ticDs relo6 #es#e inicio #el programa
$ormato !ora para sali#a
NIV
Constante Descripcion
5ANPATL
5ANDRIVE
5ANDIR
5AN$ILE
5ANENT
$AQRDMNLX
$AQLIDDEN
$AQSXSTE5
$AQLACEL
$AQDIREC
$AQARCL
ESERM
EINV$NC
ENM$ILE
ENMPATL
ECMNTR
EINV5E5
EINVENV
EINV$5T
EINVACC
EINVDAT
EINVDRV
EC"RDIR
ENMTSA5
EN5$ILE
ENMENT
E5$ILE
EACCES
ECAD$
ENM5E5
ENMDEV
EINVAL
E)CI>
ENMENEC
ENDEV
EDM5
ERAN>E
E$A"LT
EENIST
ENITQS"CCESS
ENITQ$AIL"RE
Completo arc!i<o nombre con pat!
DisD #ri<e 3e0g09 4A:47
Arc!i<o sub#irectorio especificacion
Arc!i<o nombre sin eEtension
Arc!i<o eEtension
Lectura solamente atributo
Li##en arc!i<o
Sistema arc!i<o
Volumen EtiOueta
Directorio
Arc!i<o
Error .
In<ali#o funcion numero
Arc!i<o no encontra#o
Pat! no encontra#o
5emoria bloOues #estrui#o
In<ali#o memoria bloOue #ireccion
In<ali#o ambiente
In<ali#o formato
In<ali#o acceso co#igo
In<ali#o #ato
In<ali#o #isco especifica#o
Attempt a remo<er CurDir
No mismo #ispositi<o
No mas arc!i<os
No suc! arc!i<o o #irectorio
5uc!os arc!i<os abiertos
Permiso #enega#o
5alo arc!i<o numero
No suficiente memoria
No !a; #ispositi<o
In<ali#o argumento
Argumento mu; largo
E6ecucion formato error
Dispositi<o enlaBa#or
5atematico argumento
Resulta#o mu; largo
Error #esconoci#o
Arc!i<o ;a eEiste
Normal programa terminacion
Anormal programa terminacion
NV
Funciones Varias de *ra+icos
$uncion Descripcion
int registerbgi#ri<er3<oi# 3U#is73<oi#77
int register bgi#isco3<oi# U#is7
int registerbgifont3<oi# 3Ufont73<oi#77
int register bgifont3<oi# Ufont7
int installuser#isco3c!ar Unom9int !uge 3U#etect73<oi#77
int installuserfont3c!ar Unom7
int getgrap!mo#e3<oi#7
c!arU getmo#enom3int mo#Qnum7
<oi# setgrap!mo#e3int mo#7
<oi# getmo#orange3int #isco9int Ulmo#9int U!mo#7
c!arU get#isconom3<oi#7
<oi# setKritemo#e3int mo#o7
<oi# Qgrap!freemem3<oi# Uptr9int siBe7
<oi#U Qgrap!getmem3int siBe7
<oi# setacti<epage3int page7
<oi# set<isualpage3int page7
<oi# #etectgrap!3int U#is9 int Umo#7
<oi# initgrap!3int U#is9int Umo#9c!ar Upat!#is7
<oi# closegrap!3<oi#7
<oi# grap!#efaults3<oi#7
c!arU grap!errormsg3int error7
int grap!result3<oi#7
Registros enlaBa#o en #isco graficos
Registros enlaBa#o en #isco graficos
Registros enlaBa#o en font
Registros enlaBa#o en font
Instala tabla C>I a #isco
Instala un arc!i<o font
De<uel<e el mo#o grafico actual
De<uel<e el nombre #el mo#o grafico especifica#o
Pone el mo#o graficos #el sistema 9limpia la pantalla
Mbtiene el rango #e mo#os graficos para un #isco
De<uel<e un apunta#or al nombre #el #isco grafico actual
Pone el mo#o escritura para #ibu6ar lineas
Pone memoria #e graficos
De<uel<e memoria #e graficos
Pone la pagina acti<a para sali#a #e graficos
Pone el numero #e la pagina <isual grafica
Determina ; <erifica el !ar#Kare para graficos
InicialiBa el graficos #el sistema
Cierra el graficos #el sistema
Limpia to#os los settings graficos
De<uel<e un apunta#or a un mensa6e #e error
De<uel<e un co#igo #e error #e operacion grafica
Control Valor
Detecte#
C>A
5C>A
E>A
E>A+1
E>A5MNM
IC5,/-1
LERC5MNM
ATT1..
V>A
PC()*.
.
-
)
(
1
/
+
*
,
2
-.
$ipos de !rror
Valor Descripcion
. grMD
'- grNoInit>rap!
') grNotDetecte#
'( gr$ileNot$oun#
'1 grIn<ali#Dri<er
'/ grNoLoa#5em
'+ grNoScan5em
'* grNo$loo#5em
', gr$ontNot$oun#
'2 grNo$ont5em
'-. grIn<ali#5o#e
'-- grError
'-) grIMerror
'-( grIn<ali#$ont
'-1 grIn<ali#$ontNum
'-/ grIn<ali#De<iceNum
'-, grIn<ali#Version
No !a; error
>raficos no instala#os3usa initgrap!7
>raficos #e !ar#Kare no #etecta#o
Arc!i<o no encontra#o
Disco in<ali#o
No !a; memoria para cargar el #isco
NM RA5 para eEploracion #e fon#o
No RA5 para eEploracion #e flu6o
Arc!i<o font no encontra#o
No !a; memoria para cargar font
In<ali#o mo#o grafico
Error graficos
Error graficos eVs
In<ali#o arc!i<o #e font
In<ali#o numero #e font
In<ali#o numero #e #ispositi<o
In<ali#o numero #e <ersion
NVI
Funciones de Lineas
$uncion Descripcion
<oi# getlinesettings3struct linesettingst;pe Ulineinfo7
<oi# setlinest;le3int estilo9int mo#elo9int espesor7
Mbtiene el actual linea estilo9 mo#elo9 ; espesor
Pone el actual linea estilo ; anc!ura ; mo#elo
$ipos de Lineas %odos de Lineas
$uncion Descripcion $uncion Descripcion
SMLIDQLINE
DMTTEDQLINE
CENTERQLINE
DASLEDQLINE
"SERCITQLINE
. Soli#a linea
- Dotte# linea
) Centere# linea
( Das!e# linea
1 "suario'#efini#o linea estilo
CMPXQP"T.
NMRQP"T -
MRQP"T )
ANDQP"T (
NMTQP"T 1
Copia origen bitmap onto pantalla
EEclu;e MRs origen imagen con Oue ;a en pantalla
Inclu;e MRs imagen Kit! Oue ;a en pantalla
ANDs imagen con Oue ;a en pantalla
Copia el in<erso #e el origen
Funciones de $e,to
$uncion Descripcion
<oi# outteEt3c!ar UteEtstring7
<oi# outteEtE;3int E9int ;9c!ar UteEtstring7
<oi# teEtbacDgroun#3int neKcolor7
<oi# teEtcolor3int neKcolor7
int teEt!eig!t3c!ar UteEtstring7
int teEtKi#t!3c!ar UteEtstring7
<oi# teEtmo#o3int neKmo#o7
<oi# setuserc!arsiBe3int multE9int #i<E9int mult;9int #i<;7
<oi# setteEt6ustif;3int !oriB9int <ert7
<oi# setteEtst;le3int font9int #irection9int c!arsiBe7
<oi# getteEtsettings3struct teEtsettingst;pe UteEtt;peinfo7
Despliega un string en la <entana grafica
Despliega un string en la posicion especifica#a 3graficos mo#o7
Selecciona un nue<o color bacDgroun# para teEto
Selecciona un nue<o color caracter en teEto mo#o
De<uel<e la altura #e un string en piEeles
De<uel<e la ac!ura #e un string en piEeles
Cambia pantalla mo#o 3en mo#o teEto7
Coloca el tamaPo para un caracter #efini#o por usuario
Pone 6ustificacion #e teEto para mo#o grafico
Pone las caracteristicas #e el teEto actual
Mbtiene informacion acerca #e el actual teEto grafico
Tipografia Valor
Default
TripleE0c!r
Litt0c!r
Sans!eirf0c!r
>ot!ic0c!r
Script0c!r
SimpleE0c!r
European0c!r
Double0c!r
Col#0c!r
.
-
)
(
1
/
+
*
,
2
-usti+icacion de $e,to
$uncion Descripcion
!oriBontal
LE$TQTENT
CENTERQTENT
RI>LTQTENT
<ertical
CMTTM5QTENT
CENTERQTENT
TMPQTENT
. austificacion iBOuier#a
- austificacion centra#a
) austificacion #erec!a
. austificacion aba6o
- austificacion centra#a
) austificacion alta
NVII
Figuras *eometricas
$igura Descripcion
PutpiEel3E9;9color7
Line3E9;9E)9;)7
Linerel3E9;7
Lineto3E9;7
Arc3E9;9>ra#o-9>ra#o)9Ra#io7
Car3E9;9E)9;)7
Rectangle3E9;9E)9;)7
Pieslice3E9;9>ra#o-9>ra#o)9Ra#io7
Car(#3E9;9E)9;)9Profun#i#a#9toponVtopoff7
Circle3E9;9Ra#io7
Sector3E9;9>ra#o-9>ra#o)9Ra#ioE9Ra#io;7
Ellipse3E9;9>ra#o-9>ra#o)9Ra#ioE9Ra#io;7
DraKpol;3SiBeof3arreglo7 #i< siBe3arreglo77
$illellipse3E9;9Ra#ioE9Ra#io;7
$illpol;3SiBeof3arreglo7 #i< siBe3arreglo7377
$loo#fill3E9;9Cor#e77
Setfillst;le3Estilo9Color7
Dibu6a un piEel en E9;
TraBa una linea #e E9; !asta E)9;)
TraBa una linea #e .9. !asta E)9;)
TraBa una linea #e la ultima linea !asta E9;
TraBa un arco #e centro E9; #e >ra#o- a >ra#o)
TraBa una barra #e ESI E9; !asta EID E)9;)
TraBa un Rectangulo #e ESI E9; !asta EID E)9;)
TraBa un Pa; #e centro E9; con ra#io #e >ra#o- a >ra#o )
TraBa una barra en (D #e ESI E9; !asta EID E)9;)
TraBa un circulo #e centro E9; con Ra#io
TraBa el sector #e una elipse #e centro E9; con #os Ra#ios
TraBa una Elipse #e centro E9; con #os Ra#ios
TraBa un Poligono conteni#o en un arreglo
Rellena una Elipse #e E9; con #os Ra#ios
Rellena un poligono conteni#o en un arreglo
Rellena una figura cerra#a Oue tiene color #e bor#e
Coloca estilo #e relleno
Funciones de Ventanas
$uncion Descripcion
<oi# set<ieKport3int A9int C9int C9int D9int clip7
<oi# clear<ieKport3<oi#7
<oi# clear#e<ice3<oi#7
<oi# getfillpattern3c!ar Upattern7
<oi# getfillsettings 3struct fillsettingst;pe Ufillinfo7
<oi# setfillpattern3c!ar Uupattern9int color7
Delimita una <entana grafica
Limpia la <entana grafica
Limpia la graficos pantalla
Copia un mo#elo #efini#o por usuario en la memoria
Mbtiene informacion #e mo#elo ; color actual #e relleno
Selecciona un mo#elo relleno #efini#o por usuario
Funciones de Pantalla
$uncion Descripcion
int getE3<oi#7
int get;3<oi#7
int getmaEE3<oi#7
int getmaE;3<oi#7
<oi# getarccoor#s3struct arccoor#st;pe Uarccoor#s7
<oi# mo<erel3int #E9int #;7
<oi# mo<eto3int E9int ;7
<oi# get<ieKsettings 3struct <ieKportt;pe U<ieKport7
int getpiEel3int E9 int ;7
<oi# getlinesettings3struct linesettingst;pe Ulineinfo7
int getmaEmo#o3<oi#7
<oi# getaspectratio3int UEasp9int U;asp7
<oi# setaspectratio3int Easp9int ;asp7
<oi# getimage3int A9int C9int C9int D9<oi# Ubitmap7
<oi# putimage3int A9int C9<oi# Ubitmap9int op7
int imagesiBe3int A9int C9int C9int D7
De<uel<e el actual posicion en E !oriBontal
De<uel<e el actual posicion en ; <ertical
De<uel<e maEimo E !oriBontal
De<uel<e maEimo ; <ertical
Mbtiene coor#ena#as #e la ultima llama#a a arc
5ue<e la actual posicion a una relati<a #istancia
5ue<e la posicion #e el cursor a E9 ;
Mbtiene informacion acerca la actual <entana grafica
Mbtiene el color #el piEel especifica#o
Mbtiene el actual line estilo9 mo#elo9 ; espesor
De<uel<e numero maEimo mo#os graficos para actual #isco
De<uel<e maEimo graficos mo#o numero para actual #isco
Pone la relacion #e aspecto #e graficos
Sal<a una imagen #e la region especifica#a9en la memoria
Pone una imagen en la pantalla
De<uel<e el numero #e b;tes reOueri#os para un bit imagen
NVIII
Funciones de Color
$uncion Descripcion
int getmaEcolor3<oi#7
<oi# getpalette3struct palettet;pe Upalette7
int getpalettesiBe3<oi#7
<oi# get#efaultpalette3<oi#7
<oi# setcolor3int color7
int getcolor3<oi#7
int setgrap!bufsiBe3int bufsiBe7
<oi# setpalette3int colornum9int color7
int getbDcolor3<oi#7
<oi# setbDcolor3int color7
<oi# setallpalette3struct palettet;pe Upalette7
De<uel<e maEimo <alor para color
Mbtiene informacion acerca la actual paleta
De<uel<e tamaPo #e paleta color looDup tabla
De<uel<e la paleta #efinicion estructura
De<uel<e la paleta #efinicion estructura
De<uel<e el color actual
Cambia el tamaPo #e el buffer grafico interno
Cambia un color #e la paleta
De<uel<e el color bacDgroun# actual
Pone el color bacDgroun# actual usan#o la paleta
Cambia to#os los colores #e la paleta especifica#a
Formato de Relleno
5o#elo Valor Descripccion
Empt;Q$ill
Soli#Q $ill
LineQ $ill
Ltslas!Q $ill
Slas!Q $ill
CDslas!Q $ill
LtDslas!Q $ill
Latc!Q $ill
N!atc!Q $ill
Interlea<eQ $ill
Yi#e#otQ $ill
Close#otQ $ill
"serQ $ill
.
-
)
(
1
/
+
*
,
2
-.
--
-)
Rellena con color #e fon#o
Rellena con color soli#o
Rellena con lineas
Rellena con barras claras
Rellena con barras
Rellena con barras inclina#as
Rellena con barras inclina#as claras
Rellena con entrama#o claro
Rellena con entrama#o
Rellena con interlea<ing
Rellena con puntos espacia#os
Rellena con puntos 6untos
Rellena con mo#elo #efini#o
NIN
Un ejemplo de programa. el cl/sico )ola mundo0editar1
A continuación se cita un programa #e e6emplo Lola mun#o escrito en C:
67 3sta ca0ecera permite usar los o04etos Jue encapsulan los descriptores stdout
I stdin" cout(<<) I cin(>>)76
#include <iostream>

int main()
{
std""cout << "Bola mundo" << std""endl;
std""cin.!et();
'
Al usar la #irecti<a #include estamos #iciTn#ole al compila#or Oue busOue e interprete to#os los elementos
#efini#os en el arc!i<o Oue acompaPa la #irecti<a 3en este caso9 iostream70 Para e<itar sobrescribir los elementos
;a #efini#os al ponerles igual nombre9 se crearon los espacios #e nombres o namespace #el singular en inglTs0 En
este caso !a; un espacio #e nombres llama#o std9 Oue es #on#e se inclu;en las #efiniciones #e to#as las funciones
; clases Oue conforman la biblioteca están#ar #e Cbb0 Al incluir la sentencia usin! namespace std le estamos
#icien#o al compila#or Oue usaremos el espacio #e nombres std por lo Oue no ten#remos Oue incluirlo cuan#o
usemos elementos #e este espacio #e nombres9 como pue#en ser los ob6etos cout ; cin9 Oue representan el flu6o #e
sali#a están#ar 3tApicamente la pantalla o una <entana #e teEto7 ; el flu6o #e entra#a están#ar 3tApicamente el
tecla#o70
La #efinición #e funciones es igual Oue en C9 sal<o por la caracterAstica #e Oue si main no <a a recoger argumentos9
no tenemos por OuT ponTrselos9 a #iferencia #e C9 #on#e !abAa Oue ponerlos eEplAcitamente9 aunOue no se fueran a
usar0 ]ue#a solo comentar Oue el sAmbolo << se conoce como opera#or #e inserción9 ; grosso modo está en<ian#o
a cout lo Oue Oueremos mostrar por pantalla para Oue lo pinte9 en este caso la ca#ena "Bola mundo"0 El mismo
opera#or << se pue#e usar <arias <eces en la misma sentencia9 #e forma Oue gracias a esta caracterAstica po#remos
concatenar el ob6eto endl al final9 cu;o resulta#o será imprimir un retorno #e lAnea0
Por Rltimo tomaremos una secuencia #e caracteres #el tecla#o !asta el retorno #e lAnea 3presionan#o ENTER79
llaman#o al mTto#o !et #el ob6eto cin0
$ipos de datos0editar1
Cbb tiene los siguientes tipos fun#amentales:
• Caracteres: char 3tambiTn es un entero79 )char;t
• Enteros: short9 int9 lon!9 lon! lon!
• NRmeros en coma flotante: float9 dou0le9 lon! dou0le
• Cooleanos: 0ool
• VacAo: Koid
NN
El mo#ifica#or unsi!ned se pue#e aplicar a enteros para obtener nRmeros sin signo 3por omisión los enteros
contienen signo79 con lo Oue se consigue un rango ma;or #e nRmeros naturales0
$ama2os asociados0editar1
SegRn la máOuina ; el compila#or Oue se utilice los tipos primiti<os pue#en ocupar un #etermina#o tamaPo en
memoria0 La siguiente lista ilustra el nRmero #e bits Oue ocupan los #istintos tipos primiti<os en la arOuitectura
E,+0
Mtras arOuitecturas pue#en reOuerir #istintos tamaPos #e tipos #e #atos primiti<os0 Cbb no #ice na#a acerca #e cuál
es el nRmero #e bits en un b;te9 ni #el tamaPo #e estos tipos más bien9 ofrece solamente las siguientes 4garantAas
#e tipos4:
• De acuer#o al están#ar C229 un tipo char #ebe ocupar eEactamente un byte compuesto #e un mAnimo #e ,
bits in#epen#ientemente #e la arOuitectura #e la máOuina0
• El tamaPo reconoci#o #e char es #e -0 Es #ecir9 siLeof(char) siempre #e<uel<e -0
• "n tipo short tiene al menos el mismo tamaPo Oue un tipo char0
• "n tipo lon! tiene al menos el doble tamaPo en b;tes Oue un tipo short0
• "n tipo int tiene un tamaPo entre el #e short ; el #e lon!9 ambos inclusi<e9 preferentemente el tamaPo #e
un apunta#or #e memoria #e la máOuina0
• "n tipo unsi!ned tiene el mismo tamaPo Oue su <ersión si!ned0
3char4t0editar1
Para la <ersión #el están#ar Oue se publicó en -22,9 se #eci#ió aPa#ir el tipo #e #ato )char;t9 Oue permite el uso
#e caracteres "NICMDE9 a #iferencia #el tra#icional char9 Oue contempla simplemente al có#igo #e caracteres
ASCII eEten#i#o0 A su <eB9 se !a #efini#o para la ma;orAa #e las funciones ; clases9 tanto #e C como #e Cbb9 una
<ersión para traba6ar con )char;t9 #on#e usualmente se prefi6a el carácter w al nombre #e la función 3en ocasiones
el carácter es un infi6o70 Por e6emplo:
• strcpI M )strcpI
• std""strin! M std"")strin!
• std""cout M std"")cout
Cabe resaltar Oue en C se #efine )char;t como:
tIpedef unsi!ned short )char;t;
Tamaños de tipos primitivos bajo i386 (GCC)
$ipo '5mero de &its
char
,
short
-+
int
()
float
()
dou0le
+1
NNI
5ientras Oue en Cbb es en sA mismo un tipo #e #ato0
La palara reservada 6void60editar1
La palabra reser<a#a Koid #efine en Cbb el concepto #e no eEistencia o no atribución #e un tipo en una <ariable o
#eclaración0 Es #ecir9 una función #eclara#a como Koid no #e<ol<erá ningRn <alor0 Esta palabra reser<a#a tambiTn
pue#e usarse para in#icar Oue una función no recibe parámetros9 como en la siguiente #eclaración:
int funcion (Koid);
AunOue la ten#encia actual es la #e no colocar la palabra 4<oi#40
A#emás se utiliBa para #eterminar Oue una función no retorna un <alor9 como en:
Koid funcion (int parametro);
Cabe #estacar Oue void no es un tipo0 "na función como la #eclara#a anteriormente no pue#e retornar un <alor
por me#io #e return: la palabra cla<e <a sola0 No es posible una #eclaración #el tipo:
Koid t; 663stN mal
En este senti#o9 Koid se comporta #e forma ligeramente #iferente a como lo !ace en C9 especialmente en cuanto a
su significa#o en #eclaraciones ; prototipos #e funciones0
Sin embargo9 la forma especial Koid 7 in#ica Oue el tipo #e #atos es un puntero0 Por e6emplo:
Koid 7memoria;
In#ica Oue memoria es un puntero a alguna parte9 #on#e se guar#a información #e algún tipo0 El programa#or es
responsable #e #efinir estos 4algRn49 eliminan#o to#a ambigce#a#0 "na <enta6a #e la #eclaración 4void *4 es Oue
pue#e representar a la <eB <arios tipos #e #atos9 #epen#ien#o #e la operación #e ast escogi#a0 La memoria Oue
!emos apunta#o en alguna parte9 en el e6emplo anterior9 bien po#rAa almacenar un entero9 un flotante9 una ca#ena
#e teEto o un programa9 o combinaciones #e Tstos0 Es responsabili#a# #el programa#or recor#ar OuT tipo #e #atos
!a; ; garantiBar el acceso a#ecua#o0
La palara 6'ULL60editar1
A#emás #e los <alores Oue pue#en tomar los tipos anteriormente menciona#os9 eEiste un <alor llama#o N"LL9 sea
el caso numTrico para los enteros9 caracter para el tipo c!ar9 ca#ena #e teEto para el tipo string9 etc0 El <alor N"LL9
eEpresa9 por lo regular9 la representación #e una 5acro9 asigna#a al <alor 4.40
Tenemos entonces Oue:
Koid7 puntero * OP##;
int entero * OP##;
0ool 0oleana * OP##;
char caracter * OP##;
El <alor #e las <ariables anteriores nos #arAa .0 A #iferencia #e la <ariable 4caracter49 Oue nos #arAa el eOui<alente a
N"LL9 @?.@9 para caracteres0
Principios0editar1
To#o programa en Cbb #ebe tener la función principal main() 3a no ser Oue se especifiOue en tiempo #e
compilación otro punto #e entra#a9 Oue en reali#a# es la función Oue tiene el main()7
int main()
{'
La función principal #el có#igo fuente main #ebe tener uno #e los siguientes prototipos:
int main()
int main(int ar!c& char77 ar!K)
NNII
AunOue no es están#ar algunas implementaciones permiten
int main(int ar!c& char77 ar!K& char77 enK)
La primera es la forma por omisión #e un programa Oue no recibe parámetros ni argumentos0 La segun#a forma
tiene #os parámetros: arg9 un nRmero Oue #escribe el nRmero #e argumentos #el programa 3inclu;en#o el nombre
#el programa mismo79 ; argv9 un puntero a un arra; #e punteros9 #e arg elementos9 #on#e el elemento ar!K[i]
representa el i'Tsimo argumento entrega#o al programa0 En el tercer caso se aPa#e la posibili#a# #e po#er acce#er
a las <ariables #e entorno #e e6ecución #e la misma forma Oue se acce#e a los argumentos #el programa9 pero
refle6a#os sobre la <ariable env0
El tipo #e retorno #e main es un <alor entero int0 Al finaliBar la función main9 #ebe incluirse el <alor #e retorno
3por e6emplo9 return 0;9 aunOue el están#ar pre<T solamente #os posibles <alores #e retorno: ENITQS"CCESS ;
ENITQ$AIL"RE9 #efini#as en el arc!i<o cstdli079 o salir por me#io #e la función e>it0 Alternati<amente pue#e
#e6arse en blanco9 en cu;o caso el compila#or es responsable #e agregar la sali#a a#ecua#a0
!l concepto de clase0editar1
VTase tambiTn: Clase (in!orm"tia)
Los ob6etos en Cbb son abstraA#os me#iante una clase0 SegRn el para#igma #e la programación orienta#a a ob6etos
un ob6eto consta #e:
-0 I#enti#a#9 Oue lo #iferencia #e otros ob6etos 3Nombre Oue lle<ara la clase a la Oue pertenece #ic!o ob6eto70
)0 5Tto#os o funciones miembro
(0 Atributos o <ariables miembro
"n e6emplo #e clase Oue po#emos tomar es la clase perro0 Ca#a perro comparte unas caracterAsticas 3atributos70 Su
nRmero #e patas9 el color #e su pela6e o su tamaPo son algunos #e sus atributos0 Las funciones Oue lo !agan la#rar9
cambiar su comportamiento000 esas son las funciones #e la clase0
Este es otro e6emplo #e una clase:
class =unto
{
66por omisiQn los miem0ros son ,priKate, para Jue sQlo se puedan modificar desde la propia
clase.
priKate"
66 Faria0le miem0ro priKada
int id;
protected"
66 Faria0les miem0ro prote!idas
int >;
int I;
pu0lic"
66 Eonstructor
=unto();
66 8estructor
R=unto();
66 9unciones miem0ro o mStodos
int <0tenerT();
int <0tenerU();
';
Constructores0editar1
VTase tambiTn: Construtor (in!orm"tia)
NNIII
Son unos mTto#os especiales Oue se e6ecutan automáticamente al crear un ob6eto #e la clase0 En su #eclaración no
se especifica el tipo #e #ato Oue #e<uel<en9 ; poseen el mismo nombre Oue la clase a la Oue pertenecen0 Al igual
Oue otros mTto#os9 pue#e !aber <arios constructores sobrecarga#os9 aunOue no pue#en eEistir constructores
<irtuales0
Como caracterAstica especial a la !ora #e implementar un constructor9 6usto #espuTs #e la #eclaración #e los
parámetros9 se encuentra lo Oue se llama 4lista #e inicialiBa#ores40 Su ob6eti<o es llamar a los constructores #e los
atributos Oue conforman el ob6eto a construir0
Cabe #estacar Oue no es necesario #eclarar un constructor al igual Oue un #estructor9 pues el compila#or lo pue#e
!acer9 aunOue no es la me6or forma #e programar0
Toman#o el e6emplo #e la Clase Punto9 si #eseamos Oue ca#a <eB Oue se cree un ob6eto #e esta clase las
coor#ena#as #el punto sean igual a cero po#emos agregar un constructor como se muestra a continuación:
class =unto
{
pu0lic"

float >; 66 Eoordenadas del punto
float I;

66 Eonstructor
=unto() " >(0)& I(0){ 66 nicialiLamos las Karia0les ">" e "I"
'
';

66 Vain para demostrar el funcionamiento de la clase

# include <iostream> 66 3sto nos permite utiliLar "cout"

usin! namespace std;

int main () {
=unto Vi=unto; 66 creamos un elemento de la clase =unto llamado Vi=unto

cout << "Eoordenada T" " << Vi=unto.> << endl; 66 mostramos el Kalor acumulado en la
Karia0le >
cout << "Eoordenada U" " << Vi=unto.I << endl; 66 mostramos el Kalor acumulado en la
Karia0le I
!etchar(); 66 le indicamos al pro!rama Jue espere al 0uffer de entrada (detenerse)
return 0;
'
Si compilamos ; e6ecutamos el anterior programa9 obtenemos una sali#a Oue #ebe ser similar a la siguiente:
Coor#ena#a N: . Coor#ena#a X: .
EEisten <arios tipos #e constructores en Cbb:
-0 Constructor predeterminado0 Es el constructor Oue no recibe ningRn parámetro en la función0 Si no se
#efiniera ningRn constructor9 el sistema proporcionarAa uno pre#etermina#o0 Es necesario para la
construcción #e estructuras ; contene#ores #e la STL0
)0 Constructor de copia0 Es un constructor Oue recibe un ob6eto #e la misma clase9 ; realiBa una copia #e los
atributos #el mismo0 Al igual Oue el pre#etermina#o9 si no se #efine9 el sistema proporciona uno0
(0 Constructor de conversión0 Este constructor9 recibe como Rnico parámetro9 un ob6eto o <ariable #e otro
tipo #istinto al su;o propio0 Es #ecir9 con<ierte un ob6eto #e un tipo #etermina#o a otro ob6eto #el tipo Oue
estamos generan#o0
NNIV
Constructores 7 %emoria heap "n ob6eto crea#o #e la forma Oue se <io !asta a!ora9 es un ob6eto Oue <i<e #entro
#el scope3las lla<es I J7 en el Oue fue crea#o0 Para Oue un ob6eto pue#a seguir <i<ien#o cuan#o se saOue #e el
scope en el Oue se creó9 se lo #ebe crear en memoria !eap0 Para esto9 se utiliBa el opera#or neK9 el cual asigna
memoria para almacenar al ob6eto crea#o9 ; a#emás llama a su constructor3por lo Oue se le pue#en en<iar
parámetros70 El opera#or neK se utiliBa #e la siguiente manera:
int main() {
=unto 7un=unto * ne) =unto(); 66esto llama al constructor Jue se descri0e mNs arri0a
delete un=unto; 66no haI Jue olKidarse de li0erar la memoria ocupada por el
o04eto(Ker la secciQn destructores& mNs a0a4o)
return 0;
'
A#emás9 con el opera#or neK%& se pue#en crear arra;s 3colecciones o listas or#ena#as7 #e tamaPo #inámico:
=unto 7asi!nar(int cuantos) {
return ne) =unto[cuantos]; 66asi!na un arraI de ,cuantos, puntos(se llama el constructor
Jue se muestra mNs arri0a)& I se retorna.
'
#estructores0editar1
VTase tambiTn: #estrutor (in!orm"tia)
Los #estructores son funciones miembro especiales llama#as automáticamente en la e6ecución #el programa9 ; por
tanto no tienen por 8ué ser llamadas e,pl9citamente por el programador0 Sus principales cometi#os son:
• Liberar los recursos computacionales Oue el ob6eto #e #ic!a clase !a;a a#Ouiri#o en tiempo #e e6ecución al
eEpirar Tste0
• ]uitar los <Anculos Oue pu#iesen tener otros recursos u ob6etos con Tste0
Los #estructores son in<oca#os automáticamente al alcanBar el flu6o #el programa el fin #el ámbito en el Oue está
#eclara#o el ob6eto0 El Rnico caso en el Oue se #ebe invocar e,pl9citamente al destructor de un ojeto9 es cuan#o
Tste fue crea#o me#iante el opera#or neK9 es #ecir9 Oue Tste <i<e en memoria !eap9 ; no en la pila #e e6ecución #el
programa0 La in<ocación #el #estructor #e un ob6eto Oue <i<e en !eap se realiBa a tra<Ts #el opera#or #elete o
#elete%& para arra;s0 E6emplo:
int main() {
int 7un3ntero * ne) int(1(); 66asi!namos un entero en memoria heap con el Kalor 1(
int 7arraI8e3nteros * ne) int[(/]; 66asi!namos memoria para (/ enteros(no estan
inicialiLados)
delete un3ntero; 66li0eramos la memoria Jue ocupa0a un3ntero
delete[] arraI8e3nteros; 66li0eramos la memoria ocupada por arraI8e3nteros
return 0;
'
Si no se utiliBara el opera#or #elete ; #elete%& en ese caso9 la memoria ocupa#a por unEntero ; arra;DeEnteros
respecti<amente9 Oue#arAa ocupa#a sin senti#o0 Cuan#o una porción #e memoria Oue#a ocupa#a por una <ariable
Oue ;a no se utiliBa9 ; no !a; forma #e acce#er a ella9 se #enomina un @memor; leaD@0 En aplicaciones gran#es9 si
ocurren muc!os memor; leaDs9 el programa pue#e terminar ocupan#o bastante más memoria RA5 #e la Oue
#eberAa9 lo Oue no es para na#a con<eniente0 Es por esto9 Oue el mane6o #e memoria !eap #ebe usarse
conscientemente0
EEisten #os tipos #e #estructores pue#en ser pRblicos o pri<a#os9 segRn si se #eclaran:
• Si es pRblico se llama #es#e cualOuier parte #el programa para #estruir el ob6eto0
• Si es pri<a#o no se permite la #estrucción #el ob6eto por el usuario0
El uso #e #estructores es cla<e en el concepto #e A#Ouirir Recursos es InicialiBar0
NNV
Funciones miemro0editar1
$unción miembro es aOuella Oue está #eclara#a en ámbito #e clase0 Son similares a las funciones !abituales9 con la
sal<e#a# #e Oue el compila#or realiBara el proceso #e #ecoración de nomre 3$ame %angling en inglTs7:
Cambiará el nombre #e la función aPa#ien#o un i#entifica#or #e la clase en la Oue está #eclara#a9 pu#ien#o incluir
caracteres especiales o i#entifica#ores numTricos0 Este proceso es in<isible al programa#or0 A#emás9 las funciones
miembro reciben implAcitamente un parámetro a#icional: El puntero this9 Oue referencia al ob6eto Oue e6ecuta la
función0
Las funciones miembro se in<ocan acce#ien#o primero al ob6eto al cual refieren9 con la sintaEis:
mIo04ect.mImem0erfunction()9 esto es un claro e6emplo #e una función miembro0
Caso especial es el #e las funciones miembro estáticas0 A pesar #e Oue son #eclara#as #entro #e la clase9 con el uso
#e la palabra cla<e static no recibirán el puntero this0 >racias a esto no es necesario crear ninguna instancia #e
la clase para llamar a esta función9 sin embargo9 sólo se po#rá acce#er a los miembros estáticos #e la clase #a#o
Oue estos no están asocia#os al ob6eto sino al tipo0 La sintaEis para llamar a esta función estática es
mItIpe""mIstaticmem0er()0
Plantillas0editar1
Las plantillas son el mecanismo #e Cbb para implantar el para#igma #e la programación genTrica0 Permiten Oue
una clase o función traba6e con tipos #e #atos abstractos9 especificán#ose más a#elante cuales son los Oue se
Ouieren usar0 Por e6emplo9 es posible construir un <ector genTrico Oue pue#a contener cualOuier tipo #e estructura
#e #atos0 De esta forma se pue#en #eclarar ob6etos #e la clase #e este <ector Oue contengan enteros9 flotantes9
polAgonos9 figuras9 fic!as #e personal9 etc0
La #eclaración #e una plantilla se realiBa anteponien#o la #eclaración template <tIpename ?&....> a la
#eclaración #e la estructura 3clase9 estructura o función7 #esea#o0
Por e6emplo:
template <tIpename :>
: ma>(const : W>& const : WI) {
return (> > I) X > " I; 66si > > I& retorna >& sino retorna I
'
La función ma>() es un e6emplo #e programación genTrica9 ; #a#os #os parámetros #e un tipo T 3Oue pue#e ser
int9 lon!9 float9 dou0le9 etc07 #e<ol<erá el ma;or #e ellos 3usan#o el opera#or >70 Al e6ecutar la función con
parámetros #e un cierto tipo9 el compila#or intentará 4calBar4 la plantilla a ese tipo #e #atos9 o bien generará un
mensa6e #e error si fracasa en ese proceso0
!speciali:ación0editar1
Clases astractas0editar1
En Cbb es posible #efinir clases abstractas0 "na clase abstracta9 o clase base abstracta 3ACC79 es una Oue está
#isePa#a sólo como clase padre #e las cuales se #eben #eri<ar clases !i6as0 "na clase abstracta se usa para
representar aOuellas enti#a#es o mTto#os Oue #espuTs se implementarán en las clases #eri<a#as9 pero la clase
abstracta en sA no contiene ninguna implementación '' solamente representa los mTto#os Oue se #eben
implementar0 Por ello9 no es posible instanciar una clase abstracta9 pero sA una clase concreta Oue implemente los
mTto#os #efini#os en ella0
Las clases abstractas son Rtiles para #efinir interfaces9 es #ecir9 un con6unto #e mTto#os Oue #efinen el
comportamiento #e un mó#ulo #etermina#o0 Estas #efiniciones pue#en utiliBarse sin tener en cuenta la
implementación Oue se !ará #e ellos0
NNVI
En Cbb los mTto#os #e las clases abstractas se #efinen como funciones <irtuales puras0
class ?0stracta
{
pu0lic"
Kirtual int metodo() * 0;
';

class Eoncreta? " pu0lic ?0stracta
{
pu0lic"
int metodo()
{
66haL al!o
return foo () 1 (;
'
';

class EoncretaC " pu0lic ?0stracta
{
pu0lic"
int metodo()
{
66otra implementaciQn
return 0aL () M /;
'
';
En el e6emplo9 la clase Eoncreta? es una implementación #e la clase ?0stracta9 ; la clase EoncretaC es otra
implementación0 Debe notarse Oue el * 0 es la notación Oue emplea Cbb para #efinir funciones <irtuales puras0
!spacios de nomres0editar1
"na a#ición a las caracterAsticas #e C son los espacios de nomre 3namespae en inglTs79 los cuales pue#en
#escribirse como áreas <irtuales ba6o las cuales ciertos nombres #e <ariable o tipos tienen <ali#eB0 Esto permite
e<itar las ocurrencias #e conflictos entre nombres #e funciones9 <ariables o clases0
El e6emplo más conoci#o en Cbb es el espacio #e nombres std""9 el cual almacena to#as las #efiniciones nue<as
en Cbb Oue #ifieren #e C 3algunas estructuras ; funciones79 asA como las funcionali#a#es propias #e Cbb 3streams7
; los componentes #e la biblioteca STL0
Por e6emplo:
# include <iostream>
66 #as funciones en esta ca0ecera e>isten dentro del espacio de nom0res std""

namespace mi;paJuete{
int mi;Kalor;
';

int main()
{
int mi;Kalor * -;
mi;paJuete""mi;Kalor * .;

std""cout << mi;Kalor << ,%n,; 66 imprime ,-,
std""cout << mi;paJuete""mi;Kalor << ,%n,; 66 imprime ,.,

return 0;
'
NNVII
Como pue#e <erse9 las in<ocaciones #irectas a mi&valor #arán acceso solamente a la <ariable #escrita localmente
para acce#er a la <ariable #el espacio #e nombres mi&pa'uete es necesario acce#er especAficamente el espacio #e
nombres0 "n ata6o recomen#a#o para programas sencillos es la #irecti<a usin! namespace9 Oue permite acce#er a
los nombres #e <ariables #el paOuete #esea#o en forma #irecta9 siempre ; cuan#o no se pro#uBca alguna
ambigce#a# o conflicto #e nombres0
)erencia0editar1
EEisten <arios tipos #e !erencia entre clases en el lengua6e #e programación Cbb0 Estos son:
)erencia simple0editar1
La !erencia en Cbb es un mecanismo #e abstracción crea#o para po#er facilitar ; me6orar el #isePo #e las clases #e
un programa0 Con ella se pue#en crear nue<as clases a partir #e clases ;a !ec!as9 siempre ; cuan#o tengan un tipo
#e relación especial0
En la !erencia9 las clases #eri<a#as 4!ere#an4 los #atos ; las funciones miembro #e las clases base9 pu#ien#o las
clases #eri<a#as re#efinir estos comportamientos 3polimorfismo7 ; aPa#ir comportamientos nue<os propios #e las
clases #eri<a#as0 Para no romper el principio #e encapsulamiento 3ocultar #atos cu;o conocimiento no es necesario
para el uso #e las clases79 se proporciona un nue<o mo#o #e <isibili#a# #e los #atosVfunciones: 4protecte#40
CualOuier cosa Oue tenga <isibili#a# protecte# se comportará como pRblica en la clase Case ; en las Oue componen
la 6erarOuAa #e !erencia9 ; como pri<a#a en las clases Oue NM sean #e la 6erarOuAa #e la !erencia0
Antes #e utiliBar la !erencia9 nos tenemos Oue !acer una pregunta9 ; si tiene senti#o9 po#emos intentar usar esta
6erarOuAa: Si la frase HclaseC^ ES'"N HclaseA^ tiene senti#o9 entonces estamos ante un posible caso #e !erencia
#on#e clase A será la clase base ; clase C la #eri<a#a0
E6emplo: clases Carco9 AcoraBa#o9 Carguero9 etc0 un AcoraBa#o ES'"N Carco9 un Carguero ES'"N Carco9 un
Trasatlántico ES'"N Carco9 etc0
En este e6emplo ten#rAamos las cosas generales #e un Carco 3en Cbb7
class Carco {
protected"
char7 nom0re;
float peso;
pu0lic"
66Eonstructores I demNs funciones 0Nsicas de 0arco
';
; a!ora las caracterAsticas #e las clases #eri<a#as9 po#rAan 3a la <eB Oue !ere#an las #e barco7 aPa#ir cosas propias
#el subtipo #e barco Oue <amos a crear9 por e6emplo:
class Ear!uero" pu0lic Carco { 66 3sta es la manera de especificar Jue hereda de Carco
priKate"
float car!a;
663l resto de cosas
';

class ?coraLado" pu0lic Carco {
priKate"
int numero?rmas;
int Yoldados;
66 3l resto de cosas
';
Por Rltimo9 !a; Oue mencionar Oue eEisten ( clases #e !erencia Oue se #iferencian en el mo#o #e mane6ar la
<isibili#a# #e los componentes #e la clase resultante:
NNVIII
• Lerencia publica 3class Deri<a#a: public Case 7: Con este tipo #e !erencia se respetan los comportamientos
originales #e las <isibili#a#es #e la clase Case en la clase Deri<a#a0
• Lerencia pri<a#a 3clase Deri<a#a: pri<ate Case7: Con este tipo #e !erencia to#o componente #e la clase
Case9 será pri<a#o en la clase Deri<a#a 3las propie#a#es !ere#a#as serán pri<a#as aunOue estas sean
pRblicas en la clase Case7
• Lerencia protegi#a 3clase Deri<a#a: protecte# Case7: Con este tipo #e !erencia9 to#o componente pRblico ;
protegi#o #e la clase Case9 será protegi#o en la clase Deri<a#a9 ; los componentes pri<a#os9 siguen sien#o
pri<a#os0
)erencia m5ltiple0editar1
La !erencia mRltiple es el mecanismo Oue permite al programa#or !acer clases #eri<a#as a partir9 no #e una sola
clase base9 sino #e <arias0 Para enten#er esto me6or9 pongamos un e6emplo: Cuan#o <es a Ouien te atien#e en una
tien#a9 como persona Oue es9 po#rás suponer Oue pue#e !ablar9 comer9 an#ar9 pero9 por otro la#o9 como emplea#o
Oue es9 tambiTn po#rás suponer Oue tiene un 6efe9 Oue pue#e cobrarte #inero por la compra9 Oue pue#e #e<ol<erte el
cambio9 etc0 Si esto lo trasla#amos a la programación serAa !erencia mRltiple 3clase emplea#oQtien#a7:
class =ersona {
...
Ba0lar();
Eaminar();
...
';

class 3mpleado {
=ersona 4efe;
int sueldo;
Eo0rar();
...
';

class 3mpleado:ienda" pu0lic =ersona& 3mpleado {
...
?lmacenarYtocH();
Eompro0ar3>istencias();
...
';
Por tanto9 es posible utiliBar más #e una clase para Oue otra !ere#e sus caracterAsticas0
"orecarga de operadores0editar1
La sobrecarga #e opera#ores es una forma #e !acer polimorfismo0 Es posible #efinir el comportamiento #e un
opera#or #el lengua6e para Oue traba6e con tipos #e #atos #efini#os por el usuario0 No to#os los opera#ores #e Cbb
son factibles #e sobrecargar9 ;9 entre aOuellos Oue pue#en ser sobrecarga#os9 se #eben cumplir con#iciones
especiales0 En particular9 los opera#ores siLeof ; "" no son sobrecargables0
No es posible en Cbb crear un opera#or nue<o0
Los comportamientos #e los opera#ores sobrecarga#os se implementan #e la misma manera Oue una función9 sal<o
Oue esta ten#rá un nombre especial: Tipo de dato de devolución operator<token del
operador>(parámetros)
Los siguientes opera#ores pue#en ser sobrecarga#os:
• Mpera#ores "narios
NNIN
o Mpera#or U 3#e in#irección7
o Mpera#or '^ 3#e in#irección7
o Mpera#or = 3#e #irección7
o Mpera#or b
o Mpera#or '
o Mpera#or bb
o Mpera#or ''
• Mpera#ores Cinarios
o Mpera#or GG
o Mpera#or b
o Mpera#or '
o Mpera#or U
o Mpera#or V
o Mpera#or 8
o Mpera#or HH
o Mpera#or ^^
o Mpera#or =
o Mpera#or d
o Mpera#or e
o Mpera#or %&
o Mpera#or 37
• Mpera#ores #e Asignación
o Mpera#or G
o Mpera#or bG
o Mpera#or 'G
o Mpera#or UG
o Mpera#or VG
o Mpera#or 8G
o Mpera#or HHG
NNN
o Mpera#or ^^G
o Mpera#or =G
o Mpera#or dG
o Mpera#or eG
Da#o Oue estos opera#ores son #efini#os para un tipo #e #atos #efini#o por el usuario9 Tste es libre #e asignarles
cualOuiera semántica Oue #esee0 Sin embargo9 se consi#era #e primera importancia Oue las semánticas sean tan
pareci#as al comportamiento natural #e los opera#ores como para Oue el uso #e los opera#ores sobrecarga#os sea
intuiti<o0 Por e6emplo9 el uso #el opera#or unario ' #ebiera cambiar el 4signo4 #e un 4<alor40
Los opera#ores sobrecarga#os no #e6an #e ser funciones9 por lo Oue pue#en #e<ol<er un <alor9 si este <alor es #el
tipo #e #atos con el Oue traba6a el opera#or9 permite el enca#enamiento #e sentencias0 Por e6emplo9 si tenemos (
<ariables A9C ; C #e un tipo T ; sobrecargamos el opera#or G para Oue traba6e con el tipo #e #atos T9 !a; #os
opciones: si el opera#or no #e<uel<e na#a una sentencia como 4AGCGC4 3sin las comillas7 #arAa error9 pero si se
#e<uel<e un tipo #e #atos T al implementar el opera#or9 permitirAa concatenar cuantos elementos se Ouisieran9
permitien#o algo como 4AGCGCGDG0004
"tandard $emplate Lirary ;"$L<0editar1
ArtAculo principal: (tandard Template )ibrary
Los lengua6es #e programación suelen tener una serie #e bibliotecas #e funciones integra#as para la manipulación
#e #atos a ni<el más básico0 En Cbb9 a#emás #e po#er usar las bibliotecas #e C9 se pue#e usar la nati<a STL
3Stan#ar# Template Librar;79 propia #el lengua6e0 Proporciona una serie plantillas 3templates7 Oue permiten
efectuar operaciones sobre el almacena#o #e #atos9 procesa#o #e entra#aVsali#a0
&ilioteca de entrada y salida0editar1
Las clases asic4ostream ; asic4stream9 ; los ob6etos cout ; cin9 proporcionan la entra#a ; sali#a están#ar #e
#atos 3tecla#oVpantalla70 TambiTn está #isponible cerr9 similar a cout9 usa#o para la sali#a están#ar #e errores0
Estas clases tienen sobrecarga#os los opera#ores HH ; ^^9 respecti<amente9 con el ob6eto #e ser Rtiles en la
inserciónVeEtracción #e #atos a #ic!os flu6os0 Son opera#ores inteligentes9 ;a Oue son capaces #e a#aptarse al tipo
#e #atos Oue reciben9 aunOue ten#remos Oue #efinir el comportamiento #e #ic!a entra#aVsali#a para clasesVtipos #e
#atos #efini#os por el usuario0 Por e6emplo:
ostreamW operator<<(ostreamW fs&const =untoW punto)
{
return fs << punto.> << "&" << punto.I;
'
De esta forma9 para mostrar un punto9 solo !abrAa Oue realiBar la siguiente eEpresión:
66...
=unto p(.&/);
66...
cout << "#as coordenadas son" " << p << endl;
66...
Es posible formatear la entra#aVsali#a9 in#ican#o el nRmero #e #Agitos #ecimales a mostrar9 si los teEtos se pasarán
a minRsculas o ma;Rsculas9 si los nRmeros recibi#os están en formato octal o !eEa#ecimal9 etc0
Fstreams0editar1
Tipo #e flu6o para el mane6o #e fic!eros0 La #efinición pre<ia #e ostreams*istreams es aplicable a este aparta#o0
EEisten tres clases 3fic!eros #e lectura9 #e escritura o #e lecturaVescritura7: i+stream9o+stream ; +stream0
NNNI
Como abrir un fic!ero: 3nombreQ<ariableQfic!ero70open34nombreQfic!ero0#atVtEt49ios::in7 para abrirlo en mo#o
lectura0 3nombre<ariablefic!ero70open34nombreQfic!ero0#atVtEt49ios::out7 para abrirlo en mo#o escritura0
E6emplo: f0open34#atos0tEt49ios::in7
Como cerrar el fic!ero: nombreQ<ariableQfic!ero0close37
E6emplo: f0close37
Leer un fic!ero:
1MYi es fichero de te>to plano"
#include <fstream>
#include <strin!>
#include <iostream>

usin! namespace std;

int main() {
ifstream entrada;
entrada.open("te>to=lano.t>t");
strin! unYtrin!;
)hile(entrada >> unYtrin!)
cout << "#ei" " << unYtrin! << endl;
return 0;
'
(MYi es un fichero 0inario(.dat);
nom0re;Karia0le;fichero.read((char7)Wnom0re;Karia0le&siLeof(tipo;Karia0le));
34emplo"
f.read((char7)We&siLeof(int));
Escribir un fic!ero:
1MYi es fichero de te>to(.t>t)"
nom0reKaria0le<<"te>to"; donde "te>to" puede ser tam0iSn una Karia0le de cualJuier tipo
primitiKo& o un strin!.

34emplo" f<<B<#?;
(MYi es un fichero 0inario(.dat);
nom0re;Karia0le;fichero.)rite((char7)Wnom0re;Karia0le&siLeof(tipo;Karia0le));
34emplo"
f.)rite((char7)We&siLeof(int));
Pue#en abrirse pasan#o al constructor los parámetros relati<os a la ubicación #el fic!ero ; el mo#o #e apertura:
"streams0editar1
Se #estacan #os clases9 ostringstream e istringstream0 To#o lo anteriormente #ic!o es aplicable a estas clases0
Tratan a una ca#ena como si #e un flu6o #e #atos se tratase0 ostringstream permite elaborar una ca#ena #e teEto
insertan#o #atos cual flu6o9 e istringstream pue#e eEtraer la información conteni#a en una ca#ena 3pasa#a como
parámetro en su constructor7 con el opera#or >>0 E6emplos:
ostrin!stream s;
s << nom0re << "&" << edad << "&" << estatura << "&" << punto(/&2) << endl;
cout << s.str();
istrin!stream s(cadena);
s >> nom0re >> edad >> estatura >> p;
Contenedores0editar1
Son clases plantillas especiales utiliBa#as para almacenar tipos #e #atos genTricos9 sean cuales sean0 To#os los
contene#ores son !omogTneos9 es #ecir9 una <eB Oue se #eclaran para contener un tipo #e #ato #etermina#o9 en ese
NNNII
contene#or9 solo se po#rán meter elementos #e ese tipo0 SegRn la naturaleBa #el almacena#o9 #isponemos #e <arios
tipos:
• Vectores: Se #efinen por
• Kector<tipo;de;dato> nom0re;del;Kector;
Son arra;s 3o listas or#ena#as7 Oue se re#imensionan automáticamente al agregar nue<os elementos9 por lo
Oue se le pue#en agregar 4teóricamente49 infinitos elementos0 Los <ectores nos permiten acce#er a cualOuier
elemento Oue contenga9 me#iante el opera#or%&0 Debe tenerse en cuenta Oue si se intenta acce#er a una
posición Oue eEce#e los lAmites #el <ector9 este no !ará ningRn c!eOueo9 por lo Oue se #ebe ser cui#a#oso al
utiliBar este opera#or0 Para asegurar un acceso seguro al <ector9 se pue#e utiliBar el mTto#o at3int79 Oue
lanBa una eEcepción #e tipo st#::outQofQrange en caso #e Oue esto ocurra0
Para aPa#ir elementos al final #el <ector9 se utiliBa el mTto#o pus!QbacD3const T=70 Por otro la#o9 para eliminar un
elemento #el final #el <ector9 se #ebe usar el mTto#o popQbacD370
#include <Kector> 66li0reria Jue contiene a la clase Kector
#include <iostream>
usin! namespace std;

int main() {
Kector<int> intFector; 66crea un Kector de enteros(sin elementos)
intFector.push;0acH((/); 66a!re!a el entero (/ al Kector
cout << "3l primer elemento es" " << intFector.front() <<
" I mi Kector tiene " << intFector.siLe() << " elementos." << endl; 66imprime el primer
elemento(retornado por el mStodo front()

intFector.push;0acH(-(); 66a!re!o el entero -( al Kector
cout << "3l primer elemento es" " << intFector[0] << endl; 66imprime (/
intFector.pop;0acH(); 66elimina el ultimo elemento del Kector(osea -()
cout << "?hora ten!o" " << intFector.siLe() << " elementos." << endl; 66imprimirN 1

return 0;
'
• Colas #obles: son pareci#as a los <ectores9 pero tienen me6or eficiencia para agregar o eliminar elementos
en las 4puntas40
• deJue<tipo;de;dato> nom0re;de;la;cola;
A#emás #e los mTto#os pus!QbacD3const T=7 ; popQbacD379 se agregan los mTto#os pus!Qfront3const T=7 ;
popQfront379 Oue realiBan lo mismo Oue los ;a eEplica#os9 pero en el comienBo #e la cola0
#include <deJue> 66li0reria de deJues

usin! namespace std;

int main() {
deJue<int> int8eJue;
int8eJue.push;front((/);
int8eJue.push;0acH(1();
)hile(int8eJue.siLe())
int8eJue.pop;0acH(); 660orra todos los elementos
return 0;
'
• Listas: Son eficientes a la !ora #e agregar elementos0 La #iferencia con las colas #obles9 es Oue son más
eficientes para eliminar elementos Oue no estTn en alguna #e las 4puntas4
• list<tipo;de;dato> nom0re;de;la;lista;
• A#apta#ores #e secuencia0
NNNIII
• Contene#ores asociati<os: map ; multimap9 Oue permiten asociar una 4cla<e4 con un 4<alor40 map no
permite <alores repeti#os9 mientras Oue multimap si0
map<tipo;de;llaKe& tipo;de;dato> nom0re;del;map;
multimap<tipo;de;llaKe& tipo;de;dato> nom0re;del;multimap;
#include <map> 66li0reria Jue contiene a map I multimap
#include <strin!> 66li0reria de strin!s
#include <iostream> 66li0reria de entrada6salida

usin! namespace std;

int main() {
map<int& strin!> int?Ytrin!;
int?Ytrin![1] * "uno";
int?Ytrin![10] * "dieL";
cout << "3n int?Ytrin![1]" " << int?Ytrin![1] << endl;
cout << "3n int?Ytrin![10]" " << int?Ytrin![10] << endl;
return 0;
'
• Contene#ores asociati<os: set ; multiset9 Oue ofrecen solamente la con#ición #e 4pertenencia49 sin la
necesi#a# #e garantiBar un or#enamiento particular #e los elementos Oue contienen0
(teradores0editar1
Pue#en consi#erarse como una generaliBación #e la clase #e 4puntero40 "n itera#or es un tipo #e #ato Oue permite
el recorri#o ; la bRsOue#a #e elementos en los contene#ores0 Como las estructuras #e #atos 3contene#ores7 son
clases genTricas9 ; los opera#ores 3algoritmos7 Oue #eben operar sobre ellas son tambiTn genTricos 3funciones
genTricas79 Stepano< ; sus colabora#ores tu<ieron Oue #esarrollar el concepto #e itera#or como elemento o neEo #e
coneEión entre ambos0 El nue<o concepto resulta ser una especie #e punteros Oue sePalan a los #i<ersos miembros
#el contene#or 3punteros genTricos Oue como tales no eEisten en el lengua6e70
Algoritmos0editar1
Combinan#o la utiliBación #e templates ; un estilo especAfico para #enotar tipos ; <ariables9 la STL ofrece una
serie #e funciones Oue representan operaciones comunes9 ; cu;o ob6eti<o es 4parametriBar4 las operaciones en Oue
estas funciones se <en in<olucra#as #e mo#o Oue su lectura9 comprensión ; mantenimiento9 sean más fáciles #e
realiBar0
"n e6emplo es la función copI9 la cual simplemente copia <ariables #es#e un lugar a otro0 5ás estrictamente9 copia
los conteni#os cu;as ubicaciones están #elimita#as por #os itera#ores9 al espacio in#ica#o por un tercer itera#or0 La
sintaEis es:
copI (inicio;ori!en& fin;ori!en& inicio;destino);
De este mo#o9 to#os los #atos Oue están entre inicioQorigen ; finQorigen9 eEclu;en#o el #ato ubica#o en este
Rltimo9 son copia#os a un lugar #escrito o apunta#o por inicioQ#estino0
"n algoritmo mu; importante Oue <iene implementa#o en la biblioteca STL9 es el sort0 El algoritmo sort9 or#ena
cualOuier tipo #e contene#or9 siempre ; cuan#o se le pasen como argumentos9 #es#e #on#e ; !asta #on#e se Ouiere
or#enarlo0
#include <Kector>
#include <deJue>
#include <al!orithm>

int main() {
Kector<int> intFector;
intFector.push;0acH(20);
intFector.push;0acH(1();
NNNIV
intFector.push;0acH(/.); 66para este momento& el Kector tiene 20&1(&/.
sort(intFector.0e!in()& intFector.end()); 66listo& arraI ordenado& ahora tiene 1(&/.&20
67Ootar Jue si en KeL de un Kector& fuese una deJue& se ordenaria de la misma manera. 76
'
Entre las funciones más conoci#as están s)ap (Karia0le1& Karia0le()9 Oue simplemente intercambia los
<alores #e <ariable- ; <ariable) ma> (Karia0le1& Karia0le() ; su sAmil min (Karia0le1& Karia0le()9 Oue
retornan el máEimo o mAnimo entre #os <alores find (inicio& fin& Kalor) Oue busca <alor en el espacio #e
<ariables entre inicio ; fin etcTtera0
Los algoritmos son mu; <aria#os9 algunos incluso tienen <ersiones especAficas para operar con ciertos itera#ores o
contene#ores9 ; pro<een un ni<el #e abstracción eEtra Oue permite obtener un có#igo más 4limpio49 Oue 4#escribe4
lo Oue se está !acien#o9 en <eB #e !acerlo paso a paso eEplAcitamente0
C77==0editar1
ArtAculo principal: C++,,
El -) #e agosto #e ).--9 Lerb Sutter9 presi#ente #el comitT #e están#ares #e Cbb9 informó la aprobación unánime
#el nue<o están#ar0
)
La publicación #el mismo se espera para algRn momento #e ).--0
Entre las caracterAsticas #el nue<o están#ar se pue#en #estacar:
• $unciones lamb#a
• Referencias r<alue
• La palabra reser<a#a auto
• InicialiBación uniforme
• Plantillas con nRmero <ariable #e argumentos0
A#emás se !a actualiBa#o la biblioteca están#ar #el lengua6e0
#i+erencias de tipos respecto a C0editar1
En Cbb9 cualOuier tipo #e #atos Oue sea delarado ompleto 3!ully 'uali!ied9 en inglTs7 se con<ierte en un tipo #e
#atos Rnico0 Las con#iciones para Oue un tipo #e #atos : sea delarado ompleto son a grandes rasgos las
siguientes:
• Es posible al momento #e compilación conocer el espacio asocia#o al tipo #e #atos 3es #ecir9 el compila#or
#ebe conocer el resulta#o #e siLeof(:)70
• : Tiene al menos un constructor9 ; un #estructor9 bien delarados0
• Si : es un tipo compuesto9 o es una clase #eri<a#a9 o es la especificación #e una plantilla9 o cualOuier
combinación #e las anteriores9 entonces las #os con#iciones estableci#as pre<iamente #eben aplicar para
ca#a tipo #e #ato constitu;ente0
En general9 esto significa Oue cualOuier tipo #e #atos #efini#o !acien#o uso #e las cabeceras completas9 es un tipo
#e #atos completo0
En particular9 ;9 a #iferencia #e lo Oue ocurrAa en C9 los tipos de+inidos por medio de struct o enum son tipos
completos0 Como tales9 a!ora son su6etos a sobrecarga9 con<ersiones implAcitas9 etcTtera0
NNNV
Los tipos enumerados9 entonces9 ;a no son simplemente alias para tipos enteros9 sino Oue son tipos #e #atos
Rnicos en Cbb0 El tipo #e #atos ool9 igualmente9 pasa a ser un tipo #e #atos Rnico9 mientras Oue en C funcionaba
en algunos casos como un alias para alguna clase #e #ato #e tipo entero0
Compiladores0editar1
"no #e los compila#ores libres #e Cbb es el #e >N"9 el compila#or >bb 3parte #el pro;ecto >CC9 Oue engloba
<arios compila#ores para #istintos lengua6es70 Mtros compila#ores comunes son Intel Cbb Compiler9 el compila#or
#e Nco#e9 el compila#or #e Corlan# Cbb9 el compila#or #e Co#eYarrior Cbb9 el compila#or gbb #e C;gKin9 el
compila#or gbb #e 5in>Y9 el compila#or #e Visual Cbb9 Carbi#e0cbb9 entre otros0
!jemplo> Cmd con colores0editar1
Para cambiar el color #e la interfaB #el programa se necesita la libreria 4st#lib0!40 su aplicacion sir<e para cambiar
el color #e fon#o #el cm# ; el color #e las letras0
Uso0editar1
#include <stdli0.h>
usin! namespace std;

sIstem("color ./");
En este caso se !a #efini#o el fon#o #e pantalla #e color ro6o ; las letras rosa#as0
!ntornos de desarrollo0editar1
VTase tambiTn: -ntorno de desarrollo integrado
&ajo %icroso+t 3indo?s0editar1
• Co#e::ClocDs
• De<'Cbb
• Visual Cbb
• KEDe<'Cbb
• Sin6ai
&ajo %acO"0editar1
• Nco#e
• Sin6ai
&ajo #O"0editar1
• Turbo C 9 reemplaBa#o por CbbCuil#er
&ajo *'U@Linu,0editar1
• Co#e::ClocDs
• NetCeans
NNNVI
• Eclipse
• >ean;
• Sin6ai
• [#e<elop
Re+erencias0editar1
-0 Ir a f Stroustrup9 C6arne 3-22*70 g-h0 T.e C++ /rogramming )anguage 3T!ir# e#ición70 ISCN .).-,,2/110 MCLC
/2-2(22)0
)0 Ir a f !ttp:VV!erbsutter0comV).--V.,V-)VKe'!a<e'an'international'stan#ar#'c.E'is'unanimousl;'appro<e#V
&iliogra+9a0editar1
• C6arne Stroustrup 9 -l lenguaje de programai0n C++9 A##ison Yesle;9 5a#ri#9 -22,9 ISCN ,1'*,)2'.-2'
)
• C6arne Stroustrup9 T.e C++ /rogramming )anguage9 A##ison'Yesle; Pub Co Tercera e#ición 3-/ #e
febrero #e )...7 ISCN .').-'*..*('/
• C6arne Stroustrup9 T.e #esign and -volution o! C++9 A##ison'Yesle; Pub Cp Primera e#ición 3)2 #e
marBo #e -2217 ISCN .').-'/1((.'(
• 5argaret A0 Ellis ; C6arne Stroustrup9 T.e 1nnotated C++ 2e!erene %anual9 A##ison'Yesle; Pub Co 3-
#e enero #e -22.7 ISCN .').-'/-1/2'-
!nlaces e,ternos0editar1
• YiDime#ia Commons alberga conteni#o multime#ia sobre C770
• plantillas en cbb tutorial para principiantes sobre plantillas
• cplusplus resources 3en inglTs7
• CVCbb Reference
• CVCbb Programming
• Inline::CPP 5ó#ulo Perl en CPAN para programar en Cbb #entro #e programas Perl 3en inglTs7
• Curso #e Cbb Completo curso #e Cbb gratuito9 en castellano9 Oue a#emás #e referencia9 tambiTn inclu;e
eEplicaciones sencillas para apren#er el lengua6e #e programación
• Pensar en Cbb Tra#ucción al castellano #el libro #e Cruce EcDel: 4T!inDing in Cbb4
• Cbb paso a paso Libro Oue eEplica paso a paso los conceptos #e programación orienta#a a ob6etos #el
lengua6e Cbb
Himg srcG4VVes0KiDipe#ia0orgVKiDiVSpecial:CentralAutoLoginVstartit;peG-E-4 altG44 titleG44 Ki#t!G4-4 !eig!tG4-4
st;leG4bor#er: none position: absolute4 V^
Mbteni#o #e g!ttp:VVes0KiDipe#ia0orgVKVin#eE0p!pititleGC8)C8)C=ol#i#G*)2()),-h
CategorAas:
NNNVII
• Cbb
• Programación genTrica
En Cbb9 la ilioteca est/ndar es una colección #e Clases ; funciones9 escritas en el nRcleo #el lengua6e0 La
biblioteca están#ar proporciona <arios contene#ores genTricos9 funciones para utiliBar ; manipular esos
contene#ores9 funciones ob6eto9 ca#enas ; flu6os genTricos 3inclu;en#o EVS interacti<a ; #e arc!i<os7 ; soporte
para la ma;orAa #e las caracterAsticas #el lengua6e0 La biblioteca están#ar #e Cbb tambiTn incorpora la ISM C2.
biblioteca están#ar #e C0 Las caracterAsticas #e la biblioteca están#ar están #eclara#as en el espacio #e nombres
3namespace7 std0
La Stan#ar# Template Librar; es un subcon6unto #e la biblioteca están#ar #e Cbb Oue contiene los contene#ores9
algoritmos9 itera#ores9 funciones ob6eto9 etc aunOue algunas personas utiliBan el tTrmino STL in#istintamente con
la biblioteca están#ar #e Cbb0
Los arc!i<os #e Cabecera #e la biblioteca están#ar #e Cbb no terminan en 40!40
Andice
%ocultar&
• - Cabeceras Están#ar
o -0- Contene#ores
o -0) >eneral
o -0( Strings
o -01 $lu6os ; Entra#aVSali#a
o -0/ NumTricas
o -0+ Soporte #el Lengua6e
o -0* Ciblioteca están#ar #e C
• ) Enlaces eEternos
• ( Referencias
Caeceras !st/ndar0editar1
Los siguientes arc!i<os contienen las #eclaraciones #e la biblioteca están#ar0
Contenedores0editar1
Hbitset^
Pro<ee la clase contene#ora especialiBa#a std""0itset9 un arreglo #e bits0
H#eOue^
NNNVIII
Pro<ee la plantilla clase contene#ora std""deJue9 una cola #oblemente enlaBa#a0
Hlist^
Pro<ee la plantilla clase contene#ora std""list9 una lista #oblemente enlaBa#a0
Hmap^
Pro<ee las plantillas clases contene#oras std""map ; std""multimap9 un arreglo asociati<o ; un arreglo
asociati<o mRltiple respecti<amente0
HOueue^
Pro<ee la clase a#apta#ora contene#ora std""Jueue9 una cola #e #atos0
Hset^
Pro<ee las plantillas clases contene#oras std""set ; std""multiset9 contene#ores asociati<os or#ena#os0
HstacD^
Pro<ee la clase a#apta#ora contene#ora std""stacH9 una pila #e #atos0
H<ector^
Pro<ee la plantilla clase contene#ora std""Kector9 un arreglo #inámico0
*eneral0editar1
Halgorit!m^
Pro<ee la #efinición #e muc!os algoritmos0
Hfunctional^
Pro<ee <arios ob6etos funcionales9 #isePa#os para ser utiliBa#os por los algoritmos están#ares0
Hiterator^
Pro<ee clases ; plantillas para traba6ar con itera#ores0
Hlocale^
Pro<ee las clases ; plantillas para traba6ar con locales0
Hmemor;^
Pro<ee facili#a#es para el mane6o #e memoria en Cbb9 inclu;en#o la clase plantilla std""auto;ptr0
Hst#eEcept^
Contiene las clases están#ares #e eEcepción asA como std""lo!ic;error ; std""runtime;error9 ambas
#eri<a#as #e std""e>ception0
Hutilit;^
Pro<ee la clase plantilla std""pair9 para traba6ar con pares 3tuplas #e #os miembros7 #e ob6etos0
NNNIN
"trings0editar1
Hstring^
Pro<ee las clases ; plantillas están#ares #e Cbb para traba6ar con ca#ena #e caracteres0
Flujos y !ntrada@"alida0editar1
Hfstream^
Pro<ee facili#a#es para la entra#a ; sali#a basa#a en arc!i<os0
Hios^
Pro<ee <arios tipos ; funciones básicas para la operación #e flu6os #e entra#a ; sali#a0
Hiostream^
Pro<ee los elementos fun#amentales para la entra#a ; sali#a en Cbb0
HiosfK#^
Pro<ee las #eclaraciones !acia a#elante #e <arias clases plantillas #e EVS0
Hiomanip^
Pro<ee facili#a#es para manipular el formateo #e sali#a9 asA como la base utiliBa#a cuan#o se formatean
enteros ; los <alores precisión o punto flotante0
Histream^
Pro<ee la clase plantilla std""istream ; otras clases para la entra#a #e #atos0
Hostream^
Pro<ee la clase plantilla std""ostream ; otras clases para la sali#a #e #atos0
Hsstream^
Pro<ee la clase plantilla std""sstream ; otras clases para la manipulación #e ca#ena #e caracteres0
Hstreambuf^
'uméricas0editar1
HcompleE^
Pro<ee la clase plantilla std""comple> ; funciones asocia#as al traba6o con nRmeros comple6os0
Hnumeric^
Pro<ee algoritmos para el procesamiento numTrico0
H<alarra;^
Pro<ee la clase plantilla std""KalarraI9 una clase arreglo optimiBa#a para el procesamiento numTrico0
"oporte del Lenguaje0editar1
NL
HeEception^
Pro<ee <arios tipos ; funciones relaciona#as al mane6o #e eEcepciones9 inclu;en#o std""e>ception9 la
clase base para to#as las eEcepciones arro6a#as por la biblioteca están#ar0
Hlimits^
Pro<ee la clase plantilla std""numeric;limits9 utiliBa#a para #escribir las propie#a#es #e los tipos
numTricos fun#amentales0
HneK^
Pro<ee los opera#ores ne) ; delete ; otras funciones ; tipos Oue componen los elementos fun#amentales
para el mane6o #e memoria en Cbb0
Ht;peinfo^
Pro<ee las facili#a#es para traba6ar con información #e tipo en tiempo #e e6ecución en Cbb0
&ilioteca est/ndar de C0editar1
ArtAculo principal: 3ibliotea est"ndar de C
Ca#a cabecera #e la biblioteca están#ar #e C está inclui#a en la biblioteca están#ar #e Cbb con #iferente nombre9
genera#o eliminan#o la eEtensión 4. ; aPa#ien#o una @c@ al inicio9 por e6emplo @time0!@ se con<ierte en @ctime@0 La
Rnica #iferencia entre estas cabeceras ; las cabeceras tra#icionales #e la biblioteca están#ar #e C es Oue es posible
Oue las funciones estTn inclui#as en el namespace @st#::@ 3aunOue algunos compila#ores lo !acen70 En el ISM C9 las
funciones #e la biblioteca están#ar se pue#en implementar por macros9 cosa no permiti#a por el ISM Cbb0
• Hcassert^
• Hcct;pe^
• Hcerrno^
• Hcfloat^
• Hclimits^
• Hcmat!^
• Hcset6mp^
• Hcsignal^
• Hcst#lib^
• Hcst##ef^
• Hcst#arg^
• Hctime^
• Hcst#io^
• Hcstring^
• HcKc!ar^
NLI
• HcKct;pe^
#define en C++, cómo sí y cómo no
1uardado en2 +urso el 34 de agosto del 35,,6tiquetas2 78sico9 de)ine
El mayor objetivo de este post es darles a conocer una de las cosas que C++ permite hacer pero que nadie en su sano juicio debería de
hacer. ¿Y para que se los enseño entonces? Pues para que si al!n día lo ven en un c"dio ajeno sepan qu# pinch$ est% pasando.
&ueno' antes que nada' #define sirve para dos cosas( definir una constante o crear un macro. )os macros pueden llear a ser alo
di*ícil de entender' ahora s"lo veremos el asunto de las constantes. El asunto aquí es que si yo pono +fuera del main, una línea así(
#define = -.1.1/G(2/
-sini*ica que cada ve. que escribamos PI en nuestro prorama' C++ lo interpretar% como 3.14159265. Es una simple sustituci"n.
#define <aJuZ Ka el nom0re> <despuSs de un espacio Ka el Kalor>
Pero el asunto es que se puedes hacer alunas cosas bastantes *eas con esta propiedad. /ean este prorama(
1
(
-
.
/
2
5
8
G
10
11
1(
1-
1.
1/
12
15
18
1G
(0
#include<iostream>
usin! namespace std;

#define = -.1.1/G(2/
#define O<9;EB?@ /0
#define pause cin.!et();cin.!et();
#define ct cout
#define cn cin
#define false true

int main()
{
char name[O<9;EB?@] * {0';
ct << "3nter Iour name" ";
cn >> name;
ct << "CIe " << name << "." << endl;
if(false)
ct << "=.Y. =i * " << =;
pause
'
0enemos 1 de*iniciones' ordenadas en su nivel de aceptabilidad(
NLII
 #define PI 3.14159265 y #define !"#C$%& 5'' #stos ejempli*ican el uso primario de 2de*ine( uardan un valor que es
constante durante toda la ejecuci"n del prorama.
 #define (ause cin.)et*+,cin.)et*+,' #sta ya empie.a a ser no aceptable pero podemos darla por buena porque nos ayuda a
leer mejor nuestro c"dio. Ya sabemos que al escribir cin.get();cin.get(); nuestro prorama se pausa al iual que con un getch()'
pero al usar este 2de*ine escribiremos en luar de eso simplemente (ause.
 #define ct cout y #define cn cin' totalmente inaceptables. 3lunas personas usan este tipo de 2de*ine4s para escribir
menos' pero de verdad que +en la gran mayoría de lo cao, no vale la pena el ahorro de caracteres' s"lo estamos haciendo
nuestro c"dio menos entendible para otras personas.
 #define fa-se true' este es mas bien como una broma +y e increí!le "ue funcione en #erdad,' pero si se usa en serio es
como una rayada de madre. 5i ejecutan el c"dio ver%n que sí se muestra la línea donde se imprime PI a!n que est% dentro de un
if al que nunca se debería de entrar ¿y porqu# sí entra? porque fale es true.
3sí que ya saben cómo sí y cómo no usar un #define en C++' y ya no est%n 6inde*ensos4 ante proramadores con malos h%bitos.
#define en C++, cómo sí y cómo no
1uardado en2 +urso el 34 de agosto del 35,,6tiquetas2 78sico9 de)ine
El mayor objetivo de este post es darles a conocer una de las cosas que C++ permite hacer pero que nadie en su sano juicio debería de
hacer. ¿Y para que se los enseño entonces? Pues para que si al!n día lo ven en un c"dio ajeno sepan qu# pinch$ est% pasando.
&ueno' antes que nada' #define sirve para dos cosas( definir una constante o crear un macro. )os macros pueden llear a ser alo
di*ícil de entender' ahora s"lo veremos el asunto de las constantes. El asunto aquí es que si yo pono +fuera del main, una línea así(
#define = -.1.1/G(2/
-sini*ica que cada ve. que escribamos PI en nuestro prorama' C++ lo interpretar% como 3.14159265. Es una simple sustituci"n.
#define <aJuZ Ka el nom0re> <despuSs de un espacio Ka el Kalor>
Pero el asunto es que se puedes hacer alunas cosas bastantes *eas con esta propiedad. /ean este prorama(
1
(
-
.
/
2
5
8
G
10
11
1(
#include<iostream>
usin! namespace std;

#define = -.1.1/G(2/
#define O<9;EB?@ /0
#define pause cin.!et();cin.!et();
#define ct cout
#define cn cin
#define false true

int main()
{
NLIII
1-
1.
1/
12
15
18
1G
(0
char name[O<9;EB?@] * {0';
ct << "3nter Iour name" ";
cn >> name;
ct << "CIe " << name << "." << endl;
if(false)
ct << "=.Y. =i * " << =;
pause
'
0enemos 1 de*iniciones' ordenadas en su nivel de aceptabilidad(
 #define PI 3.14159265 y #define !"#C$%& 5'' #stos ejempli*ican el uso primario de 2de*ine( uardan un valor que es
constante durante toda la ejecuci"n del prorama.
 #define (ause cin.)et*+,cin.)et*+,' #sta ya empie.a a ser no aceptable pero podemos darla por buena porque nos ayuda a
leer mejor nuestro c"dio. Ya sabemos que al escribir cin.get();cin.get(); nuestro prorama se pausa al iual que con un getch()'
pero al usar este 2de*ine escribiremos en luar de eso simplemente (ause.
 #define ct cout y #define cn cin' totalmente inaceptables. 3lunas personas usan este tipo de 2de*ine4s para escribir
menos' pero de verdad que +en la gran mayoría de lo cao, no vale la pena el ahorro de caracteres' s"lo estamos haciendo
nuestro c"dio menos entendible para otras personas.
 #define fa-se true' este es mas bien como una broma +y e increí!le "ue funcione en #erdad,' pero si se usa en serio es
como una rayada de madre. 5i ejecutan el c"dio ver%n que sí se muestra la línea donde se imprime PI a!n que est% dentro de un
if al que nunca se debería de entrar ¿y porqu# sí entra? porque fale es true.
3sí que ya saben cómo sí y cómo no usar un #define en C++' y ya no est%n 6inde*ensos4 ante proramadores con malos h%bitos.
,3 +omentarios
Como usar cin.)et-ine en C++
1uardado en2 +urso el ,: de septiem7re del 35,56tiquetas2 78sico9 cadenas9 string;<
&ueno' siuiendo con la línea de los posts sobre la librería strin.h les traio esta *unci"n que no est% en esa librería pero que es muy
!til al tra.a/ar con strin)s. Ya dijimos que un7una tring es una variable que puede contener 8' uno o m%s caracteres.
Ya vimos en nuestra introducci"n a strin.h c"mo declarar un strin' hacerle alunas modi*icaciones y c"mo mostrarlo. 3hora veremos
como pedir un strin +"ue el uuario la introdu$ca %or medio del teclado,.
Esto es muy sencillo si usamos la *unci"n cin.)et-ine*+, Esta *unci"n necesita tres datos o par%metros(
-0 om.re. El nombre de la variable que va a contener el strin
)0 0on)itud. )a cantidad de caracteres que queremos que se puedan introducir +nunca mayor "ue la longitud del tring,.
(0 Caracter de fin. El caracter que el usuario va usar como *inal de la cadena. Por lo eneral es el 6enter6 que se representa
como 69n4 +diaonal n,.
Por ejemplo' suponamos que tenemos un arrelo char de :88 elementos llamado tr +nuestra strin, y queremos pedirle al usuario que
la ;llene<' la *unci"n cin.getline quedaría así(
cin.getline(str, 500, '\n');
Como ven' los par%metros van separados por comas +',' y el caracter de *in est% entre comillas simples +6,. Pero bueno' dejemos de
suponer y empecemos a proramar.
#include<iostream>
NLIV
usin! namespace std;

int main()
{
char str[/00];
cout << "ntroduce una frase" ";
cin.!etline(str& /00& ,\n,);
cout << ":u frase es" " << str;
cin.!et();
'
=as sencillo no podría ser.
35 +omentarios
Introducción a strin).1
1uardado en2 +urso el = de septiem7re del 35,56tiquetas2 78sico9 cadenas9 string;<
strin).1 es una -i.rería de c++ que contiene *unciones que nos *acilitan la vida al trabajar con cadena o tring. >na cadena es un
conjunto de caracteres almacenados en una variable.
?eberíamos saber que c1ar es un tipo de dato que almacena un caracter' por lo tanto un arrelo lineal de caracteres es una cadena(
char str[100];
3hora podemos llenar nuestra cadena..
str ="Soy una cadena";
-y mostrarla
cout str;
Pero recuerden que no podemos hacer nada de esto si no tenemos incluida la -i.rería strin).1. /amos a ver un prorama de ejemplo(
#include<strin!.h>
#include<iostream>
usin! namespace std;

int main()
{
char esunacadena[100] * "YoI una cadena"& esunacopia[100];
strcpI(esunacopia& esunacadena);
strcat(esunacopia& " M copia");
cout << esunacadena << endl << esunacopia;
cin.!et();
return 0;
'
NLV
-0 Primero declaramos dos cadenas +6eunacadena& y 'eunaco%ia&, que pueden tener hasta @88 caracteres' 6eunacadena& la
llenamos con el teAto ;(oy una cadena;.
)0 )ueo con la *unci"n strc(y copiamos el contenido de 6eunacadena& a 6eunaco%ia&. 3hora las dos cadenas tienen el
mismo teAto.
(0 3hora con la *unci"n strcat areamos el teAto < ) co%ia< al *inal de4eunaco%ia&.
B. 3l *inal solo mostramos las dos cadenas.
&astante *%cil ¿no? En los pr"Aimos días voy a postear otros proramas muy sencillos para seuir checando las *unciones mas comunes
para trabajar con cadenas.
,5 +omentarios
Cómo em(e2ar a usar iostream
1uardado en2 +urso el 3> de octu7re del 355?6tiquetas2 78sico9 iostream
Proramar es como pensar' cada quien lo hace di*erente' y el mismo lenuaje c++ nos *acilita diversas *ormas de hacer las mismas
cosas. Por ejemplo' el prorama Cola =undo que hicimos al principio podemos hacerlo utili.ando la librería DiostreamE en luar de
Dstdio.hE(
#include<iostream>
usin! namespace std; 66 3sta lZnea es necesaria cuando
66 utiliLamos la li0rerZa iostream

int main()
{
cout << "Bola Vundo+"; 66cout es el eJuiKalente de printf&
66si se fi4an la sintN>is es muI parecida.
cin.!et(); 66 cin.!et es el eJuiKalente de !etch& detiene la e4ecuciQn del pro!rama.

return 0; 66 Oo es necesaria para Jue el pro!rama funcione&
66 pero es una 0uena costum0re indicar Jue nuestro pro!rama terminQ
66 sin errores.
'
)a sint%Ais de cout es(
cout "!ensa"e" ;
=ostrando una variable(
cout "#l $ro!edio es%" $ro! ;
El siuiente mensaje aparecer% en una línea nueva(
cout "!ensa"e" endl;
¿Y c"mo leo datos +scan*,?
Para sustituir scanf*+ usamos cin' por ejemplo(
cin && edad;
'ee los caracteres introducidos y los guarda en la (aria)le edad.
>n proramita muy simple(
#include<iostream>
NLVI
usin! namespace std;

int main()
{
int edad;
cout<<"Eual es tu edadX" "; cin >> edad;
cout<<"\n\t:u edad es " << edad;
cin.!et();cin.!et();

return 0;
'
En este caso necesitamos usar dos cin.get para detener el prorama. Esto se debe al uso de cin.
,, +omentarios
Cómo de/ar de usar conio.1
1uardado en2 @eorAa el 33 de octu7re del 355?6tiquetas2 78sico9 7orland9 conio;<
)a librería 3conio.14' es propiedad de *orland y s"lo sus compiladores pueden usarla. Por lo tanto sini*ica que conio.h' no es una
-i.rería estandar.
)a librería conio se utili.a m%s que nada por sus comandos( )etc1*+' c-rscr*+' )oto5y*+' te5tco-or*+' y te5t.ac6)round*+' los cuales
usamos para darle mejor presentaci"n a nuestros proramas. Pero pensandolo bien' ¿en verdad necesitamos que los proramas en
consola se vean bien? )a verdad es que no' lo que importa es que *uncionen.
3!n así' alunas *unciones de la librería conio.h se pueden sustituir con funciones est7ndares' por ejemplo.
 Para sustituir etch+,' solo necesitamos( cin.)et*+, la cual est% en Dstdio.hE. 5i no *unciona entonces tendremos que
ponerla dos veces( cin.)et*+,cin.)et*+,' la cuesti"n es alo complicada de eAplicar.
 Para sustituir clrscr+,' solo necesitamos escribir system*8c-s9+, la cual est% en DiostreamE +e in .h+ e definiría aí,
-include.iotream/,.
 :oto5y*+ es alo vanal' y adem%s se puede sustituir usando ;n +e%acio hacia a!a0o, y ;t +e%acio hacia la derecha, dentro
de un (rintf*+,
 Y la verdad es que cualquiera te aradecer% que no le ponas *ondo rosa y letras amarillas a tus proramas.
>= +omentarios
Como usar cic-o <1i-e en C++
1uardado en2 +urso el ,: de octu7re del 355?6tiquetas2 78sico9 ciclos9 B<ile
Ya dijimos en el post anterior que los ciclos in*initos *or son muy parecidos a los cic-os =1i-e' pero qued" en duda c"mo es un ciclo
Fhile.
;1hile< sini*ica ;mientra;' así que nuestro ciclo Fhile se repetira mientras una cierta condici"n sia siendo verdadera.El ejemplo del
post anterior quedaría así(
#include<stdio.h>
#include<conio.h>
int main()
NLVII
{
char end*0;
)hile(end+*,I,)
{
!oto>I(/&/);printf("Ua Juieres salirX (I6n)" ");scanf("$c"&Wend);
clrscr();
'
'
En español el prorama dice( ;2ientra end ea diferente de y #oy a eguir %reguntando i "uiere alir.<
=as adelante veremos m%s proramas que utilicen ciclos Fhile.
:: +omentarios
>- .rea6 y e- cic-o infinito
1uardado en2 +urso el ,, de octu7re del 355?6tiquetas2 78sico9 ciclos9 )or9 in)inito
Ya vimos hace poco el ciclo *or' y vimos que su estructura era así(
*or + inicio G fin G aumento ,
¿Hu# pasa si no ponemos ni inicio ni *in? Pues obtenemos un cic-o infinito' así(
*or+GG,
¿Y c"mo se detiene? Pues con un .rea6' así(
*or+GG,
I
breaJG
K
¿Y esto de que me sirve? Pues la idea es repetir las instrucciones hasta que el usuario quiera' es decir(
#include<stdio.h>
#include<conio.h>
int main()
{
char end*0;
for(;;)
{
!oto>I(/&/);printf("Ua Juieres salirX (I6n)" ");scanf("$c"&Wend);
if(end**,I,)
0reaH;
clrscr();
'
NLVIII
'
Creo que no les había mencionado que si dentro de una condici3n if s"lo va una instrucci"n no es necesario poner llaves' y tambi#n
aplica con los ciclos.
5i el usuario no introduce una 6y4' el prorama nunca se detendr%. )ueo vamos a ver que las propiedades de un cic-o for infinito son
muy parecidas a las del cic-o =1i-e que veremos m%s adelante.
3> +omentarios
Cómo usar )oto en C++
1uardado en2 @eorAa el = de octu7re del 355?6tiquetas2 78sico9 goto
:oto sini*ica ir a y en c++ nos sirve para que mandar al compilador a aluna parte arbitrariamente' es decir nada m%s porque sí. Lo se
suele usar mucho pero nos puede sacar de alunos apuros.
5u uso es m%s o menos así(
codi!o codi!o
#PA?@" codi!o
mas codi!o
codi!o
!oto #PA?@;
codi!o
Primero tenemos que de*inir un marcador' en este caso yo us# )>M3N +recuerden "ue '45678& no e lo mimo "ue 'lugar&, e
inmediatamente despu#s poner dos puntos +(,. Cuando sea necesario escribiremos )oto seuido de nuestro identi*icador y punto y como
+G,.
¿Para qu# nos podría servir? Pues en el siuiente post veremos un prorama que usa goto
Posts )uardados en ?.7sico?@
if e-se anidados en c++
1uardado en2 +urso el : de octu7re del 355?6tiquetas2 78sico9 condiciones9 i) else
Ya había escritos varios posts sobre las condiciones i* else en c++' pero alo que hace *alta saber es que dentro de una estructura if
puede haber otra estructura if tantos veces como sea necesario. Es decir(
if ( condicion )
{
instrucciones
if ( condicion )
{
instrucciones
'
'
else
{
NLIN
if ( condicion )
{
instrucciones
'
else
{
instrucciones
'
instrucciones
'
¿Y como para qu#? Pues hay alunas situaciones que así lo requieren. Por ejemplo(
;5i un alumno tiene un promedio mayor o iual a O se le hara un P8Q de descuento en la coleiatura' si tiene un promedio mayor o iual
a R pero menor que O el descuento ser% del @8Q' si su promedio es menor que R pero mayor o iual a S el descuento ser% del :Q y si
promedia con S o menos no tendr% descuento.<
)a so-ución de este (ro.-ema en c++ sería así(
5euir leyendo-
C5 +omentarios
Cómo usar :oto5y en C++
1uardado en2 @eorAa el ,= de septiem7re del 355?6tiquetas2 78sico9 gotoD!
:oto5y sini*ica go to (9+ y)' es decir ir a (9+ y)' donde *5, y+ es una coordenada de nuestra pantalla. 5e suele usar antes de un print*'
para poner el teAto en una cierta parte de la pantalla.
)a pantalla de C++' tiene PB renlones y R8 columnas' por lo que los valores que le ponamos a nuestro otoAy no deber%n pasar de esos
valores.
¿C"mo usar otoAy+,?
5u sint%Ais es la siuiente(
L
)oto5y * columna , rengl3n + ,
3sí' si queremos que un mensaje sala en la parte in*erior de la pantalla' nuestro prorama sería el siuiente(
#include<stdio.h>
#include<conio.h>

int main() {
!oto>I(/&(.);printf("Bola mundo");
!etch();
'
THu# *%cilU ¿no?
,E3 +omentarios
Cic-os for en C++
1uardado en2 +urso el ,: de septiem7re del 355?6tiquetas2 78sico9 ciclos9 )or
&ien' ya que entendimos un poco la teoría de los cic-os en c++' ahora vamos a practicar sobre como usar e- cic-o for.
¿C"mo hacer un ciclo en C++?
#include<stdio.h>
#include<conio.h>
int main()
{
int >*0;
for(>*0;><*/;>11)
{
printf("$d "&>);
'
!etch();
'
663ste pro!rama mostrarN en pantalla 0 1 ( - . /
Como ven' necesitamos una variable eAclusiva para el ciclo +en ete cao '9&, y #ste empie.a con la palabra for' su sint%Ais es la
siuiente(
for * variable V inicioWdelWciclo , condici"nWqueWindicaWelW*inal , aumento de A +
Por partes(
 5A' WE Xndica el inicio de- cic-o. Puede ser cualquier variable y cualquier valor de inicio.
 53A5 WEXndica el fin de- cic-o. Cuando la condici"n deja de cumplirse el ciclo termina. Cuando el ciclo no es menor o iual
a : el ciclo termina.
LI
 5++ WE Xndica que la variable 6A4 aumenta de uno en uno. Para aumentar de dos en dos( A+VP' de tres( A+VY.
Ztro ejemplo' la ta.-a de mu-ti(-icar de- 2 en C++(
#include<stdio.h>
#include<conio.h>
int main()
{
int c*0;
for(c*1;c<*10;c11)
{
printf("( > $d * $d\n"&c&(7c);
'
!etch();
'
,>> +omentarios
>ntendiendo -os cic-os en c++
1uardado en2 +urso el ,C de septiem7re del 355?6tiquetas2 78sico9 ciclos
Como les dije en el prorama anterior +¿3prob" o no aprob"?,' los ciclos son alo que un buen proramador debe tener muy bien
dominado. Pero-
¿BuC es un cic-o?
LII
>n ciclo' aquí y en China' es a-)o Due se re(ite constantemente. Por ejemplo(
 5i vamos a la papelería y sacamos : copias de una hoja' cada ve. que se imprime una hoja se completa un ciclo y se repite
hasta completar las cinco repeticiones
 5i saben alo de uitarra' abran oído del 6círculo de sol4G son cuatro acordes que se repiten constantemente a lo laro de
una canci"n' cada ve. que tocas los cuatro acordes se completa un ciclo
 5i ponen un C? de m!sica en un reproductor' cada ve. que suenen todas las canciones del disco se completa un ciclo
¿C"mo serían los proramas de esos ejemplos?
Para sacar copias
?esde 9:1 hasta 5
I
imprimir
K
Para tocar el circulo de 5ol
?esde 9:1 hasta fin de la canci3n
I
tocar 5ol
tocar =i menor
tocar )a menor
tocar Ne S
K
Para tocar C?
?esde 9:1 hasta n;mero de cancione
I
tocar canci"n A
K
)os primeros dos est%n muy *%ciles de entender( las acciones dentro de las llaves IK se repiten determinado n!mero de veces y ese valor
puede ser constante +como la co%ia, o variable +como el fin de la canci3n,. El tercer ejemplo tiene alo complicado' pero que es la
6escencia4 de los ciclos.
5uponamos que ese disco tiene : canciones' podríamos proramarlo así(
tocar canci"n @
tocar canci"n P
tocar canci"n Y
tocar canci"n B
tocar canci"n :
Z así(
?esde AV@ hasta :
I
tocar canci"n A
K
Esta es la verdadera utilidad de los ciclos' ahorrar c"dio.
C +omentarios
Condiciones *decisiones+ en C++ E if, e-se
LIII
1uardado en2 +urso el , de septiem7re del 355?6tiquetas2 78sico9 condiciones9 i) else
¿C"mo harían para saber si aluien es mayor o menor de edad? Creo que los pasos serían(
@. Preuntarle su edad
P. 5i tiene @R o m%s entonces es mayor de edad
Y. 5i no' es menor de edad
=etiendonos al -en)ua/e de C++' quedaría alo así(
@. scan*+;Qd<' [edad,G
)0 if+edad4A1F, G print*+;Es mayor de edad<,G H
(0 e-se G print*+;Es menor de edad<,G H
if sini*ica si y e-se sini*ica si no
edad4A1F es una comparaci"n. 5i la variable 6edad4 es mayor o iual a @R' se hacen las instrucciones que est%n entre las llaves GH del i*G
si no es así' se reali.an las instrucciones que est%n entre las llaves del ele.
El prorama en sí quedaría de la siuiente *orma(
#include<stdio.h>
#include<conio.h>
int main()
{
int edad*0;
printf("Eual es tu edadX" "); scanf("$d"&Wedad);
if(edad>*18)
{
printf("3res maIor de edad");
'
else
{
printf("3res menor de edad");
'
!etch();
'
>n if no tiene que tener un ele 6a *uer.as4' es opcional. Es muy importante que se *ijen muy bien en las llaves' cada if tiene su llave de
apertura y de cierre' al iual que el ele.
3C +omentarios
Pedir datos en C++ E scanf*+
1uardado en2 +urso el >, de agosto del 355?6tiquetas2 78sico9 tipos de datos9 varia7les
Casta ahora' todo los ejemplos que hemos visto usan datos que nosotros mismos le ponemos la prorama' pero ¿qu# hacer si necesito
que el usuario sea quien introdu.ca los datos de entrada?
LIV
3l iual que (rintf*+ muestra datos' scanf*+ los uarda.
Ejemplo(
#include<stdio.h>
#include<conio.h>
int main()
{
int edad*0;
printf("Eual es tu edadX ");scanf("$d"&Wedad);
printf(":u tienes $d anios"& edad);
!etch();
'
El scan*+, uarda en la variable indicada todo lo que introdu.cas desde el teclado hasta que oprimas 6enter4. 5u sint%Ais tiene que ser
eAacta(
scan* + < ti(oIdeIdato < ' [ Jaria.-e , G
scan* + < Qd < ' [ edad , G
scan*+, es sin duda una de las instrucciones que m%s estaremos usando' ya que la interacci"n con el usuario es *undamental en el
desarrollo de proramas.
35 +omentarios
!(eradores -ó)icos en C++
1uardado en2 +urso el 34 de agosto del 355?6tiquetas2 78sico9 condiciones9 operadores
Con operadores de relaci"n nos re*erimos a los ya conocidos(
 D +menor que,
 DV +menor o iual que,
 E +mayor que,
 EV +mayor o iual que,
 VV +iual,
 UV +di*erente,
&ueno' talv#. los operadores de iual +VV, y di*erente +UV, no los hayan visto escritos así' pero en C++ así se representan.
>na eApresi"n con operadores de relaci"n +por ejemplo( aDb' aUVb, !nicamente nos dice si la evaluaci"n es verdadera +true, o *alsa
+*alse,.
0ambi#n est%n estos otros(
 and' que sini*ica 6y4 y se representa con [[
 or' que sini*ica 6o4 y se representa con \\ +alt+@PB dos veces,
5irven para relacionar dos o m%s operaciones l"icas. 3l usar [[ +y,' las dos operaciones tienen que ser verdaderas para que arroje un
resultado verdadero' si no' es *also. 3l usar \\ +o,' las dos operaciones tienen que ser *alsas para que arroje un resultado *also' si no' es
verdadero.
LV
Ejemplos
5i aVB y bV: entonces'
 aAA. es fale
 a4. es fale
 aKA. es true
 aAA. LL a3. es fale
 aAA. MM a3. es true
,4 +omentarios
!(eraciones en C++
1uardado en2 +urso el 3= de agosto del 355?6tiquetas2 78sico9 operadores9 signos9 varia7les
&ien' ya sabemos declarar y mostrar variables' ahora solo *alta saber cómo 1acer o(eraciones matem%ticas con ellas. >na suma sería
así(
#include<stdio.h>
#include<conio.h>
int main()
{
int num1*/& num(*10& resultado*0;
resultado*num11num(;
printf("3l resultado es" $i"& resultado);
663sto mostrarN en pantalla" 3l resultado es" 1/
!etch();
'
Como ven' siempre hay que tener una variable para uardar el resultado de cualquier operaci"n. En alunos casos se puede usar la
misma variable(
#include<stdio.h>
#include<conio.h>
int main()
{
int num1*/;
num1*num112;
printf("3l resultado es" $i"& num1);
663sto mostrarN en pantalla" 3l resultado es" 11
!etch();
'
Entonces' los si)nos de o(eración en C++ y la mayoría de los lenuajes de proramaci"n son(
LVI
 + para suma
 W para resta
 ] para multiplicaci"n
 7 para divisi"n
 +, tambi#n indican multiplicaci"n
Naria.-es en C++ 2 E Oostrar Jaria.-es
1uardado en2 +urso el 3E de agosto del 355?6tiquetas2 78sico9 tipos de datos9 varia7les
Ya sabemos como arear variables a nuestros proramas' ¿pero c"mo se usan?
Para mostrar el valor de una variable en pantalla con (rintf*+ se usan los caracteres de sustitución. /ean este prorama(
#include<stdio.h>
#include<conio.h>
int main() 663sta es la funciQn main& Ka en todos los pro!ramas
{
int numero*5; 66? la Karia0le numSrica ,numero, le asi!namos un Kalor de 5
printf("3l numero es $i"& numero); 663sto mostrarN en pantalla" 3l n[mero es 5
!etch(); 66Bace una pausa
'
Como ven' el valor de la variable aparece en luar de Qi' cada tipo de dato tiene su propio caracter de sustituci"n.
 Para int se usa Pi o Pd
 Para f-oat se usa Pf
 Para c1ar se usa Pc
Ztros ejemplos(
#include<stdio.h>
#include<conio.h>
int main()
{
int edad*15;
float altura*1.25;
printf("3dad" $i a\os& altura" $f metros"& edad& altura);
663sto mostrarN en pantalla" 3dad" 15 a\os& altura" 1.250000 metros
!etch();
LVII
'
Para mostrar datos float' podemos usar este 6truco4(
 Q* mostrar% 8.888888
 Q.P* mostrar% 8.88
 Q.@* mostrar% 8.8
 Q.* mostrar% 8
E +omentarios
Naria.-es en C++ 1 E 0o .7sico
1uardado en2 +urso el 3: de agosto del 355?6tiquetas2 78sico9 tipos de datos9 varia7les
Parte *undamental de cualquier lenuaje de proramaci"n son -as Jaria.-es. 5i sabes alo de %lebra' por variable te imainar%s una
letra que puede tener varios valores. En proramaci"n #sto no cambia mucho' solo que una variable puede tener un nombre completo'
no solo una letra.
Ejemplos de nombres variables
 A
 contador
 primer$nombre
 num$primo
>na variable no puede tener espacios' caracteres especiales +acento+ igno,' tiene que empe.ar con una letra.
Ejemplos de valores variables
 AV@P
 contadorV8
 primer$nombreV<^uanito M"me.<
 num$primoVS
)as variables se usan para almacenar valores que cambian din%micamente en el transcurso del prorama.
Como declarar una variable en C++
C++ maneja varios tipos de variables( num#ricas' de caracteres y boolean +cierto o falo, esencialmente.
Para declarar una variable num#rica llamada altura que inicie con un valor de 8' escribimos esto(
int altura*0;
Para declarar una variable num#rica llamada distancia que inicie con un valor de P.1S' escribimos esto(
float distancia*(.25;
Para declarar una variable de caracter llamada inicial' con un valor de N' escribimos esto(
char inicial*,@,;
LVIII
Para declarar una variable boolean llamada terminado' que empiece como *also' escribimos esto(
0ool terminado*false;
En resumen(
 Para variables num#ricas sin decimales se usa( int
 Para variables num#ricas con decimales se usa( f-oat
 Para variables de un solo caracter se usa( c1ar
 Para variables boolean se usa( .oo-
Como declarar varias variables en C++
5olo se pone el tipo de dato +int+ float+ char+ !ool, y separamos las variables con comas.
int num*0& personas*12& lu!ares*10;
5iempre va un punto y coma +G, al *inal de la declaraci"n de variables.
3lo de teoría para hoy' despu#s vendr% la pr%ctica.
,3 +omentarios
Comentarios en C++
1uardado en2 +urso el 3C de agosto del 355?6tiquetas2 78sico9 comentarios
>n comentario es una nota que puedes poner en cualquier parte de tu prorama y que ser% totlamente inorada a la hora de correr el
prorama. 5on bastante !tiles para que otras personas' o t! mismo despu#s de al!n tiempo' sepan qu# hace aluna parte de tu c"dio.
>n comentario en C++ se puede hacer de dos *ormas(
 Para comentarios de una sola línea( 77 El comentario
 Para comentarios de varias líneas( 7] El comentario ]7
Por ejemplo(
/* Autor: Raúl Rivas
Fecha: Agosto de 2009 */
#include<stdio.h>
#include<conio.h>
int main()
{
66?JuZ declaro mis Karia0les
int numero1*10;
printf("$i"&numero1); 66esto mostrarN" 10
!etch();
'
_acil ¿no?
: +omentarios
LIN
$o-a Oundo, en C++
1uardado en2 +urso el 3C de agosto del 355?6tiquetas2 78sico9 sencillos
Es como un rito de iniciaci"n empe.ar con un prorama que sencillamente muestre el mensaje( ;Cola =undo< en pantalla' hoy lo vamos
a hacer en c++.
#include<stdio.h>
#include<conio.h>
int main() {
printf("Bola Vundo");
!etch();
'
 )a primera y seunda líneas son librerías. >na librería es el luar en d"nde est%n de*inidas cientos de *unciones que
utili.aremos continuamente. stdio.1 y conio.1 son las librerías que vamos a estar usando continuamente.
 main*+ es la *unci"n principal' todo el prorama se desarollar% a partir de ella. Esta *unci"n est% seuida de una llave de
apertura +G,' y al *inal hay una de cierre +H,. Esto sini*ica que todo lo que est% entre las llaves pertenece a main+,.
 (rintf*+, es una *unci"n para imprimir +motrar, datos en pantalla. Entre comillas escribimos lo que queremos mostrar.
Est% de*inida en tdio.h
 )etc1*+, es una *unci"n de*inida en conio.h que detiene la ejecuci"n del prorama para que el usuario pueda apreciar los
resultados.
C++ busca autom%ticamente la *unci"n main()' y si esta no se encuentra' sencillamente no *uncionar% el prorama.
Cay que tener muy presente que las *unciones 6menores4 siempre terminan con punto y coma +G,. Este símbolo marca el *inal de toda
sentencia.
Cómo em(e2ar a usar iostream
1uardado en2 +urso el 3> de octu7re del 355?6tiquetas2 78sico9 iostream
Proramar es como pensar' cada quien lo hace di*erente' y el mismo lenuaje c++ nos *acilita diversas *ormas de hacer las
mismas cosas. Por ejemplo' el prorama Cola =undo que hicimos al principio podemos hacerlo utili.ando la librería DiostreamE en luar
de Dstdio.hE(
#include<iostream>
usin! namespace std; 66 3sta lZnea es necesaria cuando
66 utiliLamos la li0rerZa iostream

int main()
{
cout << "Bola Vundo+"; 66cout es el eJuiKalente de printf&
66si se fi4an la sintN>is es muI parecida.
cin.!et(); 66 cin.!et es el eJuiKalente de !etch& detiene la e4ecuciQn del pro!rama.

LN
return 0; 66 Oo es necesaria para Jue el pro!rama funcione&
66 pero es una 0uena costum0re indicar Jue nuestro pro!rama terminQ
66 sin errores.
'
)a sint%Ais de cout es(
cout "!ensa"e" ;
=ostrando una variable(
cout "#l $ro!edio es%" $ro! ;
El siuiente mensaje aparecer% en una línea nueva(
cout "!ensa"e" endl;
¿Y c"mo leo datos +scan*,?
Para sustituir scanf*+ usamos cin' por ejemplo(
cin && edad;
'ee los caracteres introducidos y los guarda en la (aria)le edad.
>n proramita muy simple(
#include<iostream>
usin! namespace std;

int main()
{
int edad;
cout<<"Eual es tu edadX" "; cin >> edad;
cout<<"\n\t:u edad es " << edad;
cin.!et();cin.!et();

return 0;
'
En este caso necesitamos usar dos cin.get para detener el prorama. Esto se debe al uso de cin.
Posts Nelacionados
 Encontrar el n!mero mayor de un conjunto
 2de*ine en C++' c"mo sí y c"mo no
 Cola =undo' en C++
 Como usar cin.etline en C++
`emanta
LNI
(ostream
De YiDipe#ia9 la enciclope#ia libre
Saltar a: na<egación9 bRsOue#a
iostream es un componente #e la biblioteca están#ar 3STL7 #el lengua6e #e programación Cbb Oue es utiliBa#o
para operaciones #e entra#aVsali#a0 Su nombre es un acrónimo #e (nputVOutput "tream0 El flu6o #e entra#a ;
sali#a #e #atos en Cbb 3; su pre#ecesor C7 no se encuentra #efini#a #entro #e la sintaEis básica ; se pro<ee por
me#io #e librerias #e funciones especialiBa#as como iostream0 iostream #efine los siguientes ob6etos:
• cin : $lu6o #e entra#a 3Oue entra7
• cout : $lu6o #e sali#a 3Oue sale7
• cerr : $lu6o #e error no almacena#o0
• clog : $lu6o #e error almacena#o0
To#os los ob6etos #eri<a#os #e iostream !acen parte #el espacio #e nombres st#0
!jemplo0editar1
El clásico programa Lola 5un#o pue#e ser eEpresa#o en Cbb utiliBan#o iostream:
#include <iostream>
usin! namespace std;
int main()
{
cout << "Bello& )orld+" << endl;
sIstem("pause");
return 0;
'
LNII
Principales comandos (C/C++) de Arduino
if:
+omprue7a si cierta condición se cumple ! puede ser usado en conFunto con uno o m8s operadores de comparación *== igual que9 !=
di)erente que9 < menor que9 > ma!or que.2
i) *operación booleana.
/
acción
0
if...else:
Germite agrupar mHltiples compro7aciones;
i) *operación booleana.
/
acción 1
0
else
/
acción
0
for:
Repite un 7loque encerrado entre llaves; Ia iniciali!ación *initialiJation.9 se produce sólo la primera veJ; +ada veJ que se va a repetir el
7ucle9 se revisa la condición *condition.2 si es cierta9 el 7loque de )unciones se eFecutan *en este caso9 se suma.9 ! la condición vuelve a ser
compro7ada de nuevo; Si la condición es )alsa9 el 7ucle termina2
s"i#c$ case:
+ontrola el )luFo de programas permitiendo a los programadores especi)icar di)erentes códigos que de7erAan ser eFecutados en )unción de
varias condiciones; 6n particular9 una sentencia sBitc< compara el valor de una varia7le con el valor especi)icado en las sentencias case;
+uando se encuentra una sentencia case cu!o valor coincide con dic<a varia7le9 el código de esa sentencia se eFecuta;
sBitc< *%ariable. /
case ,2
//<acer algo cuando la %ariable sea igual a 1
7reaK-
case 32
LNIII
//<acer algo cuando la %ariable sea igual a
7reaK-
de)ault2
// si nada coincide9 eFecuta el Lde)aultL
// el Lde)aultL es opcional
0
"$ile:
Se eFecuta continuamente <asta que la eDpresión dentro del parMntesis pasa a ser )alsa;
B<ile*operación booleana./
acción
0
do... "$ile:
@ra7aFa de la misma manera que el 7ucle while9 con la eDcepcion de que la condición se comprue7a al )inal del 7ucle9 por lo que este 7ucle se
eFecuta LsiempreL al menos una veJ;
do
/
acción
0 B<ile *operación booleana.-
brea&:
6s usado para salir de los 7ucles do9 for9 o while9 pasando por alto la condición normal del 7ucle; 6s usado tam7iMn para salir de una
estructura de control switch;
pin'ode:
+on)igura el pin especi)icado para comportarse como una entrada o una salida;
pinMode*P()9 *+,P+,/()P+,.
di-i#al.ri#e:
6scri7e un valor N#1N *:O o >;>O. o I'P *5O9 tierra. <acia un pin digital;
digitalPrite*P()9 /(0//1*..
di-i#al2ead:
Iee el valor de un pin digital especi)icado *N#1N o I'P.;
digitalRead*P().
analo-2ead:
Iee el valor de tensión en el pin analógico especi)icado; Ia placa Arduino posee E canales *4 canalaes en el Mini ! (ano ! ,E en el Mega.
conectados a un conversor analógico digital de ,5 7its; 6sto signi)ica que convertir8 tensiones entre 5 ! : voltios a un nHmero entero entre 5 !
,53>; 6sto proporciona una resolución en la lectura de2 : voltios / ,53C unidades9 es decir9 5;55C? voltios *C;? mO. por unidad;
6l conversor tarda aproDimadamente ,55 microsegundos *5;555, segundos. en leer una entrada analógica por lo que se puede llevar una
tasa de lectura m8Dima aproDimada de ,5;555 lecturas por segundo;
analogRead*P().
analo-2eference:
+on)igura el voltaFe de re)erencia usado por la entrada analógica; Ia )unción analogRead() devolver8 un valor de ,53> para aquella tensión de
entrada que sea igual a la tensión de re)erencia; Ias opciones son2
345A+1,2 6s el valor de re)erencia analógico que viene por de)ecto que de : voltios en placas Arduino de ! de >;> voltios en placas Arduino
que )uncionen con >;> voltios;
(),42)A12 6s una re)erencia de tensión interna de ,;, voltios en el A@mega,E4 o A@mega>34 ! de 3;:E voltios en el A@mega4;
46,42)A12 Se usar8 una tensión de re)erencia eDterna que tendr8 que ser conectada al pin AR6Q;
LNIV
analogRe)erence*345A+1,/(),42)A1/46,42)A1.
Cueno aOui algunos coman#os basicos #el lengua6e maOuina cbb
$unciones #e Caracteres
$unción
getsGLee un string
getc!ar G Lee un carácter ; espera enter
getc!e G Lee un caracter #el tecla#o ; lo refle6a en pantalla
getc!GLee un caracter #el tecla#o sin refle6arlo en pantalla
getcGLee un caracter #el un flu6o
getpassGLee un passKor#
getteEtoGCopia teEto #e la pantalla en mo#o teEto a memoria
cgetsGLee string #el tecla#o sin refle6ar en pantalla
cgetcGLee un string #el tecla#o ; lo refle6a en pantalla
ungetc!GEmpu6a un caracter al tecla#o
ungetcGEmpu6a un caracter a la sali#a #e un flu6o
putsGEscribe un string ; retorna
putKGEscribe un entero en un stream
putcGEscribe un caracter para un stream
putc!GEscribe caracter en la <entana #e teEto
putc!arGEscribe un caracter
puten<GA#iciona un string en el ambiente actual
putteEtGCopia teEto #e la memoria en la pantalla
fputcGLee un caracter #es#e un flu6o
fputsGPone un string a un flu6o
fputc!arGPone un caracter a un flu6o
cputsGEscribe a string a una <entana #e teEto
Db!itGVerifica acti<i#a# teclas #e función
getteEtoenfoGLee información #e mo#o teEto #e <i#eo
mo<eteEtoGCopia teEto #e un rectángulo a otro
enpGLee un b;te #el un puerto #e el !ar#Kare
enpKGLee un Yor# #el un puerto #e el !ar#Kare
outpGPone un b;te en un puerto #el !ar#Kare
outpKGPone un Yor# en un puerto #el !ar#Kare
gotoE;GPosiciona el cursor en <entana #e teEto
sKabGCopia n b;tes #e un string origen a #estino
memsetGPone n b;tes #e origen a #estino
memccp;GCopia un bloOue #e n b;tes #e origen a #estino
memcmpGCompara los primeros n b;tes #e strings s- ; s)
memcp;GCopia un bloOue #e n b;tes #e origen a #estino
memicmpGCompara los primeros n b;tes #e strings s- ; s)
memmo<eGCopia un bloOue #e n b;tes #e origen a #estino
memc!rG Cusca n b;tes en caracter c
LNV
LNVI