Documentos de Académico
Documentos de Profesional
Documentos de Cultura
BASICO
V5.0
AGOSTO 2010
FERREIRAS
Ferreiras C++ BASICO 2
LA COSA MAS IMPORTANTE QUE
HAY QUE HACER CUANDO SE ESTA
APRENDIENDO C++ ES
CONCENTRARSE EN LOS
CONCEPTOS Y NO PERDERSE EN LOS
DETALLES TCNICOS.
A TENER PRESENTE
Ferreiras C++ BASICO 3
EL OBJETIVO DE APRENDER UN
LENGUAJ E DE PROGRAMACIN ES
LLEGAR A SER UN MEJ OR
PROGRAMADOR, ES DECIR, SER
MAS EFICACES EN EL DISEO E
IMPLEMENTACIN DE NUEVOS
SISTEMAS Y EN EL MANTENIMIENTO
DE LOS VIEJOS.
Ferreiras C++ BASICO 4
PARA ELLO, UNA APRECIACIN
DE LAS TCNICAS DE DISEO Y
PROGRAMACIN ES MUCHO MAS
IMPORTANTE QUE LA
COMPRENSIN DE LOS
DETALLES DEL LENGUAJ E; ESE
ENTENDIMIENTO VIENE CON EL
TIEMPO Y LA PRACTICA.
BJARNE STROUSTRUP, Programming: Principles
and Practice Using C++, Pearson Educations, Inc.,
2009
Ferreiras C++ BASICO 5
CARACTERES A USAR
Tabla ASCII std
ASCII STD Table.doc
Conjunto bsico de caracteres C++
C++ Basic Source Character Set.doc
Secuencias de escape
Borland C++ escape sequences.doc
Ferreiras C++ BASICO 6
ALFABETICOS
DIGITOS
SUBRAYADO
ALFABETICO
SUBRAYADO (NO RECOMENDADO)
IDENTIFICADORES C++
Ferreiras C++ BASICO 7
LAS PALABRAS RESERVADAS EN
C++ NO DEBEN SER USADAS COMO
IDENTIFICADORES EN UN
PROGRAMA C++:
asm, auto, bool, break, case, catch, char, class, const,
const_cast continue, default, delete, do, double,
dynamic_cast, else, enum, explicit, export, extern, false,
float, for, friend, goto, if, inline, int, long, mutable,
namspace, new, operator, private, protected, public,
register, reinterpret_cast, return, short, signed, sizeof,
static, static_cast, struct, switch, template, this, throw,
true, try, typedef, typename, union, unsigned, using,
virtual, void, volatile, wchar_t, while.
Ferreiras C++ BASICO 8
LOS IDENTIFICADORES DEBEN SER
* Descriptivos y Asociativos con la entidad que identifican;
Ejemplos ( ) y Contraejemplos ( ):
Salario _maxvalor mi_codigo edad
URL_http_www_kiko_dot_com
papito@mail.com cdigo precioRD$
Telfono_# MaaNa X Mi nombre_es X
Ferreiras C++ BASICO 9
CONSTANTES EXPLCITA O CONSTANTES
MANIFIESTA
NUMERICAS ENTERAS: -1234 +23456789
NUMERICAS REALES PFI: 1.234 0.0000456768
NUMERICAS REALES PFL: 1.234E+24 -4.567E-26
DE CARACTERES: A # @ T O P % $
DE CADENAS: Curso de C++ Inicia Hoy
BOOLEANO: true false
ESPECIALES: null
LITERALES
Ferreiras C++ BASICO 10
COMENTARIOS
// Esto es un comentario de una lnea
/*
Este es un comentario de ms de una
lnea.
Los comentarios nos permiten documentar el
cdigo fuente.
*/
Ferreiras C++ BASICO 11
SENTENCIA
Orden dada a un programa para realizar
una tarea especfica. Las sentencias
terminan con el carcter ; que separa una
sentencia de la siguiente. Un buen estilo de
escribir cdigo fuente es escribir las
sentencias unas debajo de otras. No importa
lo corta que sean.
Ferreiras C++ BASICO 12
BLOQUE DE CDIGO, { ...}
Una o mas sentencias limitadas por un
par de llaves, esto es, una llave abierta, { , y
una llave cerrada, }, con un comportamiento
como una sola unidad:
{
s1;
...
}
Ferreiras C++ BASICO 13
LOS TIPOS NOS PERMITEN
ESTABLECER LOS LITERALES QUE
MANEJAREMOS:
INTRINSECOS AL COMPILADOR (NO
REQUIEREN USO DE LIBRERA), TAMBIN
LLAMADOS NATIVOS :
int, char, float, double, long, bool,
TIPOS Y RANGOS DE VALORES
Ferreiras C++ BASICO 14
REQUIEREN LIBRERA:
<string>, <vector>, <list>,
DEFINIDOS POR EL PROGRAMADOR:
struct, class,
RANGOS DE VALORES: Establecen los
valores que podemos manipular en cada
tipo;
VER 32-bit data types, sizes, and ranges.doc
Ferreiras C++ BASICO 15
VARIABLE: REPRESENTA UNA POSICIN
DE ALMACENAMIENTO EN LA MEMORIA
RAM DEL COMPUTADOR:
VARIABLES, DECLARACIN
ID DIRECCIN CONTENIDO
numero1 FFF1001 3.456
cadena1 FFF1010 Ferreiras
RAM
Ferreiras C++ BASICO 16
LA DIRECCIN ES LA POSICIN DE
ALMACENAMIENTO DE LA RAM;
EL CONTENIDO ES LA DATA ALMACENADA
Y PUEDE CAMBIAR DURANTE LA VIDA DE LA
VARIABLE;
ADEMS DE PERMITIR ALMACENAR DATA,
LA VARIABLE PERMITE TRABAJAR CON
DICHA DATA;
Ferreiras C++ BASICO 17
DECLARACIN DE VARIABLE:
tipo ID;
CONVENCIN PARA CONSTRUIR EL ID
DE VARIABLES:
- USAR MINSCULAS;
- SI TIENE MAS DE UNA PALABRA, SEPARAR CON _;
PUEDE SER HECHA EN CUALQUIER PARTE DENTRO
DE UN BLOQUE ( { ... } );
DEBE SER ANTES DEL PRIMER USO DE LA VARIABLE;
Ferreiras C++ BASICO 18
EJEMPLOS
long numero_matricula;
int cantidad;
float salario;
char letra_inicial;
string nombre_completo;
bool control;
Ferreiras C++ BASICO 19
INICIALIZACIN DE VARIABLES
FORMATO GENERAL:
tipo ID(valor);
SOLO ES POSIBLE AL MOMENTO DE
HACER LA DECLARACIN-DEFINICIN DE
LA VARIABLE;
VALOR DEBE SER CONGRUENTE CON EL
TIPO;
Ferreiras C++ BASICO 20
VALOR PUEDE SER UN LITERAL O EL
RESULTADO DE UNA EXPRESIN
EVALUABLE EN EL PUNTO EN QUE SE
HACE LA DECLARACIN-INICIALIZACIN
DE LA VARIABLE;
SE RECOMIENDA SOLO SI SE HAR UN
USO INMEDIATO DE LA VARIABLE; SINO EL
COMPILADOR GENERA UN WARNING;
Ferreiras C++ BASICO 21
EJEMPLOS
long mi_matricula(743173);
float salario_semanal( 1133.34);
string nombre_completo ( Pedro Lpez);
char letra(F);
int cantidad(1010);
Ferreiras C++ BASICO 22
VARIABLES LOCALES,
GLOBALES
SON ESTABLECIDAS, IMPLICITAMENTE,
POR EL LUGAR DEL CODIGO EN QUE SE
DECLARAN:
LAS LOCALES SON DECLARADAS
DENTRO DE UN BLOQUE O FUNCIN;
LAS GLOBALES SON DECLARADAS
FUERA DE UN BLOQUE O DE FUNCIN:
Ferreiras C++ BASICO 23
EL ALCANCE Es la parte del programa
dentro del cual puede ser usada:
LAS VARIABLES LOCALES TIENEN
ALCANCE DENTRO DEL BLOQUE O
FUNCIN EN QUE SON DECLARADAS;
LAS VARIABLES GLOBALES
TIENEN ALCANCE DE ARCHIVO;
Ferreiras C++ BASICO 24
EL VALOR INICIAL POR DEFECTO
ES:
INDEFINIDO (BASURA) EN LAS
VARIABLES LOCALES;
CERO EN LAS VARIABLES
GLOBALES;
Ferreiras C++ BASICO 25
OPERANDO, OPERADOR, EXPRESIN
OPERANDO: ESPECIFICA LA DATA A SER
MANIPULADA;
OPERADOR: SMBOLO QUE REPRESENTA
LA ACCIN ESPECIFICA SOBRE LA DATA;
EXPRESIN: MEZCLA DE OPERANDO(S) Y
OPERADORE(S) QUE PRODUCE UN VALOR;
TODA EXPRESIN DE TENER AL MENOS
UN OPERANDO;
Ferreiras C++ BASICO 26
OPERADOR DE ASIGNACIN, =
FORMA GENERAL:
VARIABLE = EXPRESION;
COPIA EL VALOR RESULTANTE DE EVALUAR LA
EXPRESIN DE LA DERECHA EN LA VARIABLE A
SU IZQUIERDA;
DESPUS DE SU EJECUCIN LA VARIABLE
ALMACENAR EL VALOR RESULTANTE DE LA
EXPRESIN;
Ferreiras C++ BASICO 27
LVALUE = RVALUE;
LVALUE
Un valor que puede aparecer a la izquierda de
una asignacin; Se lee y se escribe; Una
expresin que es un lvalue puede aparecer
tanto a la derecha como a la izquierda de una
asignacin; Las variables son lvalues;
Ferreiras C++ BASICO 28
LVALUE = RVALUE;
RVALUE
Un valor que puede ser usado a la derecha
de una asignacin; Solo se lee; Una
expresin que es un rvalue puede aparecer
en el lado derecho de una asignacin pero
no en su lado izquierdo; Los literales
numricos son rvalues;
Ferreiras C++ BASICO 29
CONVERSIONES EXPLICITAS:
tipo (expresion) ;
(tipo) expresion;
float y(12.3456)=> (int)y => y almacenar 12
int x(64)=> (char)x => x almacenar @
Ferreiras C++ BASICO 30
CONVERSIONES EXPLICITAS CON
OPERADORES:
cast_name<type>(expression);
static_cast,
dynamic_cast,
const_cast
reinterpret_cast
A VER EN INF-512
Ferreiras C++ BASICO 31
SINONIMOS DE TIPOS con typedef
typedef tipo id;
// NO SE RECOMIENDA SU USO PARA
COSAS COMO:
typedef double ferre;
ferre y(1.234E+213);// Es legal
Ferreiras C++ BASICO 32
CONTADOR
variable = variable + valor_constante;
ACUMULADOR
variable_acum = variable_acum + variable2;
EJEMPLOS:
estudiantes = estudiantes + 5; // cuenta de 5 en 5
sumatoria_notas = sumatoria_notas + notas;
Ferreiras C++ BASICO 33
OPERADOR DE PARENTESIS ( )
- Agrupar expresiones
- Aislar expresiones condicionales
- Indicar llamadas a funciones y
parmetros/argumentos de funciones
OPERADORES ESPECIFICOS DE C++
( :: , , A ver en el desarrollo del curso)
Ferreiras C++ BASICO 34
OperAritUnar Operando1
Operando1 OperAritBin Operando2
Clculos matematicos
Evaluan a un Valor Aritmtico
Veremos +, - , * , / , %, ++, --
OPERADORES ARITMETICOS
Ferreiras C++ BASICO 35
+ Operando1
- Operando2
Operando1 + Operando2
Operando1 - Operando2
Operando1 * Operando2
Operando1 / Operando2
OPERADORES UNARIOS QUE
ASIGNAN UN VALOR POSITIVO O
NEGATIVO A SU OPERANDO
SUMA, RESTA,
MULTIPLICACION
Y DIVISION
SOBRE ENTEROS
Y/O REALES
Ferreiras C++ BASICO 36
++Operando1; Incrementa uno antes de usar
Operando1++; Incrementa uno despus de
usar
--Operando1; Decrementa uno antes de usar
Operando1-- ; Decrementa uno despus de
usar
Operando1 % Operando2; Resto entero de la
divisin entera, solo entre tipos int (-_-)
Ferreiras C++ BASICO 37
PRECEDENCIA Y ASOCIATIVIDAD DE
OPERADORES
C++ INTERPRETA CUALQUIER EXPRESIN
BIEN ESCRITA:
- POR LA PRECEDENCIA Y ASOCIATIVIDAD
DE LOS OPERADORES;
- LOS OPERADORES EN UNA EXPRESIN SE
EVALAN EN ORDEN DE
MAYOR A MENOR PRECEDENCIA.
Ferreiras C++ BASICO 38
- LA EVALUACIN DE OPERADORES CON LA
MISMA PRECEDENCIA VIENE DETERMINADA
POR SU ASOCIATIVIDAD.
- LOS PARNTESIS ANULAN LAS REGLAS DE
PRECEDENCIA.
Ver archivo:
Tabla_Operadores_Basicos.doc
Ferreiras C++ BASICO 39
OPERADORES ARITMETICOS Y LOS ( )
Jerarqua de evaluacin
( )
+ y - unarios
* /
+ -
Ferreiras C++ BASICO 40
En una expresin aritmtica compleja,
Los operandos con ++, -- y % se
recomienda escribirlos entre ( ) para
priorizar explcitamente su evaluacin.
Ferreiras C++ BASICO 41
EJEMPLO ( bas0000.cpp)
**********************************************
Dados x = 10, y = 45, z = 3
-x + y + (++x) + x*y/z Evala a 210 ? SI
-x + y + (x++) + x*y/z Evala a 210 ? SI
y % x Evala a 9 ? SI
-x; x Almacenar -12 ? SI
************************************************
Si w = 12.34
w++; w almacenar 13.34
EXPLIQUE LOS RESULTADOS
Ferreiras C++ BASICO 42
bas0000.cpp
Compilador: bcc32 5.5
C++ / Ferreiras / C++ Basico /
Verificar la lagrimita
Dados x = 10, y = 45, z = 3
-x + y + (++x) + x*y/z Evala a 210 ? SI
-x + y + (x++) + x*y/z Evala a 210 ? SI
y % x Evala a 9 ? SI
-x; x Almacenar -12 ? SI
************************************************
Si w = 12.34
w++; w almacenar 13.34
************************************************
( >_< ): RECUERDE: x++ Significa selo y despus incremntele uno
++x Significa incremntele uno y despus selo
Ferreiras C++ BASICO 43
#include <iostream>
using namespace std;
double G; // valor inicial cero
int main(void){
double L; // valor inicial basura
int x(10), y(45), z(3), r1, r2, r3;
// 2 5 6 1 7 3 4
cout << endl << (-x + y + (x++) + x*y/z) << endl; // 195
cout << endl << x << endl; // 11
r1 = -x + y + (++x) + x*y/z; // 225
cout << endl << x << endl; // 12
cout << endl << -x << endl; // -12
r2 = -x + y + (x++) + x*y/z; // 225
cout << endl << x << endl; //13
cout << endl<< (-x + y + (x++) + x*y/z) << endl; // 240
cout << endl << x << endl; //14
cout << endl << -x << endl; // -14
r3 = y % x; // 3
Ferreiras C++ BASICO 44
cout << endl << r1
<< endl << r2
<< endl << r3
<< endl << -x << endl; // -14
double w(12.34);
w++;
cout << endl << w << endl; // 13.34
cout << endl << "G = " << G << " L = " << L << endl;
return 0;
}
Ferreiras C++ BASICO 45
C:\Borland\BCC55\Bin>bas0000
195
11
12
-12
13
240
14
-14
225
225
3
-14
13.34
G = 0 L = 2.122e-314
C:\Borland\BCC55\Bin>
OBSRVESE Los
valores almacenados
en x despus de cada
uso en cada
expresin completa.
Ferreiras C++ BASICO 46
OPERADORES BOOLEANOS, Operbool
OperBool Operando
Operando1 OperBool Operando2
true
false
OPERADORES DE RELACION
OPERADORES LOGICOS
OPERADORES DE IGUALDAD
true es 1
false es 0
Ferreiras C++ BASICO 47
OPERADORES DE RELACION, OperRel
Operando1 OperRel Operando2
true
false
>
<
>=
<=
ExprArit1 ExprArit2
Expresin
de
relacin,
ExprRel
Ferreiras C++ BASICO 48
OPERADORES LOGICOS, OperLog
OperLog Operando1
Operando1 OperLog Operando2
true
false
&&
||
!
ExprBool1
(ExprRel,
ExprLog)
ExprBool2
(EprRel,
ExprLog)
Expresin
Lgica,
ExprLog
Ferreiras C++ BASICO 49
P Q P&&Q
true true true
false
las
dems
P Q P||Q
false false false
True
las
dems
OPERADORES LOGICOS, CRITERIOS DE EVALUACION:
Sean P y Q son expresiones booleanes ( que se evalan a true o false):
P !P
false true
true false
Ferreiras C++ BASICO 50
OPERADORES DE IGUALDAD, OperIgua
Operando1 OperIgua Operando2
true
false
==
!=
ExprArit1 ExprArit2
Hay quienes los incluyen en los operadores de relacin
Ferreiras C++ BASICO 51
EJEMPLOS
(3.45*5+2.3) == (6.789/0.456) Es 0
(3.45*5+2.3) != (6.789/0.456) Es 1
Ferreiras C++ BASICO 52
EJEMPLOS
bool P( true), Q(true), R( false), S(false);
P = 1 Q = 1 R = 0 S = 0
P && Q Es 1
P && R Es 0
!( R || S ) Es 1
!( R || P ) Es 0
Ferreiras C++ BASICO 53
OPERADORES ARITMETICOS DE ASIGNACION
COMPUESTA
x op= y
Donde op= Es +=, -=, *=, /=, %=
x op= y Es equivalente a x = x op y
x += y; Es x = x + y;
x -= y; Es x = x y;
x *= y; Es x = x * y;
x /= y; Es x = x / y;
op= Se escribe
sin espacio entre
op y el =
en este curso no
haremos mucho
uso de estos.
Ferreiras C++ BASICO 54
EJEMPLO: Si
float K(11.23), h(31.45), J( 23.45), f(4.56),
g(6.78);
K += h Es = 42.68
K -= J Es = 19.23
f /= g Es = 0.672566
f *= g Es = 4.56
EXPLIQUE LOS RESULTADOS
Ferreiras C++ BASICO 55
EJEMPLOS
INF510_Tema_01_Ejem.txt
Ferreiras C++ BASICO 56
EJERCICIOS
INF510_Tema_01_Ejerc.doc
Ferreiras C++ BASICO 57
ASIGNACIN
INF510_Tema_01_A1.doc
Las asignaciones son para entregar en el aula, el da
y la hora que se indique en su requerimiento publicado
en el grupo.
Ferreiras C++ BASICO 58
GRACIAS