Diferencia entre revisiones de «Argumento (informática)»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Línea 12: Línea 12:


===Paso por valor resultado===
===Paso por valor resultado===
Ere una maquina. Asun dice que esto es literalmente una solemne tonteria


Este tipo puede ser simulado en cualquier lenguaje que permita el paso de valores por referencia de la siguiente forma:
Este tipo puede ser simulado en cualquier lenguaje que permita el paso de valores por referencia de la siguiente forma:

Revisión del 10:38 27 abr 2015

En ciencias de la computación, un argumento o parámetro es una variable utilizada para recibir valores de entrada en una rutina o subrutina. Dichos valores, que serán enviados desde la rutina invocante, son llamados argumentos. La subrutina usa los valores asignados a sus parámetros para alterar su comportamiento en tiempo de ejecución. La mayor parte de los lenguajes de programación pueden definir subrutinas que aceptan cero o más argumentos.

Paso de argumentos

Diagrama del funcionamiento de una subrutina.

Existen cinco formas de pasar un argumento a una función (subrutina) o procedimiento: por valor, por referencia, por resultado, por valor-resultado y por nombre.

Paso por valor

El paso de parámetros por valor consiste en copiar el contenido de la variable que queremos pasar en otra dentro del ámbito local de la subrutina, consiste pues en copiar el contenido de la memoria del argumento que se quiere pasar a otra dirección de memoria, correspondiente al argumento dentro del ámbito de dicha subrutina. Se tendrán dos valores duplicados e independientes, con lo que la modificación de uno no afecta al otro.

Paso por referencia

El paso de parámetros por referencia consiste en proporcionar a la subrutina a la que se le quiere pasar el argumento la dirección de memoria del dato. En este caso se tiene un único valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y la subrutina a la que se le pasa el argumento, por lo que cualquier acción sobre el parámetro se realiza sobre la misma posición de memoria.

Paso por valor resultado

Este tipo puede ser simulado en cualquier lenguaje que permita el paso de valores por referencia de la siguiente forma:

void EjemploValorRes(int a1, int a2, int a3) {
    int aux1 = a1, aux2 = a2, aux3 = a3;
    // código trabajando con aux1, aux2 y aux3
    a1 = aux1; a2 = aux2; a3 = aux3; // Dependiendo del compilador la copia se realiza en un sentido o en el otro
}

Tal y como indica el ejemplo de simulación de valor-resultado, el orden de copia depende del compilador, lo que implica que la misma función pueda dar resultados diferentes según el compilador usado.

Ejemplo de diferencias entre los distintos pasos de parámetros

Aquí se exponen unos ejemplos que demuestran las diferencias de estos tipos:

void función(int a, int b) {
    ++a;
    b += 2;
}
int a = 0;
función(a, a);
  • Argumentos pasados por valor: a = 0
  • Argumentos pasados por referencia: a = 3
  • Argumentos pasados por valor-resultado:
    • Si el compilador copia los resultados de derecha a izquierda: a = 1
    • Si el compilador copia los resultados de izquierda a derecha: a = 2

Véase también