Capítulo 6. Bucles.
Los bucles son un conjunto de instrucciones que se repiten una serie determinada de veces hasta que la condición deje de cumplirse. Son extremadamente útiles e imprescindibles en la programación.
En delphi tenemos 3 tipos de bucles:
Bucles For.
En este tipo de bucles necesitaremos una variable que actuará como contador, generalmente será de tipo integer aunque también podría ser de tipo char.
El bucle for vendría a significar algo como "desde 0 hasta 10 hacemos esto...". En cada instancia del bucle, el valor de Contador se incrementa en 1. Como ocurre con los condicionales, si dentro del bucle no ponemos begin y end;, el bucle sólo ejecuta una línea de código.
Para hacer un bucle for descendente, hay que utilizar downto y cambiar el valor de inicio y el valor final del bucle.
Conseguiríamos algo como esto:
Bucles While
Los bucles while se basan en una condición al principio del bucle que se llama a cada nueva instancia del bucle. Veamos un ejemplo:
El significado del bucle while sería "mientras i sea menor o igual que 10 hacemos esto...". En este bucle, si utilizamos un contador de tipo entero, tenemos que incrementar su valor en cada instancia del bucle, si no tendríamos un bucle infinito. El procedimiento Inc incrementa en 1 el valor de la variable que se le pase como parámetro, el procedimiento contrario es Dec.
Bucles Repeat...Until.
Se traduce como repetir..hasta. Funciona de la misma manera que el bucle while, pero la condición se realiza al final del bucle.
Veamos como funciona con un ejemplo:
La traducción sería: "repetir hasta que i sea mayor que 10". En el bucle repeat..until no se emplea begin y end; para escribir varias líneas, de hecho, no hace falta.
La utilidad de los bucles while y repeat..until es que se puede utilizar como condición cualquier variable o condición. Por ejemplo:
En este ejemplo, utilizamos como condición de salida una variable de tipo string. La ejecución del bucle no termina hasta que ingresemos por el teclado la palabra "salir".
Interrumpir un bucle
Para trabajar con bucles tenemos 2 métodos bastante útiles: el método Break y el método Continue. El método break interrumpe un bucle y sale de él.
En este ejemplo, se tendría que escribir en la consola 11 veces el mensaje "I vale: x". Pero dentro del bucle puse una condición de que si I vale 7, salga del bucle.
Continue sirve para saltarnos una instancia del bucle, pero no sale de él. Ejemplo:
Si ejecutamos el programa, podemos observar que no escribe en la consola "I vale: 5" porque esa instancia se la salta.
Los bucles son un conjunto de instrucciones que se repiten una serie determinada de veces hasta que la condición deje de cumplirse. Son extremadamente útiles e imprescindibles en la programación.
En delphi tenemos 3 tipos de bucles:
- Bucles For. Repiten una acción un número determinado de veces, pueden ser bucles ascendentes o descendentes.
- Bucles While (mientras). Repiten una serie de instrucciones hasta que la condición se cumpla.
- Bucles Repeat..Until. Es parecido al bucle while pero la condición se realiza al final de cada instancia del bucle.
Bucles For.
En este tipo de bucles necesitaremos una variable que actuará como contador, generalmente será de tipo integer aunque también podría ser de tipo char.
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Contador: integer;
begin
for Contador := 0 to 10 do
Writeln('El contador vale: ', Contador);
Readln;
end.
El bucle for vendría a significar algo como "desde 0 hasta 10 hacemos esto...". En cada instancia del bucle, el valor de Contador se incrementa en 1. Como ocurre con los condicionales, si dentro del bucle no ponemos begin y end;, el bucle sólo ejecuta una línea de código.
Para hacer un bucle for descendente, hay que utilizar downto y cambiar el valor de inicio y el valor final del bucle.
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Contador: integer;
begin
for Contador := 10 downto 1 do
begin
Writeln('El contador vale: ', Contador);
Writeln('Restamos 1..');
end;
Readln;
end.
Conseguiríamos algo como esto:
Bucles While
Los bucles while se basan en una condición al principio del bucle que se llama a cada nueva instancia del bucle. Veamos un ejemplo:
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: integer = 1; //Las variables se pueden inicializar de esta forma...
begin
while i <= 10 do
begin
Writeln('Esta es la instancia numero: ', i);
Inc(i);
end;
Readln;
end.
El significado del bucle while sería "mientras i sea menor o igual que 10 hacemos esto...". En este bucle, si utilizamos un contador de tipo entero, tenemos que incrementar su valor en cada instancia del bucle, si no tendríamos un bucle infinito. El procedimiento Inc incrementa en 1 el valor de la variable que se le pase como parámetro, el procedimiento contrario es Dec.
Bucles Repeat...Until.
Se traduce como repetir..hasta. Funciona de la misma manera que el bucle while, pero la condición se realiza al final del bucle.
Veamos como funciona con un ejemplo:
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: integer = 1; //Las variables se pueden inicializar de esta forma...
begin
repeat
Writeln('Esta es la instancia numero: ', i);
Inc(i);
until I > 10;
Readln;
end.
La traducción sería: "repetir hasta que i sea mayor que 10". En el bucle repeat..until no se emplea begin y end; para escribir varias líneas, de hecho, no hace falta.
La utilidad de los bucles while y repeat..until es que se puede utilizar como condición cualquier variable o condición. Por ejemplo:
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Salida: string;
begin
repeat
Write('Introduce "salir": ');
Readln(Salida);
until Salida = 'salir';
Readln;
end.
En este ejemplo, utilizamos como condición de salida una variable de tipo string. La ejecución del bucle no termina hasta que ingresemos por el teclado la palabra "salir".
Interrumpir un bucle
Para trabajar con bucles tenemos 2 métodos bastante útiles: el método Break y el método Continue. El método break interrumpe un bucle y sale de él.
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: integer;
begin
for i := 0 to 10 do
begin
Writeln('I vale: ', i);
if I = 7 then
break;
end;
Readln;
end.
En este ejemplo, se tendría que escribir en la consola 11 veces el mensaje "I vale: x". Pero dentro del bucle puse una condición de que si I vale 7, salga del bucle.
Continue sirve para saltarnos una instancia del bucle, pero no sale de él. Ejemplo:
Código (delphi) [Seleccionar]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: integer;
begin
for i := 0 to 10 do
begin
if I = 5 then
Continue; //No ejecuta el Writeln
Writeln('I vale: ', i);
end;
Readln;
end.
Si ejecutamos el programa, podemos observar que no escribe en la consola "I vale: 5" porque esa instancia se la salta.