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

20

Click here to load reader

description

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.

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

Page 1: 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

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

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

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

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

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

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

Page 5: 5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundamentos de Programaçã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

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

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

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

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

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

Fundamentos de Programação 8

int i = 0;while (i != 10) { … i++;}

Ciclos: partes

2013/2014

guarda

inicialização

passo

acção

progresso

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

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

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

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

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

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

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

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.

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

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.

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

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

Page 15: 5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundamentos de Programaçã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.

Page 16: 5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundamentos de Programaçã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

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

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

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

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

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

Fundamentos de Programação 19

A reter

Java Arrays Ciclos for e foreach Simplificações sintácticas da atribuição Classes-pacote

2013/2014

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

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