La diferencia principal, entre ambos bucles, es que:
«un bucle do…while permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, mientras que, una determinada condición sea verdadera»
y, por otra parte,
«un bucle repeat…until permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, hasta que, una determinada condición sea verdadera.»
Obsérvese que, en los ordinogramas del Curso de Diseño de Algoritmos, se utiliza la sintaxis de una instrucción repetitiva hacer…mientras:
Figura. Instrucción repetitiva «hacer…mientras». |
|
La sintaxis utilizada se corresponde con la empleada en el pseudocódigo CEE (C En Español): |
|
hacer
<bloque_de_instrucciones>
mientras ( <expresión_lógica> ) |
|
|
De forma que, cuando se evalúe la <expesión_lógica> del bucle, SI ésta es verdadera, el <bloque_de_instrucciones> se vuelve a ejecutar. Y así sucesivamente, hasta que la condición sea falsa o, mientras que, NO sea verdadera.
En consecuencia, para un bucle repetir…hasta podríamos utilizar la siguiente sintaxis en ordinogramas:
Figura. Instrucción repetitiva «repetir…hasta». |
|
Fíjese que, donde poníamos SI, ahora escribimos NO, y al revés.
Ejemplo: Se quiere diseñar el algoritmo de un programa que muestre por pantalla los primeros diez números naturales: |
|
|
|
Utilizando un bucle hacer…mientras, la solución en Pseudocódigo CEE puede ser: |
|
algoritmo Numeros_del_1_al_10
variables
entero contador
inicio
contador ← 1 /* Inicialización del contador */
hacer
escribir( contador ) /* Salida */
contador ← contador + 1 /* Incremento */
mientras ( contador <= 10 ) /* Condición */
fin |
|
|
De manera gráfica, se puede representar como se muestra a continuación:
Su codificación en lenguaje C sería: |
|
#include <stdio.h>
int main()
{
int contador;
printf( «\n » );
contador = 1; /* Inicialización del contador */
do
{
printf( «%d «, contador ); /* Salida */
contador++; /* Incremento */
} while ( contador <= 10 ); /* Condición */
return 0;
} |
|
|
No obstante, en Pascal, utilizando un bucle repeat…until, escribiríamos el siguiente código fuente: |
|
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. |
|
|
Obsérvese que, la condición de salida del bucle en Pascal
Contador > 10
es la contraria a la que hemos empleado en lenguaje C
contador <= 10
Y así deberemos hacer siempre que queramos «convertir» un programa escrito en lenguaje C a Pascal, o al revés. |
|
|
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.
¿Te gustaría aprender a Programar?
|