Publicado el 18 de Agosto del 2019
1.463 visualizaciones desde el 18 de Agosto del 2019
11,1 MB
92 paginas
Creado hace 6a (23/10/2017)
Fundamentos de programación
3
Tipos e instrucciones II
Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Material de la Prof.ª Mercedes Gómez Albarrán
Facultad de Informática
Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez
Universidad Complutense
Flujo de ejecución
Selección
2 caminos: Selección simple
true
Condición
false
AlternativaT
AlternativaF
Diagramas de flujo
(no confundir con diagramas sintácticos)
> 2 caminos: Selección múltiple
true
false
false
false
false
true
true
true
Página 2
Selección múltiple:
la instrucción switch
sentencia switch
switch
false
false
true
true
true
(
expresion
variable
)
{
false
case
expresion
constante
:
;
instrucción
break
;
default
:
;
instrucción
}
Página 3
Selección múltiple: la instrucción switch
Ejemplo.- Nivel de un valor
switch (num) {
case 5: cout << "Muy alto"; break;
case 4: cout << "Alto"; break;
case 3: cout << "Medio"; break;
case 2: cout << "Bajo"; break;
case 1: cout << "Muy bajo"; break;
default: cout << "Valor no válido";
}
nivel2.cpp
Si num = 5 entonces Muy alto
Si num = 4 entonces Alto
Si num = 3 entonces Medio
Si num = 2 entonces Bajo
Si num = 1 entonces Muy bajo
Página 4
Selección múltiple: la instrucción switch
La instrucción break
Interrumpe el switch, llevando la ejecución al final del mismo.
switch (num) {
case 5: cout << "Muy alto" << endl; break;
case 4: cout << "Alto" << endl; break;
case 3: cout << "Medio" << endl; break;
case 2: cout << "Bajo" << endl; break;
case 1: cout << "Muy bajo" << endl; break;
default: cout << "Valor no válido";
}
Num: 3
Medio
Num: 3
Medio
Bajo
Muy bajo
Valor no válido
switch (num) {
case 5: cout << "Muy alto" << endl;
case 4: cout << "Alto" << endl;
case 3: cout << "Medio" << endl;
case 2: cout << "Bajo" << endl;
case 1: cout << "Muy bajo" << endl;
default: cout << "Valor no válido";
}
Página 5
Selección múltiple: la instrucción switch
switch (num * otra) { // se admiten expresiones
case (5 * 1) + 0: cout << "Muy alto"; break;
// se admiten expresiones "constantes"
/* case 4 * otra: cout << "Alto"; break; */
// no se permiten expresiones que tengan variables
case 4: cout << "Alto"; break;
case 3: cout << "Medio"; break;
case 2: cout << "Bajo"; break;
case 1: cout << "Muy bajo"; break;
default: cout << "Valor no válido";
}
Página 6
Selección múltiple: la instrucción switch
Ejemplo.- Un uso común de switch: el tratamiento de menús
Algoritmo:
― Mostrar el menú
― Solicitar y leer la opción
― Si opcion = suma ...
sino si opcion = resta ...
sino ....
cout << "1 – Suma" << endl;
cout << "2 – Resta" << endl;
cout << "3 – Producto" << endl;
cout << "4 – Division" << endl;
cout << "0 – Salir" << endl;
cout << "Opcion: " << endl;
cin >> num;
switch (num) {
case 0: break;
case 1: /* instrucciones suma */ break;
case 2: /* instrucciones resta */ break;
case 3: /* instrucciones producto */ break;
case 4: /* instrucciones division */ break;
default: cout << "¡Valor no válido!";
}
Página 7
Selección múltiple: la instrucción switch
Ejemplo.- Nota simbólica equivalente a numérica
nota2.cpp
int num;
cout << "Nota: " << endl;
cin >> num;
switch (num) {
case 0:
case 1:
case 2:
case 3:
case 4: cout << "Suspenso"; break; // De 0 a 4: Suspenso
case 5:
case 6: cout << "Aprobado"; break; // 5 o 6: Aprobado
case 7:
case 8: cout << "Notable"; break; // 7 u 8: Notable
case 9:
case 10: cout << "Sobresaliente"; break; // 9 o 10: Sobresaliente
default: cout << "¡Valor no válido!";
}
Página 8
Flujo de ejecución
Repetición o iteración
Inicialización
Inicialización
Sí
¿Iterar?
No
Cuerpo iteración
Cuerpo iteración
Sí
¿Iterar?
No
Diagramas de flujo
(no confundir con diagramas sintácticos)
Página 9
Repetición
Tipos de bucles
Comprobación
pre-iteración
Recorrido fijo
Recorrido variable while
for
while
Comprobación
post-iteración
do-while
do-while
Página 10
Repetición: bucle do-while
Recorrido fijo + comprobación post-iteración
Recorrido variable + comprobación post-iteración
do
cuerpo
while
(
condición
)
;
Ejecuta el cuerpo mientras la condición sea true.
El cuerpo siempre se ejecuta al menos una vez. La condición se comprueba tras cada pasada.
El cuerpo del bucle es una instrucción (simple o compuesta –bloque –).
Página 11
Repetición: bucle do-while
Ejemplo.- Bucle do-while usado para recorrido fijo (equivalente a
for (int i = 1; i <= 100; i++) cout << i << endl; )
int i = 1;
do {
cout << i << endl;
i++;
} while (i <= 100);
do.cpp
Página 12
Repetición: bucle do-while
int i = 1;
do {
cout << i << endl;
i++;
} while (i <= 100);
Inicialización
i = 1;
Sí
Cuerpo
¿Iterar?
No
cout << i << endl;
i++;
true
i <= 100
false
Página 13
Repetición: bucle do-while
Ejemplo.- Mejorando el programa del área del triángulo mediante el uso
del bucle do-while.
Algoritmo4:
― Repetir solicitar y leer los datos (base y altura)
mientras que los datos leidos no sean válidos
― Calcular el área
― Visualizar el área
...
do {
cout << "Introduzca la base del triangulo: "; cin >> base;
cout << "Introduzca la altura del triangulo: "; cin >> altura;
} while ( altura <= 0 || base <= 0 )
area = base * altura / 2;
cout << "El area de un triangulo es: " << area << endl;
Página 14
Repetición: bucle do-while
Ejemplo.- Número de dígitos que tiene un número entero.
¿Algoritmo?
¿Programa?
Página 15
Repetición: bucle do-while
Ejemplo.- Control en menús
do {
cout << "1 – Nuevo registro" << endl;
cout << "2 – Editar registro" << endl;
cout << "3 – Eliminar registro" << endl;
cout << "4 – Ver registro" << endl;
cout << "0 – Salir" << endl;
cout << "Opción: ";
cin >> num;
} while (num < 0 || num > 4);
switch (num) {
case 0: break;
case 1: /* codigo de la opcion 1 */ break;
case 2: /* codigo de la opcion 2 */ break;
case 3: /* codigo de la opcion 3 */ break;
case 4: /* codigo de la opcion 4 */ break;
default: cout << "¡Valor no válido!";
}
Implementa una función que
haga una recogida controlada de
la opción del menú
Página 16
Ámbito y visibilidad
Cada bloque crea un nuevo ámbito dentro del ámbito en que se encuentra.
int main()
{
double d, suma = 0;
int cont = 0;
do {
cin >> d;
if (d != 0) {
suma = suma + d;
cont++;
}
} while (d != 0);
cout << "Suma = " << suma << endl;
cout << "Media = " << suma / cont << endl;
return 0;
}
3 ámbitos anidados
Página 18
Ámbito y visibilidad
Ámbito de los identificadores: Un identificador se conoce (se puede
usar) en el ámbito en el que está declarado, a partir de su instrucción de
declaración, y en los subámbitos posteriores a su declaración.
int main()
{
double d;
if (...) {
int cont = 0;
for (int i = 0; i <= 10; i++) {
...
}
}
char c;
if (...) {
double x;
...
}
return 0;
}
Página 19
Ámbito y visibilidad
Visibilidad de los identificadores: Si en un subámbito se declara un
identificador con idéntico nombre que uno ya declarado en el ámbito, el
del subámbito oculta al del ámbito (no es visible).
int main()
{
int i, x;
if (...) {
int i = 0;
for(int i = 0; i <= 10; i++) {
...
}
...
}
char c;
if (...) {
double x ;
...
}
return 0;
}
Página 20
Entrada / salida con archivos de texto
Archivos
La memoria de la computadora es volátil.
Medios (dispositivos) de almacenamiento permanente:
— Discos magnéticos fijos (internos) o portátiles (externos).
— Discos ópticos (CD, DVD, BlueRay).
— Memorias USB.
… La información se guarda en esos dispositivos en forma de archivos.
Un archivo es una secuencia de datos que constituyen la información
de un determinado documento.
Página 22
Entrada / salida con archivos de texto
Archivos de texto y binarios
T
o
:
.
A
…
t
a
l
1
2
3
4 ↵
A0 25 2F 04 D6 FF 00 27 6C CA 49 07 5F A4 …
Archivo de texto: contiene una secuencia de caracteres.
Archivo binario: contiene una secuencia de códigos binarios.
(Códigos representados en notación hexadecimal.)
Lo que signifiquen los códigos dependerá del programa
que haga uso del archivo.
Los archivos se manejan en los programas por medio de flujos.
Los archivos de texto se leen y escriben desde un programa en C++ por
medio de flujos de texto.
Página 23
Entrada / salida con archivos de texto
Flujos de texto
Los flujos de texto cin y cout que se usan para la E/S por consola
se crean automáticamente al comenzar la ejecución del programa,
asociándose a los dispositivos teclado y pantalla, respectivamente.
Los flujos de texto asociados a archivos de texto se han de crear
explícitamente durante la ejecución del programa, asociando
cada uno al archivo de texto correspondiente.
Un flujo de texto se puede utilizar para lectura o para escritura:
— Flujos de entrada (lectura): objetos de tipo ifstream.
— Flujos de salida (escritura) : objetos de tipo ofstream.
Los tipos ifstream y ofstream están declarados en la biblioteca fstream.
Página 24
Entrada con archivos de texto
Flujos de texto de entrada
ifstream
1
2
3
4
Para leer de un archivo de texto:
Se declara una variable flujo de tipo ifstream
Se asocia la variable con el archivo de texto (se abre el archivo)
flujo.open(nombre_del_archivo_con_extension);
Se realizan las lecturas por medio del operador >> (extractor)
Comentarios de: Tipos de instrucciones II - Fundamentos de programación (0)
No hay comentarios