Programación con Funciones
         en Java



               Departamento de ingeniería
Ejemplo

Queremos depositar todo nuestro dinero ganado como
programadores. Hay dos bancos que compiten por
nuestros dividendos. El primero, lo llamamos "Banco A",
nos ofrecen un interés con una tasa mensual del 1 % mas
una bonificación final del 5%. El segundo, el "Banco B",
nos ofrece una tasa del 1,5 %.



                                Departamento de ingeniería
public class ShowMeTheMoney{
   public static void main(String args[]){
     int meses = 12;
     float interesBanco1 = 1f;
     float bonificBanco1 = 5f;
     float interesBanco2 = 1.5f;
     double monto = 10000;
     double montoBanco1 = monto;
     double montoBanco2 = monto;
     for ( int n = 1; n <= meses; n++){
       montoBanco1 += montoBanco1 * interesBanco1 / 100;
     }
     montoBanco1 += montoBanco1 * bonificBanco1 /100;
     for ( int n = 1; n <= meses; n++){
       montoBanco2 += montoBanco2 * interesBanco2 / 100;
     }
     System.out.println("Importe final del banco1 : " + montoBanco1);
     System.out.println("Importe final del banco2 : " + montoBanco2);
   }
 }
                                                Departamento de ingeniería
Una función es un conjunto de instrucciones que
ejecutan una rutina y devuelven un resultado. El
resultado puede depender de parámetros de entrada.

Un función se construye de la siguiente manera:

tipo_resultado nombre_función (tipo_parámetro
nombre_parámetro, ... ) {
  sentencia1;
  sentencia2;
  ...
  sentenciaN;
}
                                Departamento de ingeniería
public class ShowMeTheMoney2{
  static double interesCompuesto(double monto, float tasa, int períodos){
    for(int n = 1; n <= períodos; n++ ){
      monto += monto * tasa / 100;
    }
    return monto;
  }
  public static void main(String args[]){
    int meses = 12;
    float interesBanco1 = 1f;
    float bonificBanco1 = 5f;
    float interesBanco2 = 1.5f;
    double monto = 10000;
    double montoBanco1 = monto;
    double montoBanco2 = monto;
    montoBanco1 = interesCompuesto( montoBanco1, interesBanco1, meses );
    montoBanco1 += montoBanco1 * bonificBanco1 /100;
    montoBanco2 = interesCompuesto( montoBanco2, interesBanco2, meses );
    System.out.println("Importe final del banco1 : " + montoBanco1);
    System.out.println("Importe final del banco2 : " + montoBanco2);
  }                                                  Departamento de ingeniería

}
Parametros de una Función
Los parámetros de una función son los valores que esta
recibe por parte del código que la llama. Pueden ser tipos
simples u objetos.

En la declaración de la función se escriben después del
nombre entre paréntesis indicándose el tipo de cada uno y
su nombre. Veamos esto a modo de ejemplo:

int dividir(int dividendo, int divisor) {
    ...
 }
                                  Departamento de ingeniería
Es importante recordar que en java, los parámetros de los
tipos primitivos (int, long, etc.) SIEMPRE se pasan por
valor.

Los objetos y arrays se pasan por referencia.

Si no queremos que la función devuelva ningún parámetro
debemos utilizar el tipo void. P.ej:

void print(String mensajeAImprimir) {
  ....
}
                                 Departamento de ingeniería
Clausula Return
Una función puede o no devolver un resultado, según cómo
haya sido declarada.
La siguiente función no devuelve nada, puesto que se pone
void delante, al declararla

// Esta función no devuelve nada
void funcion ( /* parámetros */)

Sin embargo, esta otra sí devuelve un valor entero

// Esta función devuelve un valor entero
int funcion ( /* parámetros */ )
                                    Departamento de ingeniería
Si la función devuelve algún tipo de resultado, es
obligatorio en java poner en el código de la función return
valordevuelto.

Si dentro de la función hay condicionales, es también
obligatorio que en todos los posibles caminos por los que
se termine el código de la función, se ponga el return y el
valor devuelto.

Lógicamente, cuando la función devuelve el resultado,
finaliza la ejecución de la misma, y de cualquier estructura
de control iterativa (for, while...) aunque no se haya
cumplido su condición de salida.
                                  Departamento de ingeniería
Funciones Recursivas

Las funciones recursivas son aquellas que se invocan a si
mismas en algún momento de su ejecución.

Así, todo método recursivo debe tener al menos una
sentencia que devuelva un resultado (la solución del caso
más sencillo) y las sentencias necesarias para acercarse en
cada invocación a ese caso.



                                 Departamento de ingeniería
Ejemplo Iterativo Factorial
public class Factoriales{
   static int factorial(int numero){
       int resultado = 1;
       while(numero > 0){
         resultado = resultado*numero;
         número--;
       }
   }
   public static void main(String args[]){
      System.out.println(factorial(5));
   }
 }                                Departamento de ingeniería
Ejemplo Recursivo Factorial
public class Factoriales {
   static int factorial(int numero){
       if ( numero <= 1 ) {
          return 1;
       } else {
          return numero*factorial(numero-1);
       }
   }
   public static void main(String args[]){
      System.out.println(factorial(5));
   }
 }                               Departamento de ingeniería
Referencias

• Programación en Java , Wikilibros.
http://es.wikibooks.org/wiki/Programación_en_Java/Fun
   ciones




                              Departamento de ingeniería

Funciones

  • 1.
    Programación con Funciones en Java Departamento de ingeniería
  • 2.
    Ejemplo Queremos depositar todonuestro dinero ganado como programadores. Hay dos bancos que compiten por nuestros dividendos. El primero, lo llamamos "Banco A", nos ofrecen un interés con una tasa mensual del 1 % mas una bonificación final del 5%. El segundo, el "Banco B", nos ofrece una tasa del 1,5 %. Departamento de ingeniería
  • 3.
    public class ShowMeTheMoney{ public static void main(String args[]){ int meses = 12; float interesBanco1 = 1f; float bonificBanco1 = 5f; float interesBanco2 = 1.5f; double monto = 10000; double montoBanco1 = monto; double montoBanco2 = monto; for ( int n = 1; n <= meses; n++){ montoBanco1 += montoBanco1 * interesBanco1 / 100; } montoBanco1 += montoBanco1 * bonificBanco1 /100; for ( int n = 1; n <= meses; n++){ montoBanco2 += montoBanco2 * interesBanco2 / 100; } System.out.println("Importe final del banco1 : " + montoBanco1); System.out.println("Importe final del banco2 : " + montoBanco2); } } Departamento de ingeniería
  • 4.
    Una función esun conjunto de instrucciones que ejecutan una rutina y devuelven un resultado. El resultado puede depender de parámetros de entrada. Un función se construye de la siguiente manera: tipo_resultado nombre_función (tipo_parámetro nombre_parámetro, ... ) { sentencia1; sentencia2; ... sentenciaN; } Departamento de ingeniería
  • 5.
    public class ShowMeTheMoney2{ static double interesCompuesto(double monto, float tasa, int períodos){ for(int n = 1; n <= períodos; n++ ){ monto += monto * tasa / 100; } return monto; } public static void main(String args[]){ int meses = 12; float interesBanco1 = 1f; float bonificBanco1 = 5f; float interesBanco2 = 1.5f; double monto = 10000; double montoBanco1 = monto; double montoBanco2 = monto; montoBanco1 = interesCompuesto( montoBanco1, interesBanco1, meses ); montoBanco1 += montoBanco1 * bonificBanco1 /100; montoBanco2 = interesCompuesto( montoBanco2, interesBanco2, meses ); System.out.println("Importe final del banco1 : " + montoBanco1); System.out.println("Importe final del banco2 : " + montoBanco2); } Departamento de ingeniería }
  • 6.
    Parametros de unaFunción Los parámetros de una función son los valores que esta recibe por parte del código que la llama. Pueden ser tipos simples u objetos. En la declaración de la función se escriben después del nombre entre paréntesis indicándose el tipo de cada uno y su nombre. Veamos esto a modo de ejemplo: int dividir(int dividendo, int divisor) { ... } Departamento de ingeniería
  • 7.
    Es importante recordarque en java, los parámetros de los tipos primitivos (int, long, etc.) SIEMPRE se pasan por valor. Los objetos y arrays se pasan por referencia. Si no queremos que la función devuelva ningún parámetro debemos utilizar el tipo void. P.ej: void print(String mensajeAImprimir) { .... } Departamento de ingeniería
  • 8.
    Clausula Return Una funciónpuede o no devolver un resultado, según cómo haya sido declarada. La siguiente función no devuelve nada, puesto que se pone void delante, al declararla // Esta función no devuelve nada void funcion ( /* parámetros */) Sin embargo, esta otra sí devuelve un valor entero // Esta función devuelve un valor entero int funcion ( /* parámetros */ ) Departamento de ingeniería
  • 9.
    Si la funcióndevuelve algún tipo de resultado, es obligatorio en java poner en el código de la función return valordevuelto. Si dentro de la función hay condicionales, es también obligatorio que en todos los posibles caminos por los que se termine el código de la función, se ponga el return y el valor devuelto. Lógicamente, cuando la función devuelve el resultado, finaliza la ejecución de la misma, y de cualquier estructura de control iterativa (for, while...) aunque no se haya cumplido su condición de salida. Departamento de ingeniería
  • 10.
    Funciones Recursivas Las funcionesrecursivas son aquellas que se invocan a si mismas en algún momento de su ejecución. Así, todo método recursivo debe tener al menos una sentencia que devuelva un resultado (la solución del caso más sencillo) y las sentencias necesarias para acercarse en cada invocación a ese caso. Departamento de ingeniería
  • 11.
    Ejemplo Iterativo Factorial publicclass Factoriales{ static int factorial(int numero){ int resultado = 1; while(numero > 0){ resultado = resultado*numero; número--; } } public static void main(String args[]){ System.out.println(factorial(5)); } } Departamento de ingeniería
  • 12.
    Ejemplo Recursivo Factorial publicclass Factoriales { static int factorial(int numero){ if ( numero <= 1 ) { return 1; } else { return numero*factorial(numero-1); } } public static void main(String args[]){ System.out.println(factorial(5)); } } Departamento de ingeniería
  • 13.
    Referencias • Programación enJava , Wikilibros. http://es.wikibooks.org/wiki/Programación_en_Java/Fun ciones Departamento de ingeniería