Você está na página 1de 2

Java - Funes

Funes
Funes so rotinas ou sub-rotinas automatizadas. Sempre que pretendemos usar a mesma
codificao para algo especfico, criamos uma funo. Dessa forma, sempre que quisermos utilizar
aquela codificao, ao invs de ns a digitarmos inteira novamente, simplesmente chamamos a
funo. Funes so extremamente teis e adaptveis, e o conceito de funes importante para
mais a frente entendermos o funcionamento e criao dos mtodos.

Criando funes sem argumentos


Para criar uma funo, temos que ter sempre em mente que toda funo global, ou seja,
esttica (static).
As funes mais bsicas so aquelas que apenas executam uma rotina, portanto, no recebem
nenhum argumento. No cdigo, digitaramos dentro da classe, mas fora da funo main o
seguinte:
public static void nomeDaFuno () { cdigo da funo }
Static porque pode ser acessado globalmente; void porque no retorna nenhum valor; mesmo no
tendo argumentos, necessrio ter parnteses.
Vamos ver o exemplo:

01.public class ExemploFuncao {


02.//criando a funo
03.public static void mostrarMensagem() {
04.System.out.println("Minha Mensagem");
05.}
06.
07.public static void main(String[] args) {
08.//chamando a funo dentro do programa
09.mostrarMensagem();
10.}
11.}
O cdigo acima funciona da seguinte maneira:
Primeiro criada a funo mostrarMensagem(), que em seu corpo tem apenas um println com
uma mensagem. Depois iniciamos nosso programa com o main. Dentro do main chamamos a
funo. Para isso, basta colocar o nome da funo. Quando a funo chamada, o cdigo dentro
do corpo da funo executado. Concluindo, o programa acima apenas mostra na tela a
mensagem Minha Mensagem.

Funes com argumentos


Funes com argumentos funcionam e so criadas da mesma forma que uma funo sem
argumento, porm com uma diferena.
A diferena est que haver informaes necessrias para que a funo processe, e essas
informaes sero descritas dentro dos parnteses.
Uma funo pode ter um ou vrios argumentos desde que separados por vrgula (,). Cada
argumento deve ter seu tipo de dado declarado. Ento, todos os exemplos abaixo so funes
vlidas:
public static void funcao1 (String arg1){}
public static void funcao2 (int arg1, int arg2){}
public static void funcao3 (String arg1, char arg2, int arg3, float arg4, Object arg5) {}
Para demonstrar este tipo de funo criaremos uma funo que mostra na tela o resultado fatorial
de um nmero. Alm disso, colocaremos esta funo dentro de um loop que ir de 1 a 10 para ele
mostrar cada um desses fatoriais.

01.public class FatorialComFuncao {


02.public static void fatorar(int numero) {
03.int fator = 1;
04.for (int i = numero; i > 1; i--) {
05.fator *= i;
06.}

07.System.out.println(numero + "! = " + fator);


08.}
09.
10.public static void main(String args[]) {
11.for (int x=1; x<=10; x++)
12.fatorar (x);
13.}
14.}
Simplificando, x que est sendo passado pelo main para fatorar() ser o valor int numero da
funo fatorar.

Funes que retornam valores


Aqui veremos a grande vantagem de se criar uma funo. Funes podem retornar valores de um
processo executado dentro delas e esse valor pode ser guardado dentro de uma varivel no
programa. Isso com certeza deixa nosso cdigo mais simples, pois podemos destacar processos
repetitivos e guardar em uma varivel apenas o resultado daquele processo.
Para criar uma funo que retorna valores temos que nos ater ao fato retorno. Como todas as
outras funes no retornavam valores, ento, seu retorno era vazio - void. Agora, temos que
declarar que tipo de retorno vir da funo.
O retorno dado pelo comando return, que finaliza a funo e mostra o retorno. A varivel ou
valor que utilizarmos para return ser o tipo de retorno da funo.
Vamos imaginar que trs funes, sendo que a primeira ir retornar um inteiro, a segunda um
double e a terceira uma string. Ento, as criaramos da seguinte maneira:
public static int funcaoDeInteiro (){}
public static double funcaoDeDouble (){}
public static String funcaoDeString (){}
No exemplo abaixo, ns criaremos uma funo que ir retornar um valor booleano (verdadeiro ou
falso). Usando este retorno, determinaremos o que fazer dentro de uma estrutura seletiva (if).
Visualizar Codigo Fonte
Imprimir?

01.public class Primo {


02.public static boolean ehPrimo(long nr) {
03.if (nr < 2)
04.return false;
05.for (long i = 2; i <= (nr / 2); i++) {
06.if (nr % i == 0)
07.return false;
08.}
09.return true;
10.}
11.
12.public static void main(String[] args) {
13.long x = 5;
14.if (ehPrimo(x)) // se for primo
15.System.out.println(x + " primo");
16.else // se no for primo
17.System.out.println(x + " no primo");
18.}
19.}

Você também pode gostar