Aula prática 6
Vetores e Matrizes
Monitoria de Introdução à Programação
Roteiro


Vetores
Matrizes
– Bidimensionais
– N-dimensionais



Uso em funções
Dúvidas
Exercícios
Vetores

Um vetor (também chamado de vector ou array) é uma sequência
contínua na memória, de elementos de mesmo tipo.

O acesso às posições individuais é feito pelo índice do elemento. Em C e
em várias outras linguagens, o primeiro elemento é acessado pelo índice
0 (zero-based ordering).

Em C, podem ser declarados nas formas:
Tipo nome[tamanho]; // índices de 0 até tamanho -1
Tipo nome[] = {Elemento1,E2,...,En}; // tamanho = n
Tipo nome[tamanho] = {E1,E2,...,En}; // n <= tamanho
Vetores

O operador “[]” dá acesso as elementos:

Tentar acessar um elemento em uma posição menor que 0 ou maior que
o tamanho do vetor, poderá resultar em erro de execução.

Cuidado com lixo de memória: ao declarar um vetor sem uma lista de
inicialização, o vetor estará preenchido por lixo de memória. O mesmo
vale para posições além da lista de inicialização.
Vetores

Vetores são constantes! A variável que guarda um vetor é, em si, um
endereço de memória constante, indicando onde aquele vetor começa.
Tentar mudá-la após a declaração resultará em um erro de compilação.
Uma consequência disso é que o seguinte não será possível:
Tipo nome[tamanho];
nome = {E1,E2,...,En}; // ERRADO!

Um vetor só guarda um tipo! Esse tipo é definido na sua declaração,
e nunca muda.

Tomar cuidado com o acesso aos elementos! Um acesso indevido
não será avisado na compilação, o erro talvez aparecerá na execução
enquanto estiver testando, ou pode só aparecer semanas depois da
aplicação ser entregue ao cliente.
Vetores

Como percorrer um vetor:
Uma forma prática de percorrer um vetor é usando um laço:
Matrizes Bidimensionais

Matrizes são vetores que guardam vetores. Dessa forma, podemos ter
mais de uma dimensão de acesso.

Em C:
Tipo matriz[tamanho2][tamanho1];
Tipo matriz[tamanho2][tamanho] = {{E1,E2,...,Em},...,{Z1,Z2,...,Zn}}
Tipo matriz[tamanho2][tamanho] = {E1,E2...Etamanho2*tamanho}
Tipo matriz[][tamanho] = {{E1,E2,...,Em},...,{Z1,Z2,...,Zn}}

O tamanho dos vetores internos não pode ser omitido, pois o compilador
pode assumir o tamanho de um vetor, mas não o tipo dos seus
elementos*.
*: O tipo de um vetor é “vetor de tipo com tamanho X” ou tipo[x].
Para matrizes, o tipo é tipo[x][y].
Matrizes Bidimensionais

O acesso à elementos da matriz é feito do mesmo modo que com
vetores:
Matrizes Bidimensionais

Para percorrer uma matriz:
Similar a percorrer um vetor, usando laços aninhados:
Matrizes N-Dimensionais

Se podemos ter vetores de vetores, segue que podemos ter vetores de
vetores de vetores de vetores...:

Para percorrer, a ideia é a mesma de vetores e matrizes bidimensionais,
usando laços aninhados.
Uso em Funções.

Como vetores são endereços na memória, podemos acessar diretamente
suas posições dentro de funções, e alterar seus valores:
Dúvidas?
Exercício 1


Faça um programa que receba um vetor de
trajetórias de 9 elementos, onde cada elemento
possui o valor do próximo elemento, entre 0 e 9,
do vetor a ser lido.
Índice
1
2
3
4
5
6
7
8
9
Valor
5
7
6
9
2
8
4
0
3
Assumindo que a sequência inicie no índice 1 e
que siga até encontrar o indice 0, teriamos a
seguinte leitura: 1, 5, 2, 7, 4, 9, 3, 6, 8, 0
Exercício 2

Faça um programa que receba do usuário uma
matriz 5x4, calcule sua transposta e multiplique a
sua matriz original pela sua transposta (𝑴 ∗ 𝑴𝑻 ),
exibindo para o usuario o seu valor final.
Exercício 3

Faça um programa que receba como entrada uma matriz 6x6 onde os
indices da matriz representará as cidades e os valores da matriz
representará as distâncias entre as cidades, peça ao usuário apenas a
diagonal inferior da matriz (pois a matriz será simetrica e sua diagonal
principal é 0). Exemplo da matriz segue abaixo:
1.(Cáceres)
2.(BBugres)
3.(Cuiabá)
4.(VGrande)
5.(Tangará)
6.(PLacerda)

2.(BBugres)
63
0
160
150
95
70
3.(Cuiabá)
210
160
0
10
120
60
4.(VGrande)
190
150
10
0
110
30
5.(Tangará)
300
95
120
110
0
80
6.(PLacerda)
190
70
60
30
80
0
Receba agora um vetor de 6 elementos que representará a sequência que o
usuário irá percorrer, começando do indice 1 e seguindo para o indice 2 e
assim sucessivamente, o vetor só poderá ter valores entre 1 e 6. Exemplo:
Indice
Cidade

1.(Cáceres)
0
63
210
190
300
190
1
3
2
4
3
2
4
5
5
6
6
1
Seu programa deverá retornar a distância percorrida pelo usuário, nesse
exemplo: 10 + 150 + 95 + 80 + 190 = 525
Opicional

Faça um programa que ordene um vetor de inteiro
de 20 posições, onde os seus elementos serão
dados pelo usuário e ordene seus elementos em
ordem crescente. Para isso utilize o algoritmo
bubblesort (procurar no google ;).
Download

Vetores