Parámetros y argumentos entre métodos.
Bienvenidos a otra entrada más sobre la serie de Programación Modular. (Haz click aquí para leer la entrada anterior de la serie). En esta ocasión describiré el uso de parámetros y argumentos.
¿Para qué sirven?
Uno de los principales componentes de la programación modular son los parámetros y/o argumentos, pues constituyen una forma de intercambiar información con un método. Son parte de las herramientas de los métodos para lograr una comunicación entre ellos.

Figura 1. Comunicación entre métodos
¿Qué son los parámetros y los argumentos?
Aunque parecería que las palabras parámetro y argumentos son sinónimos, en realidad no lo son.
- Un parámetro es una variable que se utiliza para recibir un valor que se envía desde otro módulo.
- Un argumento es el valor que se envía desde el módulo que hace el llamado.
El parámetro aparece en la definición del método, en tanto que el argumento en el llamado al método. En una forma más simple generalmente un parámetro es una variable y un argumento un valor. Sin embargo, un argumento también puede ser una variable local.
Observa la figura 2. En ella te muestro el método de tipo boolean primo, que recibe un parámetro int, llamado n. También se muestra el método main, llamando a primo. Si observas, en la línea del llamado, el argumento es numero. Recuerda, además, que un parámetro debe ser declarado en el encabezado del método, indicando su tipo de dato. En cambio, un argumento no requiere esa declaración.

Figura 2. Diferencia entre parámetro y argumento.
Formas de pasar parámetros.
Los lenguajes de programación de alto nivel pueden pasar argumentos por valor o por referencia.
Paso por valor.
El paso de argumentos por valor consiste en copiar el contenido del argumento en el parámetro. De esta forma, el valor enviado estará en el parámetro, en tanto que el argumento conserva el valor original. Por ejemplo, considera nuevamente la figura 2. Supongamos que:
numero = 7
Cuando se realiza la llamada al método primo, se copia el valor de numero (7) en la variable que recibe el argumento, en este caso n. De esta forma se puede decir que:
numero = 7,
n = numero,
y por lo tanto: n = 7
Dentro del método primo, se podría modificar el valor de n si así se desea o requiere. Pero al salir del método, n se destruye, de tal forma que numero seguirá valiendo 7 (el valor original).
Este método es una forma de “prestar” una copia de un dato sin que el dato pueda ser alterado. Es como si a alguien le prestaras una copia de un documento, sabiendo que el original lo conservas tú. Este procedimiento se muestra gráficamente en la figura 3.

Figura 3. Paso de argumentos por valor
Paso por referencia.
En este caso no se pasa el contenido del argumento, sino la dirección de la casilla de memoria de la variable que se envía como argumento. Al pasar un argumento como referencia, se le está dando “permiso” al método con quien se comparte de modificar la variable argumento. En este caso, al terminar la ejecución del método, si se modifica el parámetro, esta modificación permanecerá dado que se realizó directamente en la casilla de memoria del argumento.
El paso de argumentos por referencia se ilustra en la figura 4.

Figura 4. Lo que sucede en memoria cuando se pasa argumentos por referencia
En el caso del lenguaje Java, los argumentos de los tipos de datos primitivos sólo se pueden pasar por valor. Por lo que el ejemplo mostrado en la figura 4 corresponde a un fragmento de código escrito en lenguaje C.
Lista de parámetros.
Es necesario mencionar que un método no sólo puede recibir un parámetro, sino un conjunto de ellos, a los que le llamamos una lista de parámetros. Cada uno de estos pueden ser del mismo tipo de datos o diferentes. Pero sí es muy importante que el orden en que se envíen corresponda con el orden en el que se reciben. Como ejemplo, observa la figura 5, en la que se han declarado varios métodos con listas de parámetros de diferentes tamaños.

Figura 5. Ejemplos de métodos con listas de parámetros
Ahora observa la figura 6, en donde te muestro el llamado de estos métodos desde main. En esta figura puedes apreciar que en la definición de los métodos obtenerValor y calcular se establece que se recibirá más de un parámetro, los cuales también son de diversos tipos.
En obtenerValor se reciben dos enteros y dos caracteres. Y en main, en el llamado a éste método, se envían los enteros n1 y n2 primero, y después los caracteres carac1 y carac2. El orden en que se envían y reciben estos datos es importante, pues si no se respeta puede ocasionar error de sintaxis.
El método calcular recibe un int, un double y un boolean. Y puedes ver como main los envía en ese orden: sólo que en lugar de enviar una variable int, envía un valor de ese tipo (10), y en lugar de enviar una variable boolena, envía un valor de este tipo (true). Esto también sucede con el método primo, al que le envía el valor int 12.

Figura 6. Ejemplo de llamadas a los métodos enviando listas de argumentos
De esta forma podemos concluir que se pueden enviar tanto variables como valores en la lista de argumentos. En cambio, la lista de parámetros siempre estará compuesta por variables que incluyen su tipo de dato.
En conclusión…
El paso de argumentos es un tema que puede ser escabroso para los nóveles programadores, pero es de suma importancia entender cómo se envían y se usan estos valores entre main y los métodos creados por el usuario. Aún si nuestro objetivo es programar con el paradigma de Orientado a Objeto, el paso de argumentos/parámetros es un elemento escencial del lenguaje de programación Java. Una forma muy sencilla de entender que les sucede a los argumentos y a los parámetros en tiempo de ejecución es el uso del depurador que trae incluido el IDE Netbeans (y seguramente una gran mayoría de IDEs). Al usar esta herramienta podrás rastrear paso a paso el funcionamiento de argumentos y/o parámetros.
Me despido esperando que esta entrada te haya sido de ayuda, y si así fue, te recuerdo que no olvides compartirla en tus perfiles de redes sociales. ¡Hasta la próxima!
Excelente, muchas gracias
Para sevirte 🙏🏻
Excelente aporte realmente no pude encontrar en otro lugar mejor explicación y que se pudiera entender claramente los conceptos muchas gracias por sus aportes a la comunidad de autodidactas.
Muchas gracias por tus comentarios, pues me motivan a seguir publicando
excelente explicación facil de comprender muchas gracias
Mariana Sánchez González, leido