Revisão 01 — Fortran

Revisão 01 — Fortran

Adaptado do original: Cristian da Silva – Ideiasprogramadas.com.br

Fortran é uma linguagem de programação de alto nível, desenvolvida entre os anos 1954 e 1958 por uma equipe liderada pelo engenheiro John Backus na IBM. O Fortran permite traduções quase diretas de fórmulas, por meio de simbologia de variáveis e operadores algébricos.

A linguagem Fortran ocupa um lugar de destaque em algumas áreas, por exemplo aquelas voltadas para problemas que possam ser formulados matematicamente. Em particular podemos citar os problemas nos campos da física, da engenharia, da estatística e da matemática. A NASA, por exemplo, usa a linguagem Fortran para manejar satélites e desenvolver softwares, já as agências e centros de monitoramento do clima a utilizam para desenvolver modelos numéricos de previsão de tempo e clima.

Conceitos básicos da linguagem Fortran

Comentários em Fortran podem ser feitos com a letra C na primeira coluna (isso tem que ser adicionado no inicio da linha) ou o ponto de exclamação ! em qualquer coluna. É interessante notar que a linguagem é a insensível à caixa (Case Insensitive), ou seja a linguagem Fortran não faz qualquer definição entre letras minúsculas ou maiúsculas (MASCOTE="Pig" é o mesmo que mascote="Pig").

Outro conceito interessante e essencial é com o inicio de cada programa escrito com a linguagem, todo e qualquer ,inicio de programa Fortran deve ser iniciado com program nome_do_programa e devem ser terminados com o end.

Declarações de variáveis podem ser do tipo inteiro, real, alfanuméricos ou literais, sempre deve ser declarada antes de ser usada. As declarações de matrizes e vetores deve-se indicar suas dimensões logo após o nome da variável, Exemplo, matriz(4,3) incida que a matriz de 4 linhas e 3 colunas.

Tipos de variáveis suportadas pelo Fortran

Inteiras (INTEGER)

  • Reais real
  • Alfanuméricas character
  • Lógicas logical

Operadores

Atribuição

  • Recebe =

Operadores Literais

  • Concatenação //

Operadores Aritméticos

  • Soma +
  • Subtração -
  • Multiplicação *
  • Divisão /
  • Potenciação **

Operadores Relacionais

  • Menor que .LT. (less than)
  • Menor ou igual que .LE.(less than or qual to)’
  • Igual que .NE. (note qual to)
  • Diferente que .GT.(greater than)
  • Maior ou igual que .GE. (greater than or equal to)

Exemplo de utilização desses casos de operadores racionais:

A .NE. B (isso vai retornar verdadeiro .true.)
"NOME" .EQ. "Joao" (Isso vai retornar .false.)

Operadores Lógicos

  • Junção .AND.
  • Disjunção .OR.
  • Negação .NOT.

Prioridades

Quadro 1 – Prioridade dos operadores em Fortran

Operador Prioridade
** 1
* 2
/ 2
+ 3
- 3
.eq. 4
.ne. 4
.gt. 4
.ge. 4
.lt. 4
.not. 5
.and. 6
.or. 7

Funções trigonométricas básicas da biblioteca (built-in)

Quadro 2 – unções trigonométricas básicas da biblioteca em Fortran

Nome Definição Tipo do argumento Tipo da Função
\[sin(x)\] Seno(radianos) * \[\mathbb{R} \] ou \[\mathbb{C} \] \[\mathbb{R} \]
\[cos(x)\] Cosseno(radianos) * \[\mathbb{R} \] ou \[\mathbb{C} \] \[\mathbb{R} \]
\[tan(x)\] Tangente(radianos) \[\mathbb{R} \] \[\mathbb{R} \]
\[asin(x)\] Arcoseno(radianos) ** \[\mathbb{R} \], \[ \mid x \mid < 1\] \[\mathbb{R} \]
\[acos(x)\] Arcocoseno(radianos) *** \[\mathbb{R} \], \[ \mid x \mid < 1\] \[\mathbb{R} \]
\[atan(x)\] Arcotangente(radianos) ** \[\mathbb{R} \] \[\mathbb{R} \]
\[sinh(x)\] Seno Hiperbólico(radianos) \[\mathbb{R} \] \[\mathbb{R} \]
\[cosh(x)\] Cosseno Hiperbólico(radianos) \[\mathbb{R} \] \[\mathbb{R} \]
\[tanh(x)\] Tangente Hiperbólica(radianos) \[\mathbb{R} \] \[\mathbb{R} \]

* Se \[x\] for complexo, a parte real (\[\mathbb{R} \]) é assumida como valor em radianos
** Retorna valores na faixa \[[-\pi/2, \pi/2]\]
*** Retorna valores na faixa \[[0, \pi]\]

Exemplos

Exemplos de programas básicos com a linguagem Fortran com todos os conceitos vistos acima.

Todos os exemplos citados abaixo podem ser testados no link Compile and Execute

Um Olá Mundo simples

[code lang=Fortran]
program olamundo
print*, 'Olá Mundo!!!'
end
[/code]

Exemplo com todas as funcionalidades:

[code lang=Fortran]
program demonstracao
integer k, n, m
real a, b, c
character*2 estado
character*3 codigo
character*5 tudo
n = 1
m = 3
k = m+n
a = 2.5
b = 1.0
c = a+b
print*, 'Valor das variaveis k e c:'
print*, 'k = ',k,' c = ', c
print*
estado = 'SP'
codigo = 'OLA'
tudo = estado//codigo
print*
print*, 'Variavel tudo concatenada = ', tudo
stop
end
[/code]

Exemplo da estrutura if:

[code lang=Fortran]
program resultadonota
real nota
print*, 'Qual foi a nota da sua prova?'
read*, nota
if(nota .ge. 9.00) then
print*, 'Muito bem!!!'
else if (nota .ge. 7.00) then
print*, 'Você foi bem!'
else if (nota .ge. 5.00) then
print*, 'Você tem que melhorar um pouco!'
else
print*, 'Foi muito mal na prova!!!'
end if
stop
end
[/code]

Comando do(faça). Exemplo de loop:

[code lang=Fortran]
program loop
implicit none
integer m, n
parameter (m=3, n=2)
integer i, j
print*, ' i j '
do 10 i=1,m
print*, 'Primeiro do ', i
do 20 j=1,n
print*, 'Segundo do ',i,j
20 continue
10 continue
stop
end
[/code]

Exemplo de do while:

[code lang=Fortran]
program radiacao
implicit nome
real radse, fatseg, nivrad, radmim
parameter(radseg=0.466, fatseg=10.0)
integer dia
print*, 'entre com o nivel de radiacao do dia'
read*, nivrad
print*, 'n.dias radiacao'
radmin=raseg/fatseg
do while(nivrad .gt. radseg) then
print*, dia,nivrad,' inseguro'
else
print*, dia, nivrad, ' Seguro'
end if
dia=dia+3
nivrad=nivrad/2.0
end do
end
[/code]

Exemplo de leitura (read):

[code lang=Fortran]
program ler
integer a,b,c
print*, 'entre com os valores de a b c'
read(*,*) a,b,c
sum=a+b+c
stop
end
[/code]

Exemplo de Escrita (write):

[code lang=text]
program escrever
integer a,b,c
print*,'entre com os valores de a b c´
read(*,*)a,b,c
sum=a+b+c
write(*,*)a,b,c,sum
stop
end
[/code]

Referências

  1. CRISTO, Helder Pereira. Guia Básico de Programação em Linguagem Fortran 77 e 90: Programação em Linguagem Fortran. Belo Horizonte, 2003.
  2. ABOUT Fortran TUTORIAL. Disponivel em . Acesso em 03/05/2017.

IDPFPT-2666

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*