Capítulo 3: Constantes, Variáveis e Conjuntos

3.1 Introdução

[C] Este capítulo trata de definir corretamente os componentes básicos dos comandos Fortran. Alguns já vimos no capítulo anterior, como "itens de sintaxe".
 

[D] "Constantes" são valores fixos, tais como números. Estes valores não podem ser alterados pelos comandos do programa. Exemplos: 3.0, 3, 'palavra'.
 

[C] "Variáveis" são nomes simbólicos que representam valores armazenados na memória do computador. Estes valores podem ser alterados pelos comandos do programa.
 

[D] "Conjuntos" são grupos de variáveis, cujos valores são armazenados adjacentemente e podem ser referenciados individualmente através de um nome simbólico com um índice. São conhecidos também como "variáveis indexadas" (VI).
 

[D] Um "operador" é um símbolo específico para uma determinada operação. Exemplo: + (soma).
 

[D] "Expressões" são combinações de constantes, variáveis, elementos de conjuntos e operadores. Exemplo: 3.0*var1+var2.
 

[E] No "comando de atribuição" abaixo:

    fat = a(3) * 4 * (B + 2.5)

temos a "expressão" a(3)*4*(B+2.5). Nesta expressão temos duas "constantes" (4 e 2.5), uma "variável" (B), uma variável indexada (a(3)), dois "operadores" (* e +) e parênteses. Vemos também que temos uma constante inteira (4) e uma real (2.5); as variáveis a(3) e B dependem de como tenham sido definidas.
 

[E] No trecho de programa abaixo:

    print *, 'digite a velocidade inicial:'
    read *, v0y
    g=9.8
    dt=0.1
    do i =1,np
        t(i)=i*dt
        y(i)=v0y*t(i)-0.5*g*t(i)**2
    enddo
    ...
    do i=1,np
        print *,t(i),y(i)
    enddo

vemos o uso das "variáveis indexadas" t(i) e y(i).
 

3.2. Constantes

[D] Uma "constante" é uma quantidade fixa e invariável.
 

[D] O Fortran distingue três classes de constantes: numéricas, lógicas e cadeias de caracteres.
 

[D] As constantes numéricas que mais nos interessam são:

- Inteiras: para números inteiros decimais (escritos sem o ponto decimal).
- Reais: para números decimais (ou fracionários).
- Dupla precisão: para números reais com mais dígitos significativos que o normal.
- Complexos: para números complexos.
 

[D] As constantes lógicas podem ser:

- .true. : representa o valor "verdade".
- .false. : representa o valor "falso".
 

[D] As constantes "cadeias de caracteres" são uma seqüência de caracteres alfanuméricos e/ou especiais sempre entre aspas.
 

[C] O comando PARAMETER pode ser usado para associar um nome simbólico a uma constante.
 

3.2.1. Constantes Inteiras

[C] O intervalo máximo de valores possíveis para constantes inteiras varia de máquina para máquina. O menor intervalo é de [-9999,+9999].
 

3.2.2. Constantes Reais

[D] Uma constante real é uma cadeia de dígitos escrita com ponto decimal, com um expoente ou com ambos, expressando um número real. Ex.: 0.123, 123.0E-03, -123.0E-03 .
 

[C] O intervalo de valores possíveis para o expoente, bem como a precisão do número (quantidade máxima de dígitos significativos) varia de máquina para máquina. O menor intervalo conhecido é de 10-28 a 10+28. A precisão do número é tipicamente no mínimo de 7 dígitos.
 

3.2.3. Constantes Caracteres

[C] O comprimento máximo de uma cadeia de caracteres geralmente não é menor que 255.
 

3.3. Variáveis

[D] Uma variável possui um nome e um tipo, podendo assumir diversos valores.
 

[D] Regras para nomes de variáveis:

  1. Os nomes devem começar com uma letra.
  2. Os nomes podem conter letras e dígitos.


[D] Tipos de variáveis: inteiras, reais, dupla precisão, complexas, lógicas e caracteres, que possuem características similares às constantes.
 

3.3.1. Variáveis Inteiras

[D] Se não for usado o comando IMPLICIT NONE, por convenção, toda variável numérica cujo nome inicia por uma das letras i, j, k, l, m ou n, é uma variável inteira.
 

[C] As variáveis inteiras podem assumir valores na mesma faixa das constantes inteiras.
 

3.3.2 Variáveis Reais

[D] Se não for usado o comando IMPLICIT NONE, por convenção, toda variável numérica cujo nome não inicia por uma das letras i, j, k, l, m ou n, é uma variável real.
 

[C] As variáveis reais podem assumir valores na mesma faixa que as constantes reais.
 

3.3.3. Variáveis Caractere

[D] Uma variável caractere é uma variável que é declarada como caractere através dos comandos de especificação explícita ou do comando IMPLICIT. A quantidade de caracteres numa variável caractere é especificada quando da declaração da variável caractere.
 

[E] Veja os seguintes exemplos de comandos de especificação de variáveis caractere:

  1. implicit character*28 (y,z)
  2. character*36 linha
  3. character soma*15,matriz*64


Temos que linha, soma e matriz são especificadas como variáveis caractere contendo 36, 15 e 64 caracteres, respectivamente. Além disso, todas as variáveis cuja primeira letra é y ou z são também declaradas como variáveis caractere contendo 28 caracteres cada uma.
 

3.4. Conjuntos

[C] Nesta seção nos ocuparemos dos conjuntos de variáveis, ou variáveis indexadas (VI), já definidos no início deste capítulo.
 

[C] Uma VI possui um nome, um tipo e um conjunto de índices (ou um único índice).
 

[D] "Vetor" é uma VI que possui um único índice, e por isto é dito uma VI unidimensional.
 

[E] A variável t no trecho de programa abaixo é um vetor:

    dimension t(10)
    t(1)=0.1
    t(2)=0.2
    t(3)=0.3
    ...
    t(10)=1.0
 

[D] "Matriz" é uma VI que possui dois conjuntos de índices e por isto é dita bidimensional.
 

[E] A variável a no trecho de programa abaixo é uma matriz:

    dimension a(3,3)
    do i = 1,3
        do j = 1,3
            a(i,j) = 0.0
        enddo
    enddo

- Representação Matricial da variável a:

- Forma de armazenamento na memória:
 
... a11  a21 a31   a12 a22 a32 a13 a23 a33 ...

[D] Dizemos que uma VI é uma matriz n-dimensional quando esta possui um conjunto de n índices.
 

[D] No Fortran 77, uma VI não podia possuir mais do que 7 índices.
 

3.4.1 Declaradores de Conjuntos

[CF] Comando DIMENSION: permite especificar uma determinada variável como sendo uma variável indexada.
 

[E] Exemplos do uso do comando DIMENSION:

1) dimension a(8)
onde 8 é número máximo de diferentes a's.

2) dimension a(8),b(5,6)
sendo que 5 e 6 são os valores máximos do primeiro e segundo índices (que resultam em 30 diferentes b's).

3) integer a
    real b
    dimension a(8),b(5,6)
sendo que o vetor a é um vetor de números inteiros e b uma matriz de números reais.

4) dimension c(0:10),d(1:4,1:3,1:5)
sendo que:    c = vetor de 11 elementos, sendo o primeiro c(0) e o último c(10);
            d = matriz tridimensional de 60 elementos, sendo que o primeiro elemento é d(1,1,1) e o último é d(4,3,5)