Publicado el 17 de Agosto del 2019
712 visualizaciones desde el 17 de Agosto del 2019
70,0 KB
22 paginas
Creado hace 6a (26/09/2017)
Problemas de análisis
de casos
PROGRAMACION I
Grado en Matemáticas Informática
Programación I
Problemas de Análisis de casos
1
Índice
• Ruptura de control
• Sentencia if y sus variantes
• Sentencia switch
• Usos y estilo
Programación I
Problemas de Análisis de casos
2
RUPTURA DE CONTROL
• En un bloque, la ejecución es secuencial: una
orden detrás de otra según estén escritas de
arriba a abajo
• Los problemas de análisis de casos requieren
la ruptura del control secuencial
• Hay que elegir entre múltiples alternativas.
• Se ejecutará un código u otro en función de las
condiciones preestablecidas
Programación I
Problemas de Análisis de casos
3
SENTENCIA IF
Formato del if-then:
if (<<condición>>)
<<Bloque>>;
La condición es una expresión booleana
Si el bloque contiene más de una sentencia
debe encerrarse entre llaves
Programación I
Problemas de Análisis de casos
4
SENTENCIA IF
Funcionamiento del if-then:
• Si la condición se evalúa a true, se ejecuta
bloque y si no (si se evalúa a false) no se
ejecuta
Programación I
Problemas de Análisis de casos
5
SENTENCIA IF
Formato del if-then-else:
if (<<condición>>)
else
<<Bloque1>>;
<<Bloque2>>;
Programación I
Problemas de Análisis de casos
6
SENTENCIA IF
Funcionamiento del if-then-else:
• Si la condición se evalúa a true, se ejecuta
bloque1 y si no (si se evalúa a false) se
ejecuta bloque2
Programación I
Problemas de Análisis de casos
7
SENTENCIA IF
Anidamientos if-then-else:
if (<<condición1>>)
<<Bloque1>>;
else if (<<condición2>>)
<<Bloque2>>;
. . .
else
<<BloqueN>>;
Programación I
Problemas de Análisis de casos
8
SENTENCIA IF
Funcionamiento del if-then-else anidado:
• Si la condición1 se evalúa a true, se ejecuta
bloque1 y si no, si la condición2 se evalúa a
true se ejecuta bloque2 y así sucesivamente
con todas las ramas que haya. El bloqueN se
ejecutará solo si no se han satisfecho ninguna
de las condiciones precedentes
Programación I
Problemas de Análisis de casos
9
EJEMPLO DE USO
• Problema: “El mayor de tres números, todos
distintos”. Modelo Heavy
if ((x >= y) && (x >= z))
else if ((y >= x) && (y >= z))
else if ((z >= x) && (z >= y))
else // No hay nada qué hacer
return x;
return y;
return z;
return z;
Programación I
Problemas de Análisis de casos
10
EJEMPLO DE USO
• Problema: “El mayor de tres números, todos
distintos”. Modelo Hiper
if (x >= y)
if (x >= z)
return x;
else
return z;
else if (y >= z)
else
return y;
return z;
Programación I
Problemas de Análisis de casos
11
EJERCICIOS DE IF
• Ejercicio1: “El mayor de tres números, todos
distintos”. Especificación y realización
• Ejercicio2:”Valor absoluto de un número”.
Especificación y realización
Programación I
Problemas de Análisis de casos
12
EJERCICIOS DE IF
| x si (x >= y) /\ (x >= z)
POST: resultado = | y si (y >= y) /\ (y >= z)
| z si (z >= x) /\ (z >= y)
if ((x >= y) && (x >= z))
return x;
else if (y >= z)
else
return y;
return z;
Programación I
Problemas de Análisis de casos
13
EJERCICIOS DE IF
| x si x >= 0
POST: resultado = |
| -x e.o.c
if (x >= 0)
return x;
else
return -x;
Programación I
Problemas de Análisis de casos
14
SENTENCIA SWITCH
switch (<<expresión>>){
case <<valor1>> :
case <<valor2>> :
<<Bloque1>;
break;
<<Bloque2>;
break;
. . .
default
<<BloqueN>>;
}
Programación I
Problemas de Análisis de casos
15
SENTENCIA SWITCH
• La expresión puede ser int o char
• Los respectivos bloques no necesitan llaves.
• La cláusula default es opcional
• Una orden return equivale a un break.
Cuando exista la una, sobra la otra
Programación I
Problemas de Análisis de casos
16
SENTENCIA SWITCH
Funcionamiento:
Se evalúa la expresión.
Si ajusta con alguno de los valores, se ejecuta el
bloque correspondiente (explora de arriba
abajo).
Si no ajusta con ninguno, ejecuta el bloque de la
cláusula default.
Programación I
Problemas de Análisis de casos
17
EJEMPLOS DE SWITCH
• Problema: "Visualizar los nombres de los puntos
cardinales”
Se da nombre a cada punto:
final int norte = 1;
final int noreste = 2;
final int este = 3;
final int sureste = 4;
final int sur = 5;
final int suroeste = 6;
final int oeste = 7;
final int noroeste = 8;
Programación I
Problemas de Análisis de casos
18
EJEMPLOS DE switch
FUNCION verRumbo (Entero r) ---> Cadena
PRE: cierto
POST: res es la cadena de caracteres de la constante
Programación I
Problemas de Análisis de casos
19
relativa a "r"
String verRumbo (int r){
switch (r){
case 1 : return "Norte";
case 2 : return "Noreste";
case 3 : return "Este";
case 4 : return "Sureste";
case 5 : return "Sur";
case 6 : return "Suroeste";
case 7 : return "Oeste";
default : return "Noroeste";
EJERCICIOS DE Selección
Ejercicio3: “Girar un rumbo 90º”
Ejercicio4: “Girar un rumbo 45º”
Programación I
Problemas de Análisis de casos
20
EJERCICIOS DE Selección
FUNCION gira90 (Entero rumbo) Entero
PRE: cierto
POST: resultado es la constante que se corresponde con avanzar
a la derecha 90 grados desde "rumbo".
int gira90 (int rumbo)
{
if (rumbo == oeste)
return norte;
else if (rumbo == noroeste)
return noreste;
else
Programación I
return rumbo + 2;
Problemas de Análisis de casos
21
EJERCICIOS DE Selección
FUNCION gira45 (Entero rumbo) Entero
PRE: cierto
POST: resultado es la constante que se
corresponde con avanzar a la
derecha 45 grados desde "rumbo".
int gira45 (int rumbo)
{
return rumbo % 8 + 1;
}
Programación I
Problemas de Análisis de casos
22
Comentarios de: Problemas de análisis de casos - Programación I (0)
No hay comentarios