O documento discute operadores de atribuição especiais em Java, matrizes, tipos de ciclos incluindo o ciclo for, e classes pacote. Apresenta exemplos de declaração e uso de matrizes, as partes de um ciclo, a diferença entre ciclos while e for, e como criar e usar uma classe pacote para organizar métodos relacionados a arrays.
1. Aula 4 Atribuições especiais Matrizes em Java Tipos de ciclos (ciclo for) Classes pacote
2. Da aula anterior… Introdução ao Java Variáveis Instrução de selecção if-else Ciclos while e do-while Métodos de classe (publicstatic …) 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2
4. Matrizes Java (arrays) Sequências de itens com comprimento fixado durante construção Declaração tipoDosItens[]nome; Declaração, construção e inicialização tipoDosItens[]nome = newtipoDosItens[comprimento]; Exemplos final double[] grades = newdouble[numberOfStudents]; final int[] sizes = newint[numberOfClasses]; final intnumberOfStudents = grades.length; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 construção
5. Matrizes Java (arrays) Itens identificados por índices Primeiro item: índice 0 (zero) Último item: índice matriz.length- 1 Exemplos intfirstSize = sizes[0]; intlastSize = sizes[sizes.length - 1]; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5
8. int i = 0; while (i != 10) { … i++; } Ciclos: partes 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8 inicialização guarda passo acção progresso
9. Ciclos: for Ciclo for Alternativa a while Tipicamente usado com iteradores Útil para manipular de matrizes 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 inti = 0; while (i != 10) { … i++; } for (inti = 0; i != 10; i++) { … }
10. Ciclos: while vs. for 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10 doublesum = 0.0; int i = 0; while (i != grades.length) { sum += grades[i]; i++; } doublesum = 0.0; for (int i = 0; i != grades.length; i++) { sum += grades[i]; }
11. Ciclos: lado-a-lado… 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11 while for do-while inicialização inicialização inicialização [¬guarda] [¬guarda] [guarda] [guarda] passo acçãoprogresso passo [guarda] [¬guarda]
12. Blocos: se instrução única, dispensáveis 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12
13. Operador de selecção 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 instrução operação
14. Exemplo de método função /** * Returns maximum of the items in array. * * @paramarrayarray whose maximum will be returned. * @returns the maximum of the items in array. * @prearray must have at least one item */ public static intmaximumOf(final int[] array) { int maximum = array[0]; for (inti = 1; i != array.length; i++) if(maximum < array[i]) maximum = array[i]; return maximum; } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14 Assume-se que array não é null. A ver mais tarde…
15. Classe pacote Todos métodos static , i.e., métodos de classe (a ver mais tarde) Construtor privado (a ver mais tarde) Por exemplo, classe pacote java.lang.Math Métodos Math.abs(int/double) – Calcula valor absoluto. Math.sqrt(double) – Calcula raiz quadrada. Math.pow(double, double) – Calcula potência. Math.sin(double) – Calcula seno. Math.cos(double) – Calcula co-seno. … Constantes Math.PI – Valor de π. Math.E – Valor de e. 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
16. Classe pacote: exemplo public class IntArrayUtilities { private IntArrayUtilities() { throw new RuntimeException("Attempt to instantiate " + "package class"); } public staticintmaximumOf(final int[] array) { … } public staticint minimum(final int[] array) { … } public staticint[] sortedCopyOf(final int[] array) { … } public staticbooleanthereAreDuplicatesIn(final int[] array) { … } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
17. Classe pacote: utilização import static java.lang.System.out; import static IntArrayUtilities.*; public class Tester { … public static void main(final String[] arguments) { final int[] myArray = {9, 2, 6, 5, 8, 2}; out.println("Maximum of array is " + maximum(array)); out.println("Minimum of array is " + minimum(array)); final int[] mySortedArray = sortedCopyOf(testArray); out.print("mySortedArray is: "); for (inti = 0; i != mySortedArray.length; i++) out.println("" + mySortedArray[i]); if (thereAreDuplicatesIn(myArray)) out.println("myArray has duplicate items."); } } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17
18. A reter Java Matrizes Ciclo for Simplificações sintácticas Classes pacote 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18
19. A ler... Capítulos 1 a 4 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19
20. Sumário Atribuições especiais Matrizes em Java Tipos de ciclos (ciclo for) Classes pacote 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20