A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula prática 6 Vetores e Matrizes

Apresentações semelhantes


Apresentação em tema: "Aula prática 6 Vetores e Matrizes"— Transcrição da apresentação:

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

2 Roteiro Vetores Matrizes Uso em funções Dúvidas Exercícios
Bidimensionais N-dimensionais Uso em funções Dúvidas Exercícios

3 Então, o que significa o identificador ‘vetor’ ?
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. int vetor[n]; //declaração de um vetor com ‘n’ elementos O tamanho do vetor é fixo durante o programa, não é possível modificar seu tamanho depois de declarado. Lembrando que não é possível utilizar variáveis na hora da declaração de um vetor. O identificador ‘vetor’ não é uma variável, ela não pode mudar valor, e não “armazena” nenhum dado. Então, o que significa o identificador ‘vetor’ ?

4 Vetores Lembrando que vetores são espaços contínuos na memória, ‘vetor’ é um endereço de memória, mas não um qualquer, e sim o primeiro endereço neste espaço que foi reservado na declaração ‘ int vetor[n] ‘ ; Portanto, para acessar outros elementos deste vetor, você deve incrementar algum valor à este endereço inicial para obter-se o elemento desejado. C oferece o operador “[ ]” para fazer este incremento e o acesso ser realizado facilmente. O valor de incremento é chamado de “Índice”.

5 vetor[2]; //índice == 2, posição == 3
Vetores Portanto, se quisermos acessar o elemento 2 do nosso ‘ int vetor[n] ‘ , usamos a seguinte sintaxe: vetor[2]; //índice == 2, posição == 3 O identificador ‘ vetor[2] ‘ pode ser usado como uma variável, tanto para leitura, quanto para escrita. Ambos os trechos são válidos: vetor[2] = 4; int a; a = vetor[2];

6 Vetores Exemplos de uso do operador “[ ]”
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.

7 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. Um vetor só guarda um tipo! Esse tipo é definido na sua declaração, e nunca muda. Tomar cuidado com o acesso aos elementos! C não checa os limites do vetor antes de acessar os elementos, portanto acessar elementos além do tamanho do vetor pode causar erro de execução. Exemplo de um acesso indevido: int vetor[4]; vetor[5] = 20;

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

9 Matrizes Matrizes são vetores de vetores. Dessa forma, podemos ter mais de uma dimensão de acesso. A declaração de uma matriz bi-dimensional é a seguinte: int matriz[m][n] // matriz com m linhas e n colunas Matrizes mantém a mesma propriedade de vetores, ou seja, continuam sendo espaços contíguos na memória. As linhas da matriz são dispostas sequencialmente. Isso gerará uma consequência na hora de passar vetores de duas ou mais dimensões para uma função.

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

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

12 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.

13 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: Lembrar que não há como saber o tamanho de um vetor, por isso precisamos passar seu tamanho como argumento também.

14 Uso em Funções. No exemplo anterior, a função soma recebe um inteiro que é o tamanho do vetor, e o próprio vetor (ou o endereço dele). A assinatura da função neste caso deve seguir esta sintaxe: int soma ( int vetor [], int tam ); A chamada da função deve seguir a seguinte sintaxe: soma( vetor, tam ); Se quisermos passar todo o vetor, devemos usar somente o identificador do vetor, mas se quisermos passar uma posição específica do vetor, usamos o operador “[ ]”. Ex: uma função que recebe dois inteiros e soma eles int somaNumeros (int n1, int n2); //assinatura da função somaNumeros (vetor [0], vetor[1]); //chamada da função

15 Uso em Funções – Matrizes bi-dimensionais.
As coisas mudam um pouco na hora de passar matrizes de duas ou mais dimensões. A chamada se mantém, passando somente o endereço da matriz, mas a assinatura será um pouco modificada. Usaremos como exemplo uma função que some todos os elementos de uma matriz quadrada, então temos que sua assinatura é: int somaMatriz (int matriz[][“n”], int ordem); //O “n” é o número de colunas da matriz Todas as dimensões da matriz devem ser definidas na assinatura da função, menos a primeira, e não devem ser usadas variáveis aqui, somente constantes. Por que isso é necessário?

16 Dúvidas?

17 Exercício 1 Faça um programa que receba 10 números inteiros (de 0 a 20) e os armazene em um vetor. Após isso, imprima o número que aparece mais e menos vezes, respectivamente. Também imprima o vetor ordenado de maneira crescente e sem repetições. Entrada: Saída: 1 4

18 Exercício 2 Faça um programa que receba um vetor de 9 posições, depois faça-o multiplicar uma matriz 9x9 que seja a tabela da tabuada de 1 até 9, e então imprima o vetor resultante. Entrada: Saida:

19 Exercício 3 Escreva um programa que receba o preço de 5 peças de um carro, cada peça sendo fabricada e vendida por 4 marcas diferentes, e então mostre ao usuário: 1. A marca mais barata. 2. A montagem mais barata e o preço. 3. Ordenadamente, de forma crescente, imprima os preços totais das marcas Exemplo: F/P P1 P2 P3 P4 P5 F1 120 480 330 155 280 F2 100 450 360 190 F3 500 350 200 295 F4 90 430 380 195 270 F5 140 520 395 215 300 - Fábrica 1 - P1: F4; P2: F4; P3: F1; P4: F1; P5: F4 MUDAR OS EXERCICIOS!!!!


Carregar ppt "Aula prática 6 Vetores e Matrizes"

Apresentações semelhantes


Anúncios Google