Basic Pascal Tutorial/Chapter 4/Parameters/es

From Lazarus wiki
Revision as of 22:53, 8 January 2010 by Iskraelectrica (talk | contribs) (New page: {{Parameters}} xx 4B - Parámetros (autor: Tao Yue, estado sin cambios)    Una lista de parámetros puede incluirse como part...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

български (bg) English (en) español (es) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

4B - Parámetros (autor: Tao Yue, estado sin cambios)

   Una lista de parámetros puede incluirse como parte de la cabecera de un procedimiento. La lista de parámetros permite que los valores de la variables sean transferidos desde el programa principal al procedimiento. La nueva cabecera de procedimiento sería:

<delphi> procedure Nombre (lista_formal_parámetros);</delphi>

   La lista de parámetros puede consta de varios grupos de parámetros, separados por punto y coma (;):

<delphi> param_grupo_1; param_grupo2; ... ; param_grupoN</delphi>

   Cada grupo de parámetros tiene la forma:

<delphi> identificador_1, identificador_2, ... , identificador_N : tipo_de_datos</delphi>

   El procedimiento es ejecutado pasándole los argumentos (denominados lista de parámetros actuales) en el mismo número y tipo que la lista formal de parámetros.

<delphi> procedure Name (a, b : integer; c, d : real);

begin
  a := 10;
  b := 2;
  writeln (a, b, c, d)
end;</delphi>

   Pongamos que llamas el procedimiento anterior desde el programa principal de esta forma:

<delphi> alpha := 30;

Name (alpha, 3, 4, 5);</delphi>

   Al volver al programa principal, ¿cuál es el valor de alpha? 30. El valor de alpha fue asignado a a, a la que se le dió 10 como valor. Lo que ocurre realmente es que alpha y a son completamente distintas. El valor en el programa principal no se ve afectado por lo que ocurre en el procedimiento.

   Esto es lo que se denomina llamada-por-valor (call-by-value). Con esto se pasa el valor de la variable al procedimiento.

   Otra vía de paso de parámetros es llamada-por-referencia. Esta crea un enlace entre el parámetro formal y el parámetro actual. Al modificar el parámetro formal en el procedimiento el parámetro actual resulta a su vez modificado. La llamada-por-referencia se activa haciendo preceder el grupo de parámetros con var:

<delphi> var identifier1, identifier2, ..., identifiern : datatype;</delphi>

In this case, constants and literals are not allowed to be used as actual parameters because they might be changed in the procedure.

Here's an example which mixes call-by-value and call-by-reference:

<delphi>...

procedure Name (a, b : integer; VAR c, d : integer);
begin
  c := 3;
  a := 5
end;
begin
  alpha := 1;
  gamma := 50;
  delta := 30;
  Name (alpha, 2, gamma, delta);
end.</delphi>

Immediately after the procedure has been run, gamma has the value 3 because c was a reference parameter, but alpha still is 1 because a was a value parameter.

This is a bit confusing. Think of call-by-value as copying a variable, then giving the copy to the procedure. The procedure works on the copy and discards it when it is done. The original variable is unchanged.

Call-by-reference is giving the actual variable to the procedure. The procedure works directly on the variable and returns it to the main program.

In other words, call-by-value is one-way data transfer: main program to procedure. Call-by-reference goes both ways.

previous contents next