Escolar Documentos
Profissional Documentos
Cultura Documentos
Matrizes
Linguagens de Programação
Tipo Básico vs Tipo Composto
▪ Tipo Básico
– fornecido por uma linguagem
de programação como um
bloco de construção básico
▪ Tipo Composto
– pode ser construído a partir
de tipos primitivos e de
outros tipos compostos, em
um processo chamado
composição.
Definição de Matriz
▪ “Composição homogênea de dados, cujo elemento individual
é identificado por sua posição relativa ao primeiro”
notas 8.5
0 1 2 3 4 5 ... 28 29
Definição de Matriz
▪ “Composição homogênea de dados, cujo elemento individual
é identificado por sua posição relativa ao primeiro”
<tipo> <nome>[<dim1>][<dim2>];
Definição de Matriz
▪ “Composição homogênea de dados, cujo elemento individual
é identificado por sua posição relativa ao primeiro”
<tipo> <nome>[<dim1>][<dim2>]...[<dimN>];
7 dimensões tá bom!
Não?!
Matrizes e Índices
▪ Uma referência a um elemento inclui um ou mais índices que
determinam sua localização
– Esses índices normalmente são números inteiros
▪ A sintaxe mais comum para referência a Matrizes é usando
colchetes
real :: numeros(5)
integer :: matriz(3,3)
int A[10]; ...
float B[4][3]; matriz(i, j) = i+j
char C[40];
... a : array (1..1000) of integer;
A[2] = 3;
B[0][0] = 2.5; for i in 1..1000 loop
C[20] = '\n'; a(i) := 0;
end loop;
Matrizes e Índices
▪ Índices geralmente são faixas de inteiros
A: array(-4..5) of INTEGER;
B: array(1..4,0..2) of FLOAT;
C: array(1..40) of CHARACTER;
Matrizes e Índices
▪ Índices geralmente são faixas de inteiros
– Algumas linguagens permitem qualquer tipo ordinal como índice
procedure Relatorio is
type Meses is (Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec);
type Vendas is array (Meses) of FLOAT;
Ano2020 : Vendas;
begin
...
for I in Meses loop
Put (Ano2020 (I));
end loop;
end Relatorio;
Matrizes e Índices
▪ Índices geralmente são faixas de inteiros
– Algumas linguagens permitem índices negativos para acessar na
ordem inversa
my @lista = ('A','B','C','D','E');
$lista[-2] = 'Z';
foreach my $n (@names) {
say $n;
}
A B C Z E
Inicialização de Matrizes
▪ Em algumas linguagens, todos os elementos de uma matriz
são predefinidos automaticamente
INTEGER LISTA(4)
DATA LISTA /4, 5, 7, 83/
Atribuição
Atribuiçãodireta
diretaaaelementos
elementosespecíficos
específicosda
damatriz
matriz
Inicialização de Matrizes
▪ Algumas linguagens permitem a inicialização de matrizes
durante a alocação
2
Compreensão
Compreensãode
deListas
Listas Δ={x ∣ x ∈ [0,10], x é divisível por 3}
lista = [0,9,36,81]
P = "python"
Início (inclusive)
P[0:2] ↔ 'py' 'py'
Final (exclusive) P[0:3] ↔ 'py' 'pyt'
P[3:4] ↔ 'py' 'h'
P[3:] ↔ 'py' 'hon'
P[a:b] P[:4] ↔ 'py' 'pyth'
Fatias
▪ Sequência contínua de entradas de uma matriz
MAT(1:3, 1:3)
Fatias
▪ Sequência contínua de entradas de uma matriz
MAT(2, 1:3)
MAT(1:3, 1:3)
Fatias
▪ Sequência contínua de entradas de uma matriz
MAT(1:3, 1:2)
MAT(1:3, 1:3)
MAT(1:3, 1:3, 1:4)
Fatias
▪ Sequência contínua de entradas de uma matriz
Código
int x;
...
x = 10; “O endereço de x recebe o valor 10”
int i;
int vet[5];
...
Endereço …
Faixa de Índice N
Endereço
Implementação de Matrizes
▪ Uma matriz multidimensional também é uma lista de células
de memória adjacentes
Ordenação
OrdenaçãoLinha-Coluna
Linha-Coluna ou
ou Row-Major
Row-MajorOrder
Order
Número de colunas
Ordenação
OrdenaçãoColuna-Linha
Coluna-Linha ou
ou Column-Major
Column-MajorOrder
Order
Número de linhas
Overflow
Overflowde
debuffer
buffer→
→transbordamento
transbordamentode
deindexação
indexaçãoem
emmatrizes
matrizes