Herramientas en GNU/Linux para estudiantes universitarios: | ||
---|---|---|
Anterior | Cap�tulo 2. Sintaxis de Octave | Siguiente |
Los operadores permiten construir sentencias m�s complejas. Es posible concatenar operaciones. Su precedencia es semejante a la de otros lenguajes, pero es posible modificarla agrupando las expresiones entre par�ntesis.
Para obtener la lista completa de la precedencia de los operadores teclear help -i precedence |
Operan sobre escalares y matrices.
Tabla 2-2. Operadores aritm�ticos
Operador | Descripci�n |
---|---|
x + y | Suma. Si los dos operadores son matrices las dimensiones deben coincidir. Si no el escalar se suma a cada elemento de la matriz. |
x .+ y | Suma elemento a elemento. Esta operaci�n es equivalente a +. |
x - y | Resta. El resultado es equivalente a x + (-y), donde -y representa el opuesto de y. |
x .- y | Resta elemento a elemento. Esta operaci�n equivale a -. |
x * y | Multiplicaci�n de matrices. El n�mero de columnas de x debe coincidir con el n�mero de filas de y. |
x .* y | Multiplicaci�n de matrices elemento a elemento. |
x / y | Divisi�n a derechas. Conceptualmente es equivalente a (inverso (y') * x')', pero sin necesidad de calcular la inversa de y ni calcular las transpuestas de las matrices. |
x ./ y | Divisi�n elemento a elemento, de los elementos de x divididos por los elementos de y. |
x \ y | Divisi�n por la izquierda. Conceptualmente es equivalente a inverso (x) * y. |
x .\ y | Divisi�n elemento a elemento, de los elementos de y entre los elementos de x |
x ^ y o x ** y | Operaci�n de exponenciaci�n. Ambos operadores no pueden ser matrices, y si alguno es matriz, deber� ser cuadrada. |
x .^ y o x .** y | Exponenciaci�n, elemento a elemento. Si ambos operadores son matrices, deber�n tener igual dimensi�n. |
-x | Negaci�n. Se obtiene el escalar opuesto o la matriz de igual dimensi�n y cuyos elementos son los opuestos de la matriz original. |
+x | Operador suma unitario. No tiene ninguna consecuencia sobre el operando. |
x' | Conjugado complejo y transpuesta. Para n�meros reales es equivalente a la transposici�n. |
x.' | Transposici�n de los elementos de x. No se conjugan los elementos. |
++x | Operador de preincremento. Equivalente a ejecutar la expresi�n x=x+1 antes de acceder al valor de x |
--x | Operador de predecremento. Equivalente a ejecutar la expresi�n x=x-1 antes de acceder al valor de x |
x++ | Operador de postincremento. Equivalente a ejecutar la expresi�n x=x+1 despu�s de acceder al valor de x |
x-- | Operador de postdecremento. Equivalente a ejecutar la expresi�n x=x-1 despu�s de acceder al valor de x |
Si el valor de la variable predefinida warm_divide_by_zero es distinto de cero, y en alg�n caso se produce una divisi�n por cero, Octave imprime un aviso y contin�a con las operaciones. |
Todos los operadores de comparaci�n devuelven un valor 1 si la comparaci�n es cierta, y 0 si es falsa. Para matrices las operaciones se realizan operando a operando. Por ejemplo:
octave> [1 2; 3 4] == [1 3; 2 4] ans = 1 0 0 1 |
Si un operador es escalar y el otro una matriz, el escalar se compara con cada elemento de la matriz y el resultado tiene las mismas dimensiones que la matriz.
Tabla 2-3. Operadores de comparaci�n
Operador | Descripci�n |
---|---|
x < y | Cierto si x es menor que y. |
x <= y | Cierto si x es menor o igual que y. |
x == y | Cierto si x es igual que y. |
x > y | Cierto si x es mayor que y. |
x >= y | Cierto si x es mayor o igual que y. |
x != y o x ~= y o x <> y | Cierto si x no es igual a y. |
Las comparaciones con cadenas de caracteres pueden hacerse con la funci�n strcmp. |
El resultado de un operador booleano es una matriz de dimensi�n equivalente a los operandos, donde cada elemento es el resultado de aplicar el operador booleano a los elementos correspondientes. Se considera como cierto un valor distinto de cero, y falso un valor igual a cero.Los operadores booleanos se pueden emplear en las mismas situaciones que los operadores de comparaci�n. Si adem�s se utilizan en estructuras de control de flujo (if o while) s�lo ser�n cierto si todos los elementos son distintos de cero.
octave> [1 0] & [1 1] ans = 1 0 |
�nicamente hay tres operadores booleanos:
Tabla 2-4. Operadores booleanos
Operador | Descripci�n |
---|---|
boolean1 & boolean2 | Operador 'and' l�gico. Cada elementos del resultado es cierto si los elementos correspondientes de los operandos lo son. |
boolean1 | boolean2 | Operador 'or' l�gico. Cada elementos del resultado es cierto si alguno de los elementos correspondientes de los operandos lo es. |
! boolean o ~ boolean | Operador 'not' l�gico. Cada elemento del resultado toma el valor booleano opuesto al del operando. |
Los operadores booleanos de "corto circuito" son semejantes a los operadores booleanos, con la diferencia de que si despu�s de evaluar el primer operando, ya es suficiente para obtener el resultado, no se comprueba el segundo operando.
Tabla 2-5. Operadores binarios de corto circuito
Operador | Descripci�n |
---|---|
boolean1 && boolean2 | El operando boolean1 es evaluado y convertido a un escalar (el resultado es an�logo a all(boolean1)). Si el resultado es falso, la operaci�n termina con resultado falso. Si es cierto se realiza la misma operaci�n con el segundo operando y este ser� el resultado de la operaci�n. |
boolean1 || boolean2 | El operando boolean1 es evaluado y convertido a un escalar (el resultado es an�logo a any(boolean1). Si el resultado es verdadero, la operaci�n termina con resultado verdadero. En cambio si fue falso se eval�a de la misma manera el segundo operando el resultado obtenido ser� el resultado de la operaci�n. |
La diferencia entre los operadores binarios normales y los de cortocircuito se ver� mejor con un ejemplo:
octave> a=0; b=0; a & b++, b ans = 0 b = 1 octave> a=0; b=0; a && b++, b ans = 0 b = 0 |
En el segundo caso, b ser� incrementado s�lo si a es verdadero. En el primer caso b siempre ser� incrementado.
El signo = es el operador de asignaci�n. Despu�s de una asignaci�n una variable cambia de valor y de tipo para acomodarse al del nuevo valor. El operador asignaci�n es la �nica manera de poder almacenar valores. En el lado derecho puede aparecer cualquier expresi�n de las descritas anteriormente en este cap�tulo, o funciones que devuelvan un valor. En el lado izquierdo podemos tener variables, elementos de una matriz o vector, o listas de valores de retorno (este concepto se aclarar� en el apartado dedicado a funciones). Ejemplos:
octave> a=1; octave> b=ones(2,3); octave> b(:,1)= 2 b = 2 1 1 2 1 1 octave> [d c]= size(b); octave> e=["esta " "es " "una " "cadena"]; |