Capítulo 4: Expressões
 

4.1. Introdução

[D] Uma "expressão" Fortran é definida como uma combinação de itens sintáticos, isto é: uma expressão pode consistir de uma única constante, de uma única variável, de um único elemento de conjunto, ou uma combinação de constantes, variáveis, elementos de conjuntos, unidos com um ou mais operadores e, possivelmente, agrupados com parênteses.
 

[D] "Operadores" especificam as computações a serem realizadas sobre os valores dos elementos básicos.
 

[D] As expressões, no Fortran, são classificadas em aritméticas, caracteres, relacionais e lógicas.
 

4.2. Expressões Aritméticas

[D] Uma "expressão aritmética" é usada para expressar uma computação numérica. O cálculo desta expressão produz um valor numérico cujo tipo é inteiro, real, dupla precisão ou complexo.
 

[D] Os "operadores aritméticos" são definidos pela tabela abaixo:

Operador     Definição              Uso         Significado
----------------------------------------------------------------------------------------------------
**                potenciação          a**b        a elevado à potência b
*                  multiplicação         a*b          a multiplicado por b
/                   divisão                  a/b           a dividido por b
+                  adição                  a+b          a mais b
-                   subtração             a-b           a menos b
-                   menos unário        -a             a com sinal invertido
 

[C] Em expressões contendo um único operando, o tipo do operando define o tipo de expressão.
 

[C] Em expressões com mais de um tipo de operando, o tipo da expressão depende dos tipos dos operandos e dos operadores.
 

[D] Para todas as operações (com exceção da potenciação):

  1. Se os operandos forem do mesmo tipo, este será o tipo da expressão.
  2. Se os operandos forem de tipos diferentes, o tipo da expressão será o tipo do operando de maior precedência, dada pela tabela abaixo:
Tipo                  Precedência
-------------------------------------------
inteiro                1
real                    2
dupla precisão    3
complexo           4
 

[D] Regras para ordem de computação:

1. Parênteses podem ser usados para agrupar operandos em uma expressão. Qualquer expressão entre parênteses é calculada antes do cálculo da expressão da qual ela é uma parte. Parênteses mais internos são calculados antes.
2. Com exceção do uso dos parênteses, as operações são realizadas na seguinte ordem de precedência:

Operação     Precedência
--------------------------------------------------------------
+ e -             mais baixa
* e /              intermediária
**                 mais alta

3. Para operadores de mesma precedência, o cálculo se desenvolve da esquerda para a direita.
4. Potenciações consecutivas são realizadas da direita para a esquerda.
 

4.3. Expressões Relacionais

[D] Uma "expressão relacional" é usada para comparar os valores de duas expressões aritméticas (ou os valores de duas expressões caractere).
 

[D] A comparação entre duas expressões aritméticas é feita através dos "operadores relacionais".
 

[C] O cálculo de uma expressão relacional produz um resultado lógico, com um valor "verdade" ou "falso". A expressão é interpretada como "verdade" se os valores dos operandos satisfazem a relação matemática especificada pelo operador, e "falso" se eles não satisfazem a relação.
 

[D] "Operadores Relacionais" são aqueles definidos na tabela abaixo:

Operador     Definição                                       Uso         Significado
---------------------------------------------------------------------------------------
(somente Fortran90 e posteriores)
==                igual a                                           A==B     A é igual a B ?
/=                 diferente de                                   A/=B      A é diferente de B?
<                  menor que                                     A<B       A é menor a B?
<=                menor ou igual                               A<=B     A é menor ou igual a B?
>                  maior que                                      A>B       A é maior que B ?
>=                maior ou igual                                A>=B     A é maior ou igual a B?
(todos)
.eq.               igual a (equal)                                A.eq.B    A é igual a B ?
.ne.               diferente de (not equal)                  A.ne.B     A é diferente de B?
.lt.                 menor que (less than)                     A.lt.B      A é menor a B?
.le.                menor ou igual (less or equal)         A.le.B      A é menor ou igual a B?
.gt.                maior que (greater than)                 A.gt.B      A é maior que B ?
.ge.               maior ou igual (greater or equal)     A.ge.B     A é maior ou igual a B?
 

4.4. Expressões Lógicas

[D] Uma expressão lógica é usada para realizar um cálculo lógico.
 

[D] Os "operadores lógicos" são (listamos somente os principais):

Operador      Definição    Uso         Significado
-----------------------------------------------------------------------------------------------------
.not.               negação     .not.A       se A é verdade, .not.A é falso
.and.              conjunção   A.and.B   para a expressão ser verdade, A e B precisam ser verdade
.or.                disjunção     A.or.B     para a expressão ser verdade, A ,ou B, precisa ser verdade
 

[E] Exemplos:

1) if(x1.eq.x.and.x2.eq.x1) then …

2) fim=.false.
    do while(.not.fim) …
         bloco de comandos
    enddo
 

[D] Regras para cálculos de expressões lógicas.

  1. Parênteses podem ser usados e são calculados antes.
  2. Os operadores aritméticos são calculados em segundo lugar.
  3. Os operadores relacionais são calculados em terceiro lugar.
  4. As operações lógicas são realizadas na seguinte ordem de precedência:
Operador       Precedência
------------------------------------------------------------------
.not.                mais alta
.and.               intermediária
.or.                 mais baixa