Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 FACULDADE DE COMPUTAÇÃO E INFORMÁTICA BACHARELADOS EM CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DE INFORMAÇÃO E TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Linguagem de Programação I – Semana 01 TEORIA: REVISÃO DE VETORES Nossos objetivos nesta aula são: Revisar os principais conceitos de vetores como declaração, preenchimento e percurso Implementar estes conceitos na Linguagem Java A referência para esta aula é o Capítulo 7, Seção 7.1 (Arrays) do nosso livro da referencia básica: HORSTMANN, C. Conceitos de Computação com Java. 5.ed. Porto Alegre: Bookman, 2009. Não deixem de ler esta seção após a aula de hoje! DECLARAÇÃO E INICIALIZAÇÃO DE VETORES Conforme estudamos nas disciplinas de Introdução a Programação e Laboratório de Programação, um vetor (ou array) é uma sequência de valores do mesmo tipo. A cada valor da sequência é identificado por um número inteiro chamado índice. Na Linguagem Java, estes índices começam no valor zero. A figura abaixo ilustra um exemplo de vetor de números inteiros, que vamos identificar com a letra v: 0 1 2 3 4 5 6 8 7 5 6 7 -3 4 Neste exemplo, temos um vetor de tamanho 7. Os índices dos valores 8 e -3, por exemplo, são 0 e 5, respectivamente. Assim, dizemos que v[0]=8 e v[5]=-3. Uma das grandes vantagens do uso de vetores é que utilizamos somente um nome (v) para identificar uma sequência inteira da valores, economizando vários nomes de variáveis. Além disto, como os valores estão numa sequência, podemos utilizar comandos de repetição para percorrê-la e realizar algum processamento dos valores. É 2 comum utilizarmos o comando for, pois podemos utilizar o contador como índice no vetor. O primeiro passo para uso de um vetor é declará-lo e alocar espaço para os seus elementos. Assim, é importante que saibamos, a priori, quantos elementos (possivelmente) vamos usar no vetor. Abaixo, temos um exemplo de declaração de um vetor de 10 números inteiros em Java: int v[ ] = new int[10]; Embora não seja muito comum, é possível também se utilizar uma notação alternativa na declaração do vetor, colocando os colchetes antes da variável que identifica o vetor: int [ ] v = new int[10]; A mesma variável v pode ser utilizada para se alocar outro vetor. Para isto, basta utilizar uma nova alocação com new. Porém, é importante ressaltar que, se os valores anteriores à nova alocação não forem referenciados por uma outra variável, seu conteúdo estará perdido após a nova alocação. É importante, também, verificar se a JVM (Java Virtual Machine) conseguiu alocar o espaço solicitado antes de começar o preenchimento, conforme mostrado abaixo: int [ ] v = new int[10]; if (v!=null) { // verifica se houve alocação do vetor ... } Uma vez que o vetor foi corretamente alocado, podemos passar à tarefa de preenchimento. No exemplo abaixo, preenchemos as 10 primeiras posições do vetor com os números de 0 a 9: int [ ] v = new int[10]; if (v!=null) { // verifica se houve alocação do vetor for(int i=0;i<10;i++) v[i]=i; } 3 EXERCÍCIO TUTORIADO A partir do esqueleto de código abaixo, implemente em Java a função generateVector, que recebe um número inteiro maior que zero e devolve um vetor de números inicializado com os valores de 0 a n-1. Adicionalmente, leia o número inteiro n na função main e invoque generateVector. public class Revisao { public static int[ ] generateVector(int n){ } public static void main(String args[]){ } } PERCURSO EM VETORES Dado um vetor v inicializado, há dois percursos sequenciais possíveis em v: da esquerda para a direita (do índice 0 até o último índice) e da direita para a esquerda (do último índice para o índice 0). Ambos os percursos, podem ser realizados com o comando for: PERCURSO ESQUERDA DIREITA PERCURSO DIREITA ESQUERDA for(int i=0;i<v.length;i++) // processa elemento v[i] for(int i= v.length-1;i>=0;i--) // processa elemento v[i] 4 EXERCÍCIO TUTORIADO Implemente os procedimentos printVector e printReverseVector para exibir os elementos do vetor v da esquerda para a direita e da direita para a esquerda, respectivamente. Invoque estes procedimentos na função main. public class Revisao { public static int[ ] generateVector(int n){ ... } public void printVector(int v[ ]){ } public void printReverseVector(int v[ ]){ } public static void main(String args[]){ } } 5 ATIVIDADE DE LABORATÓRIO Utilizando o código desenvolvido na aula teórica, implemente as duas funções abaixo: public static int[ ] union(int v[ ], int w[ ]): calcula e devolve o resultado da união entre os vetores v e w. public static int[ ] intersection(int v[ ], int w[ ]): calcula e devolve o resultado da intersecção entre os vetores v e w. Invoque estas duas funções na função main e verifique se o resultado está correto observando a saída do procedimento printVector. public class Revisao { public static int[ ] generateVector(int n){ ... } public void printVector(int v[ ]){ ... } public void printReverseVector(int v[ ]){ ... } public static int[ ] union(int v[ ], int w[ ]){ } public static int[ ] intersection(int v[ ], int w[ ]){ } public static void main(String args[]){ } } 6 EXERCÍCIOS EXTRA-CLASSE 1. Implemente uma função em Java que gere o vetor dos n primeiros números pares. 2. Implemente uma função em Java que gere o vetor dos n primeiros números múltiplos de 5. 3. Implemente uma função em Java que gere o vetor dos n primeiros números primos. 4. Implemente uma função em Java que receba um vetor de números inteiros e devolva a sua versão invertida. 5. Dizemos que uma palavra é um palíndromo se ela for a mesma tanto numa leitura da esquerda para a direita quanto da direita para a esquerda. Por exemplo, MOM é um palíndromo. Implemente uma função em Java que receba um vetor de caracteres (char) representando uma palavra e verifique se a palavra é um palíndromo ou não. 6. Implemente uma função em Java que receba dois vetores de números inteiros e verifique se eles são iguais. 7. Implemente uma função em Java que receba dois vetores de números inteiros e devolva a diferença entre eles. 8. Implemente uma função em Java que receba um vetor de números inteiros representando um número binário, ou seja, contendo somente os dígitos 0 e 1 e devolva o número decimal correspondente. 9. Implemente uma função em Java que receba um vetor de números inteiros e verifique se ele está ordenado de forma crescente. 10. Implemente uma função em Java que receba dois vetores de números inteiros em ordem crescente e produza um terceiro vetor, resultante da intercalação ordenada dos dois vetores ordenados passados como parâmetro.
Compartilhar