A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modularização Programação em Java Prof. Maurício Braga.

Apresentações semelhantes


Apresentação em tema: "Modularização Programação em Java Prof. Maurício Braga."— Transcrição da apresentação:

1 Modularização Programação em Java Prof. Maurício Braga

2 2/27 Modularização A medida que abordamos problemas mais complexos, os programas também apresentarão uma maior complexidade. A complexidade não está relacionada a quantidade de comandos existentes, e sim às diversas combinações possíveis dos comandos à disposição. Os comandos que possuímos são poucos, mas podemos realizar diversas combinações com os mesmos. A complexidade de um problema pode dificultar a construção do programa de sua solução Devemos tentar dividi-lo em partes menores, resolvendo cada um dos subproblemas separadamente.

3 3/27 Modularização de programas Consiste em dividir um programa em etapas, fazendo com que cada etapa seja parte da solução de um problema maior. Se um subproblema ainda parecer muito complexo, podemos tentar dividi-lo em partes menores, para facilitar sua solução, e assim sucessivamente. Dividir para conquistar Nós temos dificuldade de resolver problemas quando os mesmos possuem uma grande quantidade de elementos inseridos. A modularização é a forma humilde de reconhecermos esta dificuldade, mas ainda assim resolvermos o problema.

4 4/27 Modularização em Java Realizada através do uso de métodos, também chamados de funções ou procedimentos. Todo programa escrito em Java possui pelo menos uma função ( a função main). Todas as funções precisam ser chamadas para ser executadas. A única exceção é a função main, que é invocada automaticamente pelo sistema quando o programa é executado. Ao encontrar uma chamada para uma função, o fluxo de execução do programa desvia para o local onde a função existe, e executa a mesma. Ao terminar a execução da função, o fluxo de execução retorna para o local onde a função foi chamada. A execução do programa é reiniciada na linha seguinte à linha onde a função foi acionada.

5 5/27 Modularização em Java

6 6/27 Modularização em Java Todas as funções devem indicar se retornam um valor para quem chamou a função ou não. Caso não seja necessário retornar um valor, deve-se declarar o retorno como void. Caso a função retorne um valor, devemos usar o comando return seguido de uma variável ou constante para retornar esse valor para quem chamou a função. Java possui uma grande quantidade de funções disponíveis para uso imediato pelo programador. Para ter acesso a algumas funções pode ser necessário usar o comando import. O nome da função, em conjunto com os parâmetros que ela recebe identificam a assinatura da função.

7 7/27 Criando funções em Java A sintaxe que usaremos para criar uma função é: Para chamar uma função, basta inserirmos em algum ponto do programa o nome da mesma, junto com a lista de parâmetros (se houver) que a mesma recebe. (parametro1, parametro2); public static [retorno] ( [Parâmetro1],..., [ParâmetroN] ) { ;... ; }

8 8/27 Criando funções em Java Exemplo de uma função que imprime uma frase na tela: Para chamar essa função, basta inserirmos em algum ponto do programa o nome da mesma, junto com a lista de parâmetros que a mesma recebe. public static void escreva(String frase) { System.out.println(frase); }

9 9/27 Exemplo public class programa { public static void main(String[] args) { String s1 = testando o método Escreva; Escreva(s1); } public static void escreva(String frase) { System.out.println(frase); }

10 10/27 Compartilhando variáveis entre funções Caso seja necessário acessar ou alterar o valor de uma variável dentro de mais de uma função, devemos declarar a variável dentro da classe, mas fora de qualquer função. Nesse caso, deve-se usar o modificador static antes do tipo da variável. As variáveis criadas dentro de funções recebem o nome de variáveis locais, e só existem dentro das funções onde foram criadas. As variáveis criadas dentro de uma classe com o modificador static podem ser utilizadas em qualquer lugar da classe.

11 11/27 Exemplo public class programa { static String s1 = qualquer coisa; public static void main(String[] args) { System.out.println("imprimindo o valor de s1 de dentro da função main."); System.out.println("s1 = " + s1); escreva_Frase(); System.out.println(De volta para a função main.); } public static void escreva_Frase() { System.out.println("imprimindo o valor de s1 de dentro da função escreva_Frase."); System.out.println("s1 = " + s1); }

12 12/27 Exemplo

13 13/27 Exemplo Exemplos Numa loja de materiais de construção, um azulejo estampado custa R$2,50. Faça um programa para ler o comprimento e a altura de uma parede (em metros), e depois escrever o valor a ser gasto com a compra de azulejos. Considere que um metro quadrado é formado por 9 azulejos. Solução A saída é o valor total gasto com azulejos. O computador precisa saber o comprimento e a altura da parede. Quais são os cálculos necessários?

14 14/27 Exemplo Solução (cont.) Multiplicando a altura pelo comprimento, teremos a área da parede (considerando uma parede retangular); Multiplicando a área pelo número 9, teremos a quantidade de azulejos necessários para preencher esta área; Uma vez que um azulejo custa R$2,50 (um valor constante), podemos multiplicar a quantidade de azulejos por 2,5 para chegar ao total gasto.

15 15/27 Exemplo Solução sem uso de modularização: Variáveis gasto_azulejos, comprimento, altura, area, azulejos: real; Início escrever Digite o comprimento em metros: ; ler comprimento; escrever Digite a altura em metros; ler altura; area = comprimento * altura; azulejos = area * 9; gasto_azulejos = azulejos * 2.5; escrever Quantidade de azulejos necessária:, azulejos; escrever Valor gasto com azulejos: R$, gasto_azulejos; Fim

16 16/27 Exemplo Solução (cont.) Pensando em termos de um algoritmo, podemos imaginar três etapas: Variáveis ? ? ?; Início Obter as dimensões da parede e calcular a área; Calcular o valor gasto com azulejos; Escrever o resultado calculado; Fim

17 17/27 Exemplo Solução (cont.) Detalhando o cálculo do valor gasto. Variáveis gasto_azulejos, comprimento, altura, area, qtd_azulejos: real; Início LER_DIMENSOES_E_OBTER_AREA; CALCULAR_VALOR_GASTO; ESCREVER_GASTO; Fim. Módulo CALCULAR_VALOR_GASTO; [[...]]; Módulo LER_DIMENSOES_E_OBTER_AREA; [[...]]; Módulo ESCREVER_GASTO; [[...]];

18 18/27 Solução em Java public class MinhaClasse { static double comprimento = 0, altura = 0, qtd_azulejos = 0, gasto_azulejos = 0; public static double ler_Dimensoes_E_Obter_Area() { double area =0; System.out.println("digite o comprimento em metros:"); comprimento = Leia(comprimento); System.out.println("digite a altura em metros:"); altura = Leia(altura); area = comprimento * altura; return area; } public static void calcular_Valor_Gasto(double area) { qtd_azulejos = area * 9; gasto_azulejos = qtd_azulejos * 2.5; } public static void escreva(String frase) { System.out.println(frase); }

19 19/27 Solução em Java public static void main(String[] args) { double area = 0; String resposta1 = "", resposta2 = ""; area = ler_Dimensoes_E_Obter_area(); calcular_Valor_Gasto(area); resposta1 = "Quantidade de azulejos necessária: " + qtd_azulejos; escreva(resposta1); resposta2 = "Valor gasto com azulejos: R$ " + gasto_azulejos; escreva(resposta2); } } // fim da classe

20 20/27 Solução em Java

21 21/27 Vantagens do uso de funções Facilita a resolução de problemas complexos; Viabiliza a divisão do trabalho entre a equipe de desenvolvimento (cada programador ou grupo de programadores pega um pedaço do problema para resolver e trabalha de forma independente); Desenvolvimento mais rápido de programas (várias funções podem ser escritas em paralelo pelos membros da equipe).

22 22/27 Vantagens do uso de funções Incentiva a divisão de responsabilidades; Reuso de funções desenvolvidas em projetos anteriores ou obtidas externamente diminui o tempo de desenvolvimento de novos programas; Aumento de qualidade pelo uso de funções cujo funcionamento foi validado em projetos anteriores.

23 23/27 Exercícios Escreva uma função que recebe uma quantidade qualquer de valores e retorna a média desses valores. Escreva uma função que receba um número inteiro positivo e retorne o fatorial desse número. Uma das maneiras de se obter a raiz quadrada de um número inteiro é subtrair do número os ímpares consecutivos a partir de 1, até que o resultado da subtração seja menor ou igual a zero. O número de vezes que se conseguir fazer a subtração é a raiz exata (se o resultado final da subtração for zero) ou aproximada (se o resultado final da subtração for negativo). Escreva uma função que receba um número inteiro positivo e calcule a raiz quadrada desse número.

24 24/27 Solução exercício 1 public static double media(double[] v) { double soma = 0, media = 0; for (int i = 0; i< v.length; i++) { soma = soma + v[i]; } media = soma / v.length; return media; }

25 25/27 Solução exercício 2 public static int fatorial(int numero) { int fatorial = 1; if (numero == 0 || numero ==1) return 1; for (int i = numero; i> 0; i--) { fatorial = fatorial*i; } return fatorial; }

26 26/27 Solução exercício 3 public static void raizQuadrada(int numero) { int i = 1, contador = 0, n = numero; while (n >0) { n = n - i; i = i+2; contador = contador +1; } if (n ==0) System.out.println("Raiz exata de " + numero + ": " + contador); else { contador = contador - 1; System.out.println("Raiz aprox. de " +numero+ ": " + contador); }


Carregar ppt "Modularização Programação em Java Prof. Maurício Braga."

Apresentações semelhantes


Anúncios Google