SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Funciones/M´todos
            e

                  Las funciones/m´todos son trozos de c´digo que encapsulan
                                   e                   o
                  cierta funcionalidad especial.
                  En general tienen datos de entrada y datos de salida (pueden
                  no tenerlos).
                  Son muy similares a la idea de una funci´n en matem´ticas:
                                                          o          a

                                                 funcion(x) = x 2 + 3


                  Esta funci´n tiene una definici´n y puede ser evaluada con
                             o                   o
                  distintos valores, por ejemplo si hacemos

                                                      funcion(5)

                  sabemos que el resultado ser´ 28.
                                              a

Jorge P´rez
       e      –   Programaci´n Estructurada en JAVA
                            o                                                    1 / 20
Funciones/M´todos en JAVA
            e

                  La funci´n matem´tica funcion(x) = x 2 + 3 podr´ verse en
                          o       a                              ıa
                  JAVA como
        funcion(x)
        {
          resultado = x * x + 3
        }

                  veremos que es un poco m´s complicado....
                                             a
                  La idea ser´ poder usar la funcion en un c´digo cualquiera,
                             a                              o
                  por ejemplo:
        int x, y;

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

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

Jorge P´rez
       e      –   Programaci´n Estructurada en JAVA
                            o                                                   2 / 20
Funciones/M´todos
            e

                  Las funciones en JAVA tienen varias partes importantes en su
                  definici´n:
                         o
                        Nombre → funcion
                        Nombres de los datos de entrada → x
                        Tipos de datos de entrada → ???
                        Tipo de dato de retorno → ???
                        C´digo v´lido interno
                          o      a
                        Instrucci´n de retorno → ???
                                 o
                  En JAVA se un poco m´s como:
                                      a

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

                  adicionalmente tenemos que empezar la funci´n con
                                                             o
                  public static luego veremos qu´ significa...
                                                 e
Jorge P´rez
       e      –   Programaci´n Estructurada en JAVA
                            o                                                    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
       e          –   Programaci´n Estructurada en JAVA
                                o                         4 / 20
Temas importantes en el uso de funciones



                  M´todo principal main.
                   e
                  Par´metros y ´mbito de las variables.
                     a         a
                  Valor e instrucci´n de retorno return.
                                   o
                  Orden de ejecuci´n de las instrucciones.
                                  o
                  Distintos tipos de datos de entrada y salida.
                  Distinta cantidad de par´metros.
                                          a
        Veremos estos conceptos con otros ejemplos.




Jorge P´rez
       e      –   Programaci´n Estructurada en JAVA
                            o                                     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
       e       –   Programaci´n Estructurada en JAVA
                             o                              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
       e        –   Programaci´n Estructurada en JAVA
                              o                            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
       e       –   Programaci´n Estructurada en JAVA
                             o                                           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
       e       –   Programaci´n Estructurada en JAVA
                             o                          9 / 20
Varios par´metros
           a


        Haga una funci´n potencia que reciba dos datos enteros y retorne
                        o
        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
                                    e



Jorge P´rez
       e       –   Programaci´n Estructurada en JAVA
                             o                                             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
       e        –   Programaci´n Estructurada en JAVA
                              o                                                 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
       e      –   Programaci´n Estructurada en JAVA
                            o                                           12 / 20
Funciones/M´todos
            e



        Los m´todos nos sirven entre otras cosas para:
             e
                  No repetir lo mismo varias veces en el c´digo.
                                                          o
                  Ordenar el c´digo.
                              o
                  Comprender m´s f´cilmente el c´digo.
                              a a               o
                  Separar trabajo entre programadores.
                  Realizar trabajos m´s complejos.
                                     a
        Veremos otras formas de interacci´n entre funciones.
                                         o




Jorge P´rez
       e      –   Programaci´n Estructurada en JAVA
                            o                                      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
       e      –   Programaci´n Estructurada en JAVA
                            o                                             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
       e       –   Programaci´n Estructurada en JAVA
                             o                                            15 / 20
Arreglos como datos de entrada

                  Cuidado cuando se pasa un arreglo a un m´todo.
                                                          e
                  Como vimos un arreglo es una referencia.
                  Cuando un arreglo se entrega a un m´todo cualquier cambio
                                                      e
                  que se haga al arreglo se mantendr´ al terminar el llamado a
                                                    a
                  la funci´n.
                          o
                  Podemos usar esto para generar m´todos que implicitamente
                                                    e
                  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
       e      –   Programaci´n Estructurada en JAVA
                            o                                                    16 / 20
M´todos y Arreglos
  e

        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
       e       –   Programaci´n Estructurada en JAVA
                             o                                    17 / 20
Matrices como arreglos


                  Cuando creamos una matriz en realidad lo que estamos
                  creando es un arreglo de arreglos.
                  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.
                  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
       e      –   Programaci´n Estructurada en JAVA
                            o                                                   18 / 20
Arreglos como matrices y m´todos
                           e


        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
       e      –   Programaci´n Estructurada en JAVA
                            o                                   19 / 20
Funciones que llaman a otras funciones

                  El m´todo principal (main) puede llamar a otros m´todos y
                       e                                           e
                  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
       e      –   Programaci´n Estructurada en JAVA
                            o                                                 20 / 20

Más contenido relacionado

La actualidad más candente

I1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellI1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellJosé A. Alonso
 
Tema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellTema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellJosé A. Alonso
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datossupito01
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Bryangio2002
 
Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell José A. Alonso
 
FdP_Diapositivas_2018
FdP_Diapositivas_2018FdP_Diapositivas_2018
FdP_Diapositivas_2018ead1943
 
tutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemetutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemeHospital de Yumbo
 
Tema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellTema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellJosé A. Alonso
 
Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.José A. Alonso
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricesJohanna Marin
 
Computacion aplicada
Computacion aplicadaComputacion aplicada
Computacion aplicadaCarobrigit
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricespaulinaguec
 

La actualidad más candente (20)

I1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en HaskellI1M2011-T4: Definición de funciones en Haskell
I1M2011-T4: Definición de funciones en Haskell
 
Video 1 metodos y arreglos
Video 1 metodos y arreglosVideo 1 metodos y arreglos
Video 1 metodos y arreglos
 
Tema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellTema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en Haskell
 
2 algoritmos-1
2 algoritmos-12 algoritmos-1
2 algoritmos-1
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datos
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Introducción a dr racket
Introducción a dr racketIntroducción a dr racket
Introducción a dr racket
 
Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell
 
123507620 que-es-la-evaluacion-perezosa-docx
123507620 que-es-la-evaluacion-perezosa-docx123507620 que-es-la-evaluacion-perezosa-docx
123507620 que-es-la-evaluacion-perezosa-docx
 
Programación Funcional con Scheme
Programación Funcional con SchemeProgramación Funcional con Scheme
Programación Funcional con Scheme
 
FdP_Diapositivas_2018
FdP_Diapositivas_2018FdP_Diapositivas_2018
FdP_Diapositivas_2018
 
Modulo4
Modulo4Modulo4
Modulo4
 
4 manejo de_metodos
4 manejo de_metodos4 manejo de_metodos
4 manejo de_metodos
 
tutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemetutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drscheme
 
Tema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellTema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en Haskell
 
Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Computacion aplicada
Computacion aplicadaComputacion aplicada
Computacion aplicada
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 

Similar a Estructurada 7 (20)

11 Funciones
11 Funciones11 Funciones
11 Funciones
 
Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimiento
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
Ap7 java2
Ap7 java2Ap7 java2
Ap7 java2
 
2 f programas
2 f programas2 f programas
2 f programas
 
2 f programas
2 f programas2 f programas
2 f programas
 
Introduccion a JAVA
Introduccion a JAVAIntroduccion a JAVA
Introduccion a JAVA
 
Funciones
FuncionesFunciones
Funciones
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
De algoritmo a_c++
De algoritmo a_c++De algoritmo a_c++
De algoritmo a_c++
 
Lenguaje c sintaxis
Lenguaje c sintaxisLenguaje c sintaxis
Lenguaje c sintaxis
 
Programa 9
Programa 9Programa 9
Programa 9
 
Integral de riemann
Integral de riemannIntegral de riemann
Integral de riemann
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen java
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen java
 
Descripcion de algoritmo
Descripcion de algoritmoDescripcion de algoritmo
Descripcion de algoritmo
 
ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 

Estructurada 7

  • 1. Funciones/M´todos e Las funciones/m´todos son trozos de c´digo que encapsulan e o cierta funcionalidad especial. En general tienen datos de entrada y datos de salida (pueden no tenerlos). Son muy similares a la idea de una funci´n en matem´ticas: o a funcion(x) = x 2 + 3 Esta funci´n tiene una definici´n y puede ser evaluada con o o distintos valores, por ejemplo si hacemos funcion(5) sabemos que el resultado ser´ 28. a Jorge P´rez e – Programaci´n Estructurada en JAVA o 1 / 20
  • 2. Funciones/M´todos en JAVA e La funci´n matem´tica funcion(x) = x 2 + 3 podr´ verse en o a ıa JAVA como funcion(x) { resultado = x * x + 3 } veremos que es un poco m´s complicado.... a La idea ser´ poder usar la funcion en un c´digo cualquiera, a o por ejemplo: int x, y; x = 1 + funcion(2); y = funcion(x); System.out.println(x); System.out.println(y); Jorge P´rez e – Programaci´n Estructurada en JAVA o 2 / 20
  • 3. Funciones/M´todos e Las funciones en JAVA tienen varias partes importantes en su definici´n: o Nombre → funcion Nombres de los datos de entrada → x Tipos de datos de entrada → ??? Tipo de dato de retorno → ??? C´digo v´lido interno o a Instrucci´n de retorno → ??? o En JAVA se un poco m´s como: a int funcion(int x) { int resultado = x * x + 3; return resultado; } adicionalmente tenemos que empezar la funci´n con o public static luego veremos qu´ significa... e Jorge P´rez e – Programaci´n Estructurada en JAVA o 3 / 20
  • 4. 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 e – Programaci´n Estructurada en JAVA o 4 / 20
  • 5. Temas importantes en el uso de funciones M´todo principal main. e Par´metros y ´mbito de las variables. a a Valor e instrucci´n de retorno return. o Orden de ejecuci´n de las instrucciones. o Distintos tipos de datos de entrada y salida. Distinta cantidad de par´metros. a Veremos estos conceptos con otros ejemplos. Jorge P´rez e – Programaci´n Estructurada en JAVA o 5 / 20
  • 6. 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 e – Programaci´n Estructurada en JAVA o 6 / 20
  • 7. 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 e – Programaci´n Estructurada en JAVA o 7 / 20
  • 8. 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 e – Programaci´n Estructurada en JAVA o 8 / 20
  • 9. 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 e – Programaci´n Estructurada en JAVA o 9 / 20
  • 10. Varios par´metros a Haga una funci´n potencia que reciba dos datos enteros y retorne o 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 e Jorge P´rez e – Programaci´n Estructurada en JAVA o 10 / 20
  • 11. 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 e – Programaci´n Estructurada en JAVA o 11 / 20
  • 12. 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 e – Programaci´n Estructurada en JAVA o 12 / 20
  • 13. Funciones/M´todos e Los m´todos nos sirven entre otras cosas para: e No repetir lo mismo varias veces en el c´digo. o Ordenar el c´digo. o Comprender m´s f´cilmente el c´digo. a a o Separar trabajo entre programadores. Realizar trabajos m´s complejos. a Veremos otras formas de interacci´n entre funciones. o Jorge P´rez e – Programaci´n Estructurada en JAVA o 13 / 20
  • 14. 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 e – Programaci´n Estructurada en JAVA o 14 / 20
  • 15. 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 e – Programaci´n Estructurada en JAVA o 15 / 20
  • 16. Arreglos como datos de entrada Cuidado cuando se pasa un arreglo a un m´todo. e Como vimos un arreglo es una referencia. Cuando un arreglo se entrega a un m´todo cualquier cambio e que se haga al arreglo se mantendr´ al terminar el llamado a a la funci´n. o Podemos usar esto para generar m´todos que implicitamente e 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 e – Programaci´n Estructurada en JAVA o 16 / 20
  • 17. M´todos y Arreglos e 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 e – Programaci´n Estructurada en JAVA o 17 / 20
  • 18. Matrices como arreglos Cuando creamos una matriz en realidad lo que estamos creando es un arreglo de arreglos. 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. 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 e – Programaci´n Estructurada en JAVA o 18 / 20
  • 19. Arreglos como matrices y m´todos e 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 e – Programaci´n Estructurada en JAVA o 19 / 20
  • 20. Funciones que llaman a otras funciones El m´todo principal (main) puede llamar a otros m´todos y e e 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 e – Programaci´n Estructurada en JAVA o 20 / 20