Scilab soporta una completa lista de herramientas de programación incluyendo comandos repetitivos y condicionales.
A.4.4.1.1 Sentencias de comparación
En las sentencias condicionales se pueden utilizar seis operadores que permiten comparar datos del mismo tipo:
== o = igual a
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
<> o = distinto de
Existen dos tipos de sentencias condicionales en Scilab:
--> x=-2
--> if x>0 then,y=-x,else,y=x,end
y =
-2.
--> x=6; if x>0 then,y=-x,end
y =
-6.
--> a=1;b=2;
--> if a==b then, c=a+b, else, c=a-b, end
c =
-1.
--> a=2; if a==b then, c=a+b, else, c=a-b, end
c =
4.
--> b=5;if a==b then,c=a+b,elseif a>b then,c=a-b,else,c=b-a,end
c =
3.
--> x=-1; select x, case 1, y=x+5, case -1, y=sqrt(x), end
y =
i
A.4.4.1.2 Sentencias repetitivas
Existen en Scilab dos sentencias repetitivas: for y while.
--> x=1;for k=1:4, x=x*k, end
x =
1.
x =
2.
x =
6.
x =
24.
--> x=1;for k=[-1 3 0], x=x+k, end
x =
0.
x =
3.
x =
3.
--> x=1; while x<14, x=x*2,end
x =
2.
x =
4.
x =
8.
x =
16.
Se puede utilizar el comando break para interrumpir
la ejecución de una sentencia repetitiva.
--> for k=1:3,for j=1:4, ...
--> if k+j>4 then,break,else,disp(k), ...
--> end,end,end
1.
1.
1.
2.
2.
3.
Como se explicó anteriormente se pueden definir funciones directamente en el entorno de Scilab, aunque es conveniente la creación de las funciones en un fichero aparte que contenga todas las definiciones de funciones realizadas por el programador.
La estructura de una función tiene el siguiente
formato:
Function [y1,y2,yn]=name(x1,x2,xm)
.
.
.
Donde name sería el nombre de la función, las variables xi los argumentos de entrada de la función, e yi los de salida. En las líneas que siguen al encabezamiento se escribiría el cuerpo de la función, esto es, una serie de instrucciones que ejecutan las acciones asociadas a la función definida.
Por ejemplo una función que calcule el
factorial sería:
Function [y]=factorial(x)
x=int(x);
if x<0 then,
disp(’No esta definido el factorial de numeros negativos’), // escribe en pantalla el texto indicado
y=0,
else,
y=1,
for j=1:x,y=y*j,end,
end,
Si esta función estuviera escrita en un fichero de nombre f_mat.sci
para poder ser utilizada se deberá descargar al entorno Scilab mediante
la función getf:
--> exists(’factorial’) // detecta si la función está definida (1.) o no (0.)
ans =
0.
--> getf(’f_mat.sci’) // descarga de la función en el entorno Scilab
--> x=6/factorial(5)
x =
0.05
--> z=fact(-2) //No esta definido el factorial de numeros negativos
z =
0.
Como ya se dijo anteriormente se pueden definir
directamente en el entorno Scilab utilizando la función deff.
--> deff(’[y]=signo(x)’,’if x>0 then, y=1;else,y=-1;end’)
--> signo(5)
ans =
1.
--> signo(-3)
ans =
-1.
Las variables definidas dentro de una función son locales a ella y dejan de existir al finalizar la ejecución de la misma. Las variables definidas en el entorno de trabajo son globales a todas las funciones que se puedan ejecutar desde dicho entorno.
Scilab tiene varias funciones especiales para su uso exclusivo en funciones, como pueden ser: