Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1
Motivação 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. 19/05/2017 Engenharia de Computação - Unipampa 2
Motivação 19/05/2017 Engenharia de Computação - Unipampa 3
Motivação 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 que processar 100 notas! 19/05/2017 Engenharia de Computação - Unipampa 4
Vetores Para 100 alunos, precisamos de: Uma variável para armazenar a nota de cada aluno 100 variáveis Um comando de leitura para cada nó 100 scanf() Um somatório de 100 notas Um comando de teste para cada aluno 100 comandos de if Um comando de impressão na tela para cada aluno 100 printf() 19/05/2017 Engenharia de Computação - Unipampa 5
Motivação Pergunta: Existe outra maneira de trabalhar com n variáveis sem usar n nomes diferentes? Resposta: Sim, utilizando um vetor. 19/05/2017 Engenharia de Computação - Unipampa 6
Vetor Vetor é uma variável composta homogênea unidimensional. Um vetor é formado por uma sequência de variáveis, todas do mesmo tipo de dados. Dizemos que cada variável componente é um elemento do vetor. As variáveis que compõem um vetor são todas identificadas pelo mesmo nome. Estas variáveis são alocadas sequencialmente na memória. 19/05/2017 Engenharia de Computação - Unipampa 7
Vetor 19/05/2017 Engenharia de Computação - Unipampa 8
Declaração de uma variável vetor Primeiro o tipo de dado dos componentes do vetor: int, float, double, char,... Segundo: o nome da variável vetor: usando as mesmas convenções de um identificador comum. E por fim, o tamanho do vetor (isto é, a quantidade de elementos que formam o vetor) escrito entre colchetes: [5], [3], [10]. 19/05/2017 Engenharia de Computação - Unipampa 9
Declaração de uma variável vetor Exemplos 19/05/2017 Engenharia de Computação - Unipampa 10
Declaração de uma variável vetor Todo vetor é um espaço linear na memória dividido em várias variáveis componentes de acordo com o tamanho declarado. Ao declaramos int vet [4]; é alocado na memória um espaço linear para 4 variáveis inteiras, representadas da seguinte forma: 19/05/2017 Engenharia de Computação - Unipampa 11
Acessando elementos de um vetor Os componentes de um vetor são numerados sequencialmente começando com zero. Para identificar cada componente usamos o nome do vetor juntamente com o número que indica a posição do componente na sequência. A posição de um componente é chamada de índice. Exemplo: 19/05/2017 Engenharia de Computação - Unipampa 12
Acessando elementos de um vetor Sintaxe: Primeiramente escreve-se o vetor. Despois escreve-se o índice (uma expressão inteira) entre colchetes 19/05/2017 Engenharia de Computação - Unipampa 13
Acessando elementos de um vetor Exemplo: Notas[1] refere-se ao componente na posição 1 do vetor Notas, ou seja, o segundo elemento do vetor. Uma vez que as variáveis que compõem o vetor têm o mesmo nome, o que distingue cada uma delas é o seu índice, que referencia sua localização dentro da estrutura. 19/05/2017 Engenharia de Computação - Unipampa 14
Acessando elementos de um vetor A primeira posição de um vetor tem índice 0. A última posição de um vetor tem índice tamanho 1. Importante: O sistema de execução não verifica se o índice usado para acessar um componente do vetor é válido. É responsabilidade do programador garantir que o índice usado para acessar um elemento de um vetor é válido. 19/05/2017 Engenharia de Computação - Unipampa 15
Acessando elementos de um vetor Não esqueça: Para acessar uma posição específica de um vetor basta indicar a posição desejada entre colchetes. A posição é chamada de índice. A faixa de índices válidos inicia em 0 e termina com o tamanho - 1. Exemplo: os índices válidos para um vetor de tamanho 4 são 0, 1, 2 e 3. 19/05/2017 Engenharia de Computação - Unipampa 16
Acessando elementos de um vetor Exemplo: Declarar um vetor de tamanho 4 e atribuir o valor 540 na posição 1 e o valor 8456 na posição 3. 19/05/2017 Engenharia de Computação - Unipampa 17
Acessando elementos de um vetor O limite do vetor é sempre o seu tamanho menos 1. No exemplo anterior o vetor é de tamanho 4, a posição máxima é 3, pois 4-1 = 3. Se um valor for atribuído fora dos limites do vetor ocorrerá um erro muito grave, pois o valor estará sendo armazenado em um espaço de memória que não pertence ao vetor. Ainda no exemplo anterior, não se deve fazer: 19/05/2017 Engenharia de Computação - Unipampa 18
Percorrendo um vetor Pergunta: Qual estrutura já vista nas aulas podemos utilizar para percorrer um vetor? Resposta: Podemos usar um comando de repetição (for, while e do-while) para percorrer um vetor. 19/05/2017 Engenharia de Computação - Unipampa 19
Percorrendo um vetor Voltando ao problema inicial: 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. 19/05/2017 Engenharia de Computação - Unipampa 20
Solução 19/05/2017 Engenharia de Computação - Unipampa 21
Inicialização de vetores Quando declaramos um vetor, os seus elementos não são inicializados. Neste caso os seus elementos são desconhecidos (lixo) e só deverão ser utilizados após atribuição. Porém é possível fazer a inicialização de um vetor com os valores iniciais desejados. Os valores inicias são colocados entre chaves {} Exemplo: 19/05/2017 Engenharia de Computação - Unipampa 22
Inicialização de vetores A quantidade de valores entre chaves não deve ser maior que o tamanho do vetor. A fim de facilitar a inicialização, C permite omitir o número de elementos (tamanho): []. Neste caso, o compilador assume que o tamanho do vetor é igual ao número de valores especificados na inicialização (entre chaves). Exemplo: 19/05/2017 Engenharia de Computação - Unipampa 23
Exercícios 1. Construa um programa que declare e receba um vetor de inteiros com 10 elementos com números fornecidos pelo usuário, através da entrada padrão e depois exiba os índices e seus valores armazenados. Exemplo: índice 1 valor 10; índice 2 valor 5 2. Escrever um algoritmo que lê um vetor A(10) e escreve todos as posições com valor igual a 10 nesse vetor. 3. Faça um programa que preencha um vetor com 5 números inteiros, calcule e mostre os números pares e suas respectivas posições. 4. Escrever um algoritmo que lê um vetor V(10) e um valor escalar. Fazer o produto de cada posição do vetor V pelo valor escalar digitado. Mostra na tela os novos valores do vetor após a multiplicação. 19/05/2017 Engenharia de Computação - Unipampa 24
Exercícios 5. Faça um programa que leia um vetor de 10 posições e crie um segundo vetor substituindo os valores pares por 0. 6. Faça um programa que lê um vetor vet[6] e o escreve. A seguir, eleve cada um dos elementos do vetor ao quadrado e o escreva novamente. Mostre na tela o vetor modificado. 7. Faça um programa que leia 2 vetores com 5 números inteiros cada, mostre as posições que apresentem o mesmo valor nos dois vetores. 8. Faça um programa que exibe o conteúdo de um vetor tamanho 10 de forma invertida. Este vetor já deve estar inicializado no programa. 19/05/2017 Engenharia de Computação - Unipampa 25