Tema 4. Estructuras selectivas 4.1 Selección simple 4.2 Selección

Anuncio
Tema 4. Estructuras selectivas
4.1
4.2
4.3
4.4
4.5
Selección simple
Selección doble
Selección múltiple
Anidación de selecciones
Aplicaciones
Introducción
•
Algoritmos más complicados que una
secuencia simple de instrucciones
•
Posibles alternativas resultantes de evaluar
una determinada condición
•
En función del resultado se ejecuta una
opción u otra
booleana
Condición
valor
numérico
Selección
simple/doble
Selección
múltiple
1
4.1 Selección simple
ejecuta una
determinada
acción sólo
cuando se cumple
una determinada
condición.
instrucción1
instrucción2
if condición
instrucción3
instrucción4
end
instrucción5
instrucción6…
Ejemplo
function pts = precio(dist, dias)
%precio
precio de un viaje (ida y vuelta)
%
precio(dist,dias) calcula el precio del billete
%
según la distancia (2.5 pts/km) y los días
%
de estancia, con reducción del 30% si
%
la estancia supera los 7 días, y la distancia
%
los 800 km
pts = dist * 2 * 2.5;
if (dias > 7) & (dist > 800)
pts = pts * 0.7;
end
2
Otro ejemplo
function m = mayor(a, b)
%MAYOR
elige el mayor de dos números
%
MAYOR(a,b) devuelve el mayor de los
%
dos parámetros.
m = a;
if a < b
m = b;
end
4.2 Selección doble
Permite elegir
entre dos
alternativas en
función del
cumplimiento de
una determinada
condición.
instrucción1
instrucción2
if condición
instrucción3
instrucción4
else
instrucción5
instrucción6
end
instrucción7
…
3
Ejemplo
function m = mayor(a, b)
%MAYOR
Elige el mayor de dos números
%
MAYOR(a,b) devuelve el mayor de los
%
dos parámetros.
if a > b
m = a;
else
m = b;
end
Otro ejemplo
function ab = absoluto(n)
%ABSOLUTO
Valor absoluto.
%
ABSOLUTO(n) devuelve el valor
%
absoluto de n.
if n >= 0
ab = n;
else
ab = -n;
end
4
Encadenamiento de selecciones dobles
Permite elegir
entre varias
alternativas en
función del
cumplimiento de
diferentes
condiciones.
if condición1
instrucción1
elseif condición2
instrucción2
elseif condición3
instrucción3
elseif condición4
instrucción4
elseif condición5
instrucción5
end
instrucción6
…
Ejemplo
function [x1,x2,n] = eq2(a,b,c)
...
d = b^2 - 4*a*c;
if (d > 0)
...
n = 2;
elseif (d == 0)
...
n = 1;
else
n = 0;
end
5
4.3 Selección múltiple
Permite elegir
entre varias
alternativas en
función del
valor de una
determinada
expresión.
instrucción1
switch expresión
case valorA
instrucción2
instrucción3
case valorB
instrucción4
instrucción5
case valorC
instrucción6
instrucción7
case {valorD, valorE}
instrucción8
instrucción9
otherwise
instrucción10
end
instrucción11
Ejemplo
function mes = nombremes(n)
%NOMBREMES
Nombre del mes.
% NOMBREMES(n) devuelve la cadena
% de caracteres correspondiente
% al nombre del mes n (1-12).
switch
case 1
mes
case 2
mes
case 3
mes
case 4
mes
case 5
mes
n
= ’Enero';
= 'Febrero';
= 'Marzo';
= 'Abril';
= 'Mayo';
case 6
mes = 'Junio';
case 7
mes = 'Julio';
case 8
mes = 'Agosto';
case 9
mes = 'Septiembre';
case 10
mes = 'Octubre';
case 11
mes = 'Noviembre';
case 12
mes = 'Diciembre';
otherwise
mes = ‘Error';
end
6
4.4 Anidación de selecciones
Nada impide que las
intrucciones, dentro
de una selección,
sean nuevas
estructuras
selectivas, y así
sucesivamente…
instrucción1
if condición1
instrucción2
instrucción3
if condición2
instrucción4
instrucción5
else
instrucción6
end
else
instrucción7
instrucción8
end
instrucción9
instrucción10
…
Ejemplo
function m = mayor3(a, b,c)
%MAYOR3
Elige el mayor de tres números
%
MAYOR3(a,b,c) devuelve el mayor de los
%
tres parámetros.
if a > b
if a >
m =
else
m =
end
else
if b >
m =
else
m =
end
end
c
a;
c
c
b;
c;
7
Diseños alternativos
function m = mayor3(a, b, c)
%MAYOR3
Elige el mayor de tres números
%
MAYOR3(a,b,c) devuelve el mayor de los
%
tres parámetros.
d = mayor(a,b);
m = mayor(d,c);
function m = mayor3(a, b, c)
%MAYOR3
Elige el mayor de tres números
%
MAYOR3(a,b,c) devuelve el mayor de los
%
tres parámetros.
m = mayor(mayor(a,b),c);
Otro ejemplo más
function cnt = central(a, b, c)
%CENTRAL
Elige el número central.
% CENTRAL(a,b,c) devuelve el valor
% central de los tres parámetros.
if a > b
if b > c
cnt = b;
else
if a > c
cnt = c;
else
cnt = a;
end
end
else
if a > c
cnt = a;
else
if b > c
cnt = c;
else
cnt = b;
end
end
end
8
4.5 Aplicación: ecuación de segundo grado
function [x1,x2,n] = eq2(a,b,c)
%EQ2 Ecuación de segundo grado
%
[x1,x2,n] = EQ2(A,B,C) calcula las soluciones
%
reales de la ecuación de segundo grado
%
A*x^2 + B*x + C = 0. Devuelve en x1 y x2 los
%
valores, y en n el número de soluciones.
d = b^2 - 4*a*c;
if (d > 0)
x1 = (-b + sqrt(d)) / (2*a);
x2 = (-b - sqrt(d)) / (2*a);
n = 2;
elseif (d == 0)
x1 = -b / (2*a);
n = 1;
else
n = 0;
end
Aplicación: cálculo de fechas
function [ds,ms,as] = FechaSig(d,m,a)
%FECHASEG
Calcula la fecha siguiente.
% [ds,ms,as] = FechaSig(d,m,a) calcula la fecha
% del día siguiente en formato (día, mes, año)
% al día especificado.
ds = d + 1;
9
function n = NumeroDias(m,a)
%Numerodias
Número de días de un mes.
%
n = NumeroDias(m,a) calcula el número
%
de días del mes m (1-12) del año a.
switch m
case {1,3,5,7,8,10,12}
n = 31;
case {4,6,9,11}
n = 30;
case 2
otherwise
n = -1;
end
function b = bisiesto(a)
%BISIESTO
Determina si el año es bisieto.
% b = bisiesto(a) devuelve verdadero (1) si
% el año es bisiesto y falso (0) en caso
% contrario.
10
function m = multiplo(a,b)
%MULTIPLO
Determina si un número es
%
múltiplo de otro.
% m = multiplo(a,b) devuelve verdadero
% (1) si a es múltiplo de b y falso (0)
% en caso contrario.
Aplicación: validación de fechas
function v = FechaValida(d,m,a)
%FechaValida
Determina si una fecha es válida.
% v = FechaValida(d,m,a) devuelve verdadero
% (1) si el dia, mes y año de la fecha son
% congruentes,o falso (0) en caso contrario.
11
Bibliografia
ƒ L. Joyanes. Fundamentos de Programación: Algoritmos y
Estructuras de Datos. McGraw-Hill, 1992. Capítulo 3.
ƒ J. Biondi, G. Clavel. Introducción a la Programación 1.
2ª edición. Mason, 1988. Capítulo 3.
ƒ J. García de Jalón y otros. Aprenda Matlab 5.3 como si
estuviera en primero. Madrid, Febrero 2001.
12
Descargar