Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote

20
Aula 4 Atribuições especiais Matrizes em Java Tipos de ciclos (ciclo for) Classes pacote

description

Apresentação da semana 4 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.

Transcript of Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote

Page 1: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

Aula 4

Atribuições especiaisMatrizes em JavaTipos de ciclos (ciclo for)Classes pacote

Page 2: Semana  4: Atribuições especiais, matrizes, ciclos, 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

Page 3: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 4: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 5: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 6: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 7: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 8: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 9: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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++) { …}

Page 10: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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];}

Page 11: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 12: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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--;

Page 13: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 14: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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…

Page 15: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 16: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 17: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 18: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

Introdução à Programação - DCTI - ISCTE-IUL 18

A reter

Java Matrizes Ciclo for Simplificações sintácticas Classes pacote

2010/2011

Page 19: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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

Page 20: Semana  4: Atribuições especiais, matrizes, ciclos, classes pacote

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