
Captulo 7 - operadores

  A atribuio de valores s variveis alfanumricas deve ser feita envolta
por apstrofos. As variveis numricas no devem ter atribuies de valores
maiores que as faixas pre-determinadas. Por exemplo, uma varivel do tipo
Byte no pode ter atribudos a ela, valores acima de 255. 

OPERADORES
  O Turbo Pascal prev tambm, trs tipos de operadores: 
Aritimticos   normalmente utilizados em operaes entre valores numri-
   cos inteiros ou reais. 
+   adio de nmeros inteiros ou reais
-   subtrao e negao de valores inteiros ou reais
.   mltiplicaes de nmeros inteiros ou reais
/   diviso com resultado real, para operandos inteiros ou reais
DIV   diviso entre nmeros inteiros com resultado tambm inteiro
MOD   resto de uma diviso entre nmeros inteiros
Relacionais podem ser usados com todos os tipos, normalmente, so usados 
em expresses condiconais, retornando sempre um resultado lgico  TRUE ou
FALSE.
=   igual
<>   diferente
>   maior que
<   menor que
>=   maior ou igual a
<=   menor ou igual a
booleanos
NOT   inverte o resultado de uma expresso lgica
AND   somente resulta em verdadeiro se ambos operandos forem verdadeiros
OR    verdadeiro quando pelo menos um dos operandos for verdadeiro
XOR   exclusive OR, s  verdadeiro se apenas um dos operandos for verdadeiro
Conjuntos
IN   verdadeiro se um operando pertencer a um conjunto
Strings
+   permite a concatenao entre strings, sequncias de caracteres

PROGRAM exemplos_operadores;
VAR
  bt1, bt2, bt3 : BYTE;
  ra1, ra2 : REAL;
  ch1, ch2 : CHAR;
  it1, it2 : INTEGER;
  st1, st2 : STRING[10];
  bo1, bo2 : BOOLEAN;
BEGIN
  bt1 := bt2 + bt3;  
  ra1 := ra2 + 9.87;
  it1 := bt1 + it1 + it2;
  it1 := bt1 - it1;
  bt2 := bt3 - 4;
  ra2 := ra1 - 7.34 - bt2;
  ra1 := bt1 * 4.5;
  ra2 := it1 * it2;
  it2 := it1 * it2;
  ra1 := bt1 / bt2;
  ra2 := ra1 / 2.9;
  ra2 := it1 / bt3;
  bt1 := 4 DIV bt2;
  bt2 := it1 DIV it2;
  it2 := it1 DIV 3;
  bt1 := bt1 MOD bt3;
  bt3 := bt1 MOD it2;
  bt2 := it2 MOD 10;
  bo1 := bt1 = bt2;
  bo2 := ra1 = ra2;
  bo1 := st1 = st2;
  bo2 := st2 = alg;
  bo1 := ch1 = ch2;
  bo1 := ch1 = S;
  bo2 := it1 <> bt1;
  bo1 := it2 <> 834;
  bo1 := ch2 <> N;
  bo2 := st1 > AA;
  bo1 := ch1 > ;
  bo2 := bt1 > it2;
  bo1 := bt1 < 2;
  bo2 := bo1 < FALSE;
  bo2 := it2 < 239;
  bo1 := ch1 >= ch2;
  bo2 := it1 >= bt1;
  bo1 := bt2 >= ra2;
  bo2 := bt3 <= it2;
  bo1 := it2 <= ra1;
  bo2 := ch2 <= ch1;
  bo1 := NOT bo2;
  bo2 := NOT (ch1 = ch2);
  bo2 := NOT (bt2<= ra2);
  bo1 := (bt1 = bt2) AND (ch1 <> ch2);
  bo1 := (st1 <= st2) AND bo2;
  bo2 := (ch1 >= w) OR (ra1 < 4);
  bo1 := bo2 OR (bt1 <= 2);
  bo2 := (bt1 + 3 < 5) OR (g <> ch2);
  bo1 := bo1 XOR bo2;
  bo2 := (bt2 < 2) XOR (it1 < ra2);
  bo2 := (it2 <> 5) XOR bo1;
  bo1 := ch1 IN [s, S, n, N];
  bo2 := bt1 IN [ 1.. 20];
  bo2 := ch2 IN [.. F, , f, 0..9];
{".." indica faixa}
  st1 := st1 + .dat;
  st1 := st2 + ch1;
  st2 := ch1 +   + ch2;
END.
  Este programa permite apenas a verificao de algumas sintaxes possveis,
com o uso de diversos operadores diferentes. 
  Em expresses mais elaboradas, a avaliao observa a seguinte precedncia:
1- expresses dentro de parnteses
2- operador unrio menos ou negao
3- operador NOT
4- operadores multiplicativos *,/,DIV,MOD e AND
5- operadores aditivos +,-,OR e XOR
6- operadores relacionais =,<,>,<>,<=,>=, e IN
