Sei sulla pagina 1di 20

Funciones/Métodos

I Las funciones/métodos son trozos de código que encapsulan


cierta funcionalidad especial.
I En general tienen datos de entrada y datos de salida (pueden
no tenerlos).
I Son muy similares a la idea de una función en matemáticas:

funcion(x) = x 2 + 3

I Esta función tiene una definición y puede ser evaluada con


distintos valores, por ejemplo si hacemos

funcion(5)

sabemos que el resultado será 28.

Jorge Pérez – Programación Estructurada en JAVA 1 / 20


Funciones/Métodos en JAVA
I La función matemática funcion(x) = x 2 + 3 podrı́a verse en
JAVA como
funcion(x)
{
resultado = x * x + 3
}

veremos que es un poco más complicado....


I La idea será poder usar la funcion en un código cualquiera,
por ejemplo:
int x, y;

x = 1 + funcion(2);
y = funcion(x);

System.out.println(x);
System.out.println(y);

Jorge Pérez – Programación Estructurada en JAVA 2 / 20


Funciones/Métodos
I Las funciones en JAVA tienen varias partes importantes en su
definición:
I Nombre → funcion
I Nombres de los datos de entrada → x
I Tipos de datos de entrada → ???
I Tipo de dato de retorno → ???
I Código válido interno
I Instrucción de retorno → ???
I En JAVA se un poco más como:

int funcion(int x)
{
int resultado = x * x + 3;
return resultado;
}

I adicionalmente tenemos que empezar la función con


public static luego veremos qué significa...
Jorge Pérez – Programación Estructurada en JAVA 3 / 20
Un ejemplo completo

class EjemploFuncion
{
public static void main(String[] args)
{
int x, y;

x = 1 + funcion(2);
y = funcion(x) * funcion(x - 2);

System.out.println(x);
System.out.println(y);
System.out.println( funcion(0) );
}

public static int funcion(int x)


{
int resultado;
resutado = x * x + 3;
return resultado;
}
}

Jorge Pérez – Programación Estructurada en JAVA 4 / 20


Temas importantes en el uso de funciones

I Método principal main.


I Parámetros y ámbito de las variables.
I Valor e instrucción de retorno return.
I Orden de ejecución de las instrucciones.
I Distintos tipos de datos de entrada y salida.
I Distinta cantidad de parámetros.
Veremos estos conceptos con otros ejemplos.

Jorge Pérez – Programación Estructurada en JAVA 5 / 20


Ejemplo

class Ejemplo
{
public static void main(String[] args)
{
double a = AreaCirc(2);
System.out.println(a);
}

public static double AreaCirc(double radio)


{
double area;
area = 3.14 * radio * radio;
return area;
}
}

Jorge Pérez – Programación Estructurada en JAVA 6 / 20


Ejemplo

class Ejemplo
{
public static void main(String[] args)
{
int n;
System.out.println("Dime un numero");
n = In.readInt();
if ( esPrimo(n) )
{ System.out.println( n + " es primo"); }
else
{ System.out.println( n + " no es primo"); }
}

public static boolean esPrimo(int n)


{
int i = 2;
while ( (n % i) != 0 && i < n )
{ i++; }

if ( i == n )
{ return true; }
else
{ return false; }
}
}

Jorge Pérez – Programación Estructurada en JAVA 7 / 20


Ejemplo

class Ejemplo
{
public static void main(String[] args)
{
int num, f;
System.out.println("Ingrese un numero");
num = In.readInt();
f = factorial(num);
System.out.println("El factorial de " + num + " es " + f);
}

public static int factorial(int numero)


{
int factorial = 1;
for(int i =1; i<=numero; i++)
{
factorial = factorial * i;
}
return factorial;
}
}

Jorge Pérez – Programación Estructurada en JAVA 8 / 20


Ejemplo

class Ejemplo
{
public static void main(String[] args)
{
int num = 1;
while( factorial(num) < 110 )
{
num++;
}
System.out.println(num);
}

public static int factorial(int numero)


{
int factorial = 1;
for(int i =1; i<=numero; i++)
{
factorial = factorial * i;
}
return factorial;
}
}

Jorge Pérez – Programación Estructurada en JAVA 9 / 20


Varios parámetros

Haga una función potencia que reciba dos datos enteros y retorne
el resultado de elevar el primer dato al segundo.
public static int potencia(int base, int exponente)
{
int resultado = 1;
int i;

for(i = 1; i <= exponente; i++)


{
resultado = resultado * base;
}

return resultado;
}

ahora podemos usarlo en el método principal

Jorge Pérez – Programación Estructurada en JAVA 10 / 20


Ejemplo potencia

class Ejemplo
{
public static void main(String[] args)
{
int n, i;
System.out.print("Dime un entero positivo");
n = In.readInt();
System.out.println("Las primeras 5 potencias de " + n + " son:");

for( i = 1; i <= 5; i++)


{
System.out.println(potencia(n,i));
}
}

public static int potencia(int base, int exponente)


{
int resultado = 1;
int i;

for(i = 1; i <= exponente; i++)


{ resultado = resultado * base; }

return resultado;
}
}

Jorge Pérez – Programación Estructurada en JAVA 11 / 20


Ejemplo dos funciones

class Ejemplo
{
public static void main(String[] args)
{
int n, i;
System.out.println("Dime un entero positivo");
n = In.readInt();
System.out.println( n + "! = " + factorial(n) );
System.out.println( n + "^" + n + " = " + potencia(n,n));
}

public static int potencia(int base, int exponente)


{
int resultado = 1;
int i;
for(i = 1; i <= exponente; i++)
{ resultado = resultado * base; }
return resultado;
}

public static int factorial(int numero)


{
int factorial = 1;
for(int i =1; i<=numero; i++)
{ factorial = factorial * i; }
return factorial;
}
}

Jorge Pérez – Programación Estructurada en JAVA 12 / 20


Funciones/Métodos

Los métodos nos sirven entre otras cosas para:


I No repetir lo mismo varias veces en el código.
I Ordenar el código.
I Comprender más fácilmente el código.
I Separar trabajo entre programadores.
I Realizar trabajos más complejos.
Veremos otras formas de interacción entre funciones.

Jorge Pérez – Programación Estructurada en JAVA 13 / 20


Funciones sin valor de retorno
Algunas funciones pueden no retornar un valor pero servirnos en
alguna tarea repetitiva. Si no hay valor de retorno usamos void
como valor de retorno:
class Ejemplo
{
public static void main(String[] args)
{
int n;
muestraMenu();
n = In.readInt();
while( n != 0 )
{
.....
.....
muestraMenu();
n = In.readInt();
}
}

public static void muestraMenu()


{
System.out.println("Menu:");
System.out.println("=====");
System.out.println("0 para salir");
System.out.println("1 para obtener promedio");
System.out.println("2 para obtener minimo");
System.out.println("3 para obtener maximo");
}
}

Jorge Pérez – Programación Estructurada en JAVA 14 / 20


Funciones sin valor de retorno

class ImprimeMatriz
{
public static void main(String[] args)
{
int[][] Tablero = {{2, 3, 5}, {4, 6, 1}};
muestraMatriz(Tablero, 2, 3);
}

public static void muestraMatriz(int[][] M, int n, int m)


{
int i,j;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
System.out.print(M[i][j] + " ");
}
System.out.println();
}
}
}

Jorge Pérez – Programación Estructurada en JAVA 15 / 20


Arreglos como datos de entrada

I Cuidado cuando se pasa un arreglo a un método.


I Como vimos un arreglo es una referencia.
I Cuando un arreglo se entrega a un método cualquier cambio
que se haga al arreglo se mantendrá al terminar el llamado a
la función.
I Podemos usar esto para generar métodos que implicitamente
generen varios valores de salida.

public static void transponer(int[][] M, int n)


{
int i,j,t;
for(i = 0; i < n; i++)
{
for(j = i; j < n; j++)
{
t = M[i][j];
M[i][j] = M[j][i];
M[j][i] = t
}
}
}

Jorge Pérez – Programación Estructurada en JAVA 16 / 20


Métodos y Arreglos

class Ejemplo
{
public static void main(String[] args)
{
double[] a= {1.0, 2.4, 5.6, 4.5, 6.7};
int i;
swap(a, 0, 3);
for(i = 0; i < 5; i++)
{ System.out.print(a[i]+ " "); }
}

public static void swap(double[] A, int i, int j)


{
double temp;
temp= A[i];
A[i]= A[j];
A[j]=temp;
}
}

Jorge Pérez – Programación Estructurada en JAVA 17 / 20


Matrices como arreglos

I Cuando creamos una matriz en realidad lo que estamos


creando es un arreglo de arreglos.
I Por ejemplo, si escribimos:

int[][] a;

lo que creamos es una variable a que hace referencia a un


arreglo (de arreglos), no a una matriz.
I Luego cuando escribimos:

a = new int[3][4];

lo que creamos es un arreglo de tres elementos, a[0], a[1],


a[2].

Jorge Pérez – Programación Estructurada en JAVA 18 / 20


Arreglos como matrices y métodos

class Ejemplo
{
public static void main(String[] args)
{
int[][] A={{1,2,3}, {4,5,6}, {7,8,9}};
int[] b = A[0];

int i;
for(i = 0; i < 3 i++)
{ System.out.println(b[i]); }

swap(A[0], 0, 2)
for(i = 0; i < 3 i++)
{ System.out.println(b[i]); }
}

public static void swap(double[] A, int i, int j)


{
double temp;
temp= A[i];
A[i]= A[j];
A[j]=temp;
}
}

Jorge Pérez – Programación Estructurada en JAVA 19 / 20


Funciones que llaman a otras funciones

I El método principal (main) puede llamar a otros métodos y


estos a su vez pueden llamar a otros.

class Ejemplo
{
public static void main(String[] args)
{
...
}

public static double combinaciones(int n, int k)


{
int c;
c = factorial(n) / ( factorial(k) * factorial(n-k) );
return c;
}

public static double factorial (int numero)


{
int factorial = 1;
for(int i = 1; i <= numero; i++)
{
factorial = factorial * i;
}
return factorial;
}
}

Jorge Pérez – Programación Estructurada en JAVA 20 / 20

Potrebbero piacerti anche