2.5. Funciones y scripts de usuario

Las funciones y scripts son el mecanismo que ofrece Octave para simplificar la escritura de programas o la carga de datos iniciales. Se pueden escribir directamente en la l�nea de comandos de Octave, o en ficheros externos. En ese caso los scripts y las funciones se invocan exactamente igual que cualquier otra funci�n predefinida de Octave. La �nica condici�n es que esos ficheros se encuentren en un directorio dentro del path de Octave

Sugerencia

Para m�s informaci�n sobre el path de b�squeda de ficheros de Octave consultar help -i LOADPATH.

Sugerencia

Los ficheros de scripts y funciones de Octave tienen extensi�n ".m" por compatibilidad con Matlab.

Las funciones tienen el siguiente formato:

	function variable_retornada = nombre_funcion (lista_argumentos)
	   cuerpo_de_funci�n
	endfunction
      

El formato tiene los siguientes campos:

	function [x y] = polar2cartesiano(radio, angulo)
	  x= radio*cos(angulo);
	  y= radio*sin(angulo);
	endfuncion
      

Para que sea posible la devoluci�n de alg�n valor, dentro del cuerpo de la funci�n deben existir variables de igual nombre que las que aparecen en el campo variable_retornada. No es necesario devolver ning�n valor expl�citamente.

Dentro del cuerpo de la funci�n son accesibles las variables declaradas en la lista de argumentos, que tendr�n el valor que se les asign� al hacer la llamada (la forma de asignar los valores a las variables es por la posici�n, es decir, el primer valor ser� asignado a la primera variable de la lista de argumentos). Si el �ltimo de los argumentos de la funci�n es el s�mbolo ..., significa que la funci�n admite un n�mero indeterminado de par�metros. Es responsabilidad del programador afrontar el tratamiento de los par�metros no declarados expl�citamente.

Se puede terminar en cualquier momento la ejecuci�n de la funci�n usando la palabra return.

Adem�s de lo anterior, dentro del cuerpo de la funci�n est� disponible la variable nargin. Su valor es asignado autom�ticamente al n�mero de par�metros que se han pasado en la llamada. Esto puede permitirnos hacer un peque�o chequeo antes de continuar con la ejecuci�n del resto del c�digo y evitar fallos por falta de par�metros. Por ejemplo:

	function [x y] = polar2cartesiano(radio, angulo)
	  if(nargin!=2)
	    fprintf(2,"Error, el n�mero de par�metros debe ser 2\n");
	    return
	  endif
	  x= radio*cos(angulo);
	  y= radio*sin(angulo);
	endfuncion
      

Excepto para peque�os "programillas de juguete", no es pr�ctico tener que definir todas las funciones cada vez. En lugar de ello es posible guardarlos en ficheros de texto y as� conservarlos para futuros usos.

Octave no requiere que se carguen las funciones antes de usarlas. Simplemente es necesario que se guarden en un fichero con extensi�n ".m", en un directorio de los indicados en la variable LOADPATH, y que el nombre del fichero coincida con el de la funci�n.

Los scritps son simples ficheros de texto en el que se introducen las sentencias de la misma manera que se introducen en la l�nea de comandos. Su principal utilidad es definir un entorno de trabajo en cualquier momento, definiendo una serie de variables y/o funciones. Cada vez que queramos recuperar ese estado deberemos volver a invocar el script por su nombre (in la extensi�n). La �nica restricci�n es que la primera sentencia no debe ser la definici�n de una funci�n. En caso contrario Octave pensar� que se trata de un fichero de funci�n y los resultados no ser�n los esperados.