5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundamentos de Programação
Click here to load reader
-
Upload
manuel-menezes-de-sequeira -
Category
Education
-
view
963 -
download
0
description
Transcript of 5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundamentos de Programação
Apresentação 5
Atribuições especiaisArrays em JavaTipos de ciclos (while e do-while, for e foreach)Classes-pacote
Fundamentos de Programação 2
Da apresentação anterior…
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 3
Operadores de atribuição especiais
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 4
Arrays Java
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
construção
Fundamentos de Programação 5
Arrays Java
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 6
Arrays Java
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 7
Construção de arrays
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 8
int i = 0;while (i != 10) { … i++;}
Ciclos: partes
2013/2014
guarda
inicialização
passo
acção
progresso
Fundamentos de Programação 9
Instrução de iteração for
Instrução de iteração for Alternativa a while Tipicamente usado com iteradores Útil para percorrer arrays
2013/2014
int i = 0;while (i != 10) { … i++;}
for (int i = 0; i != 10; i++) { …}
Fundamentos de Programação 10
while vs. for
2013/2014
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];}
Fundamentos de Programação 11
Instruções de iteração lado-a-lado…
2013/2014
[¬guarda]
[guarda]
inicialização
passo
[¬guarda]
inicialização
acçãoprogresso
[guarda]
inicialização
passo
[guarda]
[¬guarda]
while for do-while
Fundamentos de Programação 12
Instrução de iteração foreach
2013/2014
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.
Fundamentos de Programação 13
Blocos: se instrução única, dispensáveis
2013/2014
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--;Bloco de
instruções.
Fundamentos de Programação 14
Operador de selecção
Possível Preferívelif (m < n) maximum = n;else maximum = m;
maximum = m < n ? n : m;
2013/2014
instrução
operação
Fundamentos de Programação 15
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;}
2013/2014
Assume-se que array não é null. A ver mais tarde…
Documentação.
Fundamentos de Programação 16
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) – 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 17
Classe-pacote: exemplo
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 18
Classe-pacote: utilização
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 19
A reter
Java Arrays Ciclos for e foreach Simplificações sintácticas da atribuição Classes-pacote
2013/2014
Fundamentos de Programação 20
Sumário
Atribuições especiais
Arrays em Java
Tipos de ciclos: while e do-while for e foreach
Classes pacote2013/2014