Manual de Scilab/Xcos/Programación en Scilab

De Wikilibros, la colección de libros de texto de contenido libre.
Ir a la navegación Ir a la búsqueda
← Cálculo simbólico con SciMax Programación en Scilab Editor de texto (SciNotes) →
Manual de Scilab/Xcos


Para crear una función se puede consultar: [1]. Lo más común seria programar un método iterativo (por ejemplo: que busque el mínimo de una función). Para realizar estas tareas necesitamos dos herramientas muy importantes como son los condicionales y alguna forma de poder hacer iteraciones. Scilab también permite crear funciones escritas en Fortran o en C.

Condicionales[editar]

Los Condicionales en Scilab se pueden implementar con "if then else". Si son varias condiciones para evaluar se puede utilizar "select"

if expr1 then sentencias
elseif expri then sentencias
....
else sentencias
end

Puede consultar la ayuda del programa para ver otro ejemplo o ver todas las opciones de este condicional. En el siguiente ejemplo vamos a utilizar un condicional dentro de una función y la vamos a evaluar desde la línea de comandos:

function f1=pcondicional(a,b)
if a>b then
    f1="a es mayor b"
elseif a>.5
    f1="a es mayor a 0.5"
else
    f1="a es menor a b"
end
endfunction

Ejecución de la función:[editar]

Se muestran varias llamadas a la función con diferentes valores para a y b.

-->pcondicional(1,2)
 ans  =
 
 a es mayor a .5   
 
-->pcondicional(5,2)
 ans  =
 
 a es mayor b   
 
-->pcondicional(-1,2)
 ans  =
 
 a es menor a b

Iteraciones[editar]

Para realizar Iteraciones en Scilab este cuenta con dos tipos de mecanismos el Bucle For y el Bucle while.

Ejemplo de bucle for[editar]

for i=1:5
    disp(i)
end

El resultado es:

-->for i=1:5
--> disp(i)
-->end
 
    1.  
 
    2.  
 
    3.  
 
    4.  
 
    5.

Ejemplo de bucle while[editar]

i=0;
while i<5
    disp(i)
    i=i+1;
end

Resultado:

-->while i<5
--> disp(i)
--> i=i+1;
-->end
 
    0.  
 
    1.  
 
    2.  
 
    3.  
 
    4.

Debugeando scripts[editar]

Para debugear scripts es conveniente tener el sistema de esta forma por que resulta muchísimo más cómodo para ir ejecutando el código y viendo el resultado en la ventana de comandos:

Scilab5.3.3-scinotes.png

Para producir un punto de ruptura en la ejecución de un script debemos poner la palabra "pause" en el lugar donde queremos que se produzca el punto de ruptura.

Por ejemplo en el siguiente fragmento de código:

function met_itera=met_itera(x1,x2,x3,x4,n,epsilon)
    tic();
    X=[x1,x2,x3,x4];
    i=1;
    while i<n
        gradxk=grade3(X(1,1),X(1,2),X(1,3),X(1,4));
        fx=evalfun(X(1,1),X(1,2),X(1,3),X(1,4),H,b);
        l=callambda(X(1,1),X(1,2),X(1,3),X(1,4));
        XK=X-l*gradxk;
        fxk=evalfun(XK(1,1),XK(1,2),XK(1,3),XK(1,4));
        pause
        if (fx>fxk) then...
        ...

Al ejecutar la función en la líneas de comandos, esta cambia del habitual "-->" por "-1->" esto nos indica que ingresamos al primer punto de ruptura. El resultado de esto se ve de esta forma en Scilab.

Type 'resume' or 'abort' to return to standard level prompt.

-1->

Ahora la función se ejecuto hasta el punto donde dice pause. En este punto podemos revisar variables simplemente tipeando estas en la línea de comandos, etc. Para saltar al próximo punto de ruptura solo tenemos que tipear "resume" y apretar la tecla enter. En el caso de querer salir de la ejecución de la función debemos tipear "abort" seguido de tecla enter.