//
//Programacion con Scilab
//
//Operadores logicos y de comparacion
3 > 2        //mayor que
pause
3 < 2        //menor que
pause
3 <> 2       //diferente (no igual)
pause
3 == 3       //igual
pause
(2>1)&(3>1)  //Operador AND
pause
(2>1)&(3>5)  //
pause
(2>1) | (3>1)  //Operador OR
pause
(2>1) | (3>5)  //
pause
(2<1) | (3>5)  //
pause
~(2<1)         //Operador NOT (no)
pause

//Lazos (loops) en SCILAB
//"for" en una sola linea 

r = 1; for k = 1:0.5:4, r = r+k, end  //Ejemplo 1
pause

for m = 1:10, a(m) = m^2, end  //Ejemplo 2
a
pause

//
//"for" en multiples lineas
//
//Ejemplo 1

r = 1; 	
for k = 1:0.5:4
    r = r+k
end  
pause


//Ejemplo 2
m=[];
for m = 1:10
    a(m) = m^2
end  
a
pause


//"while" en una sola linea
s = 100; while s>50, disp(s^2),s =s -5,end
pause

//Usando multiples lineas
s = 100;
while s>50
   disp(s^2)
   s = s - 5
end
pause

//Terminacion anticipada del lazo "for" con el comando "break"
for j = 1:10
    disp(j)
    if j>5 then 
       break
    end
end
pause

//Condicional
//"if...then...else" 
//Instrucciones en lineas multiples (tambien puede efectuarse en una sola linea)
//Ejemplo 1
x = 10; y = 5; 
if x> 5 then 
   disp(y)
end 
pause

//Ejemplo 2
x = 3 ; y = 5; 
if x>5 then 
   disp(y)
else 
   disp(x)
end 
pause

//Ejemplo 3 (elseif)
// Dependiendo del valor de x imprimir x, y o z
// Si x< 5 -> imprimir x
// Si 5<= x < 10 -> imprimir y
// Si x>= 10 -> imprimir z
// Para interrumpir introducir x = 0
 
x= 1; y = 100; z = 400;
 
 
while x<>0
  x=input('Introduzca el valor x = ');
  if x<5 then
     disp(x)
  elseif x>=10 then
     disp(z)
  else
     disp(y)
  end
end
pause

//
//Ejemplo 4 "select-case" 
//

//'Introduzca dos valores en un vector[x1 x2]'
//'Si x1 = -1 -> y = x2 - 2'
//'Si x1 = 1  -> y = x2^2'
//'Si x1 = 2  -> y = ln(x2)'
//'Para interrumpir apriete Enter'
[z]=input('Introduzca un vector [x y]= ') 
x1 = z(1);
x2 = z(2);

while ~isempty(z)
	select x1
 		case -1
		y = x2 - 2
		case 1
		y = x2^2
		case 2
		y = log(x2);
	end
	[z]=input('Introduzca un vector [x1 x2]= '); 
	x1 = z(1);
	x2 = z(2);
end
pause


//
//Ejercicio: preparar un programa que calcule el valor promedio de los elementos de un vector
//(Ayuda: para determinar el tamano (No. de elementos de un vector) se puede usar el comando "size" 
// 


pause

//
//Funciones en Scilab 
//Ejemplo: Funcion llamada "gauss"

//Funcion para un escalar
deff('y=gauss(x)','y=exp(-x^2)')
x = 0;
y = gauss(0)

pause


x = [-2:0.1:2];
y = gauss(x)

pause



//Otro ejemplo
deff('[r,theta]=cartpol(x,y)',['r=sqrt(x^2+y^2)'; 'theta=180/%pi*atan(y,x)'])
[radius,angle] = cartpol(3., 4.)
pause


//Input-output en Scilab
//Grabando variables
A = [1. 2. 3.; -3. 4. 5.; 2. 4. 5.; 1. 3. 2.]
b = 1:10
save('Ab.dat', A,b)

//Intente ver el contenido de 'Ab.dat' 
//Recuerde que .dat es un archivo en formato binario
pause


clear                 //Limpiando memoria
who

pause

load('Ab.dat') //Cargando datos del archivo 'Ab.dat'
A
b
pause


//Archivo de salida (sin formato)
print('datos1.txt',A,b)   //Imprimir en un archivo de salida
//Intentar abrir dicho archivo usandoo un editor de texto
pause


//Creando archivos de salida
//Ejemplo 1
u = file('open','datos2.txt','new')
write(u,A,'(3f10.6)') //%3 veces: elemento con formato de coma flotante (10 caracteres, 6 decimales)
file('close',u)
//Verifique el contenito del archivo recien creado
pause


//Ejemplo 2
x1 = 0:0.5:10; 
x2 = x1^2; 
B = [x1',x2'] 
m = file('open','datos3.txt','new')
write(m,B,'(2(f10.6,2x))') //%2 veces: elemento con formato floating: 10 caracteres, 6 decimales; seguido de 2 espacios
file('close',m)
//Verifique el contenito del archivo recien creado
pause

//Incluyendo leyenda
A = 5*rand(2,3), B = rand(2,3), C =A +B
u = file('open','datos4.txt','new') 
write(u,'Matriz A','(a)') 
write(u,A,'(3(f10.6,2x))') 
write(u,'Matriz','(a)') 
write(u,B,'(3(f10.6,2x))') 
write(u,'Matriz suma C =A +B','(a)') 
write(u,C,'(3(f10.6,2x))') 
file('close',u)
//Verifique el contenido del archivo recien creado
pause


//Incluyendo leyenda en la pantalla

t = [0.25:0.25:3];
d = 1/2*t.^2;

[n m] = size(d); 

for j = 1:m
    'Distancia para t = ' + string(t(j))+' es ' +string(d(j)) 
end
pause

//Usando la funcion 'disp'
for j=1:m
    disp('Distancia para t = '+ string(t(j)) + ' es ' + string(d(j)) )
end
pause


//Fin de clase






