Parámetro (programación informática)


De Wikipedia, la enciclopedia libre
  (Redirigido desde Parámetros (informática) )
Saltar a navegación Saltar a búsqueda

En programación de computadoras , un parámetro o un argumento formal es un tipo especial de variable que se usa en una subrutina para referirse a uno de los datos proporcionados como entrada a la subrutina. [a] Estos datos son los valores [1] [2] [3] de los argumentos (a menudo llamados argumentos reales o parámetros reales ) con los que se llamará / invocará la subrutina. Por lo general, se incluye una lista ordenada de parámetros en la definición de una subrutina., de modo que, cada vez que se llama a la subrutina, se evalúan sus argumentos para esa llamada, y los valores resultantes se pueden asignar a los parámetros correspondientes.

A diferencia del argumento en el uso matemático habitual, el argumento en informática es la expresión de entrada real que se pasa / proporciona a una función, procedimiento o rutina en la declaración de invocación / llamada, mientras que el parámetro es la variable dentro de la implementación de la subrutina. Por ejemplo, si uno define la addsubrutina como def add(x, y): return x + y, entonces x, yson parámetros, mientras que si se llama como add(2, 3), entonces 2, 3son los argumentos. Tenga en cuenta que las variables (y sus expresiones) del contexto de llamada pueden ser argumentos: si se llama a la subrutina como a = 2; b = 3; add(a, b), las variables a, b son los argumentos, no los valores 2, 3 . Ver los parámetros y argumentos sección para obtener más información.

En el caso más común, llamada por valor , un parámetro actúa dentro de la subrutina como una nueva variable local inicializada al valor del argumento (una copia local (aislada) del argumento si el argumento es una variable), pero en otros casos Por ejemplo, llamada por referencia , la variable de argumento proporcionada por el llamador puede verse afectada por acciones dentro de la subrutina llamada (como se describe en la estrategia de evaluación ).

La semántica de cómo se pueden declarar los parámetros y cómo se pasan los (valor de) argumentos a los parámetros de las subrutinas está definida por el lenguaje, pero los detalles de cómo se representa esto en cualquier sistema informático particular dependen de las convenciones de llamada de ese sistema. .

Ejemplo

El siguiente programa en el lenguaje de programación C define una función que se llama "SalesTax" y tiene un parámetro llamado "precio". El tipo de precio es "doble" (es decir, un número de coma flotante de doble precisión ). El tipo de retorno de la función también es doble.

Double  SalesTax ( precio doble  ) { return 0.05 * precio ; }    

Una vez definida la función, se puede invocar de la siguiente manera:

SalesTax ( 10,00 );

En este ejemplo, la función se ha invocado con el argumento 10.00. Cuando esto suceda, se asignará 10,00 al precio y la función comenzará a calcular su resultado. Los pasos para producir el resultado se especifican a continuación, encerrados en {}. 0.05 * priceindica que lo primero que hay que hacer es multiplicar 0,05 por el valor del precio, lo que da 0,50. returnsignifica que la función producirá el resultado de 0.05 * price. Por lo tanto, el resultado final (ignorando los posibles errores de redondeo que uno encuentra al representar fracciones decimales como fracciones binarias) es 0.50.

Parámetros y argumentos

Los términos parámetro y argumento pueden tener diferentes significados en diferentes lenguajes de programación. A veces se usan indistintamente y el contexto se usa para distinguir el significado. El término parámetro (a veces llamado parámetro formal ) se usa a menudo para referirse a la variable que se encuentra en la definición de la función, mientras que argumento (a veces llamado parámetro real ) se refiere a la entrada real proporcionada en la llamada a la función. Por ejemplo, si uno define una función como def f(x): ..., entonces xes el parámetro, y si es llamado por, a = ...; f(a)entonces aes el argumento. Un parámetro es una variable (no vinculada), mientras que el argumento puede ser literalo expresión variable o más compleja que involucra literales y variables. En el caso de la llamada por valor, lo que se pasa a la función es el valor del argumento - por ejemplo, f(2)y a = 2; f(a)son llamadas equivalentes - mientras que en la llamada por referencia, con una variable como argumento, lo que se pasa es una referencia a esa variable - aunque la sintaxis de la llamada a la función podría permanecer igual. [4] La especificación de paso por referencia o paso por valor se haría en la declaración y / o definición de la función.

Los parámetros aparecen en las definiciones de los procedimientos; los argumentos aparecen en las llamadas a procedimientos. En la definición de función, f(x) = x*xla variable x es un parámetro; en la llamada a la función, f(2)el valor 2 es el argumento de la función. En términos generales, un parámetro es un tipo y un argumento es una instancia.

Un parámetro es una propiedad intrínseca del procedimiento, incluida en su definición. Por ejemplo, en muchos lenguajes, un procedimiento para sumar dos enteros proporcionados y calcular la suma necesitaría dos parámetros, uno para cada entero. En general, un procedimiento puede definirse con cualquier número de parámetros o sin ningún parámetro. Si un procedimiento tiene parámetros, la parte de su definición que especifica los parámetros se denomina lista de parámetros .

Por el contrario, los argumentos son las expresiones [5] suministradas al procedimiento cuando se llama, normalmente una expresión que coincide con uno de los parámetros. A diferencia de los parámetros, que forman una parte invariable de la definición del procedimiento, los argumentos pueden variar de una llamada a otra. Cada vez que se llama a un procedimiento, la parte de la llamada al procedimiento que especifica los argumentos se denomina lista de argumentos .

Aunque los parámetros también se conocen comúnmente como argumentos, los argumentos a veces se consideran los valores reales o referencias asignadas a las variables de parámetro cuando se llama a la subrutina en tiempo de ejecución . Cuando se habla de código que llama a una subrutina, los valores o referencias que se pasan a la subrutina son los argumentos, y el lugar en el código donde se dan estos valores o referencias es la lista de parámetros . Al discutir el código dentro de la definición de subrutina, las variables en la lista de parámetros de la subrutina son los parámetros, mientras que los valores de los parámetros en tiempo de ejecución son los argumentos. Por ejemplo, en C, cuando se trata de subprocesos, es común pasar un argumento de tipo void * y convertirlo en un tipo esperado:

void  ThreadFunction ( void *  pThreadArgument ) {  // Nombrar el primer parámetro 'pThreadArgument' es correcto, en lugar de  // 'pThreadParameter'. En tiempo de ejecución, el valor que usamos es un argumento. Como  // se mencionó anteriormente, reserve el parámetro de término para cuando se discuta  // las definiciones de subrutina. }

Para comprender mejor la diferencia, considere la siguiente función escrita en C :

int  Sum ( int  addend1 ,  int  addend2 ) {  return  addend1  +  addend2 ; }

La función Suma tiene dos parámetros, denominados sumando1 y sumando2 . Agrega los valores pasados ​​a los parámetros y devuelve el resultado al llamador de la subrutina (utilizando una técnica proporcionada automáticamente por el compilador de C).

El código que llama a la función Sum podría verse así:

int  valor1  =  40 ; int  value2  =  2 ; int  suma_valor  =  Suma ( valor1 ,  valor2 );

Las variables valor1 y valor2 se inicializan con valores. value1 y value2 son ambos argumentos para la función de suma en este contexto.

En tiempo de ejecución, los valores asignados a estas variables se pasan a la función Sum como argumentos. En la función Suma , se evalúan los parámetros sumando1 y sumando2 , dando los argumentos 40 y 2, respectivamente. Los valores de los argumentos se agregan y el resultado se devuelve al llamador, donde se asigna a la variable sum_value .

Debido a la diferencia entre parámetros y argumentos, es posible proporcionar argumentos inapropiados a un procedimiento. La llamada puede proporcionar demasiados o muy pocos argumentos; uno o más de los argumentos pueden ser de un tipo incorrecto; o los argumentos se pueden proporcionar en el orden incorrecto. Cualquiera de estas situaciones provoca una falta de coincidencia entre las listas de parámetros y argumentos, y el procedimiento a menudo devolverá una respuesta no deseada o generará un error en tiempo de ejecución .

Convención alternativa en Eiffel

Dentro del método y lenguaje de desarrollo de software de Eiffel , los términos argumento y parámetro tienen usos distintos establecidos por convención. El término argumento se usa exclusivamente en referencia a las entradas de una rutina, [6] y el término parámetro se usa exclusivamente en la parametrización de tipos para clases genéricas . [7]

Considere la siguiente definición de rutina:

 sum  ( sumando1 :  INTEGER ;  sumando2 :  INTEGER ):  INTEGER  do  Resultado  : =  sumando1  +  sumando2  fin

La rutina sumtoma dos argumentos addend1y addend2, que se denominan argumentos formales de la rutina . Una llamada a sumespecifica los argumentos reales , como se muestra a continuación con value1y value2.

 suma_valor :  INTEGER  valor1 :  INTEGER  =  40  valor2 :  INTEGER  =  2   suma_valor  : =  suma  ( valor1 ,  valor2 )

Los parámetros también se consideran formales o reales . Los parámetros genéricos formales se utilizan en la definición de clases genéricas. En el siguiente ejemplo, la clase HASH_TABLE se declara como una clase genérica que tiene dos parámetros genéricos formales, que Grepresentan datos de interés y Krepresentan la clave hash para los datos:

clase  HASH_TABLE  [ G ,  K  ->  HASHABLE ]  

Cuando una clase se convierte en cliente de HASH_TABLE, los parámetros genéricos formales se sustituyen por parámetros genéricos reales en una derivación genérica . En la siguiente declaración de atributos, my_dictionaryse utilizará como un diccionario basado en cadenas de caracteres . Como tal, tanto los datos como los parámetros genéricos formales clave se sustituyen por parámetros genéricos de tipo reales STRING.

 my_dictionary :  HASH_TABLE  [ STRING ,  STRING ]

Tipos de datos

En lenguajes de programación fuertemente tipados , el tipo de cada parámetro debe especificarse en la declaración del procedimiento. Los lenguajes que utilizan la inferencia de tipos intentan descubrir los tipos automáticamente a partir del cuerpo y el uso de la función. Los lenguajes de programación tipados dinámicamente difieren la resolución de tipos hasta el tiempo de ejecución. Los lenguajes débilmente tipados tienen poca o ninguna resolución de tipo, confiando en cambio en el programador para la corrección.

Algunos lenguajes usan una palabra clave especial (por ejemplo, void ) para indicar que la subrutina no tiene parámetros; en la teoría formal de tipos , tales funciones toman una lista de parámetros vacía (cuyo tipo no es vacío , sino unidad ).

Paso de argumentos

El mecanismo exacto para asignar argumentos a los parámetros, llamado paso de argumentos , depende de la estrategia de evaluación utilizada para ese parámetro (normalmente llamada por valor ), que puede especificarse mediante palabras clave.

Argumentos predeterminados

Algunos lenguajes de programación como Ada , C ++ , Clojure , [ cita requerida ] Common Lisp , [8] Fortran 90 , [9] Python , Ruby , Tcl y Windows PowerShell [ cita requerida ] permiten un argumento predeterminadopara darse explícita o implícitamente en la declaración de una subrutina. Esto permite a la persona que llama omitir ese argumento al llamar a la subrutina. Si el argumento predeterminado se proporciona explícitamente, ese valor se utiliza si no lo proporciona el llamador. Si el argumento predeterminado es implícito (a veces mediante el uso de una palabra clave como Opcional ), entonces el lenguaje proporciona un valor bien conocido (como nulo , Vacío , cero, una cadena vacía, etc.) si la persona que llama no proporciona un valor. .

Ejemplo de PowerShell:

función  doc ( $ g  =  1 . 21 )  {  "$ g gigavatios? $ g gigavatios? Great Scott!" }
PS> doc 1,21 gigavatios? 1,21 gigavatios? ¡Gran Scott!PS> doc  88 88 gigavatios? 88 gigavatios? ¡Gran Scott!

Los argumentos predeterminados pueden verse como un caso especial de la lista de argumentos de longitud variable.

Listas de parámetros de longitud variable

Algunos lenguajes permiten definir subrutinas para aceptar un número variable de argumentos . Para tales lenguajes, las subrutinas deben recorrer la lista de argumentos.

Ejemplo de PowerShell:

función  marty  {  $ args  |  foreach  {  "volver al año $ _"  } }
PS> marty  1985 de regreso al año 1985PS> marty  2015  1985  1955 al año 2015 al año 1985 al año 1955

Parámetros nombrados

Algunos lenguajes de programación, como Ada y Windows PowerShell, permiten que las subrutinas tengan parámetros con nombre . Esto permite que el código de llamada sea más autodocumentado . También proporciona más flexibilidad a la persona que llama, ya que a menudo permite cambiar el orden de los argumentos o que se omitan los argumentos según sea necesario.

Ejemplo de PowerShell:

function  jennifer ( $ adjectiveYoung ,  $ adjectiveOld )  {  "Joven Jennifer: ¡Soy $ adjectiveYoung!"  "Vieja Jennifer: ¡Soy $ adjectiveOld!" }
PD> jennifer  'fresca'  'experimentada' Joven Jennifer: ¡Estoy fresca! Vieja Jennifer: ¡Tengo experiencia!PD> jennifer  -adjectiveOld  'experimentada'  -adjectiveYoung  'fresh' Young Jennifer: I'm fresh! Vieja Jennifer: ¡Tengo experiencia!

Múltiples parámetros en lenguajes funcionales

En el cálculo lambda , cada función tiene exactamente un parámetro. Lo que se considera funciones con múltiples parámetros generalmente se representa en el cálculo lambda como una función que toma el primer argumento y devuelve una función que toma el resto de los argumentos; esta es una transformación conocida como curry . Algunos lenguajes de programación, como ML y Haskell , siguen este esquema. En estos lenguajes, cada función tiene exactamente un parámetro, y lo que puede parecer la definición de una función de múltiples parámetros, es en realidad azúcar sintáctico para la definición de una función que devuelve una función, etc. La aplicación de la función es asociativa por la izquierda en estos lenguajes, así como en el cálculo lambda, lo que parece una aplicación de una función a múltiples argumentos se evalúa correctamente como la función aplicada al primer argumento, luego la función resultante aplicada al segundo argumento, etc.

Parámetros de salida

Un parámetro de salida , también conocido como parámetro de salida o parámetro de retorno , es un parámetro que se utiliza para la salida, en lugar del uso más habitual para la entrada. Usar parámetros de llamada por referencia , o parámetros de llamada por valor donde el valor es una referencia, ya que los parámetros de salida son un modismo en algunos lenguajes, notablemente C y C ++, [b] mientras que otros lenguajes tienen soporte incorporado para parámetros de salida. Los lenguajes con soporte incorporado para parámetros de salida incluyen Ada [10] (ver subprogramas Ada ), Fortran (desde Fortran 90 ; ver Fortran "intent" ), varias extensiones de procedimiento paraSQL , como PL / SQL (ver funciones PL / SQL ) [11] y Transact-SQL , C # [12] y .NET Framework , [13] Swift , [14] y el lenguaje de programación TScript (ver declaraciones de funciones TScript ).

Más precisamente, se pueden distinguir tres tipos de parámetros o modos de parámetros :los parámetros de entrada s,parámetros de salida,yparámetros de entrada / salida s;éstos a menudo se denominanin,outyin outoinout. Un argumento de entrada (el argumento de un parámetro de entrada) debe ser un valor, como una variable inicializada o literal, y no debe redefinirse ni asignarse; un argumento de salida debe ser una variable asignable, pero no es necesario inicializarlo, ningún valor existente es accesible y debe asignársele un valor; y un argumento de entrada / salida debe ser una variable asignable inicializada y, opcionalmente, se le puede asignar un valor. Los requisitos exactos y la aplicación varían entre los idiomas; por ejemplo, enAda 83,los parámetros de salida solo se pueden asignar, no leer, incluso después de la asignación (esto se eliminó enAda 95para eliminar la necesidad de una variable de acumulador auxiliar). Estos son análogos a la noción de un valor en una expresión que es un valor r (tiene un valor), un valor l (se puede asignar) o un valor r / valor l (tiene un valor y se puede asignar ), respectivamente, aunque estos términos tienen significados especializados en C.

En algunos casos, solo se distingue la entrada y la entrada / salida, y la salida se considera un uso específico de la entrada / salida y, en otros casos, solo se admiten la entrada y la salida (pero no la entrada / salida). El modo predeterminado varía entre los idiomas: en Fortran 90, la entrada / salida es predeterminada, mientras que en las extensiones C # y SQL, la entrada es predeterminada, y en TScript cada parámetro se especifica explícitamente como entrada o salida.

Sintácticamente, el modo de parámetro generalmente se indica con una palabra clave en la declaración de función, como void f(out int x)en C #. Convencionalmente, los parámetros de salida a menudo se colocan al final de la lista de parámetros para distinguirlos claramente, aunque esto no siempre se sigue. TScript usa un enfoque diferente, donde en la declaración de función se enumeran los parámetros de entrada, luego los parámetros de salida, separados por dos puntos (:) y no hay un tipo de retorno para la función en sí, como en esta función, que calcula el tamaño de un texto fragmento:

TextExtent ( wstring  texto ,  fuente  font  :  Entero  anchura ,  Entero  altura )

Los modos de parámetro son una forma de semántica denotacional , que indica la intención del programador y permite a los compiladores detectar errores y aplicar optimizaciones; no necesariamente implican semántica operativa (cómo ocurre realmente el paso de parámetros). En particular, si bien los parámetros de entrada se pueden implementar por llamada por valor, y los parámetros de salida y entrada / salida por llamada por referencia, y esta es una forma sencilla de implementar estos modos en lenguajes sin soporte incorporado, no siempre es así. implementado. Esta distinción se analiza en detalle en Ada '83 Rationale, que enfatiza que el modo de parámetro se abstrae del mecanismo de paso de parámetros (por referencia o por copia) que se implementa realmente. [10]Por ejemplo, mientras que en C # los parámetros de entrada (por defecto, sin palabra clave) se pasan por valor, y los parámetros de salida y entrada / salida ( outy ref) se pasan por referencia, en PL / SQL los parámetros de entrada ( IN) se pasan por referencia, y la salida y Los parámetros de entrada / salida ( OUTy IN OUT) se pasan por defecto por valor y el resultado se copia, pero se pueden pasar por referencia utilizando la NOCOPYsugerencia del compilador. [15]

Una construcción sintácticamente similar a los parámetros de salida es asignar el valor de retorno a una variable con el mismo nombre que la función. Esto se encuentra en Pascal y Fortran 66 y Fortran 77 , como en este ejemplo de Pascal:

función  f ( x ,  y :  entero ) :  entero ; comenzar  f  : =  x  +  y ; terminar ;

Esto es semánticamente diferente en el sentido de que cuando se llama, la función simplemente se evalúa; no se le pasa una variable del alcance de la llamada para almacenar la salida.

Utilizar

El uso principal de los parámetros de salida es devolver múltiples valores de una función, mientras que el uso de los parámetros de entrada / salida es para modificar el estado mediante el paso de parámetros (en lugar de mediante un entorno compartido, como en las variables globales). Un uso importante de devolver varios valores es resolver el problema de semipredicado de devolver tanto un valor como un estado de error; consulte Problema de semipredicado: retorno de varios valores .

Por ejemplo, para devolver dos variables de una función en C, se puede escribir:

int  ancho int  alto ;F ( x ,  y anchura ,  y la altura );

donde xes un parámetro de entrada y widthy heightson parámetros de salida.

Un caso de uso común en C y lenguajes relacionados es el manejo de excepciones , donde una función coloca el valor de retorno en una variable de salida y devuelve un booleano correspondiente a si la función tuvo éxito o no. Un ejemplo arquetípico es el TryParsemétodo en .NET, especialmente C #, que analiza una cadena en un número entero, devolviendo trueel éxito y falseel fracaso. Tiene la siguiente firma: [16]

pública  estática  bool  TryParse ( string  s ,  fuera  int  resultado )

y se puede utilizar de la siguiente manera:

 resultado int ; if  (! Int32 . TryParse ( s ,  result ))  {  // manejo de excepciones }

Se aplican consideraciones similares para devolver un valor de uno de varios tipos posibles, donde el valor de retorno puede especificar el tipo y luego el valor se almacena en una de varias variables de salida.

Inconvenientes

Los parámetros de salida a menudo se desaconsejan en la programación moderna, esencialmente por ser incómodos, confusos y de nivel demasiado bajo; los valores de retorno comunes son considerablemente más fáciles de entender y trabajar. [17] Notablemente, los parámetros de salida involucran funciones con efectos secundarios (modificando el parámetro de salida) y son semánticamente similares a las referencias, que son más confusas que las funciones y valores puros, y la distinción entre parámetros de salida y parámetros de entrada / salida puede ser sutil. Además, dado que en los estilos de programación comunes la mayoría de los parámetros son simplemente parámetros de entrada, los parámetros de salida y los parámetros de entrada / salida son inusuales y, por lo tanto, susceptibles de malentendidos.

Los parámetros de salida y entrada / salida impiden la composición de funciones , ya que la salida se almacena en variables, en lugar de en el valor de una expresión. Por tanto, uno debe declarar inicialmente una variable, y luego cada paso de una cadena de funciones debe ser una declaración separada. Por ejemplo, en C ++ la siguiente composición de funciones:

Objeto  obj  =  G ( y ,  F ( x ));

cuando se escribe con parámetros de salida y de entrada / salida se convierte en (porque Fes un parámetro de salida, para Gun parámetro de entrada / salida):

Object  obj ; F ( x ,  & obj ); G ( y ,  & obj );

En el caso especial de una función con una única salida o parámetro de entrada / salida y sin valor de retorno, la composición de la función es posible si la salida o el parámetro de entrada / salida (o en C / C ++, su dirección) también es devuelto por la función, en cuyo caso lo anterior se convierte en:

Object  obj ; G ( y ,  F ( x ,  & obj ));

Alternativas

Hay varias alternativas a los casos de uso de los parámetros de salida.

Para devolver varios valores de una función, una alternativa es devolver una tupla . Sintácticamente, esto es más claro si se pueden utilizar el desempaquetado automático de secuencias y la asignación paralela , como en Go o Python, como:

def  f ():  return  1 ,  2 a ,  b  =  f ()

Para devolver un valor de uno de varios tipos, se puede utilizar una unión etiquetada en su lugar; los casos más comunes son los tipos que aceptan valores NULL ( tipos de opciones ), donde el valor de retorno puede ser nulo para indicar un error. Para el manejo de excepciones, se puede devolver un tipo que acepta valores NULL o generar una excepción. Por ejemplo, en Python uno podría tener:

resultado  =  análisis ( s ) si el  resultado  es  Ninguno :  # manejo de excepciones

o, más idiomáticamente:

try :  result  =  parse ( s ) excepto  ParseError :  # manejo de excepciones

La microoptimización de no requerir una variable local y copiar el retorno cuando se usan variables de salida también se puede aplicar a funciones convencionales y valores de retorno mediante compiladores suficientemente sofisticados.

La alternativa habitual a los parámetros de salida en C y lenguajes relacionados es devolver una única estructura de datos que contenga todos los valores de retorno. [12] Por ejemplo, dada una estructura que encapsula el ancho y el alto, se puede escribir:

WidthHeight  width_and_height  =  F ( x );

En los lenguajes orientados a objetos, en lugar de usar parámetros de entrada / salida, a menudo se puede usar la llamada compartiendo , pasando una referencia a un objeto y luego mutando el objeto, aunque sin cambiar a qué objeto se refiere la variable. [17]

Ver también

  • Argumento de la línea de comandos
  • Estrategia de evaluación
  • Sobrecarga del operador
  • Variables libres y variables ligadas

Notas

  1. ^ En este artículo, el término "subrutina" se refiere a cualquier construcción similar a una subrutina, que tiene diferentes nombres y significados ligeramente diferentes según el lenguaje de programación que se esté discutiendo.
  2. ^ C y C ++ son llamadas por valor, pero si el tipo es una referencia (un puntero de C / C ++ o una referencia de C ++), entonces la configuración del valor de la referencia se puede usar para producir un comportamiento de estilo de llamada por referencia.

Referencias

  1. ^ Prata, Stephen (2004). C primer plus (5ª ed.). Sams. pag. 276–277. ISBN 978-0-672-32696-7.
  2. ^ "Borrador de trabajo, estándar para lenguaje de programación C ++" (PDF) . www.open-std.org . Consultado el 1 de enero de 2018 . [ enlace muerto permanente ]
  3. ^ Gordon, Aaron. "Subprogramas y paso de parámetros" . rowdysites.msudenver.edu/~gordona . Archivado desde el original el 1 de enero de 2018 . Consultado el 1 de enero de 2018 .
  4. ^ Dollard, Kathleen. "Pasar argumentos por valor y por referencia (Visual Basic)" . docs.microsoft.com . Consultado el 27 de octubre de 2018 .
  5. ^ "El tutorial de programación de GNU C" . crasseux.com . Consultado el 27 de octubre de 2018 .
  6. ^ Meyer, Bertrand. Construcción de software orientado a objetos , 2da edición, Prentice Hall, 1997, p 444.
  7. ^ Meyer, pág. 96.
  8. ^ "Funciones" . gigamonkeys.com . Consultado el 2 de junio de 2021 .
  9. ^ "argumentos opcionales" . www.netlib.org . Consultado el 2 de junio de 2021 .
  10. ^ a b 8.2 Modos de parámetros , " Justificación del diseño del lenguaje de programación Ada® "
  11. ^ 8. Subprogramas PL / SQL: especificar modos de parámetro de subprograma
  12. ^ a b Peter Hallam. "¿Por qué C # tiene tanto 'ref' como 'out'?" . Archivado desde el original el 26 de septiembre de 2011.
  13. ^ Enumeración de ParameterDirection
  14. ^ Funciones: el lenguaje de programación Swift (Swift 4.2)
  15. ^ 8. Subprogramas PL / SQL: pasar grandes estructuras de datos con la sugerencia del compilador NOCOPY
  16. ^ Método Int32.TryParse (String, Int32)
  17. ^ a b CA1021: Evite los parámetros de salida
Obtenido de " https://en.wikipedia.org/w/index.php?title=Parameter_(computer_programming)&oldid=1028668904 "