Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

16
Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

description

Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação. Roteiro. Vetores Matrizes B idimensionais N-dimensionais Uso em funções Dúvidas Exercícios. Vetores. - PowerPoint PPT Presentation

Transcript of Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

Page 1: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

Aula prática 6

Vetores e Matrizes

Monitoria de Introdução à Programação

Page 2: 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

Page 3: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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 -1Tipo nome[] = {Elemento1,E2,...,En}; // tamanho = n

Tipo nome[tamanho] = {E1,E2,...,En}; // n <= tamanho

Page 4: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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.

Page 5: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programaçã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.

Page 6: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

Vetores

Como percorrer um vetor:Uma forma prática de percorrer um vetor é usando um laço:

Page 7: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programaçã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].

Page 8: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

Matrizes Bidimensionais

O acesso à elementos da matriz é feito do mesmo modo que com vetores:

Page 9: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

Matrizes Bidimensionais

Para percorrer uma matriz:Similar a percorrer um vetor, usando laços aninhados:

Page 10: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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.

Page 11: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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:

Page 12: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

Dúvidas?

Page 13: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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.

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

Índice 1 2 3 4 5 6 7 8 9

Valor 5 7 6 9 2 8 4 0 3

Page 14: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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.

Page 15: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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:

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:

Seu programa deverá retornar a distância percorrida pelo usuário, nesse exemplo: 10 + 150 + 95 + 80 + 190 = 525

  1.(Cáceres) 2.(BBugres) 3.(Cuiabá) 4.(VGrande) 5.(Tangará) 6.(PLacerda)1.(Cáceres) 0  63 210 190 300  1902.(BBugres) 63 0  160 150 95  703.(Cuiabá) 210 160 0  10  120  604.(VGrande) 190 150 10 0   110 30 5.(Tangará)  300 95  120 110  0  806.(PLacerda) 190 70   60  30 80 0 

Indice 1 2 3 4 5 6Cidade 3 4 2 5 6 1

Page 16: Aula prática 6 Vetores e Matrizes Monitoria de Introdução à Programação

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 ;).