Atribuições especiais
Arrays em Java
Tipos de ciclos (while e do-while, for e foreach)
Classes-pacote
 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
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
 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
 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
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
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
int i = 0;
while (i != 10) {
…
i++;
}
2013/2014 Fundamentos de Programação 8
guarda
inicialização
passo acção
progresso
 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++) {
…
}
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];
}
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
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.
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.
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
/**
* 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.
 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
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
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
 Java
 Arrays
 Ciclos for e foreach
 Simplificações sintácticas da atribuição
 Classes-pacote
2013/2014 Fundamentos de Programação 19
 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

5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundamentos de Programação

  • 1.
    Atribuições especiais Arrays emJava Tipos de ciclos (while e do-while, for e foreach) Classes-pacote
  • 2.
     Introdução aoJava  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çãoespecial 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 deitens 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 identificadospor í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 deiteraçã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 deProgramaçã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 deProgramaçã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 deProgramaçã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 deProgramaçã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 maximumof 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étodosstatic , 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 classIntArrayUtilities { 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; importstatic 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