Pensamento Computacional - Métodos no Java
Objetivos da Aula
- Conceituar métodos, parâmetros e valor de retorno no Java;
- Definir, declarar e chamar métodos no Java;
- Aplicar métodos para resolver subproblemas de um grande problema;
O que é um método no Java
Uma método (também pode ser visto como uma função) é um "bloco de código" que resolve um dado problema específico, que possui um nome associado e que pode ser chamado quando necessário. Ao final da execução do código do método, o fluxo de execução retorna para quem "chamou" o método.
Exemplo: para calcular o seno de um ângulo chamamos um método para resolver o problema específico: "calcular um seno". Dados de entrada devem ser fornecidos, no caso o ângulo. O dado de saída é o seno computado deste ângulo.
Notar que a função permite REAPROVEITAR o código. Não precisamos a todo momento reescrever um código que computa o seno. Basta chamar a função.
EXEMPLO: Desenhar um retângulo no terminal exige um certo número de linhas de código. É uma tarefa bem específica que poderia ser "ENCAPSULADA" em um método. Seria algo da forma:
import java.util.Scanner;
public class MetodoDesenhaRetangula {
public static void DesenhaRetangulo() {
for(int i = 0; i < 10; i++ ) {
for(int j = 0; j < 20; j++ ) {
System.out.print("X");
}
System.out.println("");
}
System.out.println("");
}
public static void main(String[] args) {
System.out.println("Vou desenhar um retangulo...");
DesenhaRetangulo();
System.out.println("Vou desenhar um outro retangulo...");
DesenhaRetangulo();
}
}
DISCUSSÃO: Neste exemplo existem dois métodos: o main() e DesenhaRetangulo(). Podemos dizer que ao executar o programa, o método main() é AUTOMATICAMENTE chamado. Uma após outra, as instruções do método main() são executadas. Inicialmente a instrução:
System.out.println("Vou desenhar um retangulo...");
Esta instrução é uma CHAMADA ao método println()... Este método está na biblioteca e tem como objetivo imprimir mensagens na tela.
Na sequência é executada a seguinte instrução:
DesenhaRetangulo();
Esta instrução TAMBÉM é uma chamada de um método. OBSERVE o significado de CHAMAR: é o desvio do fluxo de execução do programa para o código do método. O código será executado até o final quando então o fluxo de execução retorna para QUEM/QUE chamou.
Observe que a implementação do método DesenhaRetângulo() foi fornecida pelo próprio programador. Já o método println() já está implementado na biblioteca.
Após a chamada do DesenhaRetângulo(), novamente é chamado o método println:
System.out.println("Vou desenhar um outro retangulo...");
E finalmente é chamado mais uma vez o método DesenhaRetangulo();.
Trata-se de um exemplo simples mostrando que podemos chamar quantas vezes quisermos um determinado código de um método.
Parâmetros de um método
No exemplo anterior, o método DesenhaRetangulo() cumpre bem a sua tarefa de desenhar um retângulo. Entretanto, o que podemos fazer se desejarmos configurar o número de linhas e a largura do retângulo?
Aqui entra o conceito de PARAMETRIZAR o método, ou seja, repassar valores para que ele possa ser PERSONALIZADO ("customized" em inglês).
Vamos a um exemplo onde PARAMETRIZAMOS a LARGURA do retângulo:
import java.util.Scanner;
public class MetodoDesenhaRetangula {
public static void DesenhaRetanguloLarguraConfiguravel(int largura) {
for(int i = 0; i < 10; i++ ) {
for(int j = 0; j < largura; j++ ) {
System.out.print("X");
}
System.out.println("");
}
System.out.println("");
}
public static void main(String[] args) {
System.out.println("Vou desenhar um retangulo...");
DesenhaRetanguloLarguraConfiguravel(10);
System.out.println("Vou desenhar um outro retangulo...");
DesenhaRetanguloLarguraConfiguravel(20);
}
}
DISCUSSÃO: Agora conseguimos repassar a largura que queremos ao chamar o método DesenhaRetanguloLarguraConfiguravel(). Observe que o valor repassado (no caso 10) é COPIADO para o parâmetro FORMAL largura, ANTES do método ser chamado ("invoked" em inglês). Desta forma, quando o código do método começa a ser executado, o parâmetro largura conterá o valor 10. Observe que "largura" é uma variável especial que serve como interface entre QUEM CHAMA e o CHAMADO.
Sintaxe do método com PARÂMETROS
Observe que os parâmetros são declarados dentro de parênteses, tal como se fossem variáveis. Vamos modificar o código acima para que sejam passados dois parâmetros: largura e altura: