sábado, 31 de mayo de 2008

Operadores

Los operadores sirven para combinar los términos de las expresiones.

En Pascal, se manejan tres grupos de operadores :


Operadores aritméticos

Son aquellos que sirven para operar términos numéricos. Estos operadores podemos clasificarlos a su vez como :

  1. UNARIOS
  2. BINARIOS

Los operadores UNARIOS son aquellos que trabajan con UN OPERANDO.

Pascal permite el manejo de un operador unario llamado :

MENOS UNARIO

Este operador denota la negación del operando, y se representa por medio del signo menos ( - ) colocado antes del operando.

Por ejemplo :

Si x tiene asignado el valor 100, -x dará como resultado -100 ; esto es que el resultado es el inverso aditivo del operando.

Los operadores BINARIOS, son los que combinan DOS OPERANDOS , dando como resultado un valor numérico cuyo tipo será igual al mayor de los tipos que tengan los operandos.

La siguiente tabla muestra los símbolos de los operadores binarios de Pascal así como los nombres de las operaciones que realizan.

Operadores aritméticos básicos

Operador Operación Operandos Ejemplo Resultado
+ Suma real , integer a + b suma de a y b
- Resta real , integer a - b Diferencia de a y b
* Multiplicación real , integer a * b Producto de a por b
/ División real , integer a / b Cociente de a por b
div División entera integer a div b Cociente entero de a por b
mod Módulo integer a mod b Resto de a por b
shl Desplazamiento a la izquierda
a shl b Desplazar a la izquierda b bits
shr Desplazamiento a la derecha
a shr b Desplazar a la derecha b bits

Conviene observar lo siguiente :

  1. Cuando los dos operandos sean del tipo integer, el resultado será de tipo integer.
  2. Cuando cualquiera de los dos operandos, o ambos, sean del tipo real, el resultado será de tipo real.
  3. Cuando, en la operación div, OPERANDO-1 y OPERANDO-2 tienen el mismo signo, se obtiene un resultado con signo positivo; si los operandos difieren en signo, el resultado es negativo y el truncamiento tiene lugar hacia el cero.

Ejemplos :

7    div 3     = 2
(-
7) div (-3) = 2
(-
7) div 3 = -2
7 div (-3) = -2
15.0 div 3.0 = no válido
15 div (4/2) = no válido

La operación div almacena sólo la parte entera del resultado, perdiéndose la parte fraccionaria (truncamiento).

  1. La operación MODULO está definida solamente para OPERANDO-2 positivo. El resultado se dará como el entero no negativo más pequeño que puede ser restado de OPERANDO-1 para obtener un múltiplo de OPERANDO-2 ; por ejemplo :
6     mod 3    = 0
7 mod 3 = 1
(-
6) mod 3 = 0
(-
7) mod 3 = -1
(-
5) mod 3 = -2
(-
15) mod (-7) = -1

En la operaciones aritméticas, debe asegurarse que el resultado de sumar, restar o multiplicar dos valores, no produzca un resultado fuera de los rangos definidos por la implementación para los diferentes tipos.


Operadores relacionales


Una RELACIÓN consiste de dos operandos separados por un operador relacional. Si la relación es satisfecha, el resultado tendrá un valor booleano true ; si la relación no se satisface, el resultado tendrá un valor false. Los operadores deben ser del mismo tipo, aunque los valores de tipo real, integer y byte pueden combinarse como operandos en las relaciones. A continuación se describen los operadores relacionales utilizados en Pascal:

Símbolo Significado
= IGUAL que
<> NO IGUAL que
< MENOR que
> MAYOR que
<= MENOR o IGUAL que
>= MAYOR o IGUAL que

Ejemplos:

Relación Resultado
20 = 11 false
15 <> true
PI > 3.14 true
'A' <> false
'A' = 65 true



Operadores lógicos


Al igual que las relaciones, en las operaciones con operadores lógicos se tienen resultados cuyo valor de verdad toma uno de los valores booleanos true o false.

Los operadores lógicos en Pascal son :

NOT

Sintaxis : not operando

Descripción : Invierte el valor de verdad de operando.

Ejemplo :
Si bandera tiene un valor de verdad true, not bandera produce un resultado con valor de verdad false.

AND

Sintaxis : operando.1 and operando.2

Descripción : Produce un resultado con valor de verdad true cuando ambos operandos tienen valor de verdad true; en cualquier otro caso el resultado tendrá un valor de verdad false.

OR

Sintaxis : operando.1 or operando.2

Descripción : Produce un resultado con valor de verdad false cuando ambos operadores tienen valores de verdad false; en cualquier otro caso el resultado tendrá un valor de verdad true.

XOR

Sintaxis : operando.1 xor operando.2

Descripción : Un operando debe tener valor de verdad true y el otro false para que el resultado tenga valor de verdad true.

Turbo Pascal también permite las siguientes operaciones entre los bits de operandos exclusivamente de tipo entero :

AND

Sintaxis : operando.1 and operando.2

Descripción: Pone a ceros los bits de operando.2
cuyos correspondientes en operando.1 estén en ceros.

Los valores se pasan a binario, y, sobre cada bit de operando.1 se
realiza la operación and lógica con el correspondiente bit de operando.2.

Ejemplo : 29 and 30 = 28

Cuya forma en binario es :

    0000000000011101 = 29 (operando.1)
and 0000000000011110 = 30 (operando.2)
_____________________
0000000000011100 = 28 (resultado)
OR ( o inclusiva )

Sintaxis : operando.1 or operando.2

Descripción : Pone a uno los bits de operando.1 cuyos correspondientes bits en operando.2 están a uno.

Ejemplo : 17 or 30 = 31

En binario:

   0000000000010001 = 17 (operando.1)
or 0000000000011110 = 30 (operando.2)
_____________________
0000000000011111 = 31 (resultado)
XOR ( o exclusiva )

Sintaxis : operando.1 xor operando.2

Descripción : Invierte el estado de los bits de operando.1, cuyos correspondientes en operando.2 están a uno.

Ejemplo : 103 xor 25 = 126

En binario:

    0000000001100111 = 103 (operando.1)
xor 0000000000011001 = 25 (operando.2)
______________________
0000000001111110 = 126 (resultado)
SHL

Sintaxis : operando.1 shl operando.2

Descripción : Desplaza hacia la izquierda los bits de operando.1, el número de posiciones establecidas por operando.2.

Los bits que salen por el extremo izquierdo se pierden.

Ejemplo : 10 shl 2 = 40

En binario:

         0000000000001010 = 10 (operando.1)
shl 2 <= 0000000000101000 = 40 (resultado)
(operando.2)
SHR

Sintaxis : operando.1 shr operando.2

Descripción : Desplaza hacia la derecha los bits de operando.1 el número de posiciones establecidas por operando.2.

Los bits que salen por el extremo derecho se pierden

Ejemplo : 125 shr 3 = 15

En binario :

         0000000001111101 = 125 (operando.1)
shr 3 => 0000000000001111 = 15 (resultado)
(operando.2)

No hay comentarios: