Cuando cierto grupo de sentencias es muy usado puede incluirse en un
archivo con extensión `file.m'
y ser llamado desde Octave
directamente por su nombre:
octave> file
Existen dos tipos de archivos `.m'
, los "scripts" y las
"funciones". Los scripts son simplemente listas de sentencias, al ser
llamado es como si las lista de sentencias fuera incluido en el prompt
de Octave. Por ejemplo si escribimos el siguiente archivo
`program.m'
(`$'
es el prompt del shell de Unix):
$ cat program.m
disp(" Sea la matriz: ")
A=rand(5);
disp(" y el miembro derecho: ")
b=rand(5,1)
disp(" la solucion del sistema lineal \"A x = b\" es: ")
x=A\b
$
y lo invocamos en el prompt de Octave, obtenemos:
octave.bin:8> program
Sea la matriz:
A =
0.0585678 0.4895890 0.2189970 0.3789282 0.0070595
0.9847305 0.8799793 0.5523543 0.3834434 0.9909419
0.9980757 0.6343816 0.5049118 0.9492567 0.3068205
0.6248775 0.1056383 0.8699436 0.8245406 0.6066207
0.0062269 0.1845125 0.9168088 0.1129778 0.6668941
y el miembro derecho:
b =
0.83350
0.72816
0.73784
0.57180
0.37908
la solucion del sistema lineal "A x = b" es:
x =
-1.27390
0.94521
-0.62628
1.52004
0.92228
octave.bin:9>
Un script puede llamar a otro script y así siguiendo.
Las funciones son más parecidas al concepto de "subrutina" en Fortran. Primero, pasan ciertos valores de entrada y de salida, los cuales dentro de la función toman nombres distintos. Las demás variables "externas" quedan aisladas de las "internas". Por ejemplo si definimos la siguiente función que calcula el promedio de los elementos de un vector:
function retval = avg (v)
retval = sum (v) / length (v);
endfunction
y la llamamos de la siguiente manera en Octave:
octave> vec=rand(1,5)
vec =
0.61434 0.26735 0.15900 0.77773 0.85297
octave> avg(vec)
ans = 0.53428
octave> v="string"
v = string
octave> avg(vec)
ans = 0.53428
octave> v="string"
v = string
octave>
Vemos que la variable que "afuera" es llamada `vec'
adentro
de la función es llamada `v'
. Además, podemos usar afuera una
variable llamada `v'
sin que entre "en colisión" con la
interna.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter