Fundamentos da Programação 5:
• Atribuições especiais
• Arrays em Java
• Tipos de ciclos (while e do-while, for e foreach)
• Classes-pacote
Apresentação 5 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
2. Introdução ao Java
Variáveis
Instrução de selecção if-else
Instruções de iteração while e do-while
Métodos de classe (public static …)
Etc.
2013/2014 Fundamentos de Programação 2
3. Atribuição simples Atribuição especial Observação
sum = sum + value; sum += value; 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--;
2013/2014 Fundamentos de Programação 3
4. 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 numberOfGrades = grades.length;
2013/2014 Fundamentos de Programação 4
construção
5. Itens identificados por índices
Primeiro item: índice 0 (zero)
Último item: índice array.length - 1
Exemplos
int firstSize = sizes[0];
int lastSize = sizes[sizes.length - 1];
2013/2014 Fundamentos de Programação 5
6. Listas em Snap! Arrays Java
int[] values = new int[5];
values.length
int value = values[2];
values[0] = 7;
2013/2014 Fundamentos de Programação 6
7. 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};
2013/2014 Fundamentos de Programação 7
8. int i = 0;
while (i != 10) {
…
i++;
}
2013/2014 Fundamentos de Programação 8
guarda
inicialização
passo acção
progresso
9. Instrução de iteração for
Alternativa a while
Tipicamente usado com iteradores
Útil para percorrer arrays
2013/2014 Fundamentos de Programação 9
int i = 0;
while (i != 10) {
…
i++;
}
for (int i = 0; i != 10; i++) {
…
}
10. 2013/2014 Fundamentos de Programação 10
double sumOfGrades = 0.0;
int i = 0;
while (i != grades.length) {
sumOfGrades += grades[i];
i++;
}
double sumOfGrades = 0.0;
for (int i = 0; i != grades.length; i++) {
sumOfGrades += grades[i];
}
11. 2013/2014 Fundamentos de Programação 11
[¬guarda]
[guarda]
inicialização
passo
[¬guarda]
inicialização
acção
progresso
[guarda]
inicialização
passo
[guarda]
[¬guarda]
while for do-while
12. 2013/2014 Fundamentos de Programação 12
double sumOfGrades = 0.0;
for (int i = 0; i != grades.length; i++) {
sumOfGrades += grades[i];
}
double sumOfGrades = 0.0;
for (double grade : grades) {
sumOfGrades += grade;
}
Excelente para
percorrer
arrays.
13. 2013/2014 Fundamentos de Programação 13
Possível Preferível
while (values[i] != value) {
i++;
}
while (values[i] != value)
i++;
if (hour == 0) {
hour = 23;
} else {
hour--;
}
if (hour == 0)
hour = 23;
else
hour--;Bloco de
instruções.
14. Possível Preferível
if (m < n)
maximum = n;
else
maximum = m;
maximum = m < n ? n : m;
2013/2014 Fundamentos de Programação 14
instrução operação
15. /**
* 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;
}
2013/2014 Fundamentos de Programação 15
Assume-se que array
não é null.A ver mais
tarde…
Documentação.
16. 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) –Valor absoluto do argumento.
▪ Math.sqrt(double) – Raiz quadrada aproximada do argumento.
▪ Math.pow(double, double) – Potência.
▪ Math.sin(double) – Seno.
▪ Math.cos(double) – Cosseno.
▪ …
Constantes
▪ Math.PI –Valor double aproximado de π.
▪ Math.E –Valor double aproximado de e.
2013/2014 Fundamentos de Programação 16
17. public final class IntArrayUtilities {
private IntArrayUtilities() {
throw new RuntimeException("Attempt to instantiate " +
"package-class");
}
public static int maximumOf(final int[] array) {
…
}
public static int minimumOf(final int[] array) {
…
}
public static int[] sortedCopyOf(final int[] array) {
…
}
public static boolean thereAreDuplicatesIn(final int[] array) {
…
}
…
}
2013/2014 Fundamentos de Programação 17
18. import static java.lang.System.out;
import static IntArrayUtilities.*;
public class IntArrayUtilitiesTester {
public static void main(final String[] arguments) {
final int[] numbers = {9, 2, 6, 5, 8, 2};
out.println("Maximum of numbers is " + maximumOf(numbers));
out.println("Minimum of numbers is " + minimumOf(numbers));
final int[] sortedNumbers = sortedCopyOf(numbers);
out.println("The sorted numbers are:");
for (int number : sortedNumbers)
out.println("t" + number);
if (thereAreDuplicatesIn(numbers))
out.println("There are duplicate numbers.");
}
}
2013/2014 Fundamentos de Programação 18
19. Java
Arrays
Ciclos for e foreach
Simplificações sintácticas da atribuição
Classes-pacote
2013/2014 Fundamentos de Programação 19
20. Atribuições especiais
Arrays em Java
Tipos de ciclos:
while e do-while
for e foreach
Classes pacote
2013/2014 Fundamentos de Programação 20