Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
-
Upload
manuel-menezes-de-sequeira -
Category
Technology
-
view
1.652 -
download
0
description
Transcript of Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Aula 4
Atribuições especiaisMatrizes em JavaTipos de ciclos (ciclo for)Classes pacote
Introdução à Programação - DCTI - ISCTE-IUL 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 (public static …)
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 3
Operadores de atribuição especiais
Atribuição simples
Atribuição especial
Observação
sum = sum + item; sum += item; Atribuições especiais semelhantes: • -= • *=• /=• %=
i = i + 1; ++i;i++;
Versões prefixo e sufixo equivalentes neste contexto. Não são equivalentes em geral!j = j - 1; --j;
j--;
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 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 =
new tipoDosItens[comprimento];
Exemplos final double[] grades = new double[numberOfStudents]; final int[] sizes = new int[numberOfClasses]; final int numberOfStudents = grades.length;
2010/2011
construção
Introdução à Programação - DCTI - ISCTE-IUL 5
Matrizes Java (arrays)
Itens identificados por índices
Primeiro item: índice 0 (zero)
Último item: índice matriz.length - 1
Exemplos int firstSize = sizes[0]; int lastSize = sizes[sizes.length - 1];
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 6
Matrizes Java
Listas em pseudocódigo Matrizes Java
valores ← lista(5, 0). int[] values = new int[5];
tamanhoDe(valores) values.length
valor ← valores[2]. int value = values[2];
valores[0] ← 7. values[0] = 7;
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 7
Construção de matrizes
Valores por omissão (zero) e atribuições
Valores explícitos
final int[] values = new int[3];values[0] = 0;values[1] = 2;values[2] = 4;
final int[] values = {0, 2, 4};
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 8
int i = 0;while (i != 10) { … i++;}
Ciclos: partes
2010/2011
guarda
inicialização
passo
acção
progresso
Introdução à Programação - DCTI - ISCTE-IUL 9
Ciclos: for
Ciclo for Alternativa a while Tipicamente usado com iteradores Útil para manipular de matrizes
2010/2011
int i = 0;while (i != 10) { … i++;}
for (int i = 0; i != 10; i++) { …}
Introdução à Programação - DCTI - ISCTE-IUL 10
Ciclos: while vs. for
2010/2011
double sum = 0.0;int i = 0;while (i != grades.length) { sum += grades[i]; i++;}
double sum = 0.0;for (int i = 0; i != grades.length; i++) { sum += grades[i];}
Introdução à Programação - DCTI - ISCTE-IUL 11
Ciclos: lado-a-lado…
2010/2011
[¬guarda]
[guarda]
inicialização
passo
[¬guarda]
inicialização
acçãoprogresso
[guarda]
inicialização
passo
[guarda]
[¬guarda]
while for do-while
Introdução à Programação - DCTI - ISCTE-IUL 12
Blocos: se instrução única, dispensáveis
2010/2011
Possível Preferívelwhile (values[i] != value) { i++;}
while (values[i] != value) i++;
if (hour == 0) { hour = 23;} else { hour--;}
if (hour == 0) hour = 23;else hour--;
Introdução à Programação - DCTI - ISCTE-IUL 13
Operador de selecção
Possível Preferívelif (m < n) maximum = n;else maximum = m;
maximum = m < n ? n : m;
2010/2011
instrução
operação
Introdução à Programação - DCTI - ISCTE-IUL 14
Exemplo de método função
/** * Returns maximum of the items in array. * * @param array array whose maximum will be returned. * @returns the maximum of the items in array. * @pre array must have at least one item */public static int maximumOf(final int[] array) { int maximum = array[0];
for (int i = 1; i != array.length; i++) if(maximum < array[i]) maximum = array[i];
return maximum;}
2010/2011
Assume-se que array não é null. A ver mais tarde…
Introdução à Programação - DCTI - ISCTE-IUL 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 16
Classe pacote: exemplo
public class IntArrayUtilities {
private IntArrayUtilities() { throw new RuntimeException("Attempt to instantiate " + "package class"); }
public static int maximumOf(final int[] array) { … }
public static int minimum(final int[] array) { … }
public static int[] sortedCopyOf(final int[] array) { … }
public static boolean thereAreDuplicatesIn(final int[] array) { … } …}
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 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 (int i = 0; i != mySortedArray.length; i++) out.println("\t" + mySortedArray[i]);
if (thereAreDuplicatesIn(myArray)) out.println("myArray has duplicate items."); }
}
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 18
A reter
Java Matrizes Ciclo for Simplificações sintácticas Classes pacote
2010/2011
Introdução à Programação - DCTI - ISCTE-IUL 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 20
Sumário
Atribuições especiais
Matrizes em Java
Tipos de ciclos (ciclo for)
Classes pacote
2010/2011