Buscar

06 Modularização

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Modularização 
 
Programação 
 
Prof. Maurício Braga 
 
 
2/25 
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/25 
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/25 
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/25 
Modularização em Java 
6/25 
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/25 
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. 
 <nome_função>(parametro1, parametro2); 
public static [retorno] <nome_função>([Parâmetro1],..., [ParâmetroN]) 
 { 
 <comando1>; 
 <comando2>; 
 ... 
 <comandoN>; 
 } 
8/25 
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/25 
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/25 
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/25 
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/25 
Exemplo 
13/25 
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/25 
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/25 
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/25 
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/25 
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/25 
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; 
 Scanner s = new Scanner(System.in); 
 System.out.println("digite o comprimento em metros:"); 
 comprimento = s.nextDouble(); 
 System.out.println("digite a altura em metros:"); 
 altura = s.nextDouble(); 
 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/25 
Solução emJava 
 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/25 
Solução em Java 
21/25 
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/25 
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/25 
Exercício 
 Escreva uma função que recebe uma quantidade 
qualquer de valores e retorna a média desses valores. 
24/25 
Solução exercício 
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; 
} 
Modularização 
 
Programação 
 
Prof. Maurício Braga

Outros materiais