Programación Modular Informática aplicada al medio ambiente curso 2010/2011 Elementos básicos Estructuras de datos Modelización de la información Funciones Entrada, salida, datos intermedios, etc. Transformación de los datos, hasta conseguir el resultado final Módulos Agrupación lógica de Estructuras y Funciones Ej: Interfaz de usuario, Base de datos, Motor de inferencia, etc. Informática aplicada al Medio Ambiente 2 Objetivos de la programación modular Hacer más legible y manejable un programa Simplificación del problema: Divide y vencerás Aumentar su capacidad de reutilización Facilita el trabajo en equipo Informática aplicada al Medio Ambiente 3 Funciones Transforman datos Variables de entradas Variables de salida Variables de Entrada / Salida Realizan un única tarea, bien definida El nombre indicará su función Pueden usar otras funciones Si se llama a si misma => función recursiva Informática aplicada al Medio Ambiente 4 Funciones Espacio de trabajo local Aisladas del programa, solo se comunican mediante los argumentos de entrada y la salida de la función Excepción: Variables globales Ej.: A = f(B) Si B es una variable de entrada, f no puede modificar B En matlab todos los argumentos son de entrada La salida se guarda en A Informática aplicada al Medio Ambiente 5 Funciones Matlab function [out1, out2, ..., outN] = nombre_funcion (in1, in2, ..., inM) Mismo nombre que el fichero .m donde se define Las variables definidas dentro de la función son locales Al modificar un parámetro de entrada se hace una copia para evitar su modificación out1=salida1 %modifica la salida Informática aplicada al Medio Ambiente 6 Funciones Matlab function t= gases(p, v, n) %t= gases(p, v, n) %Entrada: % p = presión en atmósferas % v = volumen en litros % n = número de moles %Salida: % t= temperatura (grados kelvin) R= 0.0821 %cte atm*litros/mol*grado t= p*v / (n*R); Informática aplicada al Medio Ambiente 7 Programa vs Función Programa: Mismo efecto que ejecutar linea a linea en ventana de comandos Funciones: Solo accede a los argumentos de entrada y variables globales declaradas Variables de programa: globales Variables de función: locales Variables locales: Se destruyen al salir de la función No interfieren con variables del mismo nombre en otras partes del programa Informática aplicada al Medio Ambiente 8 Variables globales global v1 v2 ... vN Se declara en la primera linea de la función Son accesibles desde cualquier función que la declare global Compartidas clear v1 Desliga la variable global del espacio de trabajo actual (opuesto a global) Informática aplicada al Medio Ambiente 9 Variables globales Dificultan la comprensión del código si son más utilizadas Impiden que las funciones sean reentrantes Dificultan la reutilización del código =>Limitar su uso en la medida de lo posible, ej.: para constantes Informática aplicada al Medio Ambiente 10 Funciones II Subfunciones: Son privadas. No se pueden utilizar fuera de las funciones del mismo archivo Funciones sin valor de retorno Funciones dentro del mismo archivo function f(in1, in2, in3) Funciones con un solo retorno: No requiere poner [ ] Sin entradas: No requiere ( ) Informática aplicada al Medio Ambiente 11 Funciones III Nº de argumentos variable nargin: número de entradas nargout: número de salidas return finaliza la ejecución de la función help función: Muestra comentarios detrás del nombre La primera linea es la usada por lookfor para buscar Informática aplicada al Medio Ambiente 12 Ejemplo function [ media, mediana ] = mm (v) n=length(v); media= average (v, n); mediana = median (v, n); function a= average (v, n) a=sum(v)/n; function m= median (v, n) w=sort(v); if rem(n,2) == 1, m=w((n+1)/2); else m=(w(n/2)+w(1+n/2))/2; end Informática aplicada al Medio Ambiente 13 Ejecución de funciones m=mm(w); %¿media o mediana? %Se comienza por la 1ª salida Orden de búsqueda: 1.Funciones de usuario 2.Subfunciones del mismo fichero 3.Funciones de biblioteca Informática aplicada al Medio Ambiente 14 Referencias de funciones Una función puede ser un tipo de dato. Sirve para pasar una función a otra Ej: quad('sin', 0, pi); Quad calcula la integral de la función dada para el intervalo indicado Biblioteca de integración numérica QuadPack Informática aplicada al Medio Ambiente 15 Evaluación de funciones Para evaluar una función: feval('nombre' o referencia a función, argumentos...) Obtener referencia a función: @sin o str2func('nombre de función') Informática aplicada al Medio Ambiente 16 Celdas Hasta ahora. Arrays de un tipo de dato Con celdas → Arrays con elementos de distinto tipo Notación: Elementos entre { y } c={'Juan', 'Pérez', 3.25} c(1,1) → {'juan'} %Una celda c{1,1} → 'juan' %El contenido de la celda cell(n) % matriz cuadrada de nxn celdas cell(n, m) % matriz de n filas y m columnas Informática aplicada al Medio Ambiente 17 Funciones con celdas celldisp(c) → muestra la celda cellplot(c) → representación gráfica de la celda %solo en matlab cellfun(función, celda) aplica la función a cada elemento del array de celdas Ej.:c={1, 3; 'juan', 7.5} cellfun('isclass', c, 'double') 11 01 Informática aplicada al Medio Ambiente 18 Estructuras ¿Qué son? Agrupación de datos de distinto tipo Organizados por campos con nombre Ej: alumno.nombre='Juan' alumno.dni='123456' alumno = struct('nombre', 'Juan', 'dni', 123456) La estructura se puede ampliar añadiendo campos Informática aplicada al Medio Ambiente 19 Estructuras II Matrices de estructuras: v(7)=alumno Crea un vector de 7 elementos, con la estructura de alumno Guarda el alumno en la posición 7 Estructuras anidadas clase= struct('curso', 'primero', 'grupo', 'A', 'alumnos', v) Ventajas: Flexibilidad y organización Desventaja: Menor eficiencia Informática aplicada al Medio Ambiente 20