|
CarlosPes.com
> Artículos
> Programación
> Bucle Hacer...mientras versus Bucle Repetir...hasta |
|
Bucle Hacer...mientras versus
Bucle Repetir...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.
Si le ha gustado este artículo y desea incluirlo en su sitio
web, puede hacerlo sin ningún problema, siempre y cuando
cite como fuente del mismo a www.carlospes.com |
|
|
|
Acerca del
Artículo
|
|
·
Autor: Carlos
Pes |
·
Sitio Web: www.carlospes.com |
· Artículo
añadido: 9
de marzo de 2008 |
|