Programación estructurada
Informática aplicada al medio ambiente
curso 2010/2011
Elementos básicos
Secuencia o bloques de sentencias
Intrucción condicional, bifurcaciones
Iteraciones
No hay saltos (GoTo)
Informática aplicada al Medio Ambiente
2
Programación
Bifurcaciones
if condición
elseif condición2
Sentencias si condición
Sentencias si condición2
elseif condiciónN
Sentencias si condiciónN
Sentencias else (ninguna de las anteriores)
else
end %o endif
Informática aplicada al Medio Ambiente
3
Ejemplo
Índice de masa corporla (IMC)
IMC = peso actual (Kg) / altura² (m²)
Valores
Anorexia: [0..16,5]
Peso bajo: [16,5..18,5]
Peso normal: [18,5 .. 25]
Sobrepeso: [25..30]
Obesidad 1er Grado: 30..35, 2º grado hasta 40,
40..45 Obesidad severa, > 45 Obesidad Mórbida
Informática aplicada al Medio Ambiente
4
Ejemplo
peso=input('Introduzca su peso en Kg: ');
altura=input('Introduzca la altura en metros: ');
imc=peso/altura^2;
disp(['Imc = ', num2str(imc)]);
if imc < 16.5
disp('Anorexia')
elseif imc< 18.5
disp('Bajo peso')
....
else
disp('Obesidad Mórbida')
end
Informática aplicada al Medio Ambiente
5
Bucles
For:
for variable=rango %inicio:fin
Sentencias
end
También variable=vector columna, o variable=
inicio:paso:fin
Bucles anidados
for j=1:n
end
for k=1:n
end
Informática aplicada al Medio Ambiente
6
Ejemplo
peso=input('Introduzca su peso en Kg: ');
altura=input('Introduzca la altura en metros: ');
imc=peso/altura^2;
disp(['Imc = ', num2str(imc)]);
minimos=[0, 16.5, 18.5, 25, 30, 35, 40, 45];
categorias=str2mat('Anorexia', 'Bajo peso', 'Normal',
'Sobrepeso', 'Obesidad 1er grado', 'Obesidad 2º grado',
'Obesidad severa', 'Obesidad Mórbida');
for i=length(minimos):-1:1
if minimos(i)<=imc
disp(['Categoría :', categorias(i,:)]);
break
end
end
Informática aplicada al Medio Ambiente
7
Bucles
While:
while condición
Sentencias
end
break: Termina un bucle for o while
continue: Pasa directamente a la siguiente
iteración
Informática aplicada al Medio Ambiente
8
Ejemplo
peso=input('Introduzca su peso en Kg: ');
altura=input('Introduzca la altura en metros: ');
imc=peso/altura^2;
disp(['Imc = ', num2str(imc)]);
minimos=[0, 16.5, 18.5, 25, 30, 35, 40, 45];
categorias=str2mat('Anorexia', 'Bajo peso', 'Normal',
'Sobrepeso', 'Obesidad 1er grado', 'Obesidad 2º grado',
'Obesidad severa', 'Obesidad Mórbida');
i=length(minimos);
while (i>1) && (minimos(i)>imc), i=i-1; end
disp(['Categoría :', categorias(i,:)]);
Informática aplicada al Medio Ambiente
9
Switch
switch expresión
case valor1
Sentencias 1
case valor2
Sentencias 2
otherwise
Sentencias en caso contrario...
end
Compara igualdad de valores, escalares o
cadenas
Se pueden agrupas casos: case {valor1,
valor2,..., valorn}
Informática aplicada al Medio Ambiente
10
Ejemplos con Switch
val=input('Introduce un número del 1 al 3');
switch val
case 1
disp('uno')
case 2
disp('dos')
case 3
disp(tres)
otherwise
disp('No es un valor válido')
end
Informática aplicada al Medio Ambiente
11
Cadenas de if..elseif → Switch
val=input('Introduce un número: ');
switch val
¡Error: Switch solo permite
comparar igualdad respecto
a los casos!
case val>100
disp('alto')
case val>50
disp('moderado')
case val>0
disp(bajo)
otherwise
disp('No es un valor válido')
end
Informática aplicada al Medio Ambiente
12
Cadenas de if..elseif → Switch
val=input('Introduce un número: ');
switch true
Truco: Usar igualdad
de valores lógicos
●Opción: if..elseif..
case val>100
●
disp('alto')
case val>50
disp('moderado')
case val>0
disp(bajo)
otherwise, disp('No es un valor válido')
end
Informática aplicada al Medio Ambiente
13
Ficheros .m
Código fuente de programas Matlab
Están escritos en ASCII
Puede usarse cualquier editor de textos ASCII, además
del editor de Matlab
Se ejecutan mediante su nombre, sin la
extensión .m
echo on / echo off: Habilita o desabilita que se
muestre cada comando ejecutado
Si la linea es muy larga se puede partir con ...
No se pueden partir las cadenas de texto
Informática aplicada al Medio Ambiente
14
Depuración de errores
echo on → Es útil para buscar errores en los
programas
Matlab no compila el código, lo interpreta
→ solo detecta los errores cuando ejecuta la linea
erronea
→ hay que comprobar todos los casos para estar
seguros que el programa funciona
Matlab nos indica la causa del error y la linea
donde se produce
error ('mensaje'): Producimos un error en el
programa con el mensaje indicado
Informática aplicada al Medio Ambiente
15
Ejemplo con errores
val= input('Introduce un número: ');
switch true
case val>100, disp('alto')
case val>50, disp(moderado)
case val>0, disp('bajo')
otherwise, error('No es un valor válido')
end
disp('fin')
Informática aplicada al Medio Ambiente
16