A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Paulo Henrique Graf Fernandes

Apresentações semelhantes


Apresentação em tema: "Paulo Henrique Graf Fernandes"— Transcrição da apresentação:

1 Paulo Henrique Graf Fernandes
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)
Declaração: Tipo Nome Número de elementos

6 Exemplos: real, dimension(50) :: 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 /)) integer :: i, j real, dimension(2,2) :: a reshape((/ ((10*i+j, i=1,2), j=1,2) /), (/2,2 /))

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
matmul Produto matricial de duas matrizes, ou de uma matriz e um vetor dot_product Produto escalar de dois vetores transpose Transposta de uma matriz maxval, minval Valor máximo e mínimo, respectivamente, de um array, ou parte deste product, sum Produto e soma, respectivamente, de um array, ou parte deste

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
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, lin matrizc(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 C end program FIM

18 FIM


Carregar ppt "Paulo Henrique Graf Fernandes"

Apresentações semelhantes


Anúncios Google