Buscar

Aula 8 - Vetores e matrizes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

VETORES E MATRIZES
Disciplina: Introdução à programação para EE
Prof. Stelmo Magalhães Barros Netto
SUMÁRIO
 Vetor
 Matriz
 Inicialização
 Detalhes extras para Fortran
 Alocação dinâmica
2
VETORES E MATRIZES
 Matriz de uma dimensão (vetor ou array)
 Índice indica a posição de um elemento no vetor
 Indexação
 Portugol:
 vetor[2] = ?
 4
 Fortran:
 vetor(2) = ?
 1
 Exemplo: Crie um programa que calcula a média das 3 notas de um aluno.
3
𝑣𝑒𝑡𝑜𝑟 = 2 1 4
Índice Fortran 1 2 3
Índice port. studio 0 1 2
Índice
Índice
VETORES E MATRIZES. EXEMPLO. DIAG/PORTUGOL
4
Define um vetor de 3 elementos
VETORES E MATRIZES. EXEMPLO. PORTUGOL/FORTRAN
5
Define um vetor de 3 elementos
Define um vetor de 3 
elementos
VETORES E MATRIZES
6
 Prática: Dado um vetor qualquer de N elementos, determinar o seu
módulo e o vetor unitário correspondente.
 Entrada
 v = [𝑥1 𝑥2 𝑥3 𝑥4]
 Saída
 Módulo ou norma-euclidiana do vetor
 Vetor unitário
 Processamento
 Módulo de v
 𝑣 = 𝑥1
2 + 𝑥2
2 + 𝑥3
2 + 𝑥4
2
 Vetor unitário
 𝑢 =
𝑣
𝑣
=
𝑥1 𝑥2 𝑥3 𝑥4
𝑣
=
𝑥1
𝑣
𝑥2
𝑣
𝑥3
𝑣
𝑥4
𝑣
VETORES E MATRIZES
7
 Prática: Dado 2 vetores x e y de N elementos, determinar o produto
escalar.
 Entrada
 x = [x1 x2 x3] e y = [y1 y2 y3]
 Saída
 O produto escalar: 𝑥 ∗ 𝑦𝑇
 Processamento
VETORES E MATRIZES
 Matriz de duas dimensões
𝑀2𝑥3 =
2 1 4
1 0 3
 Indexação
 Portugol:
 M[1][2] = ?
 3
 Fortran:
 M(1)(2) = ?
 1
8
P
0
1
Fortran 1 2 3
Fortran
1
2
Port. Studio 0 1 2
Linha Coluna
Linha Coluna
VETORES E MATRIZES. EXEMPLO. DIAG/PORTUGOL
9
 Exemplo: Crie um programa que leia as 3 notas de 2 alunos.
VETORES E MATRIZES. EXEMPLO: PORTUGOL/FORTRAN
10
VETORES E MATRIZES. EXEMPLO: PORTUGOL/FORTRAN
11
VETORES E MATRIZES
 Prática: Utilizar o exemplo anterior para encontrar o vetor média 
dos M alunos.
12
VETORES E MATRIZES
13
 Prática: Dado duas matrizes de qualquer dimensão, A e B,
verifique se os elementos de A são os mesmos de B.
 Entrada
 𝐴 =
𝑎11 𝑎12
𝑎21 𝑎22
e 𝐵 =
𝑏11 𝑏12
𝑏21 𝑏22
 Saída
 Uma mensagem informando se as matrizes são iguais ou diferentes.
 Processamento
 A=B, se 𝑎11 = 𝑏11 𝑒 𝑎12 = 𝑏12 𝑒 𝑎21 = 𝑏21 𝑒 𝑎22 = 𝑏22
 A≠B, caso uma das comparações for falsa
VETORES E MATRIZES
14
 Prática: Dado duas matrizes quaisquer, A e B, realize a soma e
subtração de A com B.
 Entrada
 𝐴 =
𝑎11 𝑎12
𝑎21 𝑎22
e 𝐵 =
𝑏11 𝑏12
𝑏21 𝑏22
 Saída
 Matriz soma e subtração
 Processamento
 Matriz soma
 𝑆 = 𝐴 + 𝐵 =
𝑎11 𝑎12
𝑎21 𝑎22
+
𝑏11 𝑏12
𝑏21 𝑏22
=
𝑎11 + 𝑏11 𝑎12 + 𝑏12
𝑎21 + 𝑏21 𝑎22 + 𝑏22
VETORES E MATRIZES
 Inicialização
Portugol Fortran
inteiro i[3] = {2,3,5} real, dimension(3)::i = [2,3,5]
real, dimension(3)::i = (/2,3,5/)inteiro i[] = {2,3,5}
cadeia str = "Eu gosto de Fortran"
character(19)::str = "Eu gosto de Fortran"
character, dimension(19)::str = ['E','u',' ','g','o','s','t','o',' ','d','e','
','F','o','r','t','r','a','n']
inteiro sqrs[3][2] = {{1, 1}, 
{2, 4}, 
{3, 9}}
real, dimension(3,2)::sqrs = reshape([1,1,2,4,3,9],[3,2],[0,0],[2,1])
inteiro sqrs[ ][2] = {{1, 1}, 
{2, 4}, 
{3, 9}}
15
Função transforma um vetor em
uma matriz Dimensão da matriz
Direção de organização: 
2-coluna/1-linha
VETORES E MATRIZES
 Inicialização (Fortran)
 Pode-se inicializar todos os elementos com um valor constante
real, dimension(3)::notas = 0.0 !Inicializa os elementos com 0.0
real, dimension(2,3)::notas = 1.0 !Inicializa os elementos com 1.0
 Usando laço do implícito: (expr1, expr2, ..., indice = valIn, valFn, incr) –
executa as expressões expr1, expr2 e etc. a cada valor de indice.
real, dimension(3)::vetor = [(i,i=1,3)] ! O mesmo que vetor = [1,2,3]
integer, dimension(25)::vetor2 = [((0,i=1,4),5*j, j=1,5)] ! vetor2 = [0,0,0,0,5, 0,0,0,0,10, ...]
 Operações aritméticas elemento por elemento
notas = notas - 2 !Subtrai de 2 cada elemento do vetor
 Operações aritméticas vetoriais (elemento por elemento)
c = a + b !O mesmo que c(1) = a(1) + b(1), c(2) = a(2) + b(2), ....
16
VETORES E MATRIZES
 Inicialização (Fortran)
 Exemplo com vetor
17
VETORES E MATRIZES
 Inicialização (Fortran)
 Exemplo com matriz
18
VETORES E MATRIZES
 Mudando os limites de indexação de um vetor (Fortran)
 REAL, DIMENSION(limInf:limSup) :: vetor
REAL, DIMENSION(-1:1) :: v !O índice começa em -1 e vai até 1: -1, 0, 1
19
Exemplo: mudando o 
índice para [0, N - 1], 
onde N é o número de 
elementos
VETORES E MATRIZES
 Mudando os limites de indexação de uma matriz (Fortran)
 REAL, DIMENSION(limInfLin:limSupLin, limInfCol:limSupCol) :: matriz
real, dimension(-1:1,-2:0)::mat !Matriz 3x3, com índices de linha [-1, 1] e colunas [-2,0]
20
Exemplo: mudando o 
índice para [0, NX - 1], 
onde NX é o número 
de linhas ou colunas
VETORES E MATRIZES
 Vetores e matrizes podem ser exibidas sem laço
21
/ quebra a linha no ponto onde foi colocado
Aplicado 2 vezes para o grupo
de valores formatados (2 valores)
OBS: Exibe o transposto da matriz
VETORES E MATRIZES
 Pode-se utilizar funções intrínsecas em vetores e matrizes
REAL, DIMENSION(4) :: a = [ -1., 2., -3., 4.]
a = abs(a) !aplica o módulo a cada elemento
 É possível utilizar um subconjunto (seção) de elementos dos vetores
 Vetor(IndiceInical:IndiceFinal:Incremento)
REAL, DIMENSION(4) :: a = [ -1., 2., -3., 4.]
WRITE(*,*) a(2:3:1)
22
2.0000 -3.0000
Exibe
VETORES E MATRIZES
 Seção de vetor
 Vetor(IndiceInical:IndiceFinal:Incremento)
 IndiceInical:IndiceFinal:Incremento
 indiceInical:indiceFinal !O incremento é unitário
 indiceInical: !O valor de indiceFinal é o do último elemento
 indiceInical::inc !O valor de indiceFinal é o do último elemento
 :indiceFinal !O valor de indiceInical é o do primeiro elemento
 :indiceFinal:incr !O valor de indiceInical é o do primeiro elemento
 ::incremento
 :
 Pode-se utilizar um vetor de índices para indexar um segundo vetor
INTEGER, DIMENSION(5) :: vec = [1, 6, 4, 1, 9 ]
REAL, DIMENSION(10) :: a = [1., -2., 3., -4., 5., -6., 7., -8., 9., -10.]
WRITE(*,*) a(vec) !Exibe [1., −6., −4., 1., 9.] 23
VETORES E MATRIZES
 É possível utilizar um subconjunto (seção) de elementos para matrizes
write(*,*) 𝑎 : , 1 Exibe: 1 6 11 16 21
write(*,*) 𝑎 1, : Exibe: 1 2 3 4 5
write(*,*) Exibe: 1 3 5 6 8 10 11 13 15 -
24
VETORES E MATRIZES
 Operações com índices podem ser usadas com variáveis character
 Exemplo
25
Armazena apenas 8 caracteres
Operador de concatenação
Saída:
ABCDEFGH
123456BC
EFG
ABCDEFGH123456BCEFG
VETORES E MATRIZES
 Funções intrínsecas para vetores e matrizes
26
Função Propósito
ALLOCATED(vetor) Retorna .true. se a alocação foi bem sucedida; .false.,
caso contrário
LBOUND(vetor [, dim]) Retorna todos os limites inferiores (LI) do vetor, se
não foi passado dim; ou o LI da dimensão dim
UBOUND(vetor [, dim]) Retorna todos os limites superiores (LS) do vetor, se
não foi passado dim; ou o LS da dimensão dim
SHAPE(vetor) Retorna a forma do vetor
SIZE(vetor [, dim]) Retorna a extensão do vetor ao longo da dimensão
dim; ou tamanho total, se dim não for passado
[par] – parâmetro opcional
VETORES E MATRIZES
 Exemplo:
27
Saída
A forma da matriz e 11 4
O tamanho da matriz e: 44
Os limites inferiores da matriz sao: -5 0
Os limites superiores da matriz sao:5 3
VETORES E MATRIZES
 Funções intrínsecas transformacionais: Operam sobre todo o
vetor/matriz
28
Função Propósito
ALL(mascara) Retorna .true. se todos os valores em mascara são .true.
ANY(mascara) Retorna .true. se algum elemento em mascara é .true.
COUNT(mascara) Retorna o número de elementos em .true.
DOT_PRODUCT(vetA, vetB) Retorna o produto escalar
MATMUL(matA, matB) Retorna a multiplicação das matrizes
TRANSPOSE(matriz) Retorna a transposta de uma matriz
SUM(vet[, mascara]) Retorna a soma dos elementos de vet nas posições .true.
PRODUCT(vet[, mascara]) Retorna o produto dos elementos de vet nas posições .true.
MIN/MAXVAL(vet[, mascara]) Retorna o menor/maior elemento de vet das posições .true.
MIN/MAXLOC(vet[, mascara]) Retorna a posição do menor/maior elemento ...
VETORES E MATRIZES
 Exemplo:
29
Saída
1.4 2.1
VETORES E MATRIZES
 Construtor where: Usado para selecionar operações sobre elementos
 Exemplo: Dado 𝑎 =
−1 0
2 3
, vimos que podemos fazer: logv = log(a), mas 
existem elementos que não podem ser calculados
30
Em vez de:
DO i = 1, ndim1
DO j = 1, ndim2
IF ( a(i,j) > 0. ) THEN
logv (i,j) = LOG(a(i,j))
ELSE
logv(i,j) = -99999.
END IF
END DO
END DO
Podemos:
WHERE ( a > 0. )
logv = LOG(a)
ELSEWHERE
logv = -99999.
END WHERE
Forma geral:
WHERE (expr1)
!atribuicao1
ELSEWHERE (expr2)
!atribuicao2
ELSEWHERE
!atribuicao3
END WHERE
Forma geral:
WHERE (expr) !atribuicao
VETORES E MATRIZES
 Construtor FORALL: Executa instruções em um intervalo, dado 
uma condição lógica
 Exemplo:
31
Saída:
-1.00000000 0.00000000 1.41421354 1.73205078 
0.00000000 0.00000000 0.707106769 0.577350259
VETORES E MATRIZES
 Alocação dinâmica: Utilizado para determinar o tamanho de
vetores e matrizes em tempo de execução.
 Quando alocada, ao termino do uso, é necessário desalocar
 Sintaxe
!Declaração das variáveis alocáveis
TIPO, ALLOCATABLE, DIMENSION(:) :: vetor
TIPO, ALLOCATABLE, DIMENSION(:,:) :: matriz
!Leitura de tamanho, numLin e numCol
....
allocate( vetor(tamanho) ) !Alocando
allocate( matriz(numLin,numCol) ) !Alocando
....
deallocate(vetor) !Desalocando
deallocate(matriz) !Desalocando 32
VETORES E MATRIZES
 Exemplo com vetor:
33
VETORES E MATRIZES
 Exemplo com matriz:
34
FIM
 Dúvidas?
 Sugestões?
35

Outros materiais