quinta-feira, 19 de fevereiro de 2015

0.0.0.10 - Métodos

Procedimentos e sua relação com funções matemáticas.

Objetivo desta aula:

Apresentar procedimentos/funções/métodos/subrotinas.

links citados durante a aula

Métodos na especificação da linguagem Java
Tutorial sobre métodos em Java

Introdução

procedimentos, funções, métodos, subrotinas, em linguagens de programação, tem uma idéia em comum: definir um bloco de código e dar-lhe um nome. Fora da definição, "executar esse nome", será equivalente a executar esse bloco de código.
Iniciaremos pelas funções matemáticas, com as quais estamos familiarizados, e começemos com uma simplificação de corrida de taxi: O valor de uma corrida de taxi é a soma do valor da bandeirada, que supomos fixado em R$5,00 mais 0,50 por quilômetro rodado. Chamemos f a função que relaciona a distância percorrida em uma corrida com o valor da corrida. Qual é a expressão dessa função?
f(x)=5+0.5*x, onde x é a distância percorrida em quilômetros.
Acabamos de definir uma função (matemática). Agora vamos usá-la:
Calcule o valor de uma corrida de 5km, ou em outra notação, f(5)=...
Para chegar ao resultado, atribuímos a x o valor 5 e calculamos o valor de f(x). O resutado é 7.5
Como faremos para calcular o valor de três corridas de 5km? Como podemos notar usando f(5)?
Calculamos então 3*f(5). Para isso atribuímos a x o valor 5, calculamos o valor de f(x) e multiplicamos por 3. O resultado é 22.5
Note que quando "calculamos f", acabamos "substituindo f por um número". Podemos também dizer que a aplicação de f sobre 5 resulta em 7.5. Em computação, é comum dizer que f retorna 7.5, ou que o valor retornado por f é 7.5
Como você programaria o computador para fazer esse cálculo?? (recomendo escrever e executar o programa antes de continuar a leitura)
Podemos codificar essa função no programa. Primeiro vamos definí-la. Lembre, Java é uma linguagem com tipagem forte, ou seja, temos que informar o tipo de todas as variáveis. Como a função retorna algo, e este algo tem que ter tipo, então precisamos dar um tipo à função também - é o tipo de retorno da função. Assim, chegamos a:
   double f (double x)
  
Esta é a declaração da função. Nela definimos como se usa, mas ainda não definimos o que ela faz - que é um bloco de código:
   {
    double r;
    r=5+0.5*x;
    return r;
   }
  
Neste bloco, definimos a variável r, que armazenará o resultados da conta, fazemos a conta e retornamos o valor contido em r.
Por uma questão do tipo de objeto que estamos usando, precisamos informar que o método é static. Enfim, a definição da função fica:
   static double f (double x)
   {
    double r;
    r=5+0.5*x;
    return r;
   }
  
Esta não é a única forma de escrever esta função, além de diferenças na indentação, podemos "economizar" variáveis e código:
   static double f (double x) {
    return 5+0.5*x;
   }
  
Se simplesmente incluirmos (CTRL-C CTRL-V) esta definição de função no código do OlaMundo e executarmos, o que o programa imprime na tela muda? Uma questão menos aparente: a função é utilizada?

Nenhum comentário:

Postar um comentário