Programación estructurada

Anuncio
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
Descargar