Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas

20
Aula 6 Matrizes multidimensionais Estratégias de resolução de problemas

description

Apresentação da semana 6 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 6: Matrizes multidimensionais, estratégias de resolução de problemas

Page 1: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Aula 6

Matrizes multidimensionaisEstratégias de resolução de problemas

Page 2: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Da aula anterior…

Manipulação de caracteres

Relação entre os tipos char e int

Tipos de valor vs. tipos de referência

2010/2011

Page 3: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Matrizes multidimensionais Itens de matriz podem ser (referências

para) matrizes

Possíveis matrizes de mais do que uma dimensão (matrizes de matrizes)

Dimensões 1D: int[] grades; 2D: int[][] gradesPerCourse; 3D: int[][][] gradesPerCoursePerProgram; Etc.

2010/2011

Page 4: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Exemplo regular: matriz identidade de 3 × 3

final double[][] identityMatrix = { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}};

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4

identity

0

1

2

1.0

0.0

0.0

0 1 2

1.0

0.0

0.0

0 1 2

1.0

0.0

0.00 1 2

Sentido matemático do termo.

Page 5: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Exemplo irregular: factores primos de primeiros naturais

final int[][] primeFactors = { null, {}, {2}, {3}, {2, 2}, {5}, {2, 3}, {7}, {2, 2, 2}, {3, 3}, {2, 5}};

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5

O vector primeFactors contém vectores com diferentes tamanhos. Para obter os factores primos de um dado natural 1 ≤ n ≤ 10 usa-se primeFactors[n], que é um simples vector de inteiros. Como 0 (zero) não tem factores primos, o primeiro vector não existe. Isso representa-se usando uma referência nula.

Page 6: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Construção 1D

final double[] vector1 = {1.0, 0.0, 0.0};final double[] vector1 = new double[] {1.0, 0.0, 0.0};

final double[] vector2 = new double[3];

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6

vector11.0

0.0

0.0

0 1 2

vector20.0

0.0

0.0

0 1 2

Sentido matemático de vector. Vectores e matrizes

matemáticas podem ser representados por matrizes

(arrays) do Java.

Page 7: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Construção 2D: regular

final double[][] identityMatrix = { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}};final double[][] identityMatrix = new double[][] { new double[] {1.0, 0.0, 0.0}, new double[] {0.0, 1.0, 0.0}, new double[] {0.0, 0.0, 1.0}};2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7

identityMatrix0

1

2

1.0

0.0

0.0

1.0

0.0

0.0

1.0

0.0

0.0

Page 8: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Construção 2D: regular

final double[][] rectangularMatrix = new double[2][3];

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8

rectangularMatrix

0

1

0.0

0.0

0.0

0.0

0.0

0.0

Page 9: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Construção 2D: irregular

final int[][] primeFactors = { null, {}, {2}, {3}, {2, 2}, {5}, {2, 3}, {7}, {2, 2, 2}, {3, 3}, {2, 5}};

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9

primeFactors

null

0

1

2

3

4

5

6

7

8

910

2

3

2 2

2 2 2

Page 10: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Indexação

final int secondFactorOf4 = primeFactors[4][1];

final int[] factorsOf8 = primeFactors[8];

final int firstFactorOf8 = factorsOf8[0];

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10

primeFactors

null

0

1

2

3

4

5

6

7

8

910

2

3

2 2

?

secondFactorOf4

2

secondFactorOf4

?

firstFactorOf8

2

firstFactorOf8

?

factorsOf8factorsOf8

2 2 2

Page 11: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

Tamanhos

out.println(primeFactors.length);out.println(primeFactors[2].length);out.println(primeFactors[8].length);

2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11

primeFactors

null

0

1

2

3

4

5

6

7

8

910

2

3

2 2

2 2 2

_11_111_

1113_

Page 12: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Exemplo: médias

int[][] gradesPerCourse = { {14, 16}, {12, 18, 20}};

int numberOfGrades = 0;double sumOfGrades = 0.0;for (int course = 0; course != gradesPerCourse.length; course++) { for (int i = 0; i != gradesPerCourse[course].length; i++) sum += gradesPerCourse[course][i]; numberOfGrades += gradesPerCourse[course].length;}

double averageOfGrades = sumOfGrades / numberOfGrades;

2010/2011

Page 13: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Problema

Dados1. uma matriz com números de alunas(os),2. uma matriz com as siglas das UC e3. uma matriz de notas (em que cada linha corresponde às notas

que a(o) aluna(o) correspondente tem nas UC indicadas, uma por coluna),

escrever código Java que4. mostre as notas de cada aluna(o),5. mostre a média das notas de cada aluna(o) e6. mostre a média mais alta, identificando a quem pertence.

final int[] studentNumbers = {20032, 30312, 25342, 31432};final String[] courseAcronyms = { "IP", "AC", "POO"};final int[][] studentGrades = { {15, 18, 17}, {18, 10, 11}, // grades of student 30312 {11, 13, 15}, {10, 19, 16}};

2010/2011

Page 14: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Resolução de problemas: etapasEtapa Descrição/notas

Compreender o problema!

Ser cuidadoso e preciso.

Planear • (Escolher uma ou mais estratégias.)• Partir a tarefa em pequenos passos.• Descrever em pormenor cada passo.

Seguir o plano • Decidir qual o próximo passo.• Executar o próximo passo.

Rever e estender • Analisar o processo de resolução.• Aprender com os erros.

2010/2011

Page 15: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Resolução de problemas: estratégias

Estratégia Descrição

Analogia Conhecemos soluções para problemas semelhantes?

Especialização

O nosso problema é caso particular de outro de que conhecemos a solução?

Generalização

O nosso problema é um caso genérico de outro mais particular de que conhecemos a solução?

Indução Compreendemos melhor o problema se estudarmos alguns dos seus casos particulares?

Alteração Será que alterar o enunciado do problema o transforma noutro de que conhecemos a solução?

2010/2011

Page 16: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Resolução de problemas: estratégias

Estratégia Descrição

Aproximações sucessivas

• Será que conseguimos encontrar uma forma de atingir um subobjectivo e ficar, assim, mais próximo da solução?

• Será que podemos repetir o processo até resolver o problema?

Decomposição ou dividir para conquistar

Será que podemos dividir o problema em subproblemas de mais simples solução e compor, assim, uma solução global?

Partir do objectivo Será que olhar para o nosso destino nos dá boas pistas acerca do caminho a seguir?

Fazer um diagrama/desenho

Nem calcula o quanto ajuda…

2010/2011

Page 17: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Mais informação

Resolução de problemas http://en.wikipedia.org/wiki/Problem_solv

ing

http://en.wikipedia.org/wiki/How_to_Solve_It

George Pólya http://en.wikipedia.org/wiki/George_P%C

3%B3lya

2010/2011

Fonte: Wikipédia

Page 18: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

A reter

Matrizes multidimensionais

Estratégias de resolução de problemas

2010/2011

Page 19: Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

A ler...

Capítulo 7 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  6: Matrizes multidimensionais, estratégias de resolução de problemas

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

Sumário

Matrizes multidimensionais

Estratégias de resolução de problemas

2010/2011