Apresentação 7 - Fundamentos de Programação

  • 798 views
Uploaded on

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

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.

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
798
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
31
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. Sentido matemático do termo. final double[][] identityMatrix = { {1.0, 0.0, 0.0}, 1.0 {0.0, 1.0, 0.0}, 0 {0.0, 0.0, 1.0} }; 0.0 0.0 1 2 0.0 1.0 0.0 0 0 1 2 1 0.0 0.0 1.0 identityMatrix 2 0 2013/2014 Fundamentos de Programação 1 2 4
  • 5. final int[][] primeFactors = { null, {}, O array primeFactors contém arrays com diferentes tamanhos. Para {2}, obter os factores primos de um dado {3}, natural 1 ≤ n ≤ 10 usa-se {2, 2}, primeFactors[n], que é um simples {5}, array de inteiros. Como 0 (zero) não {2, 3}, tem factores primos, o primeiro array não existe. Isso representa-se {7}, usando uma referência nula. {2, 2, 2}, {3, 3}, Parámos nos factores {2, 5} primos de 10 porque não havia mais espaço na }; apresentação. :-P 2013/2014 Fundamentos de Programação 5
  • 6. Sentido matemático de vector. Vectores e matrizes matemáticas podem ser representados por arrays unidimensinais e bidimensionais do Java, respectivamente. final double[] vector1 = {1.0, 0.0, 0.0}; final double[] vector1 = new double[] {1.0, 0.0, 0.0}; Forma alternativa equivalente de inicialização. vector1 1.0 0.0 0.0 0 1 2 final double[] vector2 = new double[3]; vector2 0.0 0.0 0.0 0 2013/2014 1 Fundamentos de Programação 2 Itens inicializados com valor por omissão dos double. 6
  • 7. identityMatrix 0 1.0 0.0 0.0 1 2 0.0 1.0 0.0 final double[][] identityMatrix = { {1.0, 0.0, 0.0}, 0.0 0.0 1.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}, Forma new double[] {0.0, 0.0, 1.0} alternativa }; equivalente de 2013/2014 Fundamentos de Programação inicialização. 7
  • 8. final double[][] rectangularMatrix = new double[2][3]; 0.0 0.0 0.0 0 rectangularMatrix 1 2013/2014 Fundamentos de Programação 0.0 0.0 0.0 8
  • 9. final int[][] primeFactors = { null, {}, {2}, 0 null {3}, 1 {2, 2}, 2 {5}, 3 {2, 3}, 4 {7}, 5 {2, 2, 2}, 6 {3, 3}, 7 {2, 5} 8 }; primeFactors 3 2 Fundamentos de Programação 2 2 2 … 9 10 2013/2014 2 2 … 9
  • 10. secondFactorOf4 0 2 ? null 1 2 2 factorsOf8 3 ? 3 4 5 firstFactorOf8 2 2 ? 7 2 2 6 2 … 8 final int secondFactorOf4 = primeFactors[4][1]; 9 10 2 … final int[] factorsOf8 = primeFactors[8]; final int firstFactorOf8 = factorsOf8[0]; 2013/2014 Fundamentos de Programação primeFactors 10
  • 11. out.println(primeFactors.length); out.println(primeFactors[2].length); out.println(primeFactors[8].length); 0 11 1 _1 1 _ 3 _ _ 2 null 1 3 2 3 4 2 6 7 9 10 2013/2014 Fundamentos de Programação 2 … 8 primeFactors 2 2 5 2 … 11
  • 12. final int[][] gradesPerCourse = { {14, 16}, {12, 18, 20} }; Cálculo da média de todas as notas de todos os cursos. 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
  • 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 Será que podemos dividir o problema em subproblemas de dividir para conquistar 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 Fonte: Wikipédia  http://en.wikipedia.org/wiki/George_P%C3%B3lya 2013/2014 Fundamentos de Programação 17
  • 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