Bucle Hacer...mientras
versus Bucle Repertir...hasta.
Mientras que, por ejemplo, en lenguaje C, se puede hacer uso de una
instrucción
repetitiva hacer...mientras,
utilizándose la sintaxis:
do
{
<bloque_de_instrucciones>
} while ( <expresión_lógica> );
|
En
Pascal, se puede emplear un bucle repetir...hasta.
La sintaxis es:
repeat
<bloque_de_instrucciones>
until <expresión_lógica>;
|
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.
Para
cualquier sugerencia, comentario o error, puede escribir
a:
correo[arroba]carlospes[punto]com
También
puedes visitar mi Blog.
|