Comprensión y uso de bucles en la programación de Delphi

El bucle es un elemento común en todos los lenguajes de programación. Delphi tiene tres Estructuras de Control que ejecutan bloques de código repetidamente: para, repetir... hasta y mientras... hacer.

El bucle FOR

Supongamos que necesitamos repetir una operación un número fijo de veces.

// muestra cuadros de mensaje 1,2,3,4,5
var j: entero;
empezar
para j: = 1 a 5 hacer
empezar
ShowMessage ('Box:' + IntToStr (j));
final;
final;

El valor de una variable de control (j), que en realidad es solo un contador, determina cuántas veces se ejecuta una instrucción for. La palabra clave para establece un contador. En el ejemplo anterior, el valor inicial para el contador se establece en 1. El valor final se establece en 5.
Cuando la instrucción for comienza a ejecutarse, la variable de contador se establece en el valor inicial. Delphi que comprueba si el valor para el contador es menor que el valor final. Si el valor es mayor, no se hace nada (la ejecución del programa salta a la línea de código que sigue inmediatamente al bloque de código de bucle for). Si el valor inicial es menor que el valor final, se ejecuta el cuerpo del bucle (aquí: se muestra el cuadro de mensaje). Finalmente, Delphi agrega 1 al contador y comienza el proceso nuevamente.

instagram viewer

A veces es necesario contar hacia atrás. los Abajo a La palabra clave especifica que el valor de un contador debe reducirse en uno cada vez que se ejecuta el bucle (no es posible especificar un incremento / decremento distinto de uno). Un ejemplo de un ciclo for que cuenta hacia atrás.

var j: entero;
empezar
para j: = 5 Abajo a 1 hacer
empezar
ShowMessage ('T menos' + IntToStr (j) + 'segundos');
final;
ShowMessage ('¡Para secuencia ejecutada!');
final;

Nota: es importante que nunca cambie el valor de la variable de control en el medio del bucle. Hacerlo provocará errores.

Bucles FOR anidados

Escribir un bucle for dentro de otro bucle for (bucles de anidación) es muy útil cuando desea llenar / mostrar datos en una tabla o cuadrícula.

var k, j: entero;
empezar
// este doble ciclo se ejecuta 4x4 = 16 veces
para k: = 1 a 4 hacer
para j: = 4 Abajo a 1 hacer
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
final;

La regla para anidar los bucles for-next es simple: el bucle interno (contador j) debe completarse antes de encontrar la siguiente instrucción para el bucle externo (contador k). Podemos tener bucles anidados triple o cuádruple, o incluso más.

Nota: en general, las palabras clave de inicio y fin no son estrictamente necesarias, como puede ver. Si no se utilizan el inicio y el final, la declaración que sigue inmediatamente a la declaración for se considera el cuerpo del ciclo.

El bucle FOR-IN

Si tiene Delphi 2005 o cualquier versión más nueva, puede usar la iteración de estilo "nuevo" para elemento en colección sobre contenedores. El siguiente ejemplo demuestra iteración sobre expresiones de cadena: para cada carácter en cadena verifique si el carácter es 'a' o 'e' o 'i'.

const
s = 'Acerca de la programación de Delphi';
var
c: char;
empezar
para C en s hacer
empezar
Si C en ['a', 'e', ​​'i'] luego
empezar
// hacer algo
final;
final;
final;

Los bucles WHILE y REPEAT

A veces no sabremos exactamente cuántas veces debería circular un ciclo. ¿Qué sucede si queremos repetir una operación hasta alcanzar un objetivo específico?

La diferencia más importante entre el ciclo while-do y el ciclo de repetición-hasta es que el código del repetir declaración siempre se ejecuta al menos una vez.

El patrón general cuando escribimos un tipo de bucle de repetición (y while) en Delphi es el siguiente:

repetir
empezar
declaraciones;
final;
hasta condición = verdadero
mientras condición = verdadero hacer
empezar
declaraciones;
final;

Aquí está el código para mostrar 5 cuadros de mensaje sucesivos usando repetir hasta:

var
j: entero;
empezar
j: = 0;
repetir
empezar
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
final;
hasta j> 5;
final;

Como puede ver, la instrucción de repetición evalúa una condición al final del ciclo (por lo tanto, el ciclo de repetición se ejecuta con seguridad al menos una vez).

La declaración while, por otro lado, evalúa una condición al comienzo del ciclo. Dado que la prueba se realiza en la parte superior, generalmente tendremos que asegurarnos de que la condición tenga sentido antes de que se procese el ciclo, si esto no es cierto, la compilador puede decidir eliminar el bucle del código.

var j: entero;
empezar
j: = 0;
mientras j <5 hacer
empezar
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
final;
final;

Romper y continuar

Los procedimientos Break y Continue pueden usarse para controlar el flujo de declaraciones repetitivas: The Break El procedimiento hace que el flujo de control salga de una instrucción for, while o repetición y continúe en la siguiente declaración siguiendo el ciclo declaración. Continuar permite que el flujo de control pase a la siguiente iteración de la operación de repetición.

instagram story viewer