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