Professional Documents
Culture Documents
TEMA 6: FUNCIONES
Autores: Luis Javier Herrera Maldonado
José Luis Bernier Villamor
Contenido:
1. Introducción
2. Estructura de una función
3. Parámetros formales y parámetros reales
4. Argumentos de entrada y salida
5. Ámbito de las variables
6. Comparativa entre scripts y funciones
1. Funciones 2
• Sintaxis:
function [y1,..., yN] = myfun(x1,..., xM)
%Comentarios
… %código justificado una tabulación a la derecha
end
• Descripción
– function [y1,...,yN] = myfun(x1,...,xM) declara una función llamada
myfun que acepta argumentos de entrada x1,... xM y devuelve
salidas y1,... yN. Esta línea de declaración debe ser la primera en
un archivo de función
• Este código de declaración, cabecera y cuerpo, deberá
guardarse como un archivo de texto .m. El nombre del
archivo deberá ser el mismo que el de la función. Los
nombres válidos de funciones deberán comenzar con un
carácter alfabético, podrán contener letras, números y
carácter subrayado.
2. Estructura de una función 5
function y = media(x)
% Función que calcula la media de los valores de un vector
%Argumentos de entrada:
% x: vector de entrada
%Argumentos de salida:
% y: media de los valores de x
suma = 0;
longitud = length(x);
for i = 1:longitud
suma = suma + x(i);
end
y = suma/longitud;
end
- Desde la línea de Comandos:
>> z = 1:99;
>> media(z)
ans =
50
2. Estructura de una función 6
Parámetros formales
• Denominamos parámetros formales a los nombres de los
argumentos (y salida) de entrada de las funciones en su
declaración.
• Se usan para poder escribir la función y definir su
funcionamiento:
function [m,s] = estadisticas(x)
% Función stat que devuelve la media y desviación estándar
de un vector de entrada
% Argumentos de entrada:
% x: vector de entrada
% Argumentos de salida:
% m: media de los valores de x
% s: desviación estándar de los valores de x
n = length(x);
m = sum(x)/n;
s = sqrt(sum((x-m).^2/n));
end
3. Parámetros formales y parámetros reales 8
Parámetros actuales
• Denominamos parámetros actuales a las variables o
valores REALES (existentes en el workspace o
expresables en la línea de comandos) con los que se
llama a la función.
• Se emplean para poder utilizar la función:
>> values = [12.7, 45.4, 98.9, 26.6, 53.1];
>> [ave,stdev] = estadisticas(values)
ave =
47.3400
stdev =
29.4124
4. Argumentos de entrada y de salida 9
C 3x3 72 double
V 10x1 80 double
W 1x10 80 double
a 1x1 8 double
b 1x1 8 double
5. Ámbito de las variables 11
function q = variableLocal(p)
% Función ejemplo que toma un valor p y lo modifica. Además genera un
% variable a para comprobar que dicha variable se pierde tras la
% ejecución (tras cerrarse el espacio de trabajo de la función)
a = 2;
disp(['-->en variableLocal, creo la variable a: ',num2str(a)]);
p=12;
disp(['-->en variableLocal, p pasa a valer: ', num2str(p)]);
q =p;
end
---------------------------------------------
function q = variableLocal(p)
% Función ejemplo que toma un valor p y lo modifica. Además genera un
% variable a para comprobar que dicha variable se pierde tras la
% ejecución (tras cerrarse el espacio de trabajo de la función)
a = 2;
disp(['-->en variableLocal, creo la variable a: ', num2str(a) ]);
p=12;
disp(['-->en variableLocal, p pasa a valer: ', num2str(p) ]);
q = p;
end
--------------------------------------------
% Script de prueba
p = 44
whos
disp(['En el espacio de trabajo base, p vale: ',num2str(p) ]);
p = variableLocal(p);
disp(['En el espacio de trabajo base, p vale: ',num2str(p) ]);
whos
5. Ámbito de las variables 16
p =
44
Name Size Bytes Class Attributes
ans 1x1 8 double
p 1x1 8 double
En el espacio de trabajo base, p vale: 44
-->en variableLocal, creo la variable a: 2
-->en variableLocal, p pasa a valer: 12
En el espacio de trabajo base, p vale: 12
Name Size Bytes Class Attributes
ans 1x1 8 double
p 1x1 8 double