Cuatro tipos de bucles: for / while / repeat / for-in
Primero revisa los ejemplos siguientes. Modifica el archivo de código de la lección anterior, mydemo.dpr, y cambia su extensión a pas para obtener mydemo.pas. Esta es la extensión estándar de archivos fuente Pascal. Descarga luego un editor de código compatible con resaltado de sintaxis como Notepad++, esto hará que tu código sea mucho más legible.
A continuación tienes un ejemplo completo con comentarios en cada línea. Después del código, analizaremos cada instrucción paso a paso.
// 2.8 Sentencias de bucle: for, while, repeat, for..in
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
// Directivas del compilador FPC: habilitar modo orientado a objetos, cadenas largas, desactivar recuento automático de referencias de cadena
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
// Plataforma Windows: definir el programa como aplicación de consola (sin ventana gráfica)
{$R+} // Activar comprobación de límites, muy útil para depurar errores de índice de array
var
MyArray: array [0..9] of Integer; // Array de enteros con 10 elementos, índices 0 a 9
I: Integer; // Variable contador del bucle
begin
// 1. Bucle for ascendente: inicializar el array almacenando los cuadrados de 0 a 9
for I := 0 to 9 do
MyArray[I] := I * I;
// 2. Bucle for básico para recorrer índices e imprimir cuadrados
for I := 0 to 9 do
WriteLn('El cuadrado es ', MyArray[I]);
// 3. Low/High obtienen los límites del array automáticamente, sin escribir 0 y 9 fijos, mayor escalabilidad
for I := Low(MyArray) to High(MyArray) do
WriteLn('El cuadrado es ', MyArray[I]);
// 4. Bucle while: comprobar condición primero, ejecutar cuerpo solo si se cumple
I := 0;
while I < 10 do
begin
WriteLn('El cuadrado es ', MyArray[I]);
I := I + 1; // Tres formas equivalentes: I+=1 / Inc(I)
end;
// 5. Bucle repeat-until: ejecutar el cuerpo una vez primero, comprobar condición de salida al final
I := 0;
repeat
WriteLn('El cuadrado es ', MyArray[I]);
Inc(I); // Incrementar contador
until I = 10;
// 6. Recorrido for-in: extraer directamente valores de elementos sin manipular índices
for I in MyArray do
WriteLn('El cuadrado es ', I);
end.Lenguaje del código: PHP (php)
A continuación el código sin ningún comentario
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
{$R+}
var
MyArray: array [0..9] of Integer;
I: Integer;
begin
for I := 0 to 9 do
MyArray[I] := I * I;
for I := 0 to 9 do
WriteLn('El cuadrado es ', MyArray[I]);
for I := Low(MyArray) to High(MyArray) do
WriteLn('El cuadrado es ', MyArray[I]);
I := 0;
while I < 10 do
begin
WriteLn('El cuadrado es ', MyArray[I]);
I := I + 1;
end;
I := 0;
repeat
WriteLn('El cuadrado es ', MyArray[I]);
Inc(I);
until I = 10;
for I in MyArray do
WriteLn('El cuadrado es ', I);
end.Lenguaje del código: PHP (php)
A continuación analizaremos el código de cada bucle paso a paso
Previous: Arrays de enumeração e conjuntos
Next: Salida y registros