Métodos
[email protected]
Até agora vimos
● Tipos primitivos
● Operadores aritméticos, relacionais e lógicos
● Classes String e Math
● Entrada e saída de dados (System.out e Scanner)
● Estruturas condicionais (if-else)
● Estruturas de seleção múltipla (switch-case)
● Estruturas de repetição (while, do-while, for)
● Array( variável composta homogênea)
Receita de bolo de cenoura
1. No liquidificador colocar os ovos, o óleo e as cenouras
2. Bater por 3 minutos
3. Em uma vasilha a parte colocar a farinha, o fermento e o açúcar
4. Misturar os ingredientes secos com o conteúdo do liquidificador e
mexer bem
5. Levar ao microonda por 10 minutos (em fôrma apropriada)
6. Para fazer a calda leve a margarina, o chocolate em pó, o leite e o
açúcar ao fogo
7. Mexer sempre até engrossar (tomando cuidado para não queimar)
8. Colocar a calda em cima do bolo ainda quente
4
E se eu quiser fazer dois bolos, um de cenoura e
outro de massa branca, mas os dois com a
Receita de bolo de cenoura
1. No liquidificador colocar os ovos, o óleo e as cenouras
2. Bater por 3 minutos
3. Em uma vasilha a parte colocar a farinha, o fermento e o açúcar
4. Misturar os ingredientes secos com o conteúdo do liquidificador e
mexer bem
5. Levar ao microonda por 10 minutos (em fôrma apropriada)
6. Para fazer a calda leve a margarina, o chocolate em pó, o leite e o
açúcar ao fogo
7. Mexer sempre até engrossar (tomando cuidado para não queimar)
8. Colocar a calda em cima do bolo ainda quente
6
Podemos agrupar os passos em subrotinas e
reutilizá-los em outras receitas
Preparar a massa
1. No liquidificador colocar os ovos, o óleo e as cenouras
2. Bater por 3 minutos
3. Em uma vasilha a parte colocar a farinha, o fermento e o açúcar
4. Misturar os ingredientes secos com o conteúdo do liquidificador e
mexer bem
5. Levar ao microonda por 10 minutos (em fôrma apropriada)
Preparar a calda
1. Para fazer a calda leve a margarina, o chocolate em pó, o leite e o
açúcar ao fogo
Montar o bolo
1. Colocar a calda em cima do bolo ainda quente
Subrotinas para fazer um bolo
1. Preparar a massa 2. Preparar a calda 3. Montar o bolo
Cada subrotina tem um conjunto
de passos para alcançar um
Em Java subrotinas, funções ou procedimentos
são chamados de
métodos
O que são métodos?
● Estrutura que agrupa um bloco de comandos com um
objetivo específico
● Podem ser acessados a qualquer momento e em
qualquer lugar do programa
● Promovem organização e reusabilidade do código
● Até agora aprendemos a colocar todos os passos de um
programa em um único método (main). Agora, vamos
começar a criar e chamar nossos próprios métodos
14
public class Teste {
public static void main(String[] args) {
System.out.println("Imprimindo a mensagem 1 vez");
System.out.println("---"); System.out.println("Bem vindo ao programa!"); System.out.println("---");
System.out.println("Imprimindo a mensagem 5 vezes"); for(int i = 0; i < 5; i++) {
System.out.println("---"); System.out.println("Bem vindo ao programa!"); System.out.println("---"); }
} }
public class Teste{
public static void mensagem() {
System.out.println("---"); System.out.println("Bem vindo ao programa!"); System.out.println("---"); }
public static void main(String[] args) {
System.out.println("Imprimindo a mensagem 1 vez"); mensagem();
System.out.println("Imprimindo a mensagem 5 vezes"); for(int i = 0; i < 5; i++) {
mensagem(); }
16
public class Teste{
public static void mensagem() {
System.out.println("---"); System.out.println("Bem vindo ao programa!"); System.out.println("---"); }
public static void main(String[] args) {
System.out.println("Imprimindo a mensagem 1 vez"); mensagem();
System.out.println("Imprimindo a mensagem 5 vezes"); for(int i = 0; i < 5; i++) { mensagem(); } } }
Chamada
de método
Declaração
de método
Partes
public static void mensagem() {
System.out.println("---");
System.out.println("Bem vindo ao programa!");
System.out.println("---");
}
Partes
18
public static void mensagem() {
System.out.println("---");
System.out.println("Bem vindo ao programa!");
System.out.println("---");
}
assunto das próximas aulas ;)
Partes
public static void mensagem() {
System.out.println("---");
System.out.println("Bem vindo ao programa!");
System.out.println("---");
}
Tipo do retorno
Partes
20
public static void mensagem() {
System.out.println("---");
System.out.println("Bem vindo ao programa!");
System.out.println("---");
}
nome do método
Procurem usar nomes intuitivos sobre a
tarefa (rotina) que aquele método executa
Partes
public static void mensagem() {
System.out.println("---");
System.out.println("Bem vindo ao programa!");
System.out.println("---");
}
Passagem de parâmetros
Mesmo que o método não receba
parâmetros, temos que colocar os
Exercício resolvido
Faça um programa em Java que leia duas notas do teclado,
calcule e imprima na tela a média aritmética dessas duas
notas
import java.util.Scanner;
public class Notas{
public static void main(String[] args) { Scanner t = new Scanner(System.in);
System.out.println("Digite a primeira nota"); double nota1 = t.nextDouble();
System.out.println("Digite a segunda nota"); double nota2 = t.nextDouble();
t.close();
double media = (nota1 + nota2)/2;
System.out.println("A média é " + media); }
E se eu quiser fazer um método pra calcular a
média?
24
nota1
E se eu quiser fazer um método pra calcular a
média?
nota1
nota2
media
Esse método vai precisar receber como
entrada as duas notas e devolver a média
Entradas
Método calcMediaArit
26
public static double calcMediaArit(double n1, double n2) {
double media = (n1 + n2)/2;
return media;
}
Método calcMediaArit
public static double calcMediaArit(double n1, double n2) {
double media = (n1 + n2)/2;
return media;
}
Tipo do retorno
palavra reservada que indica o retorno
Tipos dos parâmetros (entradas do método)
Chamando o método calcMediaArit
28
public static void main(String[] args) {
Scanner t = new Scanner(System.in);
System.out.println("Digite a primeira nota");
double nota1 = t.nextDouble();
System.out.println("Digite a segunda nota");
double nota2 = t.nextDouble();
t.close();
double media = calcMediaArit(nota1, nota2);
System.out.println("A média é " + media);
}
Ou, podemos chamar assim, por exemplo
public static void main(String[] args) {
double media = calcMediaArit(8.65, 6.5);
System.out.println("A média é " + media);
}
E se quisermos fazer um método pra ler as duas
notas?
30
[nota1, nota2]
Java não permite que um método tenha mais
de 1 retorno. Logo, a solução e retornar um
array com duas variáveis do tipo double
Saída
Esse método não recebe parâmetros (entradas) e retorna dois
números reais
Método lerNotas
public static double[] lerNotas() { double[] notas = new double[2];
Scanner t = new Scanner(System.in);
System.out.println("Digite a primeira nota"); notas[0] = t.nextDouble();
System.out.println("Digite a segunda nota"); notas[1] = t.nextDouble();
t.close(); return notas; }
Método main chamando os dois novos métodos
32
public static void main(String[] args) {
double[] notas = lerNotas();
double media = calcMediaArit(notas[0], notas[1]);
System.out.println("A média é " + media);
Antes e depois
public static void main(String[] args) { Scanner t = new Scanner(System.in);
System.out.println("Digite a primeira nota"); double nota1 = t.nextDouble();
System.out.println("Digite a segunda nota"); double nota2 = t.nextDouble();
t.close();
double media = (nota1 + nota2)/2;
System.out.println("A média é " + media); }
public static void main(String[] args) { double[] notas = lerNotas();
double media = calcMediaArit(notas[0], notas[1]); System.out.println("A média é " + media);
E ainda podemos melhorar ;)
34
public static double calcMediaArit(double[] notas) { double soma = 0;
double media = 0;
for(int i = 0; i < notas.length; i++) { soma = soma + notas[i];
}
media = soma/notas.length; return media;
Método main atualizando a chamada de
calcMediaArit
public static void main(String[] args) { double[] notas = lerNotas();
double media = calcMediaArit(notas);
System.out.println("A média é " + media); }
E ainda melhorar o método lerNotas()
36[nota1, nota2]
Saída EntradanumeroNotas
Novo método lerNotas(numeroNotas)
public static double[] lerNotas(int numeroNotas) { double[] notas = new double[numeroNotas];
Scanner t = new Scanner(System.in); for(int i = 0; i < numeroNotas; i++) {
System.out.println("Digite a nota " + (i + 1)); notas[i] = t.nextDouble(); } t.close(); return notas; }
Método main atualizando a chamada de lerNotas
38
public static void main(String[] args) { double[] notas = lerNotas(2);
double media = calcMediaArit(notas);
System.out.println("A média é " + media); }
import java.util.Scanner; public class Notas{
public static double calcMediaArit(double[] notas) { double soma = 0;
double media = 0;
for(int i = 0; i < notas.length; i++) { soma = soma + notas[i];
}
media = soma/notas.length; return media;
}
public static double[] lerNotas(int numeroNotas) { double[] notas = new double[numeroNotas]; Scanner t = new Scanner(System.in); for(int i = 0; i < numeroNotas; i++) {
System.out.println("Digite a nota " + (i + 1)); notas[i] = t.nextDouble(); } t.close(); return notas; }
public static void main(String[] args) { double[] notas = lerNotas(2);