Your SlideShare is downloading. ×
0
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamentos de Programação

1,034

Published on

Fundamentos da Programação 7: …

Fundamentos da Programação 7:
• Arrays multidimensionais
• Estratégias de resolução de problemas

Apresentação 7 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.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,034
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Arrays multidimensionais Estratégias de resolução de problemas
  • 2.  Manipulação de caracteres  Relação entre os tipos char e int  Tipos de valor vs. tipos de referência 2013/2014 Fundamentos de Programação 2
  • 3.  Itens de array podem ser (referências para) arrays  Possíveis arrays de mais do que uma dimensão (arrays de arrays, arrays de arrays de arrays, ...)  Dimensões  1D: int[] grades;  2D: int[][] gradesPerCourse;  3D: int[][][] gradesPerCoursePerProgram;  Etc. 2013/2014 Fundamentos de Programação 3
  • 4. final double[][] identityMatrix = { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0} }; 2013/2014 Fundamentos de Programação 4 identityMatrix 0 1 2 1.0 0.0 0.0 0 1 2 1.00.0 0.0 0 1 2 1.00.00.0 0 1 2 Sentido matemático do termo.
  • 5. final int[][] primeFactors = { null, {}, {2}, {3}, {2, 2}, {5}, {2, 3}, {7}, {2, 2, 2}, {3, 3}, {2, 5} }; 2013/2014 Fundamentos de Programação 5 O array primeFactors contém arrays com diferentes tamanhos. Para obter os factores primos de um dado natural 1 ≤ n ≤ 10 usa-se primeFactors[n], que é um simples array de inteiros. Como 0 (zero) não tem factores primos, o primeiro array não existe. Isso representa-se usando uma referência nula. Parámos nos factores primos de 10 porque não havia mais espaço na apresentação. :-P
  • 6. 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]; 2013/2014 Fundamentos de Programação 6 vector1 1.0 0.0 0.0 0 1 2 vector2 0.0 0.0 0.0 0 1 2 Sentido matemático de vector. Vectores e matrizes matemáticas podem ser representados por arrays unidimensinais e bidimensionais do Java, respectivamente. Forma alternativa equivalente de inicialização. Itens inicializados com valor por omissão dos double.
  • 7. 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} }; 2013/2014 Fundamentos de Programação 7 identityMatrix 0 1 2 1.0 0.0 0.0 1.00.0 0.0 1.00.00.0 Forma alternativa equivalente de inicialização.
  • 8. final double[][] rectangularMatrix = new double[2][3]; 2013/2014 Fundamentos de Programação 8 rectangularMatrix 0 1 0.0 0.0 0.0 0.00.0 0.0
  • 9. … final int[][] primeFactors = { null, {}, {2}, {3}, {2, 2}, {5}, {2, 3}, {7}, {2, 2, 2}, {3, 3}, {2, 5} }; 2013/2014 Fundamentos de Programação 9 primeFactors null0 1 2 3 4 5 6 7 8 9 10 2 3 2 2 2 2 2 …
  • 10. … final int secondFactorOf4 = primeFactors[4][1]; final int[] factorsOf8 = primeFactors[8]; final int firstFactorOf8 = factorsOf8[0]; 2013/2014 Fundamentos de Programação 10 primeFactors null0 1 2 3 4 5 6 7 8 9 10 2 3 2 2 … ? secondFactorOf4 2 secondFactorOf4 ? firstFactorOf8 2 firstFactorOf8 ? factorsOf8factorsOf8 2 2 2
  • 11. … out.println(primeFactors.length); out.println(primeFactors[2].length); out.println(primeFactors[8].length); 2013/2014 Fundamentos de Programação 11 primeFactors null0 1 2 3 4 5 6 7 8 9 10 2 3 2 2 2 2 2 … _11 _ 11 1 _ 11 1 3 _
  • 12. final int[][] gradesPerCourse = { {14, 16}, {12, 18, 20} }; int numberOfGrades = 0; int sumOfGrades = 0; for (int course = 0; course != gradesPerCourse.length; course++) { for (int i = 0; i != gradesPerCourse[course].length; i++) sumOfGrades += gradesPerCourse[course][i]; numberOfGrades += gradesPerCourse[course].length; } final double averageOfGrades = sumOfGrades / (double) numberOfGrades; 2013/2014 Fundamentos de Programação 12 Cálculo da média de todas as notas de todos os cursos.
  • 13. Sejam 1. um array com os números das/os alunas/os, 2. um array com as siglas das UC e 3. um array de notas, em que cada linha corresponde às notas que a/o aluna/o correspondente tem nas UC indicadas, uma por coluna. Escreva código Java que 1. mostre as notas de cada aluna/o, 2. mostre a média das notas de cada aluna/o e 3. mostre a média mais alta, identificando a quem pertence. final int[] studentIDs = {50020032, 50030312, 50025342, 50031432}; final String[] courseAcronyms = { ”EPL", ”P1", ”P2"}; final int[][] studentGrades = { {15, 18, 17}, {18, 14, 16}, // grades of student 50030312 {11, 13, 15}, {10, 19, 16} }; 2013/2014 Fundamentos de Programação 13
  • 14. Etapa 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. 2013/2014 Fundamentos de Programação 14
  • 15. 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? 2013/2014 Fundamentos de Programação 15
  • 16. 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… 2013/2014 Fundamentos de Programação 16
  • 17.  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 2013/2014 Fundamentos de Programação 17 Fonte: Wikipédia
  • 18.  Arrays multidimensionais  Estratégias de resolução de problemas 2013/2014 Fundamentos de Programação 18
  • 19.  Arrays multidimensionais  Estratégias de resolução de problemas 2013/2014 Fundamentos de Programação 19

×