Saltearse al contenido

Intrucciones (Interadores)

Una de las instrucciones repetitivas más utilizadas es la instrucción for. Si usa la instrucción for, ya debería saber cuántas veces va a repetir la implementación de instrucciones.

En el siguiente ejemplo, la instrucción for se utiliza para realizar un bucle de cinco veces. La variable intCount cuenta el número de veces que se ha realizado el bucle.

var
intCount: Integer;
total: Integer;
begin
for intCount := 1 to 5 do
total := total + 3;
end;

Con la instrucción for, cuenta hacia arriba, lo que significa que la instrucción for aumentará el valor de la variable. También puede disminuir utilizando la instrucción for downto, que realiza la cuenta hacia abajo.

var
intCount: Integer;
totalSales: Integer;
numberSales: Integer;
sales: array[5] of Integer;
begin
GetSales(sales);
for intCount := 5 downto 1 do begin
totalSales := totalSales + sales[intCount];
numberSales := numberSales + 1;
end;
end;

La instrucción foreach solo se puede usar en colecciones de tipo Enumerable (Lista de y Diccionario de), y no se puede usar con matrices.

var
stringList: List of [Text[20]];
stringItem: Text[20];
begin
foreach stringItem in stringList do
Message(stringItem);
end;

La instrucción while comprueba primero si la condición es verdadera antes de iniciar el bucle. En caso de que esta condición siga siendo verdadera, seguirá ejecutando las instrucciones en el bloque de while.

var
index: Integer;
totalSales: Integer;
sales: array[5] of Integer;
begin
GetSales(sales);
while totalSales < 8 do begin
index := index + 1;
totalSales := totalSales + sales[index];
end;
end;

La instrucción while comprueba primero si existe una condición válida antes de iniciar el bucle, mientras que la instrucción repeat until se ejecuta primero y después comprueba una condición. Se repetirá en bucle hasta que la condición sea válida, lo que significa que las instrucciones repeat until se ejecutan al menos una vez. El bucle continuará, siempre que la condición no sea válida.

var
index: Integer;
totalSales: Integer;
sales: array[5] of Integer;
begin
GetSales(sales);
repeat
index := index + 1;
totalSales := totalSales + sales[index];
until totalSales >= 8;
end;

La instrucción with se usa a veces en combinación con una instrucción repetitiva, pero también se puede usar de forma independiente. El propósito de la instrucción with es reducir el uso de las variables del registro. Esta estructura se ilustra en el siguiente ejemplo, donde se crea una variable myTable y se asigna un valor a todos los campos de la tabla.

var
myTable: Record MyTable;
begin
myTable."No." := 1;
myTable.Amount := 100;
myTable.Credits := 10;
myTable."Document Type" := myTable."Document Type"::Invoice;
myTable.Reason := myTable.Reason::Return;
myTable.Refund := 100;
end;