Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Presbiteriana Mackenzie Vetores em Java Profa. Ana Cristina dos Santos Faculdade de Computação e Informática Introdução à Programação 1 Introdução à Programação 2 • Estruturas de dados homogêneas: – vetores (arrays de tipos primitivos, em Java) Vetores Introdução à Programação 3 Vetores em Java • Um vetor é um conjunto de informações do mesmo tipo referenciadas por um nome lógico comum, onde cada elemento do conjunto é obtido através de um índice. índices do vetor 0 1 2 3 4 5 6 elementos do vetor 32 10 8 12 23 9 18 um vetor de números inteiros, chamado vet vet possui 7 elementos, indexados de 0 a 6 vet [ 2 ] = 8 ( o elemento de índice 2 em vet, contém valor 8 ) Introdução à Programação 4 Vetores em Java • Vetores em Java são chamados de arrays (arranjos). • Arrays possuem tamanho definido no momento de sua criação (esse tamanho é fixo). • Valores de índices começam sempre em zero. • Exemplo: um vetor chamado nomeVetor, criado com 10 elementos: – nomeVetor[0] = valor1; // primeiro elemento do vetor – nomeVetor[9] = valor2; // último elemento do vetor – nomeVetor[10] = ... // ERRO! elemento inexistente! Introdução à Programação 5 Vetores em Java • Os elementos de vetores podem ser de: – Tipo primitivo (int, double, char, boolean....); – Tipo objeto (referências a objetos de classes quaisquer, como, por exemplo, String). • Por enquanto, estudaremos apenas vetores de tipos primitivos. • Observação: – Em Java, existe uma classe Vector, que faz alocação dinâmica de memória para manipular arrays. Não utilizaremos Vector neste momento! Introdução à Programação 6 Vetores em Java • Existem três fases bem distintas no uso de vetores: – Declaração do vetor • declaração de uma variável que referencia um tipo de estrutura homogênea – Criação do vetor • refere-se ao momento em que a estrutura de dados é criada na memória, com um tamanho pré-determinado – Manipulação dos elementos do vetor • quando os elementos do vetor são lidos ou alterados Introdução à Programação 7 Vetores de Tipos Primitivos • Declaração: tipoDado nomeVetor[ ]; // ou: tipoDado[ ] nomeVetor; – Exemplos: • int faltas[ ]; • int[ ] valores; • double notas[ ]; • boolean aprovado[ ]; • int[ ] a, b; // dois vetores de inteiros: a, b • int a[ ], b; // um inteiro b e um vetor de inteiros a Introdução à Programação 8 Vetores de Tipos Primitivos • Criação: nomeVetor = new tipoDado [ qtd_elementos ] ; – Exemplos: • faltas = new int [ 10 ]; • notas = new double [ 10 ]; • Manipulação: nomeVetor [ índice ] = valor; – Exemplos: • faltas[2] = faltas[0] + faltas[1]; // o 3º elemento do vetor faltas // recebe a soma do 1° com o 2º Introdução à Programação 9 Vetores em Java • Quando se sabe previamente o tamanho do vetor a ser criado e os valores iniciais de cada elemento, é possível fazer declaração, criação e inicialização conjuntas: tipoDado nomeVetor[ ] = { valor1, valor2, ....}; • Exemplos: int faltas[ ] = { 0,1,2,3 }; // vetor com 4 inteiros double[ ] notas = { 2.5, 7.0 }; // vetor com 2 valores reais float[ ] a = { 1.4f, 2.3f }; // vetor com 2 reais (precisão simples) boolean[ ] b = { true,false,true }; // vetor com 3 booleanos String[ ] nomes = { "ana","paula" }; // vetor com 2 strings // String não é tipo primitivo, mas aceita essa forma de inicializ. Introdução à Programação 10 Exemplo 1 - Vetor de Reais (1/3) Vamos fazer um algoritmo que lê um vetor de 3 posições (reais), calcula e exibe a média aritmética dos elementos do vetor Nome: MediaAritmeticaVetor Objetivo: Calcular a média aritmética Variáveis: real V[3] inteiro i real soma, media Introdução à Programação 11 Exemplo 1 - Vetor de Reais (1/3) Vamos fazer um algoritmo que lê um vetor de 3 posições (reais), calcula e exibe a média aritmética dos elementos do vetor Inicio PARA i DE 0 ATÉ 2 FAÇA LEIA V[ i ] FIM-PARA soma 0 PARA i DE 0 ATÉ 2 FAÇA soma soma + V[ i ] FIM_PARA media soma / 3 Fim Introdução à Programação 12 Exemplo 1 - Vetor de Reais (2/3) public class MediaAritmeticaVetor { public static void main ( String args [ ] ) { double v[ ] ; // declara um vetor de números reais int i; double soma, media; v = new double [3]; // cria um vetor de reais com 3 posições // lê todos os elementos do vetor, a partir da digitação do usuário: for ( i = 0 ; i <= 2 ; i++ ) { v [ i ] = EntradaSaida.leReal ( "Digite um nº real:” ); } . . . continua . . . Acesso a um elemento do vetor Introdução à Programação 13 Exemplo 1 - Vetor de Reais (3/3) . . . continuação . . . soma = 0; for ( i = 0 ; i <= 2 ; i++ ) { soma = soma + v [ i ] ; } media = soma / 3 ; EntradaSaida.exibeMsg("A média dos elementos do vetor é ” + media); } // fim do método main (módulo principal) } // fim do programa (da classe MediaAritmeticaVetor) Acesso a um elemento do vetor Introdução à Programação 14 Depuração • Digite e execute • Depois de ter o exemplo funcionando, depure-o: – crie um breakpoint – acione Debug As Java Application –prossiga passo a passo com F6 –observe os valores no vetor (expandir v) Introdução à Programação 15 Exercício 1 - Vetores • Escreva um algoritmo (e transcreva-o para Java) que: – recebe do usuário uma quantidade inteira positiva; – cria um vetor de inteiros, com o número de posições igual à quantidade fornecida pelo usuário; – preenche o vetor, pedindo que o usuário digite a quantidade dada de inteiros; – percorre o vetor, identificando qual é o menor dos inteiros fornecidos, usando um método para isto. – exibe o menor dos valores encontrados no vetor. Introdução à Programação 16 Vetores e Modularização • Com muita frequência, algoritmos que envolvem vetores fazem: – a leitura dos dados para preencher o vetor; – a varredura para exibição de todos os elementos do vetor. • Isso sugere o uso de módulos, para reutilizarmos a codificação das tarefas acima. • Veremos alguns exemplos de uso de vetores em módulos. Tais módulos serão acrescentados à classe EntradaSaida, que será renomeada para ESVetor Introdução à Programação 17 Vetores e Modularização • A classe ESVetor conterá os seguintes procedimentos, além daqueles de EntradaSaida: public static void leVetorInteiros (int v[ ], int tam) recebe um vetor v de inteiros já criado e seu tamanho; altera v com valores lidos do teclado; public static void exibeVetorInteiros (int v[ ], int tam) recebe um vetor v de inteiros já criado e preenchido e seu tamanho; exibe todos os dados de v Introdução à Programação 18 Vetores e Modularização • Mais procedimentos da classe ESVetor: public static void leVetorReais (double v[ ], int tam) recebe um vetor v de reais já criado e seu tamanho; altera v com valores lidos do teclado; public static void exibeVetorReais (double v[ ], int tam) recebe um vetor v de reais já criado e preenchido e seu tamanho; exibe todos os dados de v Introdução à Programação 19 Classe ESVetor (1/2) . . . Trecho de ESVetor: . . . public static void leVetorInteiros (int v[ ], int tam) { int i; for ( i=0 ; i<tam ; i++ ) { v[ i ] = leInteiro("Digite um inteiro para v[" +i+ "]"); } } public static void leVetorReais(double v[ ], int tam) { int i; for ( i=0 ; i<tam ; i++ ) { v[ i ] = leReal("Digite um real para v[" +i+ "]"); } } . . . continua . . . O parâmetro v[ ] é uma referência a um vetor A posição i de v é alterada definitivamente, isto é, há impacto na variável do módulo chamador Introdução à Programação 20 Classe ESVetor (2/2) . . . continuação . . . public static void exibeVetorInteiros (int v[ ], int tam) { int i; String saida=""; for ( i=0 ; i<tam ; i++ ) { saida = saida + "v[" +i+ "] = " + v[i] + "\n" ; } exibeMsg(saida); } public static void exibeVetorReais (double v[ ], int tam) { String saida=" "; for ( int i=0 ; i<tam ; i++ ) { saida = saida + "v[" +i+ "] = " + v[i] + "\n" ; } exibeMsg(saida); } A string auxiliar saida guarda todos os dados de v, para posterior exibição Introdução à Programação 21 Exercício 2 - Vetores e Módulos Crie um procedimento que recebe três vetores de inteiros A, B e C de igual tamanho, já criados e preenchidos com valores. Altere o vetor C para que contenha a soma de A com B. A assinatura do procedimento deve ser: public static void somaVetores ( int A[ ], int B[ ], int C[ ], int tam ) Exemplo: para tam=7 Introdução à Programação 22 Exercício 3 - Vetores e Módulos • Crie um programa que contenha dois procedimentos: – somaVetores, do exercício 2 – main, módulo principal que: • solicita que o usuário digite um tamanho inteiro positivo para os vetores (tam); • declara e cria três vetores inteiros de tamanho tam; • leia dados para os dois primeiros vetores (use o módulo leVetorInteiros de ESVetor); • calcula a soma dos dois primeiros vetores e a guarda no terceiro vetor; • exibe os dados do terceiro vetor. Introdução à Programação 23 Exemplo 2 - Vetor e Funções (1/2) Vamos acrescentar ao exercício 3 uma função que recebe como parâmetros um vetor v de inteiros (já criado e preenchido) e seu tamanho tam. A função realiza a soma de todos os elementos de v e retorna essa soma. A assinatura da função deve ser: public static int somaNoVetor ( int v[ ], int tam ) Exemplo, para tam=4: índices de v: 0 1 2 3 elementos de v: 3 4 5 6 soma dos elementos de v: 18 Introdução à Programação 24 Exemplo 2 - Vetor e Funções (2/2) // transcrição em Java, da função somaNoVetor: public static int somaNoVetor ( int v[ ], int tam ) { int i; int soma=0; for (i=0 ; i<tam ; i++ ) { soma = soma + v[ i ]; } return soma; } // fim da função somaNoVetor A resposta da função é a soma de todos os elementos de v A resposta da função é um inteiro Introdução à Programação 25 Exercício 4 - Vetores e Módulos • Crie uma função em Java que recebe como parâmetro um vetor de inteiros v, de tamanho tam. O vetor v já vem criado e preenchido com valores. A função calcula e retorna a média aritmética dos elementos de v. • A assinatura da função deve ser: public static double mediaVetor ( int v[ ], int tam ) Exemplo, para tam=4: índices de v: 0 1 2 3 elementos de v: 3 4 5 6 média dos elementos de v: 4,5 Introdução à Programação 26 Exercício 5 - Vetores e Módulos • Crie uma função em Java que recebe como parâmetro um vetor de inteiros v, de tamanho tam. O vetor v já vem criado e preenchido com valores. A função retorna o índice de v onde ocorre o elemento de maior valor. A assinatura da função deve ser: public static int indiceMaiorVetor ( int v[ ], int tam ) Exemplo, para tam=4: índices de v: 0 1 2 3 elementos de v: 3 4 5 6 índice do maior de v: 3 Introdução à Programação 27 Exercício 6 - Vetores e Módulos • Crie uma função em java que recebe como parâmetro um vetor de inteiros v, de tamanho tam, e um valor inteiro x. O vetor v já vem criado e preenchido com valores. A função conta a quantidade de vezes que o valor x ocorre em v e retorna essa contagem. A assinatura da função deve ser: public static int contaX ( int v[ ], int tam, int x ) Exemplo, para tam=4: índices de v: 0 1 2 3 elementos de v: 3 6 5 6 ocorrências de x=6 em v: 2 ocorrências de x=4 em v: 0 Introdução à Programação 28 Exercício 7 - Vetores e Módulos • Crie uma função em Java que recebe como parâmetro um vetor de inteiros v, de tamanho tam, e um valor inteiro x. O vetor v já vem criado e preenchido com valores. A função conta a quantidade de números pares que ocorrem em v e retorna essa contagem. A assinatura da função deve ser: public static int contaPares ( int v[ ], int tam ) Exemplo, para tam=4: índices de v: 0 1 2 3 elementos de v: 3 4 5 6 quantidade de pares em v: 2 Introdução à Programação 29 Exercício 8 - Vetores e Módulos • Crie um programa que contenha as quatro funções dos exercícios anteriores (mediaVetor, maiorNoVetor, contaX e contaPares), além do main, módulo principal que: – solicita que o usuário digite um tamanho inteiro positivo (tam) para a criação de vetores; – declara e cria dois vetores de inteiros de tamanho tam; – lê dados para os dois vetores (use leVetorInteiros); – calcula e exibe a média aritmética dos dois vetores (com a função mediaVetor); – exibe os índices e os valores dos maiores elementos dos dois vetores (use maiorNoVetor); – solicita que o usuário digite um inteiro x; – conta as ocorrências de x no vetor que contiver a maior quantidade de pares (caso empate o nº de pares, conte x nos dois vetores).
Compartilhar