Академический Документы
Профессиональный Документы
Культура Документы
2
Grado en Ingeniera Informtica
Grado en Ingeniera del Software
Grado en Ingeniera de Computadores
Luis Hernndez Yez
LuisHernndezYez
Facultad de Informtica
Universidad Complutense
Unejemplodeprogramacin
ElprimerprogramaenC++
Laslneasdecdigodelprograma
Clculosenlosprogramas
Variables
Expresiones
Lecturadedatosdesdeelteclado
Resolucindeproblemas
Losdatosdelosprogramas
Identificadores
Tiposdedatos
Declaracinyusodevariables
Instruccionesdeasignacin
Operadores
Mssobreexpresiones
Constantes
Labibliotecacmath
Operacionesconcaracteres
50
64
80
86
92
98
108
119
127
129
133
142
147
152
160
167
171
174
Fundamentosdelaprogramacin:TiposeinstruccionesI
Operadoresrelacionales
Tomadedecisiones(if)
Bloquesdecdigo
Bucles(while)
Entrada/salidaporconsola
Funcionesdefinidas
porelprogramador
177
180
183
186
190
199
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 50
LuisHernndezYez
Ejemplos:
Start;
Go North3Blocks;
Stop;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 51
Start
instruccin
Stop
avanzar
LuisHernndezYez
avanzar
direccin
direccin
Go
num
Blocks
North
East
2
num
South
West
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 52
El problema a resolver
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
A
Bloque:
Pgina 53
El algoritmo
LuisHernndezYez
1. Arrancar
2. Ir un bloque al Norte
3. Ir dos bloques al Este
4. Ir cinco bloques al Norte
5. Ir dos bloques al Este
6. Parar
Esos pasos sirven tanto para
una persona como para una computadora.
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 54
El programa
LuisHernndezYez
Instrucciones escritas en
el lenguaje de programacin
Start;
Go North1Blocks;
Go East2Blocks;
Go North5Blocks;
Go East2Blocks;
Stop;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 55
El programa
LuisHernndezYez
Stat;
Go North1Blocks
Go EastBlocks;
Go Noth 5Blocks;
Go West2Blocks;
Stop;
Copiamos el archivo
en una llave USB
y lo llevamos al coche
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 56
La compilacin
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Errores
de sintaxis
Pgina 57
Depuracin
Editamos el cdigo para corregir los errores sintcticos:
Start;
Go North1Blocks;
Go East3 Blocks;
Go North5Blocks;
Go West2Blocks;
Stop;
LuisHernndezYez
Stat;
Go North1Blocks
Go EastBlocks;
Go Noth 5Blocks;
Go West2Blocks;
Stop;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 58
La ejecucin
Se realiza lo que pide
cada instruccin:
Start;
Go North1Blocks;
LuisHernndezYez
Go East3Blocks;
Error de ejecucin
Una instruccin no se puede ejecutar!
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 59
Depuracin
Editamos el cdigo para arreglar el error de ejecucin:
Start;
Go North1Blocks;
Go East2 Blocks;
Go North5Blocks;
Go West2Blocks;
Stop;
LuisHernndezYez
Start;
Go North1Blocks;
Go East3Blocks;
Go North5Blocks;
Go West2Blocks;
Stop;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 60
La ejecucin
Se realiza lo que pide
cada instruccin:
?
B
LuisHernndezYez
Start;
Go North1Blocks;
Go East2Blocks;
Go North5Blocks;
Go West2Blocks;
Stop;
Error lgico
El programa no llega al resultado deseado!
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 61
Depuracin
Editamos el cdigo para arreglar el error lgico:
Start;
Go North1Blocks;
Go East2Blocks;
Go North5Blocks;
Go East 2Blocks;
Stop;
LuisHernndezYez
Start;
Go North1Blocks;
Go East2Blocks;
Go North5Blocks;
Go West2Blocks;
Stop;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 62
La ejecucin
LuisHernndezYez
Start;
Go North1Blocks;
Go East2Blocks;
Go North5Blocks;
Go East2Blocks;
Stop;
Conseguido!
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 63
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 64
Hola Mundo!
De vuelta en el programa que muestra un saludo en la pantalla:
#include<iostream>
usingnamespacestd;
int main() //main()esdondeempiezalaejecucin
{
cout<<"HolaMundo!"<<endl;
LuisHernndezYez
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 65
Hola Mundo!
La nica instruccin que produce algo tangible:
#include<iostream>
usingnamespacestd;
intmain()//main()esdondeempiezalaejecucin
{
cout<<"HolaMundo!"<<endl;
LuisHernndezYez
return0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
cout (iostream)
Pgina 66
cout<<"HolaMundo!"<<endl;
cout <<"HolaMundo!" <<endl;
HolaMundo!
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 67
LuisHernndezYez
80caracteres
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 68
H o l a
M u n d o !
...
LuisHernndezYez
...
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 69
El insertor <<
cout<<...;
LuisHernndezYez
Recuerda:lasinstruccionesterminanen;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 70
Lascomillasnosemuestran!
LuisHernndezYez
Nmeros literales
Con o sin decimales, con signo o no: 123, 37, 3.1416, ...
cout<<"Pi=" <<3.1416;
Se muestran los caracteres que representan el nmero
endl
Fundamentosdelaprogramacin:TiposeinstruccionesI
Puntodecimal,NOcoma!
Pgina 71
El programa principal
La funcin main(): donde comienza la ejecucin...
#include<iostream>
usingnamespacestd;
int main()
//main()esdondeempiezalaejecucin
{
cout<<"HolaMundo!"<<endl;
return 0;
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 72
El programa principal
La funcin main():
Tipo de la funcin (int = entero): Tipo de valor que devuelve
Nombre de la funcin
int main()
Es una funcin!
{
...
return 0;
LuisHernndezYez
return 0;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 73
Documentando el cdigo...
Comentarios (se ignoran):
#include<iostream>
usingnamespacestd;
intmain()//main()esdondeempiezalaejecucin
{
cout<<"HolaMundo!"<<endl;
LuisHernndezYez
...
// Comentariodeunalnea
/* Comentariodevarias
lneasseguidas*/
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 74
La infraestructura
Cdigo para reutilizar:
#include<iostream>
usingnamespacestd;
intmain()//main()esdondeempiezalaejecucin
{
cout<<"HolaMundo!"<<endl;
return0;
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 75
Bibliotecas
Se incluyen con la directiva #include:
#include<iostream>
(Utilidades de entrada/salida por consola)
Para mostrar o leer datos hay que incluir la biblioteca iostream
Espacios de nombres
En iostream hay espacios de nombres; cul queremos?
LuisHernndezYez
#include<iostream>
usingnamespacestd;
Compilacin y enlace
hola.cpp
(cdigofuente)
Pgina 76
Amenudoenunpaso
Compilador
Cdigo objeto de
la biblioteca iostream
hola.obj
(cdigoobjeto)
Enlazador
LuisHernndezYez
HolaMundo!
Cargador
Fundamentosdelaprogramacin:TiposeinstruccionesI
hola.exe
(ejecutable)
Pgina 77
Bloquedecdigo
LuisHernndezYez
Coloreadosintctico:
usingnamespacestd;
Tipo
Declaracin
Espaciodenombres
#include<iostream>
Palabrasreservadas
Cabeceradelafuncin
int main()
{
DirectivasTipos
Palabrasreservadasgenerales
DatosliteralesComentarios
Cadenadecaracteres
Variable
Constante
cout<<"HolaMundo!" <<endl;
Instruccin
Operador
Operador
Datosliterales
return0;
Instruccin
Nmero
Cuerpodelafuncin
Lasinstruccionesterminanen;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 78
LuisHernndezYez
#include<iostream>
usingnamespacestd;
#include<iostream>usingnamespacestd;
intmain(){cout<<"HolaMundo!"<<endl;
return0;}
intmain()
{
cout<<"HolaMundo!"<<endl;
return0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 79
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 80
LuisHernndezYez
Tu cdigo aqu!
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 81
LuisHernndezYez
cout<<"nohamuchotiempoquevivaunhidalgodelosde
lanzaenastillero,..." <<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 82
int main()
{
cout<<"EnunlugardelaMancha," <<endl;
cout<<"decuyonombrenoquieroacordarme," <<endl;
LuisHernndezYez
cout<<"nohamuchotiempoquevivaunhidalgodelosde
lanzaenastillero,..." <<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 83
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 84
Mantenimiento y reusabilidad
Usa espacio en blanco para separar los elementos:
cout<<"EnunlugardelaMancha," <<endl;
LuisHernndezYez
mejor que
cout<<"EnunlugardelaMancha,"<<endl;
Usa sangra (indentacin) para el cdigo de un bloque:
{
Tab
cout<<"EnunlugardelaMancha," <<endl;
...
3 esp.
return 0;
}
El estilo importa!
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 85
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 86
Operadores aritmticos
+
*
/
Suma
Resta
Multiplicacin
Divisin
LuisHernndezYez
Operadores binarios
operando_izquierdo
Operacin
3 +4
2.56 3
143 *2
45.45 /3
operadoroperando_derecho
Resultado
7
0.44
286
15.15
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 87
LuisHernndezYez
Pgina 88
clculos.cpp
Ejemplo
#include<iostream>
usingnamespacestd;
LuisHernndezYez
int main()
Un texto
Un nmero
{
cout<<"133+1234=" <<133 +1234 <<endl;
cout<<"1234 111.5=" <<1234 111.5 <<endl;
cout<<"34*59=" <<34 *59 <<endl;
cout<<"3.4*5.93=" <<3.4 *5.93 <<endl;
cout<<"500/3=" <<500 /3 <<endl;//Div.entera
cout<<"500.0/3=" <<500.0 /3 <<endl;//Div.real
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 89
LuisHernndezYez
Divisin entera
Divisin real
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 90
LuisHernndezYez
Divisin
500 /3
500.0 /3
500 /3.0
500.0 /3.0
Resultado
166
166.667
166.667
166.667
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 91
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 92
LuisHernndezYez
edad=19;//variableedadyliteral19
Las variables deben ser declaradas
Qu tipo de dato queremos mantener?
Valor numrico sin decimales (entero): tipo int
Valor numrico con decimales (real): tipo double
Declaracin: tipo nombre;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 93
Declaracin de variables
int cantidad;
double precio;
tipo nombre;
Memoria
cantidad
precio
?
...
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 94
Declaracin de variables
#include<iostream>
usingnamespacestd;
int main()
{
Memoria
cantidad
precio
total
?
...
int cantidad;
LuisHernndezYez
double precio,total;
return 0;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 95
LuisHernndezYez
Notacin cientfica
Problemas de precisin
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 96
Instruccin: termina en ;
cantidad 12
cantidad=12; //int
precio=39.95; //double
total=cantidad*precio;//Asigna479.4
LuisHernndezYez
Concordancia de tipos:
cantidad=12.5;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 97
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 98
Expresiones
Secuencias de operandos y operadores
operando operador operandooperador operando...
total=cantidad*precio*1.18;
Expresin
LuisHernndezYez
Pgina 99
+ y
LuisHernndezYez
total=cantidad1+cantidad2*precio;
* antes que + 10 + 2 * 40,0 10 + 80,0 90,0
total=(cantidad1+cantidad2)*precio;
+ antes que * (10 + 2) * 40,0 12 * 40,0 480,0
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 100
variables.cpp
LuisHernndezYez
#include<iostream>
usingnamespacestd;
int main()
{
int cantidad;
double precio,total;
cantidad=12;
precio=39.95;
total=cantidad*precio;
cout<<cantidad<<"x"<<precio<<"="
<<total<<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 101
Memoria
cantidad
precio
total
LuisHernndezYez
...
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 102
cantidad
12
precio
total
?
...
LuisHernndezYez
intmain()
{
intcantidad;
doubleprecio,total;
cantidad=12;
Memoria
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 103
cantidad
precio
12
39.95
total
?
...
LuisHernndezYez
intmain()
{
intcantidad;
doubleprecio,total;
cantidad=12;
precio=39.95;
Memoria
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 104
cantidad
12
precio
39.95
total
479.4
...
LuisHernndezYez
intmain()
{
intcantidad;
doubleprecio,total;
cantidad=12;
precio=39.95;
total=cantidad*precio;
Memoria
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 105
LuisHernndezYez
#include<iostream>
usingnamespacestd;
Memoria
cantidad
12
precio
39.95
intmain()
{
479.4
total
intcantidad;
doubleprecio,total;
...
cantidad=12;
precio=39.95;
total=cantidad*precio;
cout<<cantidad<<"x"<<precio<<"="
<<total<<endl;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 106
LuisHernndezYez
#include<iostream>
usingnamespacestd;
intmain()
{
intcantidad;
doubleprecio,total;
cantidad=12;
precio=39.95;
total=cantidad*precio;
cout<<cantidad<<"x"<<precio<<"="
<<total<<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 107
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
cin (iostream)
Pgina 108
cin>>cantidad;
Memoria
cin
>>cantidad;
cantidad
12
?
...
12
_
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 109
El extractor >>
cin>>variable;
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 110
39.95.5abc
39.95abc
39.95
Pgina 111
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 112
LuisHernndezYez
int cantidad;
Amigable con el usuario!
double precio,total;
Qu tiene que introducir?
cout<<"Introducelacantidad:";
cin>>cantidad;
cout<<"Introduceelprecio:";
cin>>precio;
cout<<"Cantidad:" <<cantidad<<endl;
cout<<"Precio:" <<precio<<endl;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 113
LuisHernndezYez
Lectura correcta!!!
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 114
Datos/clculos
1. Pedir el numerador
Variablenumerador (double)
2. Pedir el denominador
Variabledenominador (double)
LuisHernndezYez
4. Mostrar el resultado
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 115
EntradaProcesoSalida
Muchos programas se ajustan a un sencillo esquema:
Declaraciones
Entrada
Procesamiento
Salida
1. Leer numerador
2. Leer denominador
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 116
Leer numerador
cin>>numerador;
2.
Leer denominador
cin>>denominador;
LuisHernndezYez
3.
4.
resultado=numerador/denominador;
cout<<resultado;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 117
divisin.cpp
Numerador:_129
_
Denominador:_
2
_
int main()
{
Declaraciones double numerador,denominador,resultado;
cout<<"Numerador:";
cin>>numerador;
Entrada
cout<<"Denominador:";
cin>>denominador;
Procesamiento resultado=numerador/denominador;
cout<<"Resultado:" <<resultado<<endl;
Salida
return0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 118
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 119
LuisHernndezYez
LuisHernndezYez
_
Resultado:_
64.5
64.5
Problema
Dadas la base y la altura de un tringulo, mostrar su rea
Refinamiento
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 120
cin
cadena literal
cout
LuisHernndezYez
cadena literal
variable
variable
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 121
Vara?
Nombre
Pantalla
Variable
cout
"Introduzcalabasedeltringulo:"
Constante
ninguno
Variable
base
Teclado
Variable
cin
"Introduzcalaalturadeltringulo:"
Constante
ninguno
Basedeltringulo
Tipo
double
double
Variable
altura
readeltringulo
double
Variable
area
LuisHernndezYez
Alturadeltringulo
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 122
Operaciones (acciones)
cout<<...
cin>>...
LuisHernndezYez
area =base*altura/2
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 123
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 124
#include<iostream>
usingnamespacestd;
int main()
{
Declaraciones
1. Mostrar en la pantalla el texto que pida la base del tringulo
Algoritmo
traducido
a cdigo
en C++
LuisHernndezYez
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 125
tringulo.cpp
El programa: implementacin
tringulo?
int main()
{
double base,altura,area;//Declaraciones
cout<<"Introduzcalabasedeltringulo:";//1
cin>>base;//2
cout<<"Introduzcalaalturadeltringulo:";//3
cin>>altura;//4
area =base*altura/2;//5
//6
cout<<"Elreadeuntringulodebase" <<base
<<"yaltura"<<altura<<"es:" <<area <<endl;
return 0;
}
Pgina 126
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 127
LuisHernndezYez
LuisHernndezYez
#include<iostream>
usingnamespacestd;
Literales
Constantes
Con nombre
Datos
base,altura,area
Identificadores
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 128
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 129
LuisHernndezYez
LuisHernndezYez
Variables
Pi=3.141592653589
palabras reservadas
Para variables y constantes con nombre
Nombre de un dato (para accederlo/modificarlo)
Deben ser descriptivos
Sintaxis:
a..z,A..Z,_
0..9,a..z,A..Z,_
LuisHernndezYez
cantidadprrecio
totalbasealturaarea
numerador
Pgina 130
autoboolbreakcasecatchcharclassconst
const_cast
continuedefaultdeletedodouble
dynamic_cast
elseenumexplicitexternfalse
floatforfriendgoto
ifinlineintlong
mutablenamespacenewoperatorprivateprotected
publicregisterreinterpret_cast
LuisHernndezYez
signedsizeofstaticstatic_cast
returnshort
structswitch
templatethisthrowtruetrytypedeftypeid
typename
unionunsignedusingvirtualvoid
volatilewhile
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 131
a..z,A..Z,_
_base_imponible
__edad
valor%100
interesAnual
EDAD12
_12_meses
clculoNmina
AlgunValor
valor?
____valor
salario_1_mes
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 132
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 133
LuisHernndezYez
LuisHernndezYez
100caracteres
aos
0..9,a..z,A..Z,_
Tipos
Cada dato, de un tipo concreto
Cada tipo establece:
125
true
'a'
3.14159
"Hola"
LuisHernndezYez
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 134
int
Nmeros enteros (sin decimales)
1363, 12, 49
float
Nmeros reales
12.45, 3.1932, 1.16E+02
double
Nmeros reales (mayores intervalo y precisin)
char
Caracteres
'a' , '{', '\t'
bool
Valores lgicos (verdadero/falso)
true, false
string
Cadenas de caracteres (biblioteca string) "HolaMundo!"
void
Nada, ausencia de tipo, ausencia de dato (funciones)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 135
Caracteres
Intervalo de valores: Juego de caracteres (ASCII)
Literales:
'a''%''\t'
1 byte
LuisHernndezYez
ISO88591
(ASCII extendido: cdigos 128..255)
ASCII (cdigos 32..127)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 136
Valores lgicos
Slo dos valores posibles:
Verdadero (true)
Falso (false)
Literales:
truefalse
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 137
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 138
Cadenas de caracteres
"Hola""Introduceelnumerador:""X142FG5TX?%A"
"
"
char
LuisHernndezYez
Secuencias de caracteres
Programas con variables de tipo string:
#include<string>
usingnamespacestd;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 139
tipos.cpp
LuisHernndezYez
#include<iostream>
#include<string>
usingnamespacestd;//Unsolousing...paraambasbibliotecas
int main()
{
int entero=3;//Podemosasignar(inicializar)aldeclarar
double real=2.153;
char caracter ='a';
bool cierto=true;
string cadena="Hola";
cout<<"Entero:" <<entero<<endl;
cout<<"Real:" <<real<<endl;
cout<<"Carcter:" <<caracter <<endl;
cout<<"Booleano:" <<cierto<<endl;
cout<<"Cadena:" <<cadena<<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 140
Tipo
Intervalo
int
2147483648 .. 2147483647
unsignedint
0 .. 4294967295
shortint
32768 .. 32768
LuisHernndezYez
unsignedshortint 0 .. 65535
longint
2147483648 .. 2147483647
unsignedlongint
0 .. 4294967295
double
+| 2.23e308 .. 1.79e+308
longdouble
+| 3.37E4932 .. 1.18E+4932
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 141
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 142
[modificadores]tipo lista_de_variables;
Opcional
lista_de_variables
Identificador
LuisHernndezYez
,
int i,j,l;
shortintunidades;
unsignedshortintmonedas;
double balance,beneficio,perdida;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 143
int inicio;
shortintunidades;
double balance;
inicio
01
02
03
04
unidades
05
06
balance
07
08
09
10
11
12
LuisHernndezYez
13
14
15
...
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 144
LuisHernndezYez
Identificador
Expresin
int i=0,j,l=26;
shortintunidades=100;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Enparticular,unaexpresin
puedeserunliteral
Pgina 145
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 146
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 147
LuisHernndezYez
LuisHernndezYez
El operador =
Variable
Expresin
int i,j=2;
LuisHernndezYez
i=23 +j*5;//itomaelvalor33
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 148
Errores
int a,b,c;
5 =a;
//ERROR:unliteralnopuederecibirunvalor
a+23 =5;
//ERROR:nopuedehaberunaexpresinalaizda.
b="abc";
//ERROR:unenteronopuedeguardarunacadena
LuisHernndezYez
c=23
5;
//ERROR:expresinnovlida(faltaoperador)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 149
int i,j=2;
i=23 +j*5;
Memoria
01
02
03
04
Memoria
i
23 +2 *5
08
03
07
33
02
04
05
06
01
05
06
07
08
09
09
10
10
...
LuisHernndezYez
...
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 150
3.45
127.5
aux
aux=a;
LuisHernndezYez
a=b;
b=aux;
Fundamentosdelaprogramacin:TiposeinstruccionesI
3.45
127.5
aux
3.45
127.5
127.5
aux
3.45
127.5
3.45
aux
3.45
Pgina 151
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 152
LuisHernndezYez
Pgina 153
LuisHernndezYez
float / double
int
1(monario) Prefijo
2(binario)
Infijo
Suma
2(binario)
Infijo
Resta
2(binario)
Infijo
Producto
2(binario)
Infijo
Div.entera
Divisinreal
2(binario)
Infijo
Mdulo
Noaplicable
Cambiodesigno
++
1(monario) Prefijo/postfijo
Incremento
1(monario) Prefijo/postfijo
Decremento
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 154
LuisHernndezYez
++interes
mesesj++
//1ms1menos
Operadores binarios
Operando izquierdo operador operando derecho
Operandos: literales, constantes, variables o expresiones
2 +3
a*RATIOa+b
(a%b)*(c/d)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 155
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 156
LuisHernndezYez
Divisin entera:
No se obtienen decimales Queda un resto
123
24
123 %5
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 157
++/
int i=10,j;
j=++i;//Incrementaantesdecopiar
cout<<i<<" "<<j;//Muestra11 11
LuisHernndezYez
j=i;
i=i+1;
int i=10,j;
j=i++;//Copiaydespusincrementa
cout<<i<<" "<<j;//Muestra11 10
No mezcles ++ y con otros operadores
Fundamentosdelaprogramacin:TiposeinstruccionesI
LuisHernndezYez
#include<iostream>
usingnamespacestd;
Pgina 158
operadores.cpp
int main(){
int entero1=15,entero2=4;
double real1=15.0,real2=4.0;
cout<<"Operacionesentrelosnmeros15y4:"<<endl;
cout<<"Divisinentera(/):"<<entero1/entero2<<endl;
cout<<"Restodeladivisin(%):"<<entero1%entero2<<endl;
cout<<"Divisinreal(/):"<<real1/real2<<endl;
cout<<"Num="<<real1<<endl;
real1=real1;
cout<<"Cambiadesigno():"<<real1<<endl;
real1=real1;
cout<<"Vuelveacambiar():"<<real1<<endl;
cout<<"Seincrementaantes(++prefijo):"<<++real1<<endl;
cout<<"Semuestraantesdeincrementar(posfijo++):"
<<real1++<<endl;
cout<<"Yaincrementado:" <<real1<<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 159
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 160
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 161
Precedencia
Operadores
Mayor prioridad
++ (postfijos)
++ (prefijos)
(cambio de signo)
*/%
Menor prioridad
LuisHernndezYez
3 +5 *2 /2 1 3 +10 /2 1 3 +5 1 8 1 7
Misma precedencia:
Izquierda antes
Mayor
precedencia
Misma precedencia:
Izquierda antes
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 162
* antes que
(6 1)
* antes que +
(32 +12)/4
44 /4 5
/ antes que
LuisHernndezYez
11 5
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 163
frmula.cpp
#include<iostream>
usingnamespacestd;
LuisHernndezYez
int main()
{
double x,f;
cout<<"IntroduceelvalordeX:";
cin>>x;
f=3 *x*x/5 +6 *x/7 3;
cout<<"f(x)=" <<f<<endl;
return 0;
}
Usa parntesis para mejorar la legibilidad:
f=(3 *x*x/5)+(6 *x/7) 3;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 164
La misma
LuisHernndezYez
variable operador=op_derecho;
Asignacin
a=a+12;
a=a*3;
a=a 5;
a=a/37;
a=a%b;
Abreviatura
a+=12;
a*=3;
a=5;
a/=37;
a%=b;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Igual precedencia
que la asignacin
De momento,
mejor evitarlas
Pgina 165
Bit de signo
0 1 1 1 1 1 1 1
0 = positivo
+ 0 0 0 0 0 0 0 0
1 = negativo
32767
+ 1
0 0 0 0 0 0 0 0
32768
LuisHernndezYez
1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
Pgina 166
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 167
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
const
Declaracindevariableconinicializador
constshortintMeses=12;
constdouble Pi=3.141592,
LuisHernndezYez
RATIO=2.179 *Pi;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 168
vs.
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 169
constantes.cpp
int main(){
const double Pi=3.141592;
double radio=12.2,circunferencia;
circunferencia=2 *Pi*radio;
cout<<"Circunferenciadeuncrculoderadio"
<<radio<<":" <<circunferencia<<endl;
const double Euler =2.718281828459;//Nmeroe
cout<<"Nmeroealcuadrado:"<<Euler *Euler <<endl;
const int IVA=21;
int cantidad=12;
double precio=39.95,neto,porIVA,total;
neto=cantidad*precio;
porIVA =neto*IVA/100;
total=neto+porIVA;
cout<<"Totalcompra:"<<total<<endl;
return 0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 170
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 171
LuisHernndezYez
LuisHernndezYez
#include<iostream>
usingnamespacestd;
#include<cmath>
Algunas ...
abs(x)
Valor absoluto de x
LuisHernndezYez
pow(x,y) x elevado a y
sqrt(x)
Raz cuadrada de x
ceil(x)
floor(x)
exp(x)
ex
log(x)
Ln x (logaritmo natural de x)
log10(x)
Logaritmo en base 10 de x
sin(x)
Seno de x
cos(x)
Coseno de x
tan(x)
Tangente de x
round(x)
trunc(x)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 172
mates.cpp
LuisHernndezYez
#include<iostream>
usingnamespacestd;
#include<cmath>
int main(){
double x,y,f;
pow() con argumento entero:
cout<<"ValordeX:";
Usa el molde double():
cin>>x;
pow(double(i),5)
cout<<"ValordeY:";
cin>>y;
f=2 *pow(x,5) +sqrt(pow(x,3) /pow(y,2))
/abs(x*y) cos(y);
cout<<"f(x,y)=" <<f<<endl;
return 0;
}
Pon un espacio detrs de cada coma en las listas de argumentos
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 173
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 174
char
Asignacin, ++/ y operadores relacionales
LuisHernndezYez
devuelve la mayscula de c
devuelve la minscula de c
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 175
caracteres.cpp
int main(){
char caracter1='A',caracter2='1',caracter3='&';
cout<<"Carcter1(" <<caracter1<<")."<<endl;
cout<<"Alfanumrico?"<<isalnum(caracter1)<<endl;
cout<<"Alfabtico?"<<isalpha(caracter1)<<endl;
cout<<"Dgito?"<<isdigit(caracter1)<<endl;
cout<<"Mayscula?"<<isupper(caracter1)<<endl;
caracter1=tolower(caracter1);
cout<<"Enminscula:"<<caracter1<<endl;
cout<<"Carcter2(" <<caracter2<<")."<<endl;
cout<<"Alfabtico?"<<isalpha(caracter2)<<endl;
cout<<"Dgito?"<<isdigit(caracter2)<<endl;
cout<<"Carcter3(" <<caracter3<<")."<<endl;
cout<<"Alfanumrico?"<<isalnum(caracter3)<<endl;
cout<<"Alfabtico?"<<isalpha(caracter3)<<endl;
cout<<"Dgito?"<<isdigit(caracter3)<<endl;
return 0;
1 true / 0 false
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 176
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 177
LuisHernndezYez
LuisHernndezYez
...
#include<cctype>
Operadores relacionales
Comparaciones (condiciones)
Condicin simple ::= Expresin Operador_relacional Expresin
LuisHernndezYez
menor que
<=
>
mayor que
>=
==
igual que
!=
distinto de
Fundamentosdelaprogramacin:TiposeinstruccionesI
Operadores(prioridad)
...
*/%
+
< <=>>=
==!=
=+==*=/=%=
Pgina 178
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 179
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 180
LuisHernndezYez
cdigoT
Condicin
false
cdigoF
if (condicin) {
cdigoT
}
else{
cdigoF
}
int num;
cout<<"Nmero:";
Opcional:puedenohaberelse
cin>>num;
if (num%2 ==0){
cout<<num<<"espar";
}
else {
cout<<num<<"esimpar";
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 181
seleccin.cpp
int main(){
intop1=13,op2=4;
intopcion;
cout<<"1 Sumar"<<endl;
cout<<"2 Restar"<<endl;
cout<<"Opcin:";
cin>>opcion;
if (opcion ==1){
cout<<op1+op2<<endl;
}
else {
cout<<op1 op2<<endl;
}
return0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 182
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 183
LuisHernndezYez
LuisHernndezYez
#include<iostream>
usingnamespacestd;
Agrupacin de instrucciones
Grupo de instrucciones a ejecutar en una rama del if
{
instruccin
Tab
LuisHernndezYez
3 esp.
int num,total=0;
cin>>num;
if (num>0)
{
cout<<"Positivo";
total=total+num;
}
cout<<endl;
intruccin1
intruccin2
...
intruccinN
mbito local
(declaraciones locales)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 184
if (num>0){
cout<<"Positivo";
total=total+num;
}
cout<<endl;
LuisHernndezYez
if (num>0){
cout<<"Positivo";
}
if (num>0)
cout<<"Positivo";
Pgina 185
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 186
condicin
cuerpo
Bloque
de cdigo
true
Condicin
false
LuisHernndezYez
Cuerpo
while (condicin) {
cuerpo
}
Pgina 187
serie.cpp
LuisHernndezYez
#include<iostream>
usingnamespacestd;
int main(){
inti=1,n=0,suma=0;
while (n<=0){//Slonpositivo
cout<<"Cuntosnmerosquieressumar?";
cin>>n;
}
while(i<=n){
suma=suma+i;
i++;
}
cout<<"Sumatoriodei(1a" <<n <<")="
<<suma<<endl;
return0;
}
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 188
Iteracin condicional
while(i<=n){
suma=suma+i;
i++;
}
true
i<=n
false
6
2
3
4
5
1
suma
15
10
1
3
6
0
LuisHernndezYez
suma+=i;
i++;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 189
LuisHernndezYez
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 190
#include<iostream>
usingnamespacestd;
cin
7
cout
5
Programa 1
= l a t o T
LuisHernndezYez
Flujodeentrada
>>
Variable
Insertor
Flujodesalida
<<
Expresin
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 191
cin
>>
Variable
LuisHernndezYez
Pgina 192
#include<string>
usingnamespacestd;
cin>>cadena
cin.sync()
string nombre,apellidos;
cout<<"Nombre:";
cin>>nombre;
cout<<"Apellidos:";
cin>>apellidos;
cout<<"Nombrecompleto:"
<<nombre<<""
<<apellidos<<endl;
string nombre,apellidos;
cout<<"Nombre:";
cin>>nombre;
cin.sync();
cout<<"Apellidos:";
cin>>apellidos;
cout<<...
LuisHernndezYez
Pgina 193
Pgina 194
cout
Expresin
<<
123.45
Un nmero real!
LuisHernndezYez
cout<<d;
La biblioteca iostream
define la constante endl
como un salto de lnea
5 4 . 3 2 1
Un texto!
(secuencia de caracteres)
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 195
Expresin
<<
cout
Programa
cout
int meses=7;
cout<<"Total:"<<123.45 <<endl<<"Meses:"<<meses;
cout<<123.45 <<endl<<"Meses:"<<meses;
cout<<endl<<"Meses:"<<meses;
LuisHernndezYez
cout<<"Meses:"<<meses;
Total: 123.45
Meses: 7
cout<<meses;
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 196
#include<iomanip>
Constantes y funciones a enviar a cout para ajustar el formato de salida
Biblioteca Constante/funcin
iostream
LuisHernndezYez
iomanip
Propsito
showpoint/
noshowpoint
fixed
scientific
boolalpha
left/right
setw(anchura)*
setprecision(p)
Pgina 197
bool fin=false;
cout<<fin<<">" <<boolalpha <<fin<<endl;
0>false
double d=123.45;
char c='x';
int i=62;
cout<<d<<c<<i<<endl;
123.45x62
cout<<"|" <<setw(8)<<d<<"|"<<endl;
|123.45|
cout<<"|" <<left<<setw(8)<<d<<"|"<<endl;
|123.45|
cout<<"|" <<setw(4)<<c<<"|"<<endl;
|x|
cout<<"|" <<right<<setw(5)<<i<<"|"<<endl;
|62|
cout<<e<<" "<<showpoint<<e<<endl;
96 96.0000
cout<<scientific<<d<<endl;
1.234500e+002
cout<<fixed<<setprecision(8)<<d<<endl;
123.45000000
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 198
Fundamentosdelaprogramacin:TiposeinstruccionesI
Pgina 199
LuisHernndezYez
LuisHernndezYez
double e=96;
LuisHernndezYez
tipo nombre(parmetros)//Cabecera
{
//Cuerpo
}
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 200
LuisHernndezYez
Pgina 201
LuisHernndezYez
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 202
Memoria
i
124
3.0
...
int main(){
int i=124;
...
double d=3;
124
funcion(i,33 *d);
99.0
LuisHernndezYez
...
...
return0;//main()devuelve0alS.O.
}
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 203
int main(){
return x*x;
cout<<2 *cuad(16);
LuisHernndezYez
x=x*x;
}
return 0;
Esta instruccin
no se ejecutar nunca
256
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 204
LuisHernndezYez
Pgina 205
#include<iostream>
usingnamespacestd;
#include<cmath>
LuisHernndezYez
//Prototiposdelasfunciones(exceptomain())
bool par(int num);
boolletra(char car);
intsuma(int num);
double formula(int x,inty);
int main(){
intnumero,sum,x,y;
char caracter;
double f;
cout<<"Entero:";
cin>>numero;
if (par(numero)){
cout<<"Par";
}
...
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 206
LuisHernndezYez
else{
cout<<"Impar";
}
cout<<endl;
if (numero>1){
cout<<"Sumatoriode1a" <<numero<<":"
<<suma(numero)<<endl;
}
cout<<"Carcter:";
cin>>caracter;
if(!letra(caracter)){
cout<<"no";
}
cout<<"esunaletra" <<endl;
cout<<"f(x,y)=" <<formula(x,y)<<endl;
//Losargumentospuedenllamarseigualonoquelosparmetros
return 0;
}
...
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 207
//Implementacindelasfuncionespropias
boolpar(int num){
bool esPar;
if (num%2==0){
esPar =true;
}
else {
esPar =false;
}
LuisHernndezYez
return esPar;
}
...
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 208
LuisHernndezYez
Pgina 209
funciones.cpp
LuisHernndezYez
Fundamentosdeprogramacin:TiposeinstruccionesI
Pgina 210
LuisHernndezYez
Pgina 211