Fortran

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Fortran as PDF for free.

More details

  • Words: 5,173
  • Pages: 21
UNIVERSIDADE DE CAXIAS DO SUL

FORmula TRANslation - FORTRAN

Felipe Pires Teles Sistemas de Informação Paradigmas de Linguagem de Programação

Vacaria, 30 de Junho de 2005

Introdução O objetivo deste trabalho é dar uma introdução rápida às características mais comuns da programação do FORTRAN 77 e do FORTRAN 90. Isto não é uma referência completa da linguagem de programação nem muito menos ensina a programar.

1 – Domínio da Linguagem: 1.1. O que são linguagens de programação? São notações usadas para especificar e organizar computações; São ferramentas para se escrever software; Foram inventadas com objetivo de facilitar o uso das máquinas na criação e especificação de soluções para problemas de software. 1.2. Linguagens de Baixo e Alto Nível Internamente o computador só trabalha com números binários. Programas devem ser especificados em linguagem de máquina para que o computador o interprete e o execute. Linguagem de máquina é a linguagem nativa de computadores, sendo de baixíssimo nível e dependente de máquina, onde programas são expressos somente por números. Linguagem de máquina é praticamente ilegível para humanos, mas é o que o computador entende. Linguagens Assembly são linguagens de baixo nível que utilizam nomes e símbolos ao invés de códigos de instruções de máquina. Linguagens Assembly obviamente são também dependentes de máquina, mas criam um nível de abstração sobre a linguagem de máquina, através de nomes e símbolos, que tornam a tarefa de programação um pouco menos árdua. Linguagens de alto nível são aquelas que são independentes de máquina Exemplos de linguagens de alto nível: FORTRAN, Algol, COBOL, Pascal, Python, C 1.3. Principais Paradigmas de Linguagens de Programação O que é paradigma? Algumas linguagens criadas durante a história da evolução das linguagens introduziram novas formas de se pensar sobre programação, resultando em formas distintas de modelagem de soluções para problemas de software. Exemplos são FORTRAN (imperativas), LISP (funcionais), Simula (orientadas a objetos) e Prolog (lógicas). Outras linguagens são o resultado da evolução de linguagens mais antigas, muitas vezes mesclando características de diferentes linguagens existentes. Por exemplo, C++ é uma evolução do C com características de orientação a objetos, importadas de Simula. 1.3.1. Linguagens Imperativas As linguagens imperativas são orientadas a ações, onde a computação é vista como uma seqüência de instruções que manipulam valores de variáveis (leitura e atribuição). Foram criadas principalmente pela influência da arquitetura de computadores preponderante Von Neumann, onde programas e dados são armazenados na mesma memória. Instruções e dados são transmitidos da CPU para a memória, e vice-versa. Resultados das operações executadas na CPU são retornadas para a memória. Seus conceitos principais são as variáveis, que representam simbolicamente células (ou posições) de memória, declarações de atribuição (Exemplo do Pascal: x := 10), baseadas nas operações de transmissão de dados, e a forma iterativa de declarações de repetição (Exemplo do C: while).

Operandos em expressões são enviados da memória para a CPU, e o resultado da avaliação dessas expressões é transferido da CPU para a memória, representada pela variável do lado esquerdo de uma declaração de atribuição. Repetição é feita por iteração, porque as instruções em uma arquitetura Von Neumann são armazenadas em posições adjacentes de memória, tornando a iteração mais eficiente, mas desencorajando o uso de recursão para repetição. Exemplos de linguagens imperativas: FORTRAN, BASIC, COBOL, Pascal, C, Python, ALGOL, Modula. Linguagens Imperativas Não Estruturadas FORTRAN foi uma das primeiras linguagens de alto nível imperativas, destinada inicialmente ao desenvolvimento de aplicações científicas. As versões originais de FORTRAN possuíam a instrução goto necessária para determinar a repetição e a seleção de execução de instruções, o que dificultava bastante a leitura e o acompanhamento da execução de um programa escrito em FORTRAN. 2 – Histórico FORTRAN é a mais antiga das linguagens de programação de alto nível podendo ser considerada a mãe de quase todas linguagens de programação moderna. Foi criada em 1956 por Jonh Backus como a 1ª tentativa de padronizar a programação de computadores que era feita até aquele momento apenas em assembly. FORTRAN foi desenvolvida inicialmente para resolução de problemas científicos e matemáticos, sendo muito utilizada ainda nos meios técnicos-científicos. O primeiro compilador FORTRAN representou um marco na história da Computação, no tempo em que computadores tinham bem pouca memória (da ordem de 15 kb mais ou menos), eram bastante lentos e tinham Sistemas Operacionais primitivos (quando tinham um). Naquele tempo, a única forma conhecida de se programar um computador era através da linguagem Assembly. Os pioneiros do FORTRAN não tinham idéia do potencial da linguagem que estavam criando, e nem sequer sonhavam em escrever programas em linguagem de alto nível, mas sem querer, eles criaram a primeira Linguagem de Alto Nível bem sucedida. O primeiro compilador FORTRAN foi projetado e escrito em 1954-1957 pela IBM por um grupo liderado por John W. Backus e contou com a participação de excelentes programadores como Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Richard Goldberg, Lois Haibt and David Sayre. Backus também foi responsável pelo projeto do primeiro computador a usar o FORTRAN, o IBM 704. A invenção ficou famosa rapidamente, o que não era de se admirar, visto que programas que levavam semanas para serem escritos poderiam agora ser feitos em questão de horas, além de exigir muito menos trabalho. Outra grande vantagem da invenção era a portabilidade dos programas escritos em FORTRAN. A linguagem foi adotada pelas comunidades militares e usada extensivamente em programas espaciais e projetos militares. Como os computadores naquele tempo eram usados quase que exclusivamente para cálculos e por pessoas do meio acadêmico e científico, a linguagem foi desenvolvida sem praticamente nenhuma preocupação com estruturação lógica ou clareza em sua codificação que facilitasse a escrita de programas grandes, mesmo porque não havia programas realmente grandes naquela época. FORTRAN passou por algumas grandes revisões:

• FORTRAN IV (FORTRAN 66) Esta versão foi feita em meados da década de 60 e foi a primeira padronização da linguagem, que gerou um grande número de versões diferentes a partir dela. Programas escritos em FORTRAN 66 são raros hoje em dia. • FORTRAN 77 Uma grande reformulação foi feita em meados da década de 70 e várias novas características foram adicionadas à versão anterior. A versão FORTRAN 77 foi o grande apogeu dessa linguagem de programação por assim dizer e há mais programas escritos nesta versão do que em qualquer outra de suas revisões, mesmo as mais recentes. • FORTRAN 90 No final da década de 80, a versão 90 do FORTRAN foi elaborada, embora outras linguagens de programação mais modernas tivessem tomado conta do mercado, quase que substituindo completamente sua utilização. Muitas características novas foram acrescentadas a esta versão, como por exemplo recursão, ponteiros e o tipo de dado TYPE, o qual permite uma maior abstração dos dados. Além disso, algumas das restrições anteriores foram retiradas. • FORTRAN 95, F A versão mais recente do FORTRAN trás como novidade nessa linguagem a possibilidade de se trabalhar orientado a objetos e várias outras características novas. Alguns críticos argumentam que essa é uma tentativa de criar uma linguagem moderna de programação totalmente baseada em FORTRAN. 2.1 – Características O código FORTRAN foi por muito tempo estruturado em linhas que poderiam conter no máximo 72 caracteres cada um. Essa restrição vinha do tempo em que o código FORTRAN era inserido nos computadores através de cartões, os quais só comportavam 80 caracteres por linha. Assim, se a linha de comando precisa de mais de 70 caracteres, esta é dividida em duas ou mais linhas utilizando um caracter especial para indicar sua divisão (* ou às vezes &) na sexta posição da linha. É digno de notar que programas em FORTRAN são mais bem manipulados por programadores com muita experiência. Para programadores que só trabalham com linguagens de programação modernas, um primeiro contato com FORTRAN pode ser traumático. Devido a limitações em compiladores antigos, programas podem ser arquivos bem grandes. Programas de 200.000 linhas ou mais são comuns. O código é pesado e raramente bem estruturado. São poucos os comentários. Grande parte das advertências a respeito do uso da ferramenta GO TO vem da experiência com o código FORTRAN. Programas em FORTRAN começam com a palavra-chave PROGRAM seguido do nome do programa (max 6 caracteres no caso do FORTRAN 77). FORTRAN não é case sensitive, isso para diferenciar a prática comum de apenas usar letras maiúsculas para as linhas de código,e também por que antigamente, muitos sistemas não suportavam o uso de letras minúsculas. Obs.: o conteúdo de variáveis character é case sensitive. O caracter "c" no começo da linha indica que a partir dali se encontra um comentário. Como não são permitidas linhas em branco, linhas apenas com o " c" inicial é utilizado para criar espaços em branco nos programas. No caso do FORTRAN 90, usa-se a "!" que também pode ser usado no fim do comentário.

Há duas maneiras de usar variáveis em FORTRAN: elas podem ser declaradas da mesma forma que as linguagens de alto nível atual ou podem ser declaradas implicitamente, isto é, as variáveis declaradas terão seu tipo baseado no primeiro caracter de seu nome. Usando essa técnica, todas as variáveis iniciadas com I,J,K,L,M são por default variáveis inteiras e variáveis iniciadas com outras letras serão variáveis do tipo float. Para desativar esse padrão, o usuário deve iniciar a declaração de variáveis com as palavras-chave Implicit none. Variáveis em FORTRAN 77 podem ter no máximo 6 caracteres e conter caracteres de a a z e números de 0 a 9, mas devem sempre iniciar com um caractere. Essas e outras regras tornam programas em FORTRAN 77 difíceis de se ler. O FORTRAN 90 eliminou essa restrição. Página 3 de 3 A maior vantagem de se usar a linguagem FORTRAN é porque esta é padronizada pela ANSI e ISO. Conseqüentemente, se seu programa é escrito em ANSI FORTRAN 77, ele rodará em qualquer computador que tiver o compilador 77. Além disso, programas FORTRAN são portáveis para várias plataformas diferentes. 2.2 – A Linguagem Tipos de Dados Em FORTRAN os tipos de dados são declarados assim: • Inteiros: INTEGER a, b, c • Reais: REAL a, b, c (precisão simples - 8 dígitos não significativos) DOUBLE PRECISION a, b (precisão dupla - 16 dígitos não significativos) • Caractere: CHARACTER a, b, c • Lógicos: LOGICAL a, b, c (pode assumir .true. ou .false.) Operadores • Aritméticos: + (adição) - (subtração) * (multiplicação) / (divisão) ** (potência) ! (comentarios) • Lógicos:

.AND. .OR. .NOT. Ex: IF(x>5 .AND. x<10) • Relacionais: == (igual) < (menor) <= (menor igual) > (maior) >= (maior igual) /= (diferente) Funções de Biblioteca Função Matemática seno a cosseno a tangente a raiz a |a| Resto de a/b log a

Código FORTRAN sin(a) cos(a) tan(a) sqrt(a) abs(a) amod(a,b) log10(a)

em

Estrutura do IF A estrutura do comando IF é a seguinte: IF (condição) THEN comandos 1 ELSE comandos 2 END IF Loop Do A estrutura do Loop DO é a seguinte: DO i=N1 , N2 , N3 comandos END DO • Onde N1 é o valor inicial da variável i • Onde N2 é o valor final da variável i • Onde N3 é o valor de quanto o valor de i vai ser incrementado ou decrementado

Ex: DO i=0 , 10 , 2 END DO Estrutura do SELECT A estrutura do SELECT é a seguinte: SELECT CASE (expressão) CASE (opção escolhida) Comandos CASE (opção escolhida) Comandos CASE DEFAULT Comandos END SELECT Comandos Básicos PRINT*, 'frase' – Serve para imprimir na tela Ex: PRINT*, 'Alô Mundo!!' READ*, variável – Serve para fazer a leitura dos dados Habituando-se ao FORTRAN A estrutura de código escrito em FORTRAN é a seguinte: PROGRAM nome do programa IMPLICIT NONE bloco de comandos END PROGRAM nome do programa Vetores A declaração de vetores em FORTRAN é semelhante à declaração de uma variável qualquer, com a diferença que logo após a declaração da variável, é acrescentada a palavra chave DIMENSION e entre parênteses o tamanho que este deve ter. Para acessar o conteúdo do vetor, utiliza-se o índice do conteúdo procurado. Exemplo: Exemplo de um vetor com 3 números inteiros INTEGER x DIMENSION x(3) x(1)=10 x(2)=20 x(3)=30 Matrizes

A declaração é igual a vetores, com a diferença que se deve determinar duas ou mais dimensões para a matriz, em vez de uma. Exemplo: INTEGER x DIMENSION x(2,2) x(1,1)=10 x(2,1)=20 x(1,2)=15 x(2,2)=25 Ponteiros Ponteiros em FORTRAN deve ter um alvo pré-definido. Se não houver um alvo definido para este, ele não será reconhecido como ponteiro. A variável que será apontada pelo ponteiro recebe a palavra chave TARGET e passa a ser o alvo do mesmo. Obs.: Este recurso só foi implementado no FORTRAN 90 em diante. Operador "=>" Exemplo: INTEGER a, b TARGET a POINTER b b => a print*, ‘O valor de a eh ’ , b Funções Em FORTRAN as funções são utilizadas para economizar espaço e tempo de programação. São reutilizáveis e dá maior clareza aos programas. Geralmente só aparecem no final do programa, para facilitar a sua leitura. As variáveis são locais. A declaração é bastante semelhante à declaração de funções em C, tendo apenas uma pequena variante. Funções em FORTRAN podem ser assim subdivididas: Funções - Retornam sempre um valor e a ela podem ser passados qualquer número de parâmetros; - O tipo de função deve ser declarado no programa principal como se fosse uma variável comum; - Uma função pode utilizar outras funções como parâmetro; Exemplo: Chamada: Nome_da_função(lista_de_parâmetros) Definição: Function nome_da_função(lista_de_parâmetros) ! definição e declaração das variáveis e constantes locais !seqüência de comandos return end

Retorno: nome_da_função = expressão Subrotinas - Não retornam nenhum valor e a ela pode ser passados qualquer número de parâmetros; - As subrotinas podem conter qualquer tipo de comando como imprimir resultados, abrir arquivos, executar cálculos, desde que não tenham valor de retorno; - Uma subrotina pode chamar outras subrotinas; Exemplo: Chamada: call nome_da_subrotina(lista_de_parâmetros) Definição: subroutine nome_da_subrotina(lista_de_parâmetros) !definição e declaração das variáveis e constantes locais seqüência de comandos return end Obs.: a palavra chave ‘return’ é opcional 3 – Métodos de Implementação Sistemas de Compilação: o compilador FORTRAN 77 (CF77), o FORTRAN 90 (CF90). Esses compiladores são capazes de vetorizar e paralelizar automaticamente códigos seqüenciais. Estes compiladores apresentam as seguintes características: • • • •

operam completamente dentro da memória principal; expandem dinamicamente seu tamanho na memória se necessário, para compilação de programas grandes; organizam o código fonte em módulos; compilam em 4 fases: o Processamento de instruções fonte, análise léxica e sintática, geração de código intermediário para as demais fases; o Otimização escalar: análise do fluxo de dados e transformações para otimização escalar; o Vetorização: análise de código para determinar se a execução vetorial é possível; o Geração de código.

3.1 Sistema de Compilação CF77 O programa cf77 controla o sistema de compilação FORTRAN (CF77). Este programa é responsável pela criação de arquivos binários executáveis a partir de programas fonte codificados em FORTRAN 77 padrão ANSI. A compilação de um programa FORTRAN passa necessariamente por duas fases: compilação (comando cf77) e lincagem (comando segldr). Na geração de código vetorial e paralelo, duas outras fases opcionais de otimização

são executadas. Tem se portanto quatro fases (figura 5.2), executadas por seus respectivos comandos: •



• •

Pré-processamento: é executada pelo programa fpp que realiza a análise de dependências e reestrutura o código fonte de forma a maximizar o uso da arquitetura da máquina. Basicamente as regiões de código que podem ser executadas em paralelo ou vetorizado são identificadas através de diretivas de compilação (CMIC$ e CDIR$). Processamento Intermediário: é executado pelo programa fmp que transforma as diretivas de compilação inseridas pelo programa fpp ou pelo próprio usuário em chamadas a bibliotecas de rotinas capazes de utilizar todos os recursos vetoriais e paralelos disponíveis. Compilação: é executada pelo programa cft77. Este programa converte código fonte em código objeto realocável. Lincagem: executada pelo programa segldr. Nesta fase o código objeto realocável gerado pelo programa cft77, ou por qualquer outro sistema de compilação, é lincado ao conjunto de bibliotecas necessário para gerar o código executável.

3.2 Sistema de Compilação FORTRAN O programa cf77 apresenta uma série de opções que permitem controlar não só o nível de otimização, mas também todo processo de compilação. Alguns exemplos destas opções são apresentados a seguir: cf77 -c prog.f apenas compila o arquivo prog.f cf77 -o exec prog.f define o nome do executável como exec cf77 -Wd"opções" prog.f passa as opções para o comando fpp cf77 -Wu"opções" prog.f passa as opções para o comando fmp cf77 -Wf"opções" prog.f passa as opções para o comando cft77 cf77 -Wl"opções" prog.f passa as opções para o comando segldr cf77 -Zp prog.f habilita vetorização e paralelização cf77 -Wf"-em" prog.f gera relatório de otimizações com nome prog.l cf77 -o off prog.f desabilita otimizações Os erros mais comuns de compilação com o compilador cf77 são: 1) – Erro na utilização de librarys (bibliotecas). Os erros na utilização de librarys (bibliotecas) são causados na maioria das vezes pelo uso incorreto da opção de compilação onde se informa ao compilador o nome e a localização da biblioteca que se deseja utilizar. Na utilização de uma library podem acontecer dois casos: •

o arquivo que contêm a library tem como nome algo semelhante a "libname.a" (isto é: inicia com "lib") e se encontra no diretório padrão de bibliotecas "/usr/lib". Neste caso deve ser acrescentada a seguinte opção de compilação: -l name

onde "name" é parte do nome da library, sendo que o nome completo é "libname.a". Exemplo: a opção "-l sim" permite utilizar a library "libsim.a" localizada no diretório "/usr/lib". •

o arquivo que contêm a library tem como nome algo semelhante a "name.a" (isto é: não inicia com "lib") e/ou se encontra em um diretório diferente do diretório padrão de bibliotecas "/usr/lib". Neste caso, deve ser acrescentada a seguinte opção de compilação:

-l /dir/name.a onde "dir" é o caminho completo até o diretório onde se encontra a library e "name.a" é o nome completo da library. Exemplo: a opção "-l /local/lib/bcslib.a" permite utilizar a library "bcslib.a" localizada no diretório "/local/lib". 2) – Erro de falta de memória ao compilar ou executar um programa no modo interativo. O erro de falta de memória ao compilar ou executar um programa no modo interativo, é causado na maioria dos casos quando o programa tenta colocar uma quantidade de memória maior que o limite de memória que é possível alocar interativamente (2 MW = 16 Mbytes). Neste caso, para poder compilar ou executar o programa deve-se escrever um job que execute a tarefa desejada (compilação ou execução do programa) e submetê-lo para execução com o comando "qsub", podendo especificar-se o tempo de execução limite, a quantidade de memória limite a ser alocada. 3.3 Sistema de Compilação CF90 O objetivo principal da versão 90 do FORTRAN é tornar a linguagem mais moderna e próxima de outras linguagens de programação como C e PASCAL. Dentre as características mais importantes incorporadas nesta versão está a redefinição de operadores e a manipulação de matrizes. O desenvolvimento do FORTRAN 90 iniciou-se imediatamente após a adoção da padronização do FORTRAN 77. Muitas das sugestões de usuários do 77 foram incorporadas no 90. Os objetivos da padronização e as novas características incorporadas ao FORTRAN 90 são: 1) Objetivos da Padronização: •

• •

Acompanhar a evolução das linguagens de programação no sentido de tornar o FORTRAN uma linguagem mais moderna, eliminando alguns comandos considerados obsoletos. Padronizar as extensões de todos os fabricantes de compiladores FORTRAN tornando a linguagem mais portável. Modernizar a linguagem com a implementação de novas características como o formato livre de programas e tipos derivados.

• • • • • •

Aprimorar a capacidade de armazenamento de dados no programa principal com a alocação dinâmica de memória. Modularização com a definição de módulos. Portabilidade numérica com precisão selecionada. Facilitar operações paralelas com arrays para um uso melhor de computadores com processamento vetorial paralelo. Compatibilidade total com o FORTRAN 77. O 77 é um subconjunto do 90. O compilador avisa quando encontrar código não padrão e características obsoletas.

2) Novas características: •

• • • •

Processamento de vetores e matrizes de uma maneira bem mais simples que nas versões anteriores. Não existe mais limitação do índice do array. O índice pode ser negativo. Alocação dinâmica de memória, incluindo matrizes dinâmicas. Módulos. Subrotinas com parâmetros opcionais. Declaração de subrotinas internas. Neste caso há a possibilidade de se declarar uma subrotina local, dentro da subrotina.

3.4 Controle dos Níveis de Otimização Tanto no compilador C quanto no compilador FORTRAN, pode-se controlar quatro níveis de otimização: paralelização de processos, vetorização, otimização escalar e macro-substituição de funções. À medida que aumenta este nível de otimização, pode-se esperar o seguinte: • • • • • •

o tempo de execução do código gerado diminui; o tamanho do código gerado aumenta; o tempo de compilação aumenta; a quantidade de memória utilizada durante a compilação aumenta; a possibilidade de execução inesperada de procedimentos aumenta; um número maior de considerações é feito durante as etapas de otimização.

Existem duas formas, que podem ser usadas em conjunto, para se controlar o nível de otimização tanto em programas FORTRAN ou C. A primeira forma corresponde à especificação formal do nível de otimização diretamente na linha de comando em que é invocado o compilador. Com o uso deste tipo de especificação, o processo de otimização é aplicado ao programa como um todo. A segunda forma de controle de otimização corresponde ao uso de diretivas de compilação dentro do próprio programa do usuário. Esta forma, complementar a primeira, é usada para controlar o processo de otimização em partes específicas do programa. Em FORTRAN, as diretivas são identificadas pelo comando CDIR$ opção, colocado na primeira coluna. Algumas das diretivas disponíveis são:

• • • • • • • • • •

IVDEP: informa ao compilador que não existe dependência de dados no laço subseqüente. NOVECTOR: desabilita a vetorização dos laços subseqüentes. VECTOR: habilita a vetorização dos laços subseqüentes, quando possível. NEXTSCALAR: gera apenas instruções escalares para o laço subseqüente. SHORTLOOP: informa ao compilador que o laço subseqüente não será maior do que 64, diminuindo os testes necessários durante a execução. INLINE: habilita o compilador a utilizar macro-substituição para as funções subseqüentes. NOINLINE: desabilita a macro-substituição. VFUNCTION: define funções vetoriais. VSEARCH/NOVSEARCH: define laços de busca. RECURRENCE/NORRECURRENCE: define laços de redução.

4 - Avaliação da Linguagem Legibilidade Simplicidade Possui poucos identificadores; Cada elemento faz uma única função na maioria dos casos. (Ex.: END IF) ; Não existe uso de ponto-e-vírgula no final das linhas; Inexistência de palavras reservadas; Possibilidade de declaração de variáveis implícitas; Variável será de determinado tipo a depender de sua primeira letra; Isso pode ser uma vantagem, alguns sistemas implementam isso; Multiplicidade em alguns recursos; Ex.: Comentários podem ser c ou ! Comandos de saída em tela write e print O operador lógico .EQ. pode ser substituído por == Inicialização de variáveis pode ser de duas formas: INTEGER X/3/ !ou INTEGER X = 3 Sobrecarga de operadores Ex.: O sinal * serve para operações aritméticas e dimensionamento de vetor Ortogonalidade O sinal = serve para atribuição de valores inteiros e caracteres, operação com ponteiros => e operações relacionais >=, <=, == e /=

Estruturas de Controle Possui blocos de controle simples, como o Loop Do, IF THEN ELSE, SELECT (um CASE na verdade), funções e subrotinas. Estruturas de dados Poucos tipos de dados primitivos, o tipo String é obtido a partir de uma variável de múltiplos caracteres. Ex.: CHARACTER frase*8 Possui apenas os tipos: Logical (boleano), Integer, Double, Complex, Real Para operações matemáticas oferece um bom nível de abstração devido a suas variáveis de alta precisão Sintaxe Não usa delimitador de final de linha, como por exemplo o ponto-e-vírgula ; Inexistência de palavras reservadas, variáveis podem assumir qualquer nome de um operador, comando, identificador, etc. Comandos possuem sua forma de acordo com seu significado Ex.: Log10(x) DOUBLE PRECISION /= (Símbolo relacional de diferenciação) Possui delimitadores de blocos bem definidos Ex.: IF (a == b) THEN A=5 END IF Assim como END DO, END SELECT, END PROGRAM ; Segue a estrutura fixas de lay-out a fixed form e a free form, onde na primeira cada coluna possui seu significado, não sendo permitido iniciar o código em qualquer lugar; Identificadores limitados a 6 caracteres; Linhas limitadas a 72 caracteres (utiliza-se o sinal & como indicador de continuidade da linha); Variáveis cuja primeira letra identifica seu tipo ajudam na legibilidade porém “prende” mais o programador. Codificabilidade Simplicidade x Ortogonalidade A linguagem então é bastante simples pois cada elemento possui apenas um significado e não é muito ortogonal devido ao fato de não utilizar muitas combinações de elementos. Suporte a abstração Originalmente, o FORTRAN 77 possui poucos tipos de dados primitivos, enquanto o FORTRAN 90 possui tipos de dados definidos pelos usuários o que facilita bastante a abstração. A linguagem é de alto nível, mas não nos permite abstrair tanto os problemas por falta de recursos.

Confiabilidade Checagem de Tipo A linguagem possui checagem de tipo em tempo de execução assim como durante a compilação. Ela não permite a atribuição de um valor caracter a uma variável inteira, porém se for atribuído um valor fracionário a uma variável inteira ela truncará o valor. Tratamento de Exceções A linguagem possui um suporte rudimentar a tratamento de exceção, gerenciando apenas a operações com pontos flutuantes. Uso de Alias A linguagem disponibiliza comando do tipo POINTER que faz com que uma variável aponte para outra. INTEGER a, b TARGET a POINTER b b => a print*, ‘O valor de a eh ’ , b Não detectamos a presença de ponteiros que utilizam endereços de memória para referenciar variáveis Legibilidade e Codificabilidade Um código em FORTRAN não é fácil de ser lido apesar da linguagem ser muito simples e pouco ortogonal. Ela possui muitos identificadores e diversos elementos que acabam tornando o código extenso e confuso. O código é pesado e raramente bem estruturado. Grande parte das advertências a respeito do uso da ferramenta GO TO vem da experiência com o código FORTRAN. A restrição de 6 caracteres para identificadores de variáveis e o máximo de 72 caracteres por linhas fazem com que diminua bastante a legibilidade da linguagem. No meio científico a linguagem já está bastante difundida pois oferece um bom nível de abstração devido a suas variáveis de alta precisão e ferramentas de cálculo. Mas para fins gerais a linguagem não apresenta alta codificabilidade.

Custo Treinamento O custo de treinamento é elevado pois o aprendizado da linguagem não é algo simples, porém como ela segue padrões e convenções matemáticas ela se torna fácil de ser compreendida por engenheiros e pela comunidade científica. Mas em geral ela é complexa e de difícil de ser compreendida por um programador amador ou aquele que só teve contato com linguagens modernas.

Compilação Um programa em FORTRAN é lento tanto em sua compilação além de gerar grandes executáveis. Execução A execução de um programa em FORTRAN é lenta e não otimizada para recursos de hardware atuais. Possui um suporte simples de otimização de código para processadores Pentium entre outras otimizações. Manutenção Mesmo que bem documentada, um código extenso em FORTRAN não será fácil de ser feito uma manutenção por que a linguagem dá margem a desvios incondicionais (GO TO) os quais foram muito utilizados nessa linguagem, além de que como ela não oferece um bom nível de abstração e nem boas estruturas de repetição isso tudo implica num código de difícil manutenção. 5 - Exemplos, Funcionalidade e Comparações: 5.1 - FORTRAN e Pascal Vantagens do FORTRAN FORTRAN é uma linguagem simples; FORTRAN sempre existiu; Compiladores FORTRAN são amplamente disponíveis na Internet ; Altamente portável (existem versões para Unix, Windows, Linux, etc) ; Primeira linguagem de programação de alto nível ; Usada comercialmente por pessoas técnicas e cientistas de computação; Cientistas não possuem interesse em aprender novas linguagens; Trabalha bem com análises numéricas e cálculos técnicos ; É necessário estruturar o problema para poder usar FORTRAN ; Um grande número de programas e rotinas em FORTRAN são trocadas internacionalmente; Compiladores eficientes; Foi a primeira linguagem de programação padronizada; Melhor obediência a padrões do que em outras linguagens ; Está em continuo desenvolvimento (uma nova versão surge a cada década); É a linguagem dominante em supercomputadores ; Diferenças entre FORTRAN 77 e Pascal FORTRAN não usa atribuições com := ou fim de blocos com ; FORTRAN não possui palavras reservadas, além disso possui identificadores pequenos (ate 6 caracteres), os identificadores não precisam ser declarados ; FORTRAN não possui RECORDS, PONTEIROS, Tipos definidos por usuários, tipos escalares, sub-intervalos, mas possui COMPLEX e DOUBLE PRECISION;

FORTRAN 77 não possui WHILE e REPEAT; FORTRAN não tinha IF THEN ELSE ENDIF até 1978 ; FORTRAN não é capaz de aninhar funções e subrotinas, além de não permitir chamadas recursivas; FORTRAN possui um bom suporte a entrada e saída, porém estas facilidades são muito difíceis para aprender ; FORTRAN possui compilação separada ; FORTRAN gerencia caracteres internacionais em comentários e saídas; A orientação a cartões perfurados em FORTRAN ainda lhe traz problemas; Espaços em branco não são significativos (exceto agora na forma fixa em FORTRAN 90); Misturar inteiros e números ponto-flutuante são implementados diferentemente; Vetores em FORTRAN 77, devem ser atribuídos valores usando laços explícitos; Programas em FORTRAN são geralmente menos estruturados do que em Pascal; Associação de argumentos é diferente; Dados comuns são tratados diferentemente ; 5.2 - Exemplos de Códigos Teste de diferenciação de maiúsculas e minúsculas PROGRAM Letras CHARACTER letra letra = 'A' IF (letra .eq. 'a') then PRINT*, 'Letras iguais' END IF END PROGRAM Letras Inexistência de palavras reservadas PROGRAM Repeat CHARACTER IF INTEGER DO DO = 4 IF = '+' IF (IF .eq. '+') then PRINT*, 'Soma', DO END IF END PROGRAM Repeat Exemplo da Ilegibilidade c Inicio do programa e isso é um comentário 111 write (*,*) ' ' write (*,*) ' Esta é uma linha grande *que foi continuada aqui' print*, ‘Este número no início da linha é um Label’ c Outro comentário Declaração de variáveis implícitas

PROGRAM Variaveis IMPLICIT INTEGER (a-m) ! todas variáveis começando por A a M serão inteiros IMPLICIT CHARACTER (n-z) ! todas variáveis começando por N a Z serão caracteres print*, 'Digite sua idade' read*, Iidade print*, 'Digite seu nome' read*, Nnome ENDPROGRAM Variaveis

Conclusão FORTRAN não é legível pois não conseguiu manter o comprometimento entre a simplicidade e a ortogonalidade, se a linguagem tivesse menos elementos, possuísse palavras reservadas e não fosse tão rígida em seu lay-out acabaria implicando em uma linguagem mais legível e conseqüentemente mais codificável. A linguagem possui um bom poder de codificabilidade apenas no escopo matemático. Apenas as novas versões do FORTRAN foram implementam recursos como Orientação a Objeto, tratamento de exceções, porém não devem ser bem consolidados e não conseguimos documentação a respeito. A linguagem não nos oferece confiança (baixa confiabilidade) pois não é legível e também por ser de baixa codificabilidade. FORTRAN é muito custosa pois é lenta e de difícil manutenção e treinamento.

Bibliografia Apostila da matéria Paradigmas de Linguagens de Programação do Prof. José Augusto – Faculdade Ruy Barbosa; Apostila da disciplina de Paradigmas de Linguagens de Programação do Prof. Luciano Gerber – Universidade Luterana do Brasil, Campus Cachoeira do Sul; http://www.inf.ufrgs.br/~cechin/inf01101/ http://www.geocities.com/helder_pc/FORTRAN/#_Toc467428023 http://sunsite.icm.edu.pl/FORTRAN/append-f.html

Related Documents

Fortran
October 2019 25
Fortran
October 2019 28
Fortran 4
June 2020 14
Fortran Lesson
November 2019 21
Fortran Resources
April 2020 13