1) As matrizes podem ter mais de uma dimensão, representando dados multidimensionais. Isto permite armazenar dados em estruturas aninhadas como matrizes de matrizes.
2) Para resolver problemas é importante decompor o problema em etapas menores, explorar possíveis soluções e testá-las, e refletir sobre a solução encontrada.
3) George Pólya forneceu estratégias úteis para a resolução de problemas como compreender o problema, decompor em subproblemas, explorar analogias e verificar a solução.
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
1. Aula 6 Matrizes multidimensionais Estratégias de resolução de problemas
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 Introdução à Programação - DCTI - ISCTE-IUL 2
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 Introdução à Programação - DCTI - ISCTE-IUL 3
5. 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.
6. Construção 1D final double[] vector1 = {1.0, 0.0, 0.0}; final double[] vector1 = newdouble[] {1.0, 0.0, 0.0}; final double[] vector2 = newdouble[3]; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6 Sentido matemático de vector. Vectores e matrizes matemáticas podem ser representados por matrizes (arrays) do Java. vector1 vector2 1.0 0.0 0.0 0.0 0.0 0.0 0 1 2 0 1 2
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 Introdução à Programação - DCTI - ISCTE-IUL 12
13. Problema Dados uma matriz com números de alunas(os), uma matriz com as siglas das UC e 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 que mostre as notas de cada aluna(o), mostre a média das notas de cada aluna(o) e 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 Introdução à Programação - DCTI - ISCTE-IUL 13
15. Resolução de problemas: estratégias 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
16. Resolução de problemas: estratégias 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
17. Mais informação Resolução de problemas http://en.wikipedia.org/wiki/Problem_solving http://en.wikipedia.org/wiki/How_to_Solve_It George Pólya http://en.wikipedia.org/wiki/George_P%C3%B3lya 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17 Fonte: Wikipédia
18. A reter Matrizes multidimensionais Estratégias de resolução de problemas 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18
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 Introdução à Programação - DCTI - ISCTE-IUL 19