Curso/Tutorial de Pascal (Turbo Pascal)
C/C++/C# HTML Java JavaScript Linux PHP Python Swift
 Principal
 Inicio
 Libros
 Librerías
 Bibliotecas
 Mapa Web
 
 Recursos
 Artículos
 Cursos
 Ejercicios
 Guías de uso
 Mini Diccionario 
  
 Sintaxis
 ANSI C
 Ordinogramas
 Pascal
 Pseudocódigo 
  
 Contenidos > 3.2 Repetitiva repetir...hasta
En Pascal, para escribir una instrucción repetitiva repetir...hasta se utiliza la sintaxis:


   repeat
     
<bloque_de_instrucciones>
   until 
<expresión_lógica>;

 

Como se puede apreciar, la instrucción repetitiva repeat...until, también hace uso de una condición.

En un bucle repeat...until, primero se ejecuta el bloque de instrucciones y, después, se evalúa la condición. En el caso de que ésta sea falsa, se vuelve a ejecutar el bloque de instrucciones. Y así sucesivamente, hasta que, la condición sea verdadera.

Por consiguiente, cuando el flujo de un programa llega a un bucle repeat...until, existen dos posibilidades:
  1. Se ejecuta el bloque de instrucciones y, después, si la condición se evalúa a verdadera, el bloque de instrucciones no se vuelve a ejecutar, de manera que, el bucle repeat...until finaliza, habiendo realizado una sola iteración.
  2. Se ejecuta el bloque de instrucciones y, a continuación, si la condición se evalúa a falsa, el bloque de instrucciones se vuelve a ejecutar. Y así sucesivamente, hasta que la condición sea verdadera.
El <bloque_de_instrucciones> de un bucle repeat...until puede ejecutarse una o más veces (iteraciones). También hay que prevenir que el bucle no sea infinito.

En resumen, una instrucción repetitiva repeat...until permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, hasta que, una determinada condición sea verdadera.

Ejemplo 1: De modo que, utilizando un bucle repeat...until, el problema del ejemplo 1 del apartado anterior, 3.1 Repetitiva mientras, se puede resolver con el código:

program EJE13101;

uses Crt;

var Contador : Integer;

begin
   ClrScr;
   GotoXY( 4, 2 );

   Contador := 1; { Inicializacion del contador }
   repeat
      Write( Contador, ' ' );     { Salida }
      Contador := Contador + 1;   { Incremento }
   until Contador > 10;           { Condicion }
end.


Como ya se ha dicho, el bucle repeat...until puede iterar una o más veces, por tanto, cuando un bloque de instrucciones debe iterar al menos una vez, generalmente, es mejor utilizar un bucle repeat...until que un bucle while, como por ejemplo, en el siguiente problema.

Ejemplo 2: Se quiere escribir un programa que:

1º) Pida por teclado un número (dato entero).
2º) Pregunte al usuario si desea introducir otro o no.
3º) Repita los pasos 1º y 2º, mientras que, el usuario no responda 'n' de (no).
4º) Muestre por pantalla la suma de los números introducidos por el usuario.

En pantalla:



   Introduzca un numero entero: 7

   ¿Desea introducir otro (s/n)?: s


   
Introduzca un numero entero: 16

   ¿Desea introducir otro (s/n)?: s

   
Introduzca un numero entero: -3

   ¿Desea introducir otro (s/n)?: n

   La suma de los numeros introducidos es: 20

 

El código propuesto es:

program EJE13121;

uses Crt;

var
   Seguir : Char;
   Acumulador, Numero : Integer;

   { En Acumulador se va a guardar la suma de
     los numeros
introducidos por el usuario. }

begin
   ClrScr;

   Acumulador := 0;
   repeat
      WriteLn;
      Write( '   Introduzca un numero entero: ' );
      ReadLn( Numero );

      Acumulador := Acumulador + Numero;

      WriteLn;
      Write( '   Desea introducir otro numero (s/n)?: ' );
      ReadLn( Seguir );
   until Seguir = 'n';

   { Mientras que el usuario desee introducir
     mas numeros,
el bucle iterara. }

   WriteLn;
   Write( '   La suma de los numeros introducidos es: ', Acumulador );
end.
 Más información
Texto extraído del libro EMPEZAR DE CERO A PROGRAMAR EN PASCAL.
 Páginas relacionadas
Artículo 2 - Bucle Hacer...mientras versus Bucle Repetir...hasta.
 Contenidos > Apartado siguiente
3.3 Repetitiva para ( la instrucción for )