CAPÍTULO 2: F90/2 – VARIÁVEIS E ATRIBUIÇÕES

Neste capítulo aprenderemos a ler informações numéricas, fazer cálculo com os números lidos e imprimir os resultados obtidos. Aprenderemos também como tornar nosso programa claro de forma que outra pessoa possa entendê-lo, escolhendo convenientemente, as “palavras” com as quais iremos trabalhar, bem como “comentários” que iremos fazer ao longo do programa.

O conceito principal a ser aprendido neste capítulo é idéia de variável. Variável é uma posição de memória na qual iremos armazenar (guardar) os valores lidos ou atribuídos. Essa variável deverá ser identificada através de um nome. O nome ou identificador de variável é uma palavra com tamanho de até 31 caracteres entre letras e números, sendo que, o primeiro caractere da palavra deve ser obrigatoriamente uma letra.

As variáveis mais comuns podem ser de quatro tipos, a depender da espécie de dados que elas devem guardar.

Por exemplo:

·        50 é um valor do tipo inteiro, portanto deve ser armazenada numa variável do tipo inteiro (INTEGER);

·        27.5 é um valor do tipo real, portanto deve ser armazenada numa variável do tipo real (REAL);

·        “UFCG” é valor formado por um conjunto de caracteres literais, portanto deve ser armazenada numa variável de caracteres (CHARACTER).

·        .TRUE. é um valor do tipo lógico, portanto deve ser armazenada numa variável lógica (LOGICAL).

Quando durante o programa de estabelece que uma variável é de um determinado tipo, por exemplo, que a variável é do tipo real,  então ela será sempre do tipo real, embora o valor numérico do seu conteúdo possa variar durante o programa.

COMO ESPECIFICAR O TIPO DE UMA VARIÁVEL

 Declaração

São através de declarações feitas no inicio do nosso programa que o computador sabe o tipo de variável com a qual vamos trabalhar.

Por exemplo, para dizer que a variável BASE é do tipo real, escrevemos:

 

REAL :: BASE

Para declarar ALTURA como uma variável inteira, escrevemos:

 

INTEGER :: ALTURA

Para declarar NOME como uma variável cadeia de caracteres, escrevemos:

 

CHARACTER(LEN = 30) :: NOME

Para declarar RESPOSTA como uma variável do tipo lógica, escrevemos:

 

LOGICAL :: RESPOSTA

Quando temos mais de uma variável inteira ou real a declarar, escrevemos todas elas separando uma da outra através de vírgulas, ou seja:

 

REAL :: BASE, AREA, PI

INTEGER :: ALTURA, RAIO

CHARACTER(LEN = 30) :: NOME, ENDERECO, CURSO

LOGICAL :: RESPOSTA, RESULTADO

Vamos aprender agora dois tipos de comandos FORTRAN que executarão tarefas específicas quando o programa for operado.Estes são “comandos executáveis” assim como o comando PRINT, visto no capítulo anterior. Eles são o comando de atribuição e o comando de leitura a partir do teclado.

COMANDO DE ATRIBUIÇÃO

Formato:

<identificador de variável> = <expressão>

 

<identificador de variável> - o nome definido para a variável na sua declaração.

<expressão> -  é uma expressão que pode conter constantes, variáveis ou expressões aritméticas.

No capítulo anterior aprendemos a escrever expressões aritméticas do tipo:

5 + 3 / 2. * 27

(9 + 2.7) * 3

Agora aprenderemos também expressões como:

 

2 * PI * RAIO

PI * RAIO ** 2

ou seja, expressões que envolvem constantes e variáveis.

Exemplo: Calcular a área de um triângulo de base e altura quaisquer.

 

READ (*, *) BASE, ALTURA

ÁREA = BASE * ALTURA / 2

Neste comando de atribuição o valor numérico da variável AREA dependerá dos valores lidos pelo comando READ acima.

Nós também podemos atribuir diretamente valores à variáveis e depois operarmos com elas.

Exemplo: Calcular a área de um círculo cujo raio é igual a 2 cm.

REAL :: RAIO, PI ,AREA

RAIO = 2.0

PI = 3.14159

AREA = PI * RAIO ** 2

 A atribuição direta foi feita às variáveis PI e RAIO enquanto que a variável AREA tem seu valor atribuído através da através da expressão PI * RAIO ** 2.

VALORES ASSUMIDOS POR UMA VARIÁVEL AO LONGO DE UM PROGRAMA

Veremos agora um exemplo de programa ilustrando os valores que algumas variáveis assumem durante a execução de cada comando deste programa:

 

 

 

VALOR DAS VARIÁVEIS NA MEMÓRIA

LINHA

PROGRAMA

X

Y

Z

1

PROGRAM EXEMPLO

 

 

 

2

   IMPLICIT NONE

 

 

 

3

   INTEGER :: X, Y, Z

-

-

-

4

   X = 5

5

-

-

5

   Y = 7

5

7

-

6

   Z = X + Y

5

7

12

7

   X = X + 5

10

7

12

8

   X = Z

12

7

12

9

   Y = Z

12

12

12

10

   X = X + Y + Z

36

12

12

11

   Y = Y * Z

36

144

12

12

   Z = (X + Y) / 12

36

144

15

13

   X = X / 5.

7

144

15

14

   WRITE (*, *) X, Y, Z

7

144

15

15

   STOP

 

 

 

16

END PROGRAM EXEMPLO

 

 

 

 

Notamos aqui que o conteúdo de cada variável foi se modificando a medida que os comandos iam sendo executados, o que nos leva a deduzir que nem sempre o conteúdo inicial de uma variável é igual ao conteúdo final da mesma.

COMANDO DE ENTRADA ATRAVÉS DO TECLADO

Nós não aprendemos a ler dados através do teclado na mesma ocasião em que aprendemos o comando de impressão porque, para a leitura era essencial que nós já tivéssemos em mente o conceito de variável, pois em Fortran nós lemos dados e os armazenamos em variáveis.

Formato:

READ (*, *) <lista de variáveis>

Se quisermos ler 3 valores numéricos deveremos ter um comando de leitura do tipo:

READ (*, *) X, Y, Z

Se os valores a serem informados para cada variável são respectivamente: -2, 5 e 3, deverá se digitada uma linha contendo os três valores numéricos separados por espaços em branco, tal como:

-2 5 30

Desta maneira, no comando READ, o primeiro número seria o conteúdo da variável X, segundo número seria o conteúdo da variável Y e, finalmente, o terceiro número seria o conteúdo da Z, ou seja:

X = -2

Y = 5

Z = 30

Exemplo: Calcular a média de um aluno em uma determinada disciplina, sabendo que ele realizou durante curso 3 provas.

 

PROGRAM MEDIA3

   IMPLICIT NONE

   REAL :: NOTA1, NOTA2, NOTA3, MEDIA

   WRITE (*, *) "Este programa calcula a média aritmética de &

                &3 notas de um aluno"

   WRITE (*, *) "Informe as 3 notas do aluno, separadas &

                &por brancos: "

   READ (*, *) NOTA1, NOTA2, NOTA3

   MEDIA = (NOTA1 + NOTA2 + NOTA3) / 3.

   WRITE (*, *) "NOTAS DO ALUNO NA DISCIPLINA: ", NOTA1, ", ", &

                & NOTA2, " e ",  NOTA3

   WRITE (*, *) "MÉDIA NA DISCIPLINA = ", MEDIA

   STOP

END PROGRAM MEDIA3

Se os valores informados para NOTA1, NOTA2 E NOTA3 forem respectivamente 8.0, 9.5 e 6.5, o programa acima produzirá a seguinte tela de saída:

 

Este programa calcula a média aritmética de 3 notas de um aluno

Informe as 3 notas do aluno, separadas por brancos:

8.0 9.5 6.5

NOTAS DO ALUNO NA DISCIPLINA:    8.00000    ,     9.50000     e     6.50000  

MEDIA NA DISCILPINA =   8.00000

COMENTÁRIOS DE UM PROGRAMA

Um dos fatores mais importantes num programa é a clareza com a qual é escrito. A necessidade de clareza se evidencia quando outra pessoa, que não o programador, se dispõe a ler esse programa. Esta pessoa será capaz de compreendê-lo melhor se o programa utilizar identificadores de variáveis com nomes relacionados com as operações que estão sendo realizadas. Por exemplo:

AREA = PI * RAIO ** 2

Para aumentar a clareza na leitura, o programador deve utilizar, convenientemente, comentários para explicar os comandos escritos cuja funcionalidade não é evidente ou para explicar detalhes do algoritmo utilizado.

ELABORAÇÃO DE COMENTÁRIOS

Um comentário pode vir em qualquer local do programa e tem a seguinte forma:

!<comentário>

 O caractere “!” pode aparece em qualquer posição em uma linha de programa Fortran 90. Isto transforma qualquer seqüência de caractere que o siga, até o final desta linha,  um comentário. Exemplo:

! Isto é um comentário

REAL :: X, Y, Z   ! variáveis reais

AREA = PI * RAIO ** 2   ! cálculo da área do círculo

Podemos colocar tantos comentários quantos forem precisos. Não se deve comentar o obvio – comentários em excesso pode comprometer a clareza.

Exemplo: Calcular a área da base e o volume de uma caixa com as seguintes dimensões:

-         comprimento: 10 cm

-         largura: 2.5 cm

-         altura: 4 cm

!

! ESTE PROGRAMA CALCULA A ÁREA DA BASE E O VOLUME DE UMA CAIXA

! DE DIMENSÕES QUAISQUER

!

PROGRAM CAIXA

   IMPLICIT NONE

   ! DEFINIÇÃO DAS VARIÁVEIS

   REAL :: LARGURA, COMPRIMENTO, ALTURA , AREA_BASE, VOLUME

 

   ! LEITURA DAS DIMENSÕES DA BASE DA CAIXA

   WRITE (*, *) "INFORME AS DIMENSÕES DA BASE DA CAIXA &

                &(LARGURA E COMPRIMENTO): "

   READ (*, *) LARGURA, COMPRIMENTO

 

   ! CÁLCULO DA ÁREA DA BASE

   AREA_BASE = LARGURA * COMPRIMENTO

 

   ! LEITURA DA ALTURA DA CAIXA

   WRITE (*, *) "INFORME A ALTURA DA CAIXA: "

   READ (*, *) ALTURA

 

   ! CÁLCULO DO VOLUME DA CAIXA

   VOLUME = AREA_BASE * ALTURA

 

   ! IMPRESSÃO DOS RESULTADOS

   WRITE (*, *) "DIMENSÕES DA CAIXA: "

   WRITE (*, *) "     - LARGURA: ", LARGURA

   WRITE (*, *) "     - COMPRIMENTO: ", COMPRIMENTO

   WRITE (*, *) "     - ALTURA: ", ALTURA

   WRITE (*, *) "AREA DA BASE DA CAIXA: ", AREA_BASE

   WRITE (*, *) "VOLUME DA CAIXA: ", VOLUME

   STOP

   END PROGRAM CAIXA

TESTE DE PROGRAMA

É muito fácil cometer erros durante a programação. Por isso, quando estive elaborando um programa, devemos ter o cuidado de evitar tais erros, principalmente aqueles que aparecem com mais freqüência quando nós estamos iniciando a programa.

CUIDADOS ESPECIAIS

1)      Ler o programa codificado com atenção e verificar se:

a)      esqueceu a diretiva PROGRAM;

b)      esqueceu a diretiva IMPLICIT NONE;

c)      esqueceu de colocar vírgula após um PRINT *;

d)      colocou vírgula após um REAL ou um INTEGER;

e)      esqueceu de abrir ou fechar parênteses;

f)        esqueceu o comando STOP;

g)      esqueceu a especificação END PROGRAM seguida do nome do programa;

h)      usou o mesmo identificador (nome) para o programa e outra entidade tal como uma variável;

i)        esqueceu as aspas ou o apóstrofo, principalmente o último.

Exemplo:

WRITE (*, *) "VOLUME =, VOLUME   ! errado

WRITE (*, *) "VOLUME = ", VOLUME   ! correto

j)        variável não foi inicializada - quando utilizamos uma variável que não recebeu um valor através do comando READ ou de um comando de atribuição;

k)      variável não foi declarada - quando utilizamos o identificador de uma variável que não foi declarada no inicio do programa através de um REAL, INTEGER, LOGICAL, CHARACTER ou outro tipo válido do Fortran;

2)      Ao digitar, verificar se:

a)      os comentários iniciam com “!”;

b)      se não confundiu:

i)         a letra I com número l;

ii)       a letra O com número 0;

iii)      a letra l com número 1.

Exercícios

1)      Fazer um programa Fortran que leia a massa e a velocidade de uma partícula, calcule sua energia cinética e imprima o resultado.

2)      Fazer um programa Fortran que leia os comprimentos dos catetos de um triângulo retângulo, calcule sua hipotenusa e imprima o resultado.

3)      Fazer um programa que calcule e imprima os valores das funções abaixo, para um valor de x lido.

y = x2 – 5x + 6

z = 2x – 4

4)      Fazer um programa que leia um determinado valor de ângulo (em graus), transforme-o em radianos e imprima estes dois valores.

5)      Fazer um programa que receba um  tempo decorrido em segundos e transforme-os em um tempo decorrido em horas minutos e segundos (HH:MM:SS).

6)      Faça um programa Fortran que leia um valor inteiro de até cinco dígitos e o separe em seus dígitos componentes (dezena de milhar, unidade de milhar, centena, dezena e unidade).

7)      Faça um programa Fortran que leia um valor inteiro de quatro dígitos, representando um número binário (composto de 0’s e 1’s) e mostre o valor decimal correspondente a esse binário.

8)      Faça um programa Fortran que a partir da altura de uma pessoa, calcule o seu peso ideal, para os casos da pessoa ser homem ou mulher.

Peso ideal para homem = 72.7 x altura – 58

Peso ideal para mulher = 62.1 x altura – 44.7

9)      Faça um programa Fortran que leia os coeficientes (a, b e c) de uma equação do segundo grau e calcule as suas raízes x1 e x2. Só serão digitados coeficientes que levem à raízes reais.

10)   Faça um programa Fortran que leia a média dos mini-testes, a média das listas de exercícios, a média das provas e a nota da prova final de um aluno e calcule pelo nosso método de avaliação (ver na página WEB): quanto é a média parcial, quanto era a nota mínima para a final e quanto foi sua média final.