1 / 18

Fortran 90

Fortran 90. Paulo Henrique Graf Fernandes. Variáveis compostas homogêneas (arrays) Vetores (unidimensionais) Matrizes (multidimensionais). Variáveis compostas homogêneas (arrays).

noel
Download Presentation

Fortran 90

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fortran 90 Paulo Henrique Graf Fernandes

  2. Variáveis compostas homogêneas (arrays) • Vetores (unidimensionais) • Matrizes (multidimensionais)

  3. Variáveis compostas homogêneas (arrays) Arrays correspondem a posições de memória, identificadas por um único nome, individualizadas por índice e cujo conteúdo é de um mesmo tipo.

  4. Referência a um elemento do array Nome(índice) Ex: arr(3) arr(i), onde i é uma variável do tipo integer

  5. Vetores (arrays unidimensionais) • Tipo • Nome • Número de elementos Declaração:

  6. Exemplos: real, dimension(50) :: a, b, c real, dimension (11:60) :: a, b, c real :: a(50), b(50), c(50) real, dimension(50) :: a, b, c, x(20), y(20), z integer, dimension(-20:-1) :: x logical, dimension(-9:10) :: y

  7. Atribuição de valores • vetor(3) = 1 • vetor = (/ 1,2,3,4,5 /) , onde vetor tem cinco elementos • Usando o do implícito: vetor = (/ i, i=1, 5 /) vetor = (/ -1, (0, i=2, 49), 1 /) vetor = (/ -1, (0, i= 1,48), 1 /) Obs.: nos dois últimos casos, todos elementos são zero, exceto o primeiro e o último.

  8. Comandos de entrada (read) e saída (print) com arrays • Um elemento do array: como se fosse uma variável escalar • Um grupo de elementos do array: utilizando o do implícito • O array todo: apenas o nome do array

  9. Exemplos: Print *, (p(i), i=1,99,2), q(3), q(4), r Read *, first, last, (arr(i), i=first, last) Do i=1, 10 Read *, arr(i)

  10. Matrizes (arrays multidimensionais) • Fortran permite até sete dimensões para um array • Declaração: semelhante a vetores, considerando o número de dimensões

  11. Exemplos: real, dimension(3,4) :: a logical :: b(10,4) integer, dimension (5:7, -10:-1) :: c integer, dimension(5:8, 0:1, 100, -3:4) :: d

  12. Atribuição de valores • vetor(3,2) = 1 • Utilizando a função intrínseca reshape: reshape((/ 1,2,3,4,5,6 /), (/ 2,3 /)) 1 3 5 2 4 6 • integer :: i, j real, dimension(2,2) :: a reshape((/ ((10*i+j, i=1,2), j=1,2) /), (/2,2 /)) 11 12 21 22

  13. Comando de saída (print) com arrays multidimensionais Se x é um array com 50 linhas e 8 colunas, • print ‘(8F8.2)’, x imprime o array x coluna por coluna • print ‘(8F8.2)’, ((x(i,j), j=1,8), i= 1,50) imprime o array x linha por linha

  14. Funções intrínsecas para vetores e matrizes

  15. Exemplos: matriz_b = tranpose(matriz_a) matriz_ab = matmul(matriz_a, matriz_b) max = maxval(matriz_c) prod = product(vetor_d)

  16. Exemplo: Programa que soma os valores de duas matrizes program somamat implicit none integer, parameter:: lin = 3 , col = 2 !dimensões das matrizes integer:: linha !variável controladora das linhas nos loops real:: matriza(lin, col), matrizb(lin, col), matrizc(lin, col) !arrays bidimensionais print *, 'Digite os valores da matriz A: ' do linha = 1, lin !leitura dos elementos read *, matriza(linha, 1: col) !da matriz A end do

  17. print * print *, 'Digite os valores da matriz B: ' do linha = 1, lin !leitura dos elementos read *, matrizb(linha, 1: col) !da matriz B end do do linha = 1, linmatrizc(linha, 1: col) = matriza(linha, 1: col) + matrizb(linha, 1: col) end do !formação da matriz C atraves da soma dos elementos!das matrizes A e B print * print *, 'Matriz C = A + B: ' do linha = 1, lin print '(F5.2)', matrizc(linha, 1: col) !visualização da end do !matriz Cend program FIM

  18. FIM

More Related