Actualizado el 15 de Junio del 2021 (Publicado el 6 de Diciembre del 2018)
1.140 visualizaciones desde el 6 de Diciembre del 2018
5,4 MB
87 paginas
Creado hace 11a (02/09/2013)
Fundamentos de la programación
3
Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Facultad de Informática
Luis Hernández Yáñez
Universidad Complutense
Tipos, valores y variables
Conversión de tipos
Tipos declarados por el usuario
Tipos enumerados
Entrada/Salida
con archivos de texto
Lectura de archivos de texto
Escritura en archivos de texto
Flujo de ejecución
Selección simple
Operadores lógicos
Anidamiento de if
Condiciones
Selección múltiple
La escala if‐else‐if
La instrucción switch
Repetición
El bucle while
El bucle for
Bucles anidados
Ámbito y visibilidad
Secuencias
Recorrido de secuencias
Secuencias calculadas
Búsqueda en secuencias
Arrays de datos simples
Uso de variables arrays
Recorrido de arrays
Búsqueda en arrays
Arrays no completos
321
331
339
349
355
363
370
374
379
382
387
393
227
232
236
238
248
253
266
272
276
282
286
290
293
295
302
313
316
Fundamentos de la programación: Tipos e instrucciones II
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Fundamentos de la programación: Tipos e instrucciones II
Página 227
Valor
TipoConjunto de valores con sus posibles operaciones
Conjunto de bits interpretados como de un tipo concreto
Cierta memoria con nombre para valores de un tipo
Instrucción que identifica un nombre
Declaración que asigna memoria a una variable o constante
Variable (o constante)
Declaración
Definición
Fundamentos de la programación: Tipos e instrucciones II
Página 228
Memoria suficiente para su tipo de valores
ii
jj
3
9
cc a
xx
short int i = 3;
int j = 9;
char c = 'a';
double x = 1.5;
El significado de los bits depende del tipo de la variable:
Interpretado como intes el entero 120
Interpretado como char(sólo 01111000) es el carácter 'x'
00000000 00000000 00000000 01111000
1.5
Fundamentos de la programación: Tipos e instrucciones II
Página 229
Simples
Estándar: int, float, double, char, bool
Conjunto de valores predeterminado
Definidos por el usuario: enumerados
Conjunto de valores definido por el programador
Estructurados (Tema 5)
Colecciones homogéneas: arrays
Todos los elementos de la colección de un mismo tipo
Colecciones heterogéneas: estructuras
Elementos de la colección de tipos distintos
Fundamentos de programación: Tipos e instrucciones II
Página 230
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Con sus posibles modificadores:
[unsigned] [short] int
long long int
float
[long] double
char
bool
long int int
Definición de variables:
Definición de constantes con nombre:
tipo nombre [ = expresión] [, ...];
const tipo nombre = expresión;
Fundamentos de la programación: Tipos e instrucciones II
Página 231
Fundamentos de la programación: Tipos e instrucciones II
Página 232
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Promoción de tipos
Dos operandos de tipos distintos:
El valor del tipo menorse promociona al tipo mayor
short int i = 3;
int j = 2;
double a = 1.5, b;
b = a + i * j;
b = a + 3 * 2;
b = 1.5 + 6;
long double
double
float
long int
int
short int
n
n
ó
ó
i
i
c
c
o
o
m
m
o
o
r
r
P
P
Valor 3 short int(2 bytes) int(4 bytes)
Valor 3 short int(2 bytes) int(4 bytes)
Valor 6 int(4 bytes) double(8 bytes)
Valor 6 int(4 bytes) double(8 bytes)
Fundamentos de la programación: Tipos e instrucciones II
Página 233
Conversión segura:
De un tipo menor a un tipo mayor
short int int long int ...
Conversión no segura:
De un tipo mayor a un tipo menor
Menor memoria: Pérdida de información en la conversión
int entero = 1234;
char caracter;
caracter = entero; // Conversión no segura
long double
double
float
long int
int
short int
Fundamentos de la programación: Tipos e instrucciones II
Página 234
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
tipo(expresión)
Fuerzan una conversión de tipo:
El valor resultante de la expresiónse trata como un valor del tipo
Tienen la mayor prioridad
int a = 3, b = 2;
cout << a / b; // Muestra 1 (división entera)
cout << double(a) / b; // Muestra 1.5 (división real)
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Fundamentos de la programación: Tipos e instrucciones II
Página 235
Fundamentos de la programación: Tipos e instrucciones II
Página 236
typedef descripción nombre_de_tipo;
Describimos los valores de las variables del tipo
Nombres de tipos propios:
tminúscula seguida de una o varias palabras capitalizadas
Los colorearemos en naranja, para remarcar que son tipos
Identificador válido
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
typedef descripción tMiTipo;
typedef descripción tMiTipo;
typedef descripción tMoneda;
typedef descripción tMoneda;
typedef descripción tTiposDeCalificacion;
typedef descripción tTiposDeCalificacion;
Declaración de tipo frente a definición de variable
Fundamentos de la programación: Tipos e instrucciones II
Página 237
Fundamentos de la programación: Tipos e instrucciones II
Página 238
Enumeración del conjunto de valores posibles para las variables:
enum { símbolo1, símbolo2, ..., símboloN }
enumenum
{
Identificador
}
,
enum { centimo, dos_centimos, cinco_centimos,
Valores literales que pueden tomar las variables (en amarillo)
diez_centimos, veinte_centimos,
medio_euro, euro }
Fundamentos de la programación: Tipos e instrucciones II
Página 239
Mejoran la legibilidad
Mejoran la legibilidad
typedef descripción nombre_de_tipo;
diez_centimos, veinte_centimos,
medio_euro, euro } tMoneda;
descripción
descripción
typedef enum { centimo, dos_centimos, cinco_centimos,
Elegimos un nombre para el tipo: tMoneda
En el ámbito de la declaración, se reconoce un nuevo tipo tMoneda
Cada variable de ese tipo contendrá alguno de los símbolos
(Internamente se usan enteros)
(Internamente se usan enteros)
moneda1 = dos_centimos;
moneda2 = euro;
tMoneda moneda1, moneda2;
moneda1
moneda1
dos_centimos
moneda2
moneda2
euro
Fundamentos de la programación: Tipos e instrucciones II
Página 240
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
typedef enum { enero, febrero, marzo, abril, mayo,
tMes mes;
cin >> mes;
junio, julio, agosto, septiembre, octubre,
noviembre, diciembre } tMes;
Lectura de la variable mes:
Se espera un valor entero
No se puede escribir directamente eneroo junio
Y si se escribe la variable en la pantalla:
Se verá un número entero
Código de entrada/salida específico
cout << mes;
Fundamentos de la programación: Tipos e instrucciones II
Página 241
typedef enum { enero, febrero, marzo, abril, mayo, junio, julio,
agosto, septiembre, octubre, noviembre, diciembre } tMes;
int op;
int op;
<< endl;
<< endl;
cout << " 1 ‐ Enero"
cout << " 1 ‐ Enero"
<< endl;
<< endl;
cout << " 2 ‐ Febrero"
cout << " 2 ‐ Febrero"
<< endl;
cout << " 3 ‐ Marzo"
<< endl;
cout << " 3 ‐ Marzo"
<< endl;
cout << " 4 ‐ Abril"
<< endl;
cout << " 4 ‐ Abril"
<< endl;
<< endl;
cout << " 5 ‐ Mayo"
cout << " 5 ‐ Mayo"
<< endl;
cout << " 6 ‐ Junio"
<< endl;
cout << " 6 ‐ Junio"
<< endl;
cout << " 7 ‐ Julio"
<< endl;
cout << " 7 ‐ Julio"
<< endl;
<< endl;
cout << " 8 ‐ Agosto"
cout << " 8 ‐ Agosto"
cout << " 9 ‐ Septiembre" << endl;
cout << " 9 ‐ Septiembre" << endl;
cout << "10 ‐ Octubre"
cout << "10 ‐ Octubre"
<< endl;
<< endl;
cout << "11 ‐ Noviembre" << endl;
cout << "11 ‐ Noviembre" << endl;
cout << "12 ‐ Diciembre" << endl;
cout << "12 ‐ Diciembre" << endl;
cout << "Numero de mes: ";
cout << "Numero de mes: ";
cin >> op;
cin >> op;
tMes mes = tMes(op ‐ 1);
tMes mes = tMes(op ‐ 1);
Fundamentos de la programación: Tipos e instrucciones II
Página 242
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
typedef enum { enero, febrero, marzo, abril, mayo, junio, julio,
agosto, septiembre, octubre, noviembre, diciembre } tMes;
if (mes == enero) {
if (mes == enero) {
cout << "enero";
cout << "enero";
}
}
if (mes == febrero) {
if (mes == febrero) {
cout << "febrero";
cout << "febrero";
}
}
if (mes == marzo) {
if (mes == marzo) {
cout << "marzo";
cout << "marzo";
}
}
...
...
if (mes == diciembre) {
if (mes == diciembre) {
cout << "diciembre";
cout << "diciembre";
También podemos utilizar una instrucción switch
También podemos utilizar una instrucción switch
}
}
Fundamentos de la programación: Tipos e instrucciones II
Página 243
Conjunto de valores ordenado (posición en la enumeración)
typedef enum { lunes, martes, miercoles, jueves,
viernes, sabado, domingo } tDiaSemana;
lunes < martes < miercoles < jueves
< viernes < sabado < domingo
tDiaSemana dia;
...
if (dia == jueves)...
bool noLaborable = (dia >= sabado);
No admiten operadores de incremento y decremento
Emulación con moldes:
int i = int(dia); // ¡dia no ha de valer domingo!
i++;
dia = tDiaSemana(i);
Fundamentos de la programación: Tipos e instrucciones II
Página 244
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
#include <iostream>
using namespace std;
Si los tipos se usan en varias funciones,
los declaramos antes de los prototipos
typedef enum { enero, febrero, marzo, abril, mayo,
junio, julio, agosto, septiembre, octubre,
noviembre, diciembre } tMes;
typedef enum { lunes, martes, miercoles, jueves,
viernes, sabado, domingo } tDiaSemana;
string cadMes(tMes mes);
string cadDia(tDiaSemana dia);
int main() {
tDiaSemana hoy = lunes;
int dia = 21;
tMes mes = octubre;
int anio = 2013;
...
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Fundamentos de la programación: Tipos e instrucciones II
Página 245
// Mostramos la fecha
cout << "Hoy es: " << cadDia(hoy) << " " << dia
<< " de " << cadMes(mes) << " de " << anio
<< endl;
cout << "Pasada la medianoche..." << endl;
dia++;
int i = int(hoy);
i++;
hoy = tDiaSemana(i);
// Mostramos la fecha
cout << "Hoy es: " << cadDi
Comentarios de: 3. Tipos e instrucciones II (0)
No hay comentarios