O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Java6
Java6
Carregando em…3
×

Confira estes a seguir

1 de 16 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Anúncio

Semelhante a Java8 (20)

Mais de Robson Silva Espig (20)

Anúncio

Mais recentes (20)

Java8

  1. 1. Linguagens e Técnicas de Programação - JAVA José Marcos Barbosa da Silveira [email_address]
  2. 2. Utilização de Arrays <ul><li>Objetivos deste capítulo </li></ul><ul><li>Diferenciar arrays unidimensionais de multidimensionais; </li></ul><ul><li>Definir os aspectos fundamentais sobre a necessidade do uso de arrays; </li></ul><ul><li>Demonstrar a praticidade da utilização de arrays; </li></ul><ul><li>Apresentar as vantagens fornecidas pelo uso de arrays, em especial na manipulação de objetos; </li></ul><ul><li>Fornecer conceitos que permitam ao aluno desenvolver aplicações mais consistentes e com código reduzido. </li></ul>
  3. 3. Utilização de Arrays <ul><li>Em determinadas rotinas de programa torna-se necessário manipular diversas variáveis de um mesmo tipo de dado, por exemplo, manipular ao mesmo tempo 100 nomes de pessoas. Em vez de realizar a declaração de 100 variáveis, é possível a declaração de apenas uma. </li></ul><ul><li>Arrays agrupam dados e objetos de um mesmo tipo. Podem ser declarados arrays de tipos primitivos ou de classes. Permitem que você referencie um grupo de objetos através de um nome em comum. </li></ul><ul><li>Você pode declarar um array de qualquer tipo, tanto primitivo ou classe. : </li></ul><ul><ul><ul><li>char s[ ]; </li></ul></ul></ul><ul><ul><ul><li>Point p[ ]; // Onde Point é uma classe </li></ul></ul></ul><ul><li>No JAVA todo array é um objeto, mesmo que o array seja constituído de um tipo primitivo, e como as classes a declaração não cria automaticamente o objeto e sim a referência que poderá ser utilizada para referenciar um array. A memória que será utilizada pela array deverá ser alocada dinamicamente através do comando new ou de um inicializador de arrays. </li></ul>
  4. 4. Utilização de Arrays <ul><li>É possível criar arrays, como todos os outros objetos, utilizando a palavra chave new : </li></ul><ul><ul><ul><li>s = new char [20]; </li></ul></ul></ul><ul><ul><ul><li>p = new Point[100]; </li></ul></ul></ul><ul><li>A primeira linha cria um array contendo 20 posições do tipo caracter. A segunda linha cria um array de 100 variáveis do tipo Point. Entretanto, ela não cria os 100 objetos do tipo Point. Estes deverão ser criados separadamente como a seguir : </li></ul><ul><ul><ul><li>p[0] = new Point( ); </li></ul></ul></ul><ul><ul><ul><li>p[1] = new Point( ); </li></ul></ul></ul><ul><ul><ul><li>. </li></ul></ul></ul><ul><li>O índice de elementos de uma array em JAVA sempre é iniciado em 0 (ZERO), devendo sempre se manter entre zero e o número de elementos contidos no array. Qualquer tentativa de acessar um elemento fora do alcance determinado no array causará um erro de execução. </li></ul>
  5. 5. Inicializando Arrays <ul><li>No momento da criação de um array cada elemento dele será inicializado. No caso o array s do tipo char do exemplo anterior, cada um dos seus elementos terá ‘0000’ (null) como seu valor inicial. No caso da matriz p, cada elemento terá null (nulo), indicando que eles ainda não se referem a um objeto do tipo Point. </li></ul><ul><li>O JAVA define algumas formas alternativas de criação e definição de valores iniciais : </li></ul><ul><li>String nomes[ ] = {“Jorgina”,“Ana”,“Gabriela”}; </li></ul><ul><li>é equivalente a : </li></ul><ul><li>String nomes[ ]; </li></ul><ul><li>nomes = new String[3]; </li></ul><ul><li>nomes[0] = “Jorgina”; </li></ul><ul><li>nomes[1] = “Ana”; </li></ul><ul><li>nomes[2] = “Gabriela”; </li></ul>
  6. 6. Arrays Unidimensionais <ul><li>Sintaxe : </li></ul><ul><li>Tipo-de dado nome-do-array[]=new tipo-de-dado[quantidade]; </li></ul><ul><li>Exemplo 1: </li></ul><ul><li>public class Arrays1 </li></ul><ul><li>{ </li></ul><ul><li>public static void main(String[] args) </li></ul><ul><li>{ </li></ul><ul><li> int[] array1 = { 1, 2, 3, 4, 5 }; </li></ul><ul><li> for(int i = 0; i < array1.length; i++) </li></ul><ul><li>System.out.println(&quot;array1[&quot;+i+ &quot;] = &quot;+array1[i]); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  7. 7. Arrays Unidimensionais (cont.) <ul><li>Exemplo 2: </li></ul><ul><li>import java.io.*; </li></ul><ul><li>class ExemploArray{ </li></ul><ul><li>public static void main(String args[]){ </li></ul><ul><li>float total=0; </li></ul><ul><li>int i; </li></ul><ul><li>DataInputStream dado=new DataInputStream(System.in); //declara o array notas com 10 elementos do tipo float </li></ul><ul><li>float notas[]=new float [10]; </li></ul><ul><li>try{ </li></ul><ul><li>for(i=0;i<10;i++){ </li></ul><ul><li> System.out.println(&quot;Digite a &quot;+(i+1)+&quot; nota: &quot;); </li></ul><ul><li> notas[i]=Float.parseFloat(dado.readLine()); </li></ul><ul><li> total=total+notas[i]; </li></ul><ul><li>} </li></ul><ul><li>System.out.println(&quot;Media= &quot;+(total/i)); </li></ul><ul><li>} </li></ul><ul><li>catch(IOException e){System.out.println(&quot;Erro!&quot;);} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  8. 8. Arrays Bidimensionais <ul><li>Sintaxe : </li></ul><ul><li>Tipo-de dado nome-do-array[][]=new tipo-de-dado[índice1] [índice2]; </li></ul><ul><li>Exemplo: </li></ul><ul><li>import java.io.*; </li></ul><ul><li>class ExemploArray{ </li></ul><ul><li>public static void main(String args[]){ </li></ul><ul><li> float total=0; </li></ul><ul><li> int mtr,nota,cont=1; </li></ul><ul><li> DataInputStream dado=new DataInputStream(System.in); </li></ul><ul><li> float notas[][]=new float [3][2]; </li></ul><ul><li> try{ </li></ul><ul><li> for(mtr=0;mtr<3;mtr++){ </li></ul><ul><li> for(nota=0;nota<2;nota++){ </li></ul><ul><li>System.out.println(&quot;Digite a &quot;+(nota+1)+&quot; nota do aluno&quot;+(mtr+1)); notas[mtr][nota]=Float.parseFloat(dado.readLine()); </li></ul><ul><li>total=total+notas[mtr][nota]; </li></ul><ul><li>cont++; </li></ul><ul><li> } </li></ul><ul><li> } </li></ul><ul><li> System.out.println(&quot;Media Geral= &quot;+total/(cont-1)); </li></ul><ul><li> } </li></ul><ul><li> catch(IOException e){System.out.println(&quot;Erro!&quot;);} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  9. 9. Passagem de Arrays em Métodos <ul><li>Os métodos já foram objeto de nosso estudo. Como observamos na ocasião os métodos podem recebe e retornar valores. Na passagem desses valores pode ser usado qualquer tipo de variável (int, double, float, String e outras). Da mesma forma, é possível também criar métodos com passagem e retorno de arrays. O funcionamento é basicamente o mesmo: quando o método é invocado, um array qualquer é passado, esse array é manipulado internamente pelo método e depois é retornado. </li></ul><ul><li>Sintaxe : </li></ul><ul><li>public static tipo-de array[] nome-do-método (tipo-do-array nome-do-array[]) </li></ul>
  10. 10. Passagem de Arrays em Métodos (cont.) <ul><li>Exemplo : </li></ul><ul><li>import java.io.*; </li></ul><ul><li>public class Arrays1 </li></ul><ul><li>{ </li></ul><ul><li>public static void main(String[] args) </li></ul><ul><li>{ </li></ul><ul><li>DataInputStream dado=new DataInputStream(System.in); </li></ul><ul><li>int[] n=new int[10]; </li></ul><ul><li>try{ </li></ul><ul><li>for(int i = 0; i <10; i++){ </li></ul><ul><li>System.out.println(&quot;Digite o &quot;+(i+1)+&quot; numero:&quot;); </li></ul><ul><li>n[i]=Integer.parseInt(dado.readLine()); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>catch(IOException e){System.out.println(&quot;Erro !&quot;);} </li></ul><ul><li>n=ordenar(n); </li></ul><ul><li>System.out.println(&quot;Valores Ordenados&quot;); </li></ul><ul><li>for(int i=0;i<10;i++) </li></ul><ul><li> System.out.print(n[i]+&quot;,&quot;); </li></ul><ul><li>} </li></ul>
  11. 11. Passagem de Arrays em Métodos (cont.) <ul><li>public static int[] ordenar(int arr[]) </li></ul><ul><li>{ </li></ul><ul><li>int i,j,aux; </li></ul><ul><li>for(i=0;i<10;i++){ </li></ul><ul><li>for(j=i;j<10;j++) </li></ul><ul><li>{ </li></ul><ul><li>if(arr[i]>arr[j]){ </li></ul><ul><li> aux=arr[j]; </li></ul><ul><li> arr[j]=arr[i]; </li></ul><ul><li> arr[i]=aux; </li></ul><ul><li> } </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>return arr; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  12. 12. Arrays de Objetos <ul><li>Da mesma forma que variáveis primitivas, é possível criar um array para armazenamento de objetos. Isto é muito importante pois permite realizar as mesmas operações com diversos objetos do mesmo tipo. </li></ul><ul><li>class ArrayObjetos{ </li></ul><ul><li>public static void main(String args[]){ </li></ul><ul><li>//cria um arrya com 100 objetos veiculo </li></ul><ul><li>Veiculo veic[]=new Veiculo[100]; </li></ul><ul><li>for(int i=0;i<100;i++){ </li></ul><ul><li>//inicializa todos os objetos </li></ul><ul><li>veic[i]=new Veiculo(); </li></ul><ul><li>veic[i].velocidade=0; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  13. 13. Exercícios <ul><li>1) Crie um aplicativo que leia 10 valores inteiros quaisquer e imprima na tela os que são maiores que a média dos valores coletados. </li></ul><ul><li>2) Crie um aplicativo que colete uma indefinida quantidade de números inteiros pela linha de execução e no final mostre o menor e o maior número fornecido. </li></ul><ul><li>3) Faça um programa que colete 10 nomes de pessoas e os armazene em um array. No final verifique se uma determinada pessoa foi cadastrada no array, informando ao usuário. </li></ul><ul><li>4) Uma escola precisa de um programa que controle a média das notas dos alunos de cada classe e a média das notas de todos os alunos da escola. Sabendo que a escola possui 3 classes com 5 alunos em cada classe, gerando um total de 15 notas, crie um programa que receba as notas de cada aluno de cada classe e no final apresente a média de cada classe e a média da escola em geral. </li></ul><ul><li>5) Faça um programa que utilize um método para organizar uma quantidade qualquer de números inteiros fornecidos pelo usuário na linha de comando , sendo que esses números deverão ser organizados da seguinte forma: primeiro os números pares em ordem crescente e depois os números ímpares em ordem decrescente. </li></ul>
  14. 14. Exercícios (cont.) <ul><li>6)- Crie uma classe Java (arquivoExercicioArray1.java) que contenha um método que receba um array do tipo int, calcule o somatório destes elementos e mostre o valor encontrado na saída padrão. </li></ul><ul><li>7) Crie uma classe Java (ExercicioArray2. java) que contenha como atributo um array bidimensional contendo informações sobre países e seus estados. Esta classe conterá um método que retorna um array </li></ul><ul><li>dos estados do país informado como parâmetro. Crie outra classe que recebe da linha de comando um nome de país e que, a partir de um objeto da classe ExercicioArray2, liste seus estados. </li></ul><ul><li>8) Crie uma classe Java que contenha como atributo um array bidimensional (3x3) contendo informações a respeito de uma matriz de inteiros. Esta classe deverá ter um método que retornará a soma da diagonal principal. </li></ul><ul><li>9) Faça um programa em Java, jogo para adivinhar qual é a palavra, onde fixaremos uma palavra, com mais de cinco letras, através de uma cadeia de caracteres o número de alternativas que o jogador terá será o seguinte: tamanho da palavra menos dois. Emita mensagens quando o jogador acertar ou errar . (parecido com o jogo da forca). </li></ul>
  15. 15. Exercícios (cont.) <ul><li>10) Crie uma classe java com o nome “Extremos” que receba parâmetros da linha de comando e mostre em seguida qual destes é o maior e qual o menor. Dica para resolução: utilize a seguinte notação para receber um int relativo ao tamanho da String de posição n do array args (por enquanto não se preocupe com o significado desta notação, </li></ul><ul><li>ela será abordada mais tarde): args[n].length( ) </li></ul><ul><li>Atenção: cuidado para não confundir o atributo length de um array com o método length( ) de uma String. </li></ul><ul><li>11) Crie uma classe em Java que recebe um objeto String e retorna um objeto String com os valores de entrada na forma invertida. </li></ul><ul><li>12) Crie uma classe Java (arquivo Utilitario.java) que contenha um método que receba uma String no formato </li></ul><ul><li>campo1;campo2; (ex.:Janeiro;Fevereiro;Março;) e retorne um </li></ul><ul><li>array de Strings contendo os campos da String de origem dentro </li></ul><ul><li>deste array. </li></ul><ul><li>13) Crie, na mesma classe anterior, outro método com a funcionalidade inversa, isto é, recebe um array de Strings e retorna este como uma String com os campos em sequência, separados por “;” </li></ul>
  16. 16. Bibliografia <ul><ul><li>FURGERI, Sérgio. Java 2: Ensino didático: Desenvolvendo e Implementando Aplicações – </li></ul></ul><ul><ul><li>São Paulo: Érica, 372p. 2002. </li></ul></ul><ul><ul><li>TAMASSIA, R.; GOODRICH, M.T. Estrutura de Dados e Algoritmos em Java. Bookman, 2002. </li></ul></ul><ul><ul><li>DEITEL,H.M.; DEITEL, P.J. Java: Como Programar , Bookman, 2002. </li></ul></ul>

×