Ir al contenido
wannacode

Métodos

En resumen: Un método es un bloque de código con nombre que hace un solo trabajo: lo escribes una vez y lo llamas por su nombre tantas veces como necesites.

Problema

Un cambio, tres lugares

Estás escribiendo el programa de la caja de una tienda pequeña. Cada recibo empieza con el nombre de la tienda y su teléfono. Por eso has copiado esas dos líneas en todos los lugares donde se imprime un recibo.

La tienda cambia de teléfono. Lo corriges en dos lugares y se te pasa el tercero:

System.out.println("Tienda del barrio");
System.out.println("tel. 02 123 4567");
System.out.println("Pan 1,20 €");
System.out.println("Tienda del barrio");
System.out.println("tel. 02 123 4567");
System.out.println("Leche 2,10 €");
System.out.println("Tienda del barrio");
System.out.println("tel. 02 765 4321");
System.out.println("Café 3,50 €");
Salida
Tienda del barrio
tel. 02 123 4567
Pan 1,20 €
Tienda del barrio
tel. 02 123 4567
Leche 2,10 €
Tienda del barrio
tel. 02 765 4321
Café 3,50 €

El tercer cliente recibe un recibo con el número viejo. Cuantas más copias hay, más fácil es que se te pase una.

La idea

Escríbelo una vez, llámalo por su nombre

Pon la parte que se repite en un solo lugar y dale un nombre. Eso es un método: un bloque de código con nombre que hace un solo trabajo.

Escribes el método una vez. Después, donde lo necesites, escribes solo su nombre con paréntesis: printHeader();. Esto se llama llamar al método.

Si la tienda vuelve a cambiar de teléfono, corriges una línea en el método, y todos los recibos quedan bien.

Míralo

Qué pasa en una llamada

El programa avanza línea por línea. Cuando llega a una llamada, entra en el método, ejecuta su cuerpo y vuelve justo después de la llamada. Sigue la bolita: es el punto al que ha llegado el programa.

static void printHeader() {
System.out.println("Tienda del barrio");
System.out.println("tel. 02 123 4567");
}
printHeader();
System.out.println("Pan 1,20 €");
printHeader();
System.out.println("Leche 2,10 €");
Paso a paso, en palabras
  1. El programa empieza en main y llega a printHeader().
  2. Una llamada: la ejecución entra en el método.
  3. El método imprime la parte de arriba del recibo.
  4. El método ha terminado: la ejecución vuelve justo después de la llamada.
  5. main sigue: imprime el pan.
  6. Una segunda llamada: el mismo código, sin escribirlo otra vez.
  7. La parte de arriba se imprime otra vez.
  8. De vuelta en main, a la línea siguiente.

La segunda vez no escribes otra vez la parte de arriba. Llamas al mismo método, y este imprime las mismas dos líneas.

La idea

Cómo se escribe un método

Aquí está el programa entero, para que veas dónde va el método:

Main.java
public class Main {
static void printHeader() {
System.out.println("Tienda del barrio");
System.out.println("tel. 02 123 4567");
}
public static void main(String[] args) {
printHeader();
System.out.println("Pan 1,20 €");
}
}
Salida
Tienda del barrio
tel. 02 123 4567
Pan 1,20 €
staticsiempre, por ahoravoidno devuelve resultadoprintHeadernombre()no recibe nada
  • El nombre dice qué hace el método. Por eso es un verbo: printHeader, printFooter.
  • void significa que el método solo hace algo (aquí imprime) y no devuelve ningún resultado. Los métodos que devuelven un resultado llegan en la próxima lección.
  • Los paréntesis vacíos significan que el método no recibe nada de fuera. También los llenaremos en la próxima lección.
  • El cuerpo está entre { y }.
  • El método va en la clase, junto a main, no dentro de main.

Por ahora escribimos static delante de cada método. Qué significa lo veremos en el módulo «Clases y objetos», junto con el envoltorio public class Main.

En Java, los nombres de los métodos empiezan con minúscula, y cada palabra siguiente empieza con mayúscula: printHeader, printFooter.

Pruébalo

¿En qué orden?

¿Qué imprimirá el programa?

static void printThanks() {
System.out.println("¡Gracias!");
}
System.out.println("Pedido n.º 1024");
printThanks();
System.out.println("Pedido n.º 1025");
printThanks();
Respuesta

Pruébalo

¿Qué falta?

Este método imprime la parte de abajo del recibo. ¿Qué va en el hueco?

static  printFooter() {
    System.out.println("Esperamos verte pronto de nuevo.");
}

Pruébalo

Encuentra el error

El programa no compila. ¿En qué línea está el error?

Elige la línea con el error.

Ejercicio

El recibo y el triángulo

Resuelve estas tareas en tu editor. Cada una tiene una salida de ejemplo para comparar con la tuya.

1. Recibo. Escribe tres métodos:

  • printLine() imprime una línea de 20 guiones con un bucle;
  • printHeader() imprime el nombre de la tienda, el teléfono y la línea;
  • printFooter() imprime la línea y «¡Gracias!».

En main, imprime dos recibos: la parte de arriba, una línea con una compra y la parte de abajo.

Salida de ejemplo
Tienda del barrio
tel. 02 123 4567
--------------------
Pan 1,20 €
--------------------
¡Gracias!
Tienda del barrio
tel. 02 123 4567
--------------------
Leche 2,10 €
--------------------
¡Gracias!

2. Triángulo. Escribe un método printTriangle() que, con bucles anidados, imprima un triángulo de asteriscos de 4 filas de alto:

Salida de ejemplo
*
***
*****
*******

En la próxima lección la altura será un parámetro: un solo método para un triángulo de la altura que quieras.

Test

Ponte a prueba

1. ¿Cuándo se ejecuta el código del cuerpo de un método?
2. ¿Qué significa void delante del nombre del método?
3. Un método se llama en tres lugares. ¿Cuántas veces está escrito su código?
4. ¿Dónde se escribe el método?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·