Esta linguagem processual foi a primeira de alto nível (1957)
Desenvolvido por IBM para o IBM 704.
Orientado à eficiência na execução.
Criou-se a definição padrão da linguagem no 66.
Outras versões:
FORTRAN 77
FORTRAN 90
Um simples exemplo
Características
Tipos de dados suportados:
Numéricos (inteiros, reais, complexos e dupla precisão).
Booleanos (logical)
Consertos
Cadeias de caracteres
Arquivos
FORTRAN 90 já é estruturado, e não requer sentenças GOTO.
Somente admite dois âmbitos para as variáveis: local e global.
Vejamos agora um exemplo mais extenso:
Variáveis e constantes
FORTRAN não é sensível à maiúsculas e minúsculas. Os nomes de variáveis têm de 6 a 31 caracteres máximos e devem começar por uma letra. Os alvos são significativos.
Declaração explícita de variáveis.
Inteiras (I-N), ou resto reais. (modifica-se com IMPLICIT).
Ponteiros: nos primeiros FORTRAN não há ponteiros e todas as variáveis se armazenam em memória estática. Em FORTRAN 90 declaram-se INTEGER, POINTER::P.
Para memória dinâmica ALLOCATE e DEALLOCATE
Tipos de dados
Arrays, podem ter até 7 dimensões e se salvam por colunas.
REAL M(20),N(-5:5)
DIMENSION I(20,20) (tipo por nomenclatura implícita)
Cadeias de caracteres, o primeiro caractere é o 1, o operador // permite concatenar cadeias.
CHARACTER S*10, T*25
Armazenamento de dados. Usa-se COMMON para dados compartilhados e EQUIVALENCE quando armazenamos uma variável com dois possíveis tipos na mesma posição de memória (como união em C). Usa-se DATA para iniciar dados estáticos.
DATA X/1.0/,Y/3.1416/,K/20/
Tipos definidos pelo usuário, com TYPE <nome>... END TYPE <nome>
Controle de seqüência
O conjunto de estruturas de controle é limitado:
Expressões, prioridade de operadores
Enunciados
Atribuição, quando se faz entre cadeias existe ajuste de tamanho com alvos ou abreviações.
Condicional. Permite IF ELSE IF... Para seleção múltipla SELECT CASE CASE.....CASE DEFAULT.... END SELECT
Repetição. DO....END DO
Nulo, usa-se somente para a etiqueta. CONTINUE.
Controle de subprogramas. CALL invoca ao subprograma e RETURN devolve um valor ao programa que chama.
Construções propensas a erros: GOTO.
Entrada e saída
Tipos de arquivos:
Seqüenciais
De acesso direto
Comandos: READ, WRITE, PRINT, OPEN , CLASE, INQUIRE (propriedades ou estado do arquivo) REWIND e ENDFILE (para encontrar o ponteiro do arquivo).
Para o tratamento de exceções nas sentenças READ/WRITE pode-se introduzir a posição da rotina de tal tratamento (ERR=90).
Subprogramas
Há três tipos de subprogramas:
Function, devolvem um só valor de tipo numérico, lógico ou cadeia de caracteres.
Subroutine, devolve valores através de variáveis não locais COMMON.
Função de enunciado, permite calcular somente uma expressão aritmética ou lógica.
FN(X,Y)=SIN(X)**2-COS(Y)**2
Gestão de armazenamento.
As variáveis são locais ou globais (COMMON)
Recursividade: RECURSIVE FUNCTION FACTORIAL(X)
Parâmetros de subprograma. Passo por referência.
Abstração e encapsulação. Avaliação da linguagem
A abstração é possível mediante os subprogramas e o uso de variáveis COMMON, embora seu uso está propenso a erros.
FORTRAN continua sendo utilizado no âmbito científico e é muito eficiente realizando cálculos.
A estrutura do programa costuma ser difícil de entender.
Em FORTRAN 90 se inclui a recursividade e a memória dinâmica.
As etiquetas das sentenças já não são necessárias, nem o GOTO, pois se transformou em uma linguagem estruturada.
O aspecto dos programas continua sendo de processamento por lotes