LINGUAGEM C:
ARRAY: VETORES E MATRIZES
POR QUE USAR ARRAY?
As variáveis declaradas até agora são capazes
de armazenar um único valor por vez.
Sempre que tentamos armazenar um novo valor
dentro de uma variável, o valor antigo é sobrescrito
e, portanto, perdido
Saída
x = 10.000000
x = 20.000000
ARRAY
Array ou “vetor” é a forma mais familiar de dados
estruturados.
Basicamente, um array é uma sequência de
elementos do mesmo tipo, onde cada elemento é
identificado por um índice
A idéia de um array ou “vetor” é bastante simples:
criar um conjunto de variáveis do mesmo tipo
utilizando apenas um nome.
ARRAY - PROBLEMA
Imagine o seguinte problema
leia as notas de uma turma de cinco estudantes e
depois imprima as notas que são maiores do que a
média da turma.
Um algoritmo para esse problema poderia ser o
mostrado a seguir.
ARRAY - SOLUÇÃO
ARRAY
O algoritmo anterior apresenta uma solução possível
para o problema apresentado
Porém, essa solução é inviável para grandes
quantidades de alunos
Imagine se tivéssemos de processar as notas de 100 alunos
ARRAY
Para 100 alunos, precisamos de:
Uma variável para armazenar a nota de cada aluno
100 variáveis
Um comando de leitura para cada nota
100 scanf()
Um somatório de 100 notas
Um comando de teste para cada aluno
100 comandos if.
Um comando de impressão na tela para cada aluno
100 printf()
ARRAY - DEFINIÇÃO
As variáveis têm relação entre si
todas armazenam notas de alunos
Podemos declará-las usando um ÚNICO nome
para todos os 100 alunos
notas: conjunto de 100 valores acessados por um
índice
Isso é um array!
0 1 ... 99
notas
ARRAY - DECLARAÇÃO
Arrays são agrupamentos de dados adjacentes na
memória. Declaração:
tipo_dado nome_array[tamanho];
O comando acima define um array de nome
nome_array, capaz de armazenar tamanho
elementos adjacentes na memória do tipo tipo_dado
Ex: int notas[100];
0 1 ... 99
notas
ARRAY - DECLARAÇÃO
Em um array, os elementos são acessados
especificando o índice desejado entre colchetes [
]
A numeração começa sempre do zero
Isto significa que um array de 100 elementos terá
índices de 0 a 99:
notas[0], notas[1], notas[2], ..., notas[99]
0 1 ... 99
81 52 72
notas
ARRAY - DEFINIÇÃO
Observação
Se o usuário digitar mais de 100 elementos em um
array de 100 elementos, o programa tentará ler
normalmente.
Porém, o programa os armazenará em uma parte não
reservada de memória, pois o espaço reservado para o
array foi para somente 100 elementos.
Isto pode resultar nos mais variados erros durante a
execução do programa.
ARRAY = VARÍAVEL
Cada elemento do array tem todas as
características de uma variável e pode aparecer
em expressões e atribuições (respeitando os seus
tipos)
notas[2] = x + notas[3];
if (notas[2] > 60)
Ex: somar todos os elementos de notas:
PERCORRENDO UM ARRAY
Podemos usar um comando de repetição (for,
while e do-while) para percorrer um array
Exemplo: somando os elementos de um array de 5
elementos
Variáveis
soma i lista[i]
0
3 0 3
54 1 51
72 2 18
74 3 2
119 4 45
5
ARRAY - CARACTERÍSTICAS
Características básicas de um Array
Estrutura homogênea, isto é, é formado por
elementos do mesmo tipo.
Todos os elementos da estrutura são igualmente
acessíveis, isto é, o tempo e o tipo de procedimento
para acessar qualquer um dos elementos do array são
iguais.
Cada elemento do array tem um índice próprio
segundo sua posição no conjunto
ARRAY - PROBLEMA
Voltando ao problema anterior
leia as notas de uma turma de cinco estudantes e
depois imprima as notas que são maiores do que a
média da turma.
ARRAY - SOLUÇÃO
Um algoritmo para esse problema usando array:
ARRAY - SOLUÇÃO
Se ao invés de 5, fossem 100 alunos?
EXERCÍCIO
Para um array A com 5 números inteiros,
formular um algoritmo que determine o maior
elemento deste array
EXERCÍCIO - SOLUÇÃO
Variáveis
ma i A[i]
3 0 3
18 1 18
51 2 2
3 51
4 45
5
COPIANDO UM ARRAY
Não se pode fazer atribuição de arrays inteiros,
apenas de suas posições individualmente
ARRAYS BIDIMENSIONAIS - MATRIZES
Os arrays declarados até o momento possuem
apenas uma dimensão e, portanto, são tratados
como uma lista de variáveis.
Porém, há casos em que uma estrutura com mais de
uma dimensão é mais útil.
Por exemplo, quando os dados são organizados em
uma estrutura de linhas e colunas, como uma tabela.
Para isso usamos um array com duas dimensões, ou
seja, uma “matriz”.
ARRAYS BIDIMENSIONAIS - MATRIZES
Arrays bidimensionais ou “matrizes”, contém:
Dados organizados na forma de uma tabela de 2
dimensões;
Necessitam de dois índices para acessar uma
posição: um para a linha e outro para a coluna
Declaração
tipo_variável nome_variável[linhas][colunas];
ARRAYS BIDIMENSIONAIS - MATRIZES
Exemplo
Criar uma matriz que tenha 100 linhas por 50
colunas
int mat[100][50];
mat[0][1] = 99;
0 1 ... 49
0 99
...
mat[0][1]
99
ARRAYS BIDIMENSIONAIS - MATRIZES
Em uma matriz, os elementos são acessados
especificando um par de colchetes e índice para
cada dimensão da matriz
A numeração começa sempre do zero
0 1 ... 49
0 99
...
mat[0][1]
99
ARRAYS BIDIMENSIONAIS - MATRIZES
Cada elemento da matriz tem todas as
características de uma variável e pode aparecer
em expressões e atribuições (respeitando os seus
tipos)
mat[0][1] = x + mat[1][5];
if (mat[5][7] > 0)
ARRAYS BIDIMENSIONAIS - MATRIZES
Como uma matriz possui dois índices, precisamos
de dois comandos de repetição para percorrer
todos os seus elementos.
ARRAYS MULTIDIMENSIONAIS
Arrays podem ter diversas dimensões, cada uma
identificada por um par de colchetes na
declaração
int vet[5]; // 1 dimensão
float mat[5][5]; // 2 dimensões
double cub[5][5][5]; // 3 dimensões
int X[5][5][5][5]; // 4 dimensões
ARRAYS MULTIDIMENSIONAIS
Apesar de terem o comportamento de estruturas
com mais de uma dimensão, na memória os dados
são armazenados linearmente:
int mat[5][5];
0,0
4,4
0,0 1,0 2,0 3,0 4,0 4,4
ARRAYS MULTIDIMENSIONAIS
Um array N-dimensional funciona basicamente
como outros tipos de array. Basta lembrar que o
índice que varia mais rapidamente é o índice
mais à direita.
int vet[5]; // 1 dimensão
float mat[5][5]; // 2 dimensões
double cub[5][5][5]; // 3 dimensões
int X[5][5][5][5]; // 4 dimensões
EXERCÍCIO
Leia uma matriz de 3x3 elementos inteiros e
calcule a soma dos seus elementos
EXERCÍCIO - SOLUÇÃO
Leia uma matriz de 3x3 elementos inteiros e
calcule a soma dos seus elementos
EXERCÍCIO
Dado duas matrizes reais de dimensão 2x3, fazer
um programa para calcular a soma delas.
EXERCÍCIO - SOLUÇÃO
Dado duas matrizes reais de dimensão 2x3, fazer
um programa para calcular a soma delas.
INICIALIZAÇÃO
Arrays podem ser inicializados com certos valores
durante sua declaração. A forma geral de um
array com inicialização é:
tipo_da_variável nome_da_variável [tam1] ... [tamN] =
{dados};
INICIALIZAÇÃO
A lista de valores é composta por valores (do
mesmo tipo do array) separados por vírgula.
Os valores devem ser dados na ordem em que
serão colocados na matriz
INICIALIZAÇÃO SEM TAMANHO
Inicialização sem especificação de tamanho
Nesse tipo de inicialização, o compilador vai
considerar o tamanho do dado declarado como sendo
o tamanho do array.
Isto ocorre durante a compilação e não poderá mais
ser mudado durante o programa.
Isto é útil quando não queremos contar quantos
caracteres serão necessários para inicializarmos uma
string.
INICIALIZAÇÃO SEM TAMANHO
Inicialização sem especificação de tamanho
MATERIAL COMPLEMENTAR
Vídeo Aulas
Aula 25: Array / Vetor
Aula 26: Array / Matriz
Aula 27: Array Multidimensional
Aula 28: Inicialização de Arrays
Aula 29: Somando um Array
Aula 30: Maior valor de um Array