Você está na página 1de 18

Introdução à

linguagem de programação
Fortran 90/95
Histórico da linguagem e conceitos
básicos

Prof. Rudnei Dias da Cunha


•Histórico da linguagem Fortran 90
• Desenvolvida entre 1954 e 1957 por um grupo de
pesquisadores da IBM, liderados por John Backus
(*1924 - †2007)
• FORTRAN = “FORmula TRANslation”, primeira
linguagem de programação de alto nível, voltada
para aplicações científicas

Introdução à linguagem de programação Fortran 90/95

2 Prof. Rudnei Dias da Cunha


•Histórico da linguagem Fortran 90
• Principais versões:
• FORTRAN – 1957
• FORTRAN II – 1958
• FORTRAN IV – 1965
• FORTRAN 66 – 1966 (desenvolvida a partir do FORTRAN IV)
• FORTRAN 77 – 1978
• Fortran 90 – 1992
• Fortran 95 – 2000
• Fortran 2003 – 2006
• Fortran 2008

• Vejamos como a linguagem evoluiu, através de


programas escritos em algumas dessas versões,
para resolver o mesmo problema: determinar o
maior valor dentre um conjunto de valores

Introdução à linguagem de programação Fortran 90/95

3 Prof. Rudnei Dias da Cunha


•Histórico da linguagem Fortran 90
FORTRAN IV FORTRAN 77
C234567890 C234567890
C PROGRAMA PARA CALCULAR O MAIOR C PROGRAMA PARA CALCULAR O MAIOR
C VALOR DENTRO DE UM ARRANJO C VALOR DENTRO DE UM ARRANJO
DIMENSION A(999) DIMENSION A(999)
REAL MAIOR REAL MAIOR
READ(5,1)N,(A(I),I=1,N) READ(5,1)N,(A(I),I=1,N)
1 FORMAT(I3/12F6.2) 1 FORMAT(I3/12F6.2)
MAIOR=A(1) MAIOR=A(1)
DO 20 I=2,N DO 20 I=2,N
IF (MAIOR-A(I)) 10,20,20 IF (A(I)>MAIOR) THEN
10 MAIOR=A(I) MAIOR=A(I)
20 CONTINUE ENDIF
WRITE(6,2)N,MAIOR 20 CONTINUE
2 FORMAT(19HMAIOR VALOR DENTRE ,I3, WRITE(6,2)N,MAIOR
+11H VALORES = ,F6.2) 2 FORMAT(19HMAIOR VALOR DENTRE ,I3,
END +11H VALORES = ,F6.2)
END

Formato fixo: colunas 1-5 para rótulos de comandos,


coluna 6 para caracter de continuação, colunas 7-72 comandos,
colunas 73-80 numeração de sequência.

Introdução à linguagem de programação Fortran 90/95

4 Prof. Rudnei Dias da Cunha


•Histórico da linguagem Fortran 90
• O formato fixo foi introduzido pela IBM para a
utilização de cartões perfurados de 80 caracteres:

Formato fixo: colunas 1-5 para rótulos de comandos,


coluna 6 para caracter de continuação, colunas 7-72 comandos,
colunas 73-80 numeração de sequência.

Introdução à linguagem de programação Fortran 90/95

5 Prof. Rudnei Dias da Cunha


•Histórico da linguagem Fortran 90
Fortran 90 Fortran 90
! PROGRAMA PARA CALCULAR O MAIOR ! PROGRAMA PARA CALCULAR O MAIOR
! VALOR DENTRO DE UM ARRANJO ! VALOR DENTRO DE UM ARRANJO
PROGRAM MAIOR_VALOR PROGRAM MAIOR_VALOR
REAL, DIMENSION(:), ALLOCATABLE :: A REAL, DIMENSION(:), ALLOCATABLE :: A
REAL :: MAIOR REAL :: MAIOR
INTEGER :: I READ *,N
READ *,N ALLOCATE(A(N))
ALLOCATE(A(N)) READ *,A
READ *,A MAIOR=MAXVAL(A)
MAIOR=A(1) PRINT '(A19,I3,A11,F6.2)', &
DO I=2,N 'MAIOR VALOR DENTRE ',N,
IF (A(I)>MAIOR) THEN ' VALORES = ',MAIOR
MAIOR=A(I) DEALLOCATE(A)
END IF END PROGRAM MAIOR_VALOR
END DO
PRINT '(A19,I3,A11,F6.2)', &
'MAIOR VALOR DENTRE ',N,
' VALORES = ',MAIOR
Formato livre; caracter de continuação
DEALLOCATE(A) (&) ao final de cada linha interrompida.
END PROGRAM MAIOR_VALOR

Introdução à linguagem de programação Fortran 90/95

6 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• Programa = conjunto de instruções armazenadas
na memória, separadamente dos dados (J. von
Neumann, 1945)
• Processo = programa operando sobre os dados
• Para um dado ser operado por uma instrução, ele
deve ser transferido
• da memória principal para a memória cache, através do
barramento
• e da memória cache para um dos registradores

Introdução à linguagem de programação Fortran 90/95

7 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• O objetivo de um programa é transformar os
dados de entrada em dados de saída
• Um programa científico em Fortran
necessariamente irá realizar um grande número
de operações aritméticas e irá manipular um
grande volume de dados
• Programas escritos em outras linguagens
tipicamente manipulam grandes volumes de
dados, porém executam menos operações
aritméticas (como por exemplo, manutenção de
bases de dados)

Introdução à linguagem de programação Fortran 90/95

8 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• O diagrama abaixo mostra a arquitetura de um
computador:

Unidade de Memória Principal


Memória (RAM)
Execução e
Cache
Controle

barramento
Disco
Registradores

Monitor de vídeo
UAL UPF

Introdução à linguagem de programação Fortran 90/95

9 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• A menor unidade de dados que pode ser
transferida entre a memória principal e o
processador é denominada palavra
• Um processador Intel Pentium IV tem uma
palavra de 32 bits; já o Intel Core2 Duo e o AMD
X2 têm uma palavra de 64 bits

Introdução à linguagem de programação Fortran 90/95

10 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura de
computadores

Memória Principal
Memória Cache

Memória Flash
Registradores

Disco rígido

CD-ROM
- tempo de acesso +

Introdução à linguagem de programação Fortran 90/95

11 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura de
computadores

Soma / Subtração (pf)


Deslocamento de bits

Raiz quadrada (pf)


Multiplicação (pf)

Intrínsecos (pf)
Divisão (pf)
- tempo de acesso +

Nota: pf = ponto-flutuante (uma forma de representação de


números reais num computador).

Introdução à linguagem de programação Fortran 90/95

12 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• Estatisticamente, programas em Fortran
apresentam a seguinte característica:
• 80% do tempo de execução de um processo é feito sobre 20% do
conjunto de instruções do programa
• Conseqüentemente,
• Se essas instruções manipulam um grande número de palavras da
memória principal, o acesso a elas deve ser otimizado a cargo
do programador

Introdução à linguagem de programação Fortran 90/95

13 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• Memória “cache”: usada para se acelerar o
acesso aos dados e instruções
• A “cache” de dados é sempre maior do que a de
instruções (por exemplo, 1MByte e 64KBytes,
respectivamente)
• Existem diferentes tipos de “cache” de dados e
maneiras de as organizar, mas tipicamente os
processadores de hoje apresentam no mínimo
dois níveis de “cache”, chamadas de L1 e L2

Introdução à linguagem de programação Fortran 90/95

14 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• A idéia é usar uma memória de menor tempo de
acesso (mais cara  menor quantidade) como
“cache” L1, e uma “cache” L2 com memória com
um tempo de acesso um pouco maior do que a
da L1 (mais barata  maior quantidade)
• Tipicamente, a “cache” L1 tem uma capacidade
de 64KBytes e a L2 pode armazenar 1MByte

Introdução à linguagem de programação Fortran 90/95

15 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• Cria-se, dessa forma, uma estrutura de memória
hierárquica, em que os dados mais utilizados no
processador devem estar armazenados na
“cache” mais rápida, L1
• Como a L1 é pequena, nem todos esses dados
cabem nela, então pode-se usar um mecanismo
de “rotação” dos dados entre as “caches” L1 e L2
• Evidentemente, como a memória principal é
muito maior do que a “cache”, em algum tempo
da execução do programa, uma instrução
necessitará de um dado que não se encontra nem
na L1 e nem na L2

Introdução à linguagem de programação Fortran 90/95

16 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• Isso é o que se chama de “cache-miss” e, quando
isso acontece, os dados presentes nas “caches”
L1 e L2 devem ser gravados de volta na memória
principal (se foram alterados, a fim de se manter
a coerência dos dados)
• Após essa gravação, os dados requeridos por uma
instrução, e presentes na memória principal,
devem ser trazidos para a “cache” L2 (e alguns
deles migrarão para a L1 durante a execução das
instruções)

Introdução à linguagem de programação Fortran 90/95

17 Prof. Rudnei Dias da Cunha


•Conceitos básicos de programa e estrutura
de computadores
• Cada transferência entre a memória principal e a
“cache” é feita em blocos de palavras (depende
da arquitetura da memória) e, no caso de um
“cache-miss”, ocorrem duas transferências (L2 
memória principal e memória principal  L2)
• Portanto, é necessário escrever programas que
minimizem o efeito de “cache-miss”
• Na maior parte dos casos, isso é feito escrevendo comandos de
acesso a arranjos na memória que respeitam a maneira como eles
são armazenados na memória (depende da linguagem)

Introdução à linguagem de programação Fortran 90/95

18 Prof. Rudnei Dias da Cunha

Você também pode gostar