Documentos de Académico
Documentos de Profesional
Documentos de Cultura
02 TiposEInstruccionesI
02 TiposEInstruccionesI
de la programación
2
Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Constantes 167
La biblioteca cmath 171
Operaciones con caracteres 174
Fundamentos de la programación: Tipos e instrucciones I
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 50
Go North 3 Blocks;
Stop;
Fundamentos de la programación: Tipos e instrucciones I Página 51
Sintaxis del lenguaje de programación
= Literales
Start
instrucción Stop ;
avanzar
North 1
East 2
Luis Hernández Yáñez
dirección num 3
South
4
West
5
Fundamentos de la programación: Tipos e instrucciones I Página 52
N
El problema a resolver
Estando el coche en la posición A,
conseguir llegar al Cine Tívoli (B) B
Fundamentos de la programación: Tipos e instrucciones I Página 53
N
El algoritmo
Secuencia de pasos que hay que
seguir para resolver el problema
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
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 54
N
El programa
Instrucciones escritas en
el lenguaje de programación B
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
A
Go East 2 Blocks;
Stop;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 55
El programa
Escribimos el código del programa en un editor
y lo guardamos en un archivo:
Stat;
Go North 1 Blocks Copiamos el archivo
Go East Blocks; en una llave USB
Go Noth 5 Blocks; y lo llevamos al coche
Go West 2 Blocks;
Luis Hernández Yáñez
Stop;
Fundamentos de la programación: Tipos e instrucciones I Página 56
La compilación
Introducimos la llave USB en el coche
y pulsamos el botón de ejecutar el programa:
Stat;
‐‐‐‐^ Unknown word.
Go North 1 Blocks
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐^ ; missing.
Go East Blocks; Errores
‐‐‐‐‐‐‐‐^ Number missing.
de sintaxis
Go Noth 5 Blocks;
‐‐‐‐‐‐‐^ Unknown word.
Go West 2 Blocks;
Luis Hernández Yáñez
Stop;
There are errors. Impossible to run the program.
Fundamentos de la programación: Tipos e instrucciones I Página 57
Depuración
Editamos el código para corregir los errores sintácticos:
Stat; Start;
Go North 1 Blocks Go North 1 Blocks;
Go East Blocks; Go East 3 Blocks;
Go Noth 5 Blocks; Go North 5 Blocks;
Go West 2 Blocks; Go West 2 Blocks;
Stop; Stop;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 58
N
La ejecución
Se realiza lo que pide
cada instrucción: B
Start;
Go North 1 Blocks;
Go East 3 Blocks;
!
Error de ejecución
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 59
Depuración
Editamos el código para arreglar el error de ejecución:
Start; Start;
Go North 1 Blocks; Go North 1 Blocks;
Go East 3 Blocks; Go East 2 Blocks;
Go North 5 Blocks; Go North 5 Blocks;
Go West 2 Blocks; Go West 2 Blocks;
Stop; Stop;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 60
N
La ejecución
Se realiza lo que pide ?
cada instrucción: B
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go West 2 Blocks;
Stop;
Luis Hernández Yáñez
Error lógico
¡El programa no llega al resultado deseado!
Fundamentos de la programación: Tipos e instrucciones I Página 61
Depuración
Editamos el código para arreglar el error lógico:
Start; Start;
Go North 1 Blocks; Go North 1 Blocks;
Go East 2 Blocks; Go East 2 Blocks;
Go North 5 Blocks; Go North 5 Blocks;
Go West 2 Blocks; Go East 2 Blocks;
Stop; Stop;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 62
N
La ejecución
Se realiza lo que pide
cada instrucción:
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go East 2 Blocks;
Stop;
Luis Hernández Yáñez
¡Conseguido!
Fundamentos de la programación: Tipos e instrucciones I Página 63
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 64
Hola Mundo!
De vuelta en el programa que muestra un saludo en la pantalla:
#include <iostream>
using namespace std;
return 0;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 65
Hola Mundo!
La única instrucción que produce algo tangible:
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl;
return 0;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 66
cout << "Hola Mundo!" << endl;
Hola Mundo!
_
Fundamentos de la programación: Tipos e instrucciones I Página 67
Pantalla en modo texto
Líneas de 80 caracteres (textos)
Aplicación en modo texto
80 caracteres
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 68
H o l a M u n d o !
...
Luis Hernández Yáñez
...
Fundamentos de la programación: Tipos e instrucciones I Página 69
El insertor << cout << ...;
Inserta textos en la pantalla de modo texto
Representación textual de los datos
A partir de la posición del cursor
Line wrap (continúa en la siguiente línea si no cabe)
Se pueden encadenar:
cout << ... << ... << ...;
Recuerda: las instrucciones terminan en ;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 70
endl ¡Punto decimal, NO coma!
Fundamentos de la programación: Tipos e instrucciones I Página 71
El programa principal
La función main(): donde comienza la ejecución...
#include <iostream>
using namespace std;
Fundamentos de la programación: Tipos e instrucciones I Página 72
El programa principal
La función main():
Fundamentos de la programación: Tipos e instrucciones I Página 73
Documentando el código...
Comentarios (se ignoran):
#include <iostream>
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl;
...
Hasta el final de la línea: // Comentario de una línea
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 74
La infraestructura
Código para reutilizar:
#include <iostream> Una directiva: empieza por #
using namespace std;
int main() // main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl;
return 0;
}
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 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; ¿cuál queremos?
#include <iostream>
using namespace std; Es una instrucción: termina en ;
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 76
Compilación y enlace
A menudo en un paso
Código objeto de
Enlazador
la biblioteca iostream
Hola Mundo!
Luis Hernández Yáñez
Cargador hola.exe
(ejecutable)
Fundamentos de la programación: Tipos e instrucciones I Página 77
Elementos del programa
Biblioteca
{
Bloque de código
Número
} Cuerpo de la función
Las instrucciones terminan en ;
Fundamentos de la programación: Tipos e instrucciones I Página 78
int main()
{ ¿Cuál se lee mejor?
cout << "Hola Mundo!" << endl;
Luis Hernández Yáñez
return 0;
}
Fundamentos de la programación: Tipos e instrucciones I Página 79
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 80
int main()
{
return 0;
}
Fundamentos de la programación: Tipos e instrucciones I Página 81
... recitado en la consola
Mostrar los textos con cout <<:
#include <iostream>
using namespace std;
int main()
{
cout << "En un lugar de la Mancha," << endl;
cout << "de cuyo nombre no quiero acordarme," << endl;
cout << "no ha mucho tiempo que vivía un hidalgo de los de
lanza en astillero, ..." << endl;
Luis Hernández Yáñez
return 0;
}
Fundamentos de la programación: Tipos e instrucciones I Página 82
return 0; ↲
}↲
Fundamentos de la programación: Tipos e instrucciones I Página 83
Introducción del código del programa
No hay que partir una cadena literal entre dos líneas:
cout << "no ha mucho tiempo que vivía un hidalgo de ↲
los de lanza en astillero, ..." << endl; ↲
Fundamentos de la programación: Tipos e instrucciones I Página 84
Mantenimiento y reusabilidad
Usa espacio en blanco para separar los elementos:
cout << "En un lugar de la Mancha," << endl;
mejor que
cout<<"En un lugar de la Mancha,"<<endl;
}
¡El estilo importa!
Fundamentos de la programación: Tipos e instrucciones I Página 85
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 86
Operadores aritméticos
+ Suma
‐ Resta
* Multiplicación
/ División
Operadores binarios
operando_izquierdo operador operando_derecho
Operación Resultado
3 + 4 7
2.56 ‐ 3 ‐0.44
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 87
Números literales (concretos)
Enteros: sin parte decimal
Signo negativo (opcional) + secuencia de dígitos
3 143 ‐12 67321 ‐1234
Fundamentos de la programación: Tipos e instrucciones I Página 88
cálculos.cpp
Ejemplo
#include <iostream>
using namespace std;
int main()
Un texto Un número
{
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
Luis Hernández Yáñez
return 0;
}
Fundamentos de la programación: Tipos e instrucciones I Página 89
División entera
Luis Hernández Yáñez
División real
Fundamentos de la programación: Tipos e instrucciones I Página 90
División Resultado
500 / 3 166
500.0 / 3 166.667
500 / 3.0 166.667
500.0 / 3.0 166.667
Fundamentos de la programación: Tipos e instrucciones I Página 91
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 92
Fundamentos de la programación: Tipos e instrucciones I Página 93
Declaración de variables tipo nombre;
int cantidad;
Memoria
double precio; cantidad ?
Se reserva espacio suficiente precio ?
...
LAS VARIABLES NO SE INICIALIZAN
No se deben usar hasta que se les haya dado algún valor
Fundamentos de la programación: Tipos e instrucciones I Página 94
#include <iostream> cantidad ?
using namespace std;
precio ?
int main()
total ?
{
int cantidad; ...
double precio, total;
Fundamentos de la programación: Tipos e instrucciones I Página 95
Capacidad de las variables
int
‐2.147.483.648 ... 2.147.483.647
‐2147483648 .. 2147483647
double
2,23 x 10‐308 ... 1,79 x 10+308 y sus negativos
Problemas de precisión
Fundamentos de la programación: Tipos e instrucciones I Página 96
Fundamentos de la programación: Tipos e instrucciones I Página 97
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I Página 98
Expresiones
Secuencias de operandos y operadores
operando operador operando operador operando ...
total = cantidad * precio * 1.18;
Expresión
A igual prioridad se evalúan de izquierda a derecha
Fundamentos de la programación: Tipos e instrucciones I Página 99
Precedencia de los operadores
cantidad1 = 10;
cantidad2 = 2;
precio = 40.0;
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
Luis Hernández Yáñez
variables.cpp
int main()
{
int cantidad;
double precio, total;
cantidad = 12;
precio = 39.95;
total = cantidad * precio;
cout << cantidad << " x " << precio << " = "
<< total << endl;
Luis Hernández Yáñez
return 0;
}
#include <iostream> cantidad ?
using namespace std;
precio ?
int main()
{
total ?
int cantidad;
double precio, total;
...
Luis Hernández Yáñez
#include <iostream> cantidad 12
using namespace std;
precio ?
int main()
{
total ?
int cantidad;
double precio, total;
cantidad = 12; ...
Luis Hernández Yáñez
#include <iostream> cantidad 12
using namespace std;
precio 39.95
int main()
{
total ?
int cantidad;
double precio, total;
cantidad = 12; ...
precio = 39.95;
Luis Hernández Yáñez
#include <iostream> cantidad 12
using namespace std;
precio 39.95
int main()
{
total 479.4
int cantidad;
double precio, total;
cantidad = 12; ...
precio = 39.95;
total = cantidad * precio;
Luis Hernández Yáñez
#include <iostream> cantidad 12
using namespace std;
precio 39.95
int main()
{
total 479.4
int cantidad;
double precio, total;
cantidad = 12; ...
precio = 39.95;
total = cantidad * precio;
cout << cantidad << " x " << precio << " = "
<< total << endl;
Luis Hernández Yáñez
int main()
{
int cantidad;
double precio, total;
cantidad = 12;
precio = 39.95;
total = cantidad * precio;
cout << cantidad << " x " << precio << " = "
<< total << endl;
Luis Hernández Yáñez
return 0;
}
cin >> cantidad;
Memoria
cin >> cantidad; cantidad 12
?
...
12
1 2 ↲ _
Luis Hernández Yáñez
12 para cantidad
No se puede leer un real
0 para precio y Error
12 para cantidad
.5 0,5 para precio
Lo demás queda pendiente
¡¡¡Lectura correcta!!!
Luis Hernández Yáñez
resultado = numerador / denominador
4. Mostrar el resultado
1. Leer numerador
2. Leer denominador
4. Mostrar resultado
cin >> numerador;
2. Leer denominador
cin >> denominador;
3. Calcular división en resultado
resultado = numerador / denominador;
Luis Hernández Yáñez
4. Mostrar resultado
cout << resultado;
#include <iostream> Numerador: _129
using namespace std; _
Denominador: _
2
_
Resultado: _
64.5
64.5
int main() _
{
Declaraciones double numerador, denominador, resultado;
cout << "Numerador: ";
cin >> numerador;
Entrada
cout << "Denominador: ";
cin >> denominador;
Procesamiento resultado = numerador / denominador;
Luis Hernández Yáñez
Refinamiento
Operaciones (acciones)
cout << ... cin >> ...
area = base * altura / 2
Luis Hernández Yáñez
#include <iostream>
using namespace std;
int main()
{
Declaraciones
1. Mostrar en la pantalla el texto que pida la base del triángulo
return 0;
}
El programa: implementación
#include <iostream>
using namespace std; ¿triβngulo?
int main()
{
double base, altura, area; // Declaraciones
cout << "Introduzca la base del triángulo: "; // 1
cin >> base; // 2
cout << "Introduzca la altura del triángulo: "; // 3
cin >> altura; // 4
area = base * altura / 2; // 5
cout << "El área de un triángulo de base " << base // 6
<< " y altura " << altura << " es: " << area << endl;
Luis Hernández Yáñez
return 0;
} Recuerda: las instrucciones terminan en ;
Literales
Constantes
Con nombre
Datos
Pi = 3.141592653589
Variables
Luis Hernández Yáñez
base, altura, area Identificadores
Sintaxis:
a..z, A..Z, _
0..9, a..z, A..Z, _
typename union unsigned using virtual void
volatile while
balance interesAnual
_base_imponible años
EDAD12 salario_1_mes
cálculoNómina
__edad
valor%100 AlgunValor
100caracteres valor?
Luis Hernández Yáñez
_12_meses
____valor
Fundamentos de la programación: Tipos e instrucciones I Página 132
Luis Hernández Yáñez
int
Números enteros (sin decimales)
float
1363, ‐12, 49
Números reales 12.45, ‐3.1932, 1.16E+02
double
Números reales (mayores intervalo y precisión)
char
Caracteres 'a' , '{', '\t'
bool
Valores lógicos (verdadero/falso) true, false
string
Cadenas de caracteres (biblioteca string) "Hola Mundo!"
Luis Hernández Yáñez
void
Nada, ausencia de tipo, ausencia de dato (funciones)
ISO‐8859‐1
Luis Hernández Yáñez
Valores lógicos
Sólo dos valores posibles:
— Verdadero (true)
— Falso (false)
Literales:
true false
Cadenas de caracteres
"Hola" "Introduce el numerador: " "X142FG5TX?%A"
" "
char
Secuencias de caracteres
Programas con variables de tipo string:
#include <string>
using namespace std;
#include <iostream>
#include <string>
using namespace std; // Un solo using... para ambas bibliotecas
int main()
{
int entero = 3; // Podemos asignar (inicializar) al declarar
double real = 2.153;
char caracter = 'a';
bool cierto = true;
string cadena = "Hola";
cout << "Entero: " << entero << endl;
cout << "Real: " << real << endl;
cout << "Carácter: " << caracter << endl;
cout << "Booleano: " << cierto << endl;
Luis Hernández Yáñez
cout << "Cadena: " << cadena << endl;
Tipo Intervalo
int ‐2147483648 .. 2147483647
unsigned int 0 .. 4294967295
short int ‐32768 .. 32768
unsigned short int 0 .. 65535
long int ‐2147483648 .. 2147483647
unsigned long int 0 .. 4294967295
+|‐ 2.23e‐308 .. 1.79e+308
Luis Hernández Yáñez
double
long double +|‐ 3.37E‐4932 .. 1.18E+4932
[modificadores] tipo lista_de_variables;
Opcional
lista_de_variables Identificador
int i, j, l; ,
short int unidades;
unsigned short int monedas;
double balance, beneficio, perdida;
short int unidades; inicio
02
03
double balance; 04
05
unidades
06
07
balance
08
09
10
11
12
13
Luis Hernández Yáñez
14
15
. . .
— Al declararla
int i = 0, j, l = 26;
Luis Hernández Yáñez
En particular, una expresión
short int unidades = 100; puede ser un literal
int i, j = 2;
i = 23 + j * 5; // i toma el valor 33
Luis Hernández Yáñez
Errores
int a, b, c;
5 = a;
// ERROR: un literal no puede recibir un valor
a + 23 = 5;
// ERROR: no puede haber una expresión a la izda.
b = "abc";
// ERROR: un entero no puede guardar una cadena
c = 23 5;
// ERROR: expresión no válida (falta operador)
Luis Hernández Yáñez
Memoria Memoria
01 01
i i
02
03
04
? 23 + 2 * 5
02
03
04
33
05 05
j j
2 2
06 06
07 07
08 08
09 09
10 10
. . . . . .
Luis Hernández Yáñez
a 3.45 a 3.45
b 127.5 aux = a; b 127.5
aux ? aux 3.45
a 127.5
a = b; b 127.5
aux 3.45
a 127.5
Luis Hernández Yáñez
b = aux; b 3.45
aux 3.45
— Operadores aritméticos
— Asignación (=)
Operadores binarios
— Operando izquierdo operador operando derecho
Operandos: literales, constantes, variables o expresiones
Luis Hernández Yáñez
2 + 3 a * RATIO ‐a + b
(a % b) * (c / d)
División entera:
No se obtienen decimales Queda un resto
123 5
3 24
Luis Hernández Yáñez
123 % 5
#include <iostream> operadores.cpp
using namespace std;
int main() {
int entero1 = 15, entero2 = 4;
double real1 = 15.0, real2 = 4.0;
cout << "Operaciones entre los números 15 y 4:" << endl;
cout << "División entera (/): " << entero1 / entero2 << endl;
cout << "Resto de la división (%): " << entero1 % entero2 << endl;
cout << "División real (/): " << real1 / real2 << endl;
cout << "Num = " << real1 << endl;
real1 = ‐real1;
cout << "Cambia de signo (‐): " << real1 << endl;
real1 = ‐real1;
cout << "Vuelve a cambiar (‐): " << real1 << endl;
cout << "Se incrementa antes (++ prefijo): " << ++real1 << endl;
cout << "Se muestra antes de incrementar (posfijo ++): "
Luis Hernández Yáñez
<< real1++ << endl;
cout << "Ya incrementado: " << real1 << endl;
return 0;
}
44 / 4 ‐ 5
/ antes que ‐
11 ‐ 5 Pon espacio antes y después
de cada operador binario
Luis Hernández Yáñez
#include <iostream>
using namespace std;
int main()
{
double x, f;
cout << "Introduce el valor de X: ";
cin >> x;
f = 3 * x * x / 5 + 6 * x / 7 ‐ 3;
cout << "f(x) = " << f << endl;
return 0;
}
Luis Hernández Yáñez
Asignación Abreviatura
a = a + 12; a += 12;
Igual precedencia
a = a * 3; a *= 3; que la asignación
a = a ‐ 5; a ‐= 5;
a = a / 37; a /= 37; De momento,
mejor evitarlas
Luis Hernández Yáñez
a = a % b; a %= b;
const Declaración de variable con inicializador
const short int Meses = 12;
La constante no podrá volver a
const double Pi = 3.141592,
aparecer a la izquierda de un =
RATIO = 2.179 * Pi;
double total = compra1 + compra2;
cout << total << " (IVA: " << IVA << "%)" << endl;
#include <iostream>
using namespace std;
int main() {
const double Pi = 3.141592;
double radio = 12.2, circunferencia;
circunferencia = 2 * Pi * radio;
cout << "Circunferencia de un círculo de radio "
<< radio << ": " << circunferencia << endl;
const double Euler = 2.718281828459; // Número e
cout << "Número e al cuadrado: " << Euler * Euler << endl;
const int IVA = 21;
int cantidad = 12;
double precio = 39.95, neto, porIVA, total;
neto = cantidad * precio;
porIVA = neto * IVA / 100;
Luis Hernández Yáñez
total = neto + porIVA;
cout << "Total compra: " << total << endl;
return 0;
}
tan(x)
round(x) Redondeo al entero más próximo
trunc(x) Pérdida de la parte decimal (entero)
mates.cpp
#include <iostream>
using namespace std;
#include <cmath>
int main() {
double x, y, f; pow() con argumento entero:
cout << "Valor de X: "; Usa el molde double():
cin >> x; pow(double(i), 5)
cout << "Valor de Y: ";
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;
Luis Hernández Yáñez
}
Pon un espacio detrás de cada coma en las listas de argumentos
char
Asignación, ++/‐‐ y operadores relacionales
...
#include <cctype>
int main() {
char caracter1 = 'A', caracter2 = '1', caracter3 = '&';
cout << "Carácter 1 (" << caracter1 << ").‐" << endl;
cout << "Alfanumérico? " << isalnum(caracter1) << endl;
cout << "Alfabético? " << isalpha(caracter1) << endl;
cout << "Dígito? " << isdigit(caracter1) << endl;
cout << "Mayúscula? " << isupper(caracter1) << endl;
caracter1 = tolower(caracter1);
cout << "En minúscula: " << caracter1 << endl;
cout << "Carácter 2 (" << caracter2 << ").‐" << endl;
cout << "Alfabético? " << isalpha(caracter2) << endl;
cout << "Dígito? " << isdigit(caracter2) << endl;
cout << "Carácter 3 (" << caracter3 << ").‐" << endl;
cout << "Alfanumérico? " << isalnum(caracter3) << endl;
Luis Hernández Yáñez
cout << "Alfabético? " << isalpha(caracter3) << endl;
cout << "Dígito? " << isdigit(caracter3) << endl;
return 0;
} 1 true / 0 false
Fundamentos de la programación: Tipos e instrucciones I Página 176
Luis Hernández Yáñez
Operadores (prioridad)
< menor que
...
<= menor o igual que
* / %
> mayor que
+ ‐
>= mayor o igual que
Luis Hernández Yáñez
< <= > >=
== igual que
== !=
!= distinto de
= += ‐= *= /= %=
}
else {
cout << num << " es impar";
}
Fundamentos de la programación: Tipos e instrucciones I Página 181
selección.cpp
#include <iostream>
using namespace std;
int main() {
int op1 = 13, op2 = 4;
int opcion;
cout << "1 ‐ Sumar" << endl;
cout << "2 ‐ Restar" << endl;
cout << "Opción: ";
cin >> opcion;
if (opcion == 1) {
cout << op1 + op2 << endl;
}
else {
cout << op1 ‐ op2 << endl;
Luis Hernández Yáñez
}
return 0;
}
{ instrucción } {
intrucción1
Tab ó intrucción2
3 esp. ...
int num, total = 0; intrucciónN
cin >> num; }
if (num > 0)
{
cout << "Positivo"; Ámbito local
total = total + num; (declaraciones locales)
Luis Hernández Yáñez
}
cout << endl;
true false
Condición
while (condición) {
Cuerpo cuerpo
}
Luis Hernández Yáñez
#include <iostream>
using namespace std;
int main() {
int i = 1, n = 0, suma = 0;
while (n <= 0) { // Sólo n positivo
cout << "¿Cuántos números quieres sumar? ";
cin >> n;
}
while (i <= n) {
suma = suma + i;
i++;
}
cout << "Sumatorio de i (1 a " << n << ") = "
Luis Hernández Yáñez
<< suma << endl;
return 0;
}
Iteración condicional
while (i <= n) {
suma = suma + i;
i++;
}
n 5
i 6
2
3
4
5
1
true false suma 15
10
1
3
60
i <= n
suma += i;
i++;
Luis Hernández Yáñez
#include <iostream>
Flujos de texto (streams) using namespace std;
Conectan la ejecución del programa con los dispositivos de E/S
Son secuencias de caracteres
Entrada por teclado: flujo de entrada cin (tipo istream)
Salida por pantalla: flujo de salida cout (tipo ostream)
cin cout
7 3 5 . 3 5 1 Programa 1 6 = l a t o T
cout << "Introduce tu edad: ";
cin >> edad;
#include <string>
using namespace std;
Recuerda:
Espacios en blanco son espacios, tabuladores, saltos de línea, ...
cout << d;
5 4 . 3 2 1
La biblioteca iostream
Luis Hernández Yáñez
T o t a l : 1 2 3 . 4 5 M e s e s : 7 Programa
cout
int meses = 7;
cout << "Total: " << 123.45 << endl << " Meses: " << meses;
cout << 123.45 << endl << " Meses: " << meses;
cout << endl << " Meses: " << meses;
cout << " Meses: " << meses;
Total: 123.45
Luis Hernández Yáñez
Meses: 7 cout << meses;
#include <iomanip>
cout << scientific << d << endl; 1.234500e+002
cout << fixed << setprecision(8) << d << endl; 123.45000000
// Instrucciones:
resultado = 2 * pow(x, 5) + sqrt(pow(x, 3)
/ pow(y, 2)) / abs(x * y) ‐ cos(y);
Luis Hernández Yáñez
return resultado; // Devolución del resultado
}
int valor = f(2, 3);
return 0; // main() devuelve 0 al S.O.
}
Los argumentos no se modifican
} return 0; 256
Esta instrucción }
no se ejecutará nunca
// Prototipos de las funciones (excepto main())
bool par(int num);
bool letra(char car);
int suma(int num);
double formula(int x, int y);
int main() {
int numero, sum, x, y;
char caracter;
double f;
cout << "Entero: ";
cin >> numero;
Luis Hernández Yáñez
if (par(numero)) {
cout << "Par";
}
...
else {
cout << "Impar";
}
cout << endl;
if (numero > 1) {
cout << "Sumatorio de 1 a " << numero << ": "
<< suma(numero) << endl;
}
cout << "Carácter: ";
cin >> caracter;
if (!letra(caracter)) {
cout << "no ";
}
cout << "es una letra" << endl;
cout << "f(x, y) = " << formula(x, y) << endl;
// Los argumentos pueden llamarse igual o no que los parámetros
Luis Hernández Yáñez
return 0;
}
...
bool par(int num) {
bool esPar;
if (num % 2 == 0) {
esPar = true;
}
else {
esPar = false;
}
return esPar;
}
Luis Hernández Yáñez
...
}
return sum;
}
...
f = 2 * pow(x, 5) + sqrt(pow(x, 3) / pow(y, 2))
/ abs(x * y) ‐ cos(y);
return f;
}
Luis Hernández Yáñez
Reconocimiento (Attribution):
En cualquier explotación de la obra autorizada por la licencia
hará falta reconocer la autoría.
No comercial (Non commercial):
La explotación de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):
La explotación autorizada incluye la creación de obras derivadas
siempre que mantengan la misma licencia al ser divulgadas.
Luis Hernández Yáñez
2A
Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
int 214
float 216
Notación científica 217
double 218
char 220
bool 221
string 222
Literales con especificación de tipo 223
Luis Hernández Yáñez
Fundamentos de la programación: Tipos e instrucciones I (Anexo)
Números enteros
Intervalo de valores:
‐2147483648 .. 2147483647
Bytes de memoria: 4* (*) Depende de la máquina 01
4 bytes es lo más habitual 02
Literales: Se puede saber cuántos 03
Números enteros
Intervalo de valores:
+/‐ 1.18e‐38 .. 3.40e+38
Bytes de memoria: 4* (*) sizeof(float) 01
+ +
0..9 . 0..9 e,E 0..9
‐ ‐
Intervalo de valores:
+/‐ 2.23e‐308 .. 1.79e+308
Bytes de memoria: 8* (*) sizeof(double) 01
+ +
0..9 . 0..9 e,E 0..9
‐ ‐
Caracteres
Intervalo de valores:
Juego de caracteres (ASCII)
Bytes de memoria: 1 (FC) 01
Literales: 02
03
'a', '%', '\t' 04
Constantes de barra invertida: 05
(O secuencias de escape) 06
Carácter
Valores lógicos
— Falso (false) 01
02
Bytes de memoria: 1 (FC) 03
Literales: 04
05
true, false 06
Secuencias de caracteres
Se asigna la memoria que se necesita para la secuencia concreta
Requieren la biblioteca string con el espacio de nombres std:
#include <string>
using namespace std;
¡Ojo!
Luis Hernández Yáñez
Reconocimiento (Attribution):
En cualquier explotación de la obra autorizada por la licencia
hará falta reconocer la autoría.
No comercial (Non commercial):
La explotación de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):
La explotación autorizada incluye la creación de obras derivadas
siempre que mantengan la misma licencia al ser divulgadas.
Luis Hernández Yáñez
1. Escribe un programa en C++ que nos diga cuál es el volumen de un cono con un
radio de la base de 14,5 y una altura de 26,79. La fórmula que debes usar es:
radio 2 altura
3
Recuerda que el valor (aproximado) de ԉ es 3,141592.
2. Modifica el programa anterior para que use tres variables, todas de tipo double:
radio, altura y volumen. Las dos primeras se inicializarán a 14,5 y 26,79
respectivamente. La tercera obtendrá el resultado de la fórmula.
3. Escribe un programa en C++ que lea del teclado un número (real) de grados
Fahrenheit y lo convierta a Celsius mostrando el resultado en la pantalla.
ºC = 5 / 9 x (ºF ‐ 32)
5. Escribe un programa que calcule la nota final de esta asignatura, a partir de las
calificaciones obtenidas en cada examen (convocatoria de junio), cada práctica y
la actividad adicional. Pedirá al usuario cada calificación y mostrará la nota final
obtenida. No tendrá en cuenta los requisitos de mínimos de algunas calificaciones
(ni que las prácticas estén aprobadas ni que al menos se haya tenido un 4 en el
examen final ni los porcentajes de cada práctica).
6. Escribe la siguiente expresión en C++ (usa los paréntesis que sean estrictamente
necesarios):
4 3 d (2 a)
9(a bc)
3(r 34) a bd
Fundamentos de la programación Ejercicios del Tema 2 (1ª parte) — Pág. 1
7. Escribe un programa en C++ que comience declarando las siguientes variables
(valores iniciales entre paréntesis):
Variable entera llamada x (12).
Variable real llamada sigma (2,1836).
Variable entera llamada y (3).
Variable real llamada lambda (1,11695).
Variable real llamada alfa (328,67).
Variable real llamada f.
El programa calculará en f el valor resultante de la siguiente fórmula:
x sigma y
f 3 lambda alfa 13.7
x 2
y 2
Y terminará mostrando los valores de las distintas variables (una en cada línea) y
el valor de la f resultante.
8. Escribe un programa en C++ que calcule el total que hay que ingresar a un
empleado en su nómina del mes actual, a partir de los siguientes datos: sueldo
base, complemento de destino, complemento de cargo académico, horas extra
realizadas, número de hijos y número de mayores dependientes.
El total a ingresar es igual al sueldo bruto del empleado menos los impuestos.
El sueldo bruto es igual al sueldo base más los complementos más lo
correspondiente a las horas extra (a 23 € por hora extra). Los impuestos (IRPF)
son un porcentaje del sueldo bruto: sin hijos y sin mayores dependientes se aplica
el 24%. A ese porcentaje se le restan 2 puntos por cada hijo y 1 punto por cada
mayor dependiente.
El programa pedirá al usuario los distintos datos y mostrará los resultados con un
formato lo más parecido al siguiente:
Sueldo base: 1237.56 €
Complemento de destino: 146.95 €
Complemento de cargo académico: 97 €
Horas extra realizadas: 7
Hijos: 2
Mayores: 1
Cálculo de la nómina.‐
Sueldo bruto: 1642.51 €
Porcentaje de IRPF: 19%
Retención por IRPF: 312,08 €
Sueldo neto: 1330,43 €
Usa identificadores descriptivos para las variables e incluye comentarios que
describan las operaciones que se realizan.
Fundamentos de la programación Ejercicios del Tema 2 (1ª parte) — Pág. 2
9. Dadas las declaraciones:
int a = 1;
double d = 1.0;
y suponiendo que cada instrucción es independiente, ¿cuál es el resultado de cada
una de estas expresiones (el valor que se asigna)?
a = 46 % 9 + 4 * 4 ‐ 2;
a = 45 + 43 % 5 * (23 * 3 % 2);
a = 45 + 45 * 50 % a‐‐;
d = 1.5 * 3 + (++d);
d = 1.5 * 3 + d++;
a %= 3 / a + 3;
10. El área de un triángulo se puede calcular mediante la ley del seno: si se conocen
dos lados del triángulo, lado1 y lado2, y el ángulo existente entre ellos. Dicha
ley establece que
Área = ½ x lado1 x lado2 x sen
Implementa un programa que calcule el área de un triángulo de esta manera. El
programa deberá solicitar al usuario los dos lados y el ángulo que éstos forman
(en grados). Ten en cuenta que la función sin() espera que el ángulo se
proporcione en radianes. Ángulo en radianes = Ángulo en grados x / 180.
11. Escribe un programa en C++ que pida al usuario el valor de dos variables reales x
e y, y a continuación muestre el resultado de aplicarles la siguiente fórmula:
e x e y (sin( x) tan( y ))
f ( x, y ) 1,531( x y )
log10 ( y ) 3,141592 x
Declara constantes para los valores fijos.
12. Escribe un programa en C++ que pida al usuario los datos de un préstamo
hipotecario (capital prestado, interés anual y años que dura el préstamo) y le
muestre la cuota mensual que habrá de pagar y el total de lo pagado una vez
terminado el plazo, distinguiendo la cantidad de amortización y la de intereses.
La fórmula que nos da la cuota mensual es:
capital ratio
cuota
ratio plazo
100 (1 (1 ) )
100
Donde el ratio es el interés mensual y el plazo está indicado en meses. La cantidad
de amortización es el capital prestado; el resto son intereses.
Fundamentos de la programación Ejercicios del Tema 2 (1ª parte) — Pág. 3
Facultad de Informática – Universidad Complutense
Fundamentos de la programación
Curso 2013–2014
13. Escribe un programa en C++ que pida al usuario tres valores enteros y los muestre
de menor a mayor separados por comas. Por ejemplo, si el usuario introduce 10,
4 y 6, el resultado será: 4,6,10.
14. Repite el ejercicio anterior pero con tres cadenas (string) en lugar de enteros.
15. A partir del programa del ejercicio 5, crea otro programa que calcule la
calificación de esta asignatura, pero teniendo ahora en cuenta las restricciones
(que las prácticas estén todas aprobadas y que al menos se haya tenido un 4 en el
examen final, así como el porcentaje de cada práctica).
16. Escribe un programa en C++ que pida números al usuario, hasta que éste
introduzca un 0, y que para cada uno, si es positivo, diga si es par o impar (si es
negativo, simplemente lo ignorará).
Fundamentos de la programación Ejercicios del Tema 2 (2ª parte) — Pág. 1
18. Escribe un programa en C++ que muestre en la pantalla la tabla de multiplicación
(de 1 a 10) del número que introduzca el usuario (entre 1 y 100; si no está en ese
intervalo volverá a pedir el número). La salida debe estar bien formateada, como
en este ejemplo:
19. Escribe un programa en C++ que lea un operando (real), un operador (carácter) y
otro operando (real), todo en una misma línea, y muestre el resultado de la
operación correspondiente (operadores contemplados: +, ‐, * y /). El programa
seguirá pidiendo operaciones hasta que el primer operando sea 0.
20. Muestra el resultado exacto que genera en la pantalla el siguiente fragmento de
código (sin ejecutarlo):
...
int a = 10;
char b = 'x';
double c = 3.33333;
cout << a << c << b << endl;
cout << setw(5) << a << setw(10) << setprecision(2)
<< c << b << endl;
cout << setw(5) << setprecision(2) << c << setw(10)
<< b << setw(10) << a <<endl;
Fundamentos de la programación Ejercicios del Tema 2 (2ª parte) — Pág. 2
21. Escribe un programa en C++ que empiece solicitando dos números, uno que
represente el precio de un producto y otro que represente las unidades del
producto que se adquieren, un carácter que indique si se tiene derecho a
descuento del 15% antes del I.V.A. (S/N), una cadena que será el nombre completo
(varias palabras) del cliente, otra cadena con el NIF del cliente, otra más con la
dirección postal (varias palabras) y una última con el nombre del producto.
A continuación, el programa generará en la pantalla una factura de la compra
realizada: nombre del cliente, dirección y NIF, nombre del producto, unidades
adquiridas, precio unitario, total (unidades por precio), descuento aplicado, total
tras descuento, tanto por ciento de I.V.A. aplicado (21% actualmente), cantidad
de I.V.A. y precio final (añadiendo el I.V.A. al total). Cada dato irá en una línea,
precedido de su nombre, y ocupará exactamente 10 espacios, estará ajustado a la
derecha y mostrará 2 decimales.
Ejemplo de ejecución del programa:
Fundamentos de la programación Ejercicios del Tema 2 (2ª parte) — Pág. 3