Programacion Modular
Programacion Modular
Funciones
Transforman datos
Variables de entradas
Variables de salida
Variables de Entrada / Salida
Realizan una única tarea, bien definida
El nombre indicara su función
Pueden usar otras funciones
Si se llama a si misma => función recu
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
Funciones Matlab
function [out1, out2, ..., outN]
= nombre función (in1, in2, ..., inM)
Mismo nombre que el fichero .m donde se
define
Las variables definidas dentro de la función
locales
Al modificar un parámetro de entrada se ha
una copia para evitar su modificación
out1=salida1 %modifica la salida
Programa vs Función
Programa: Mismo efecto que ejecutar línea a
línea 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
PROCEDIMIENTOS Y FUNCIONES
Un algoritmo que resolviera un problema complejo, contendría cientos o miles de líneas
de código en su interior. Esto es inabarcable para cualquier programador, por lo que se
utiliza el concepto de procedimientos y funciones para subdividir el problema en partes.
La idea es que cada una de estas partes contenga un conjunto de instrucciones que
permita la ejecución de algún proceso determinado y lógico desde el punto de vista
humano.
Dos ejemplos, función y procedimiento respectivamente:
FUNCION multiplicar(E a: ENTERO, E b: ENTERO): ENTERO
RETORNA ( a * b )
FIN_FUNCION
ó
PROCEDIMIENTO escribirEdad(E mensaje: CADENA, E edad: ENTERO)
ESCRIBIR( mensaje, edad )
FIN_PROCEDIMIENTO
La descomposición del software en tareas también se conoce con el nombre de
top-down y fue presentada por primera vez por Niklaus Wirth. Este autor proporciona la
siguiente visión de refinamiento:
“En cada paso (del refinamiento), una o varias instrucciones del programa dado, se
descomponen en instrucciones más detalladas. Esta descomposición sucesiva o
refinamiento de especificaciones termina cuando todas las instrucciones están
expresadas en términos de la computadora usada o del lenguaje de programación…
Conforme se refinan las tareas, también los datos pueden ser refinados, descompuestos
o estructurados siendo natural refinar las especificaciones del programa y los datos en
Paralelo, Cada paso de refinamiento implica algunas decisiones de diseño. Es importante
que el
programador sea consciente de los criterios subyacentes (en las decisiones de diseño
adoptadas) y de la existencia de soluciones alternativas…”
Típicamente, una descomposición insuficiente de un problema en tareas conduce
a la definición de pocos procedimientos, cada uno de las cuales implementará múltiples
funcionalidades.