• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemas
 

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

on

  • 1,624 views

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, ...

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.

Statistics

Views

Total Views
1,624
Views on SlideShare
1,606
Embed Views
18

Actions

Likes
0
Downloads
72
Comments
0

1 Embed 18

http://www.jornaljava.com 18

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Aula 6 Matrizes multidimensionais Estratégias de resolução de problemas
    • 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
    • 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
    • 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 Sentido matemático do termo. identity 0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1 0 1 2 0 1 2 0 1 2 2
    • 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.
    • 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
    • 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 = newdouble[][] { newdouble[] {1.0, 0.0, 0.0}, newdouble[] {0.0, 1.0, 0.0}, newdouble[] {0.0, 0.0, 1.0} }; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7 identityMatrix 0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1 2
    • Construção 2D: regular final double[][] rectangularMatrix = newdouble[2][3]; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8 rectangularMatrix 0 0.0 0.0 0.0 0.0 0.0 0.0 1
    • 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 0 2 3 2 2 2 null 2 2 1 2 … 3 4 5 6 … 7 8 9 10
    • 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 secondFactorOf4 secondFactorOf4 firstFactorOf8 firstFactorOf8 factorsOf8 factorsOf8 ? 2 ? 2 ? 2 3 2 2 2 0 2 2 … null 1 2 3 … 4 5 6 7 8 9 10
    • 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 _ 11 _ 11 1 _ 11 1 3 _ 0 2 3 2 2 2 null 2 2 1 2 3 … 4 5 6 7 … 8 9 10
    • 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
    • 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
    • Resolução de problemas: etapas 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14
    • Resolução de problemas: estratégias 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
    • Resolução de problemas: estratégias 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
    • 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
    • A reter Matrizes multidimensionais Estratégias de resolução de problemas 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18
    • 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
    • Sumário Matrizes multidimensionais Estratégias de resolução de problemas 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20