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
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:
1 2 3 4 5 6 7 8 9 10
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:

EJEMPLOS DE Hacer...mientras Y Repertir...Hasta.
algoritmo Area_de_una_esfera
variables
real radio
inicio
escribir( "Introduzca radio: " )
leer( radio )
/* Filtramos el radio */
mientras ( radio <= 0 )
escribir( "ERROR: El radio debe ser mayor que cero." )
escribir( "Introduzca radio: " )
leer( nadio )
fin_mientras
escribir( "El área de la esfera de radio", radio,
" es: ", 4 * 3.141592 * radio ** 2 )
fin
algoritmo Volumenes_de_cubos
variables
entero contador
real arista
inicio
escribir( "Introduzca arista: " )
leer( arista )
contador ← 0 /* Inicialización del contador */
mientras ( arista > 0 )
escribir( "El volumen de un cubo de arista ",
arista, " es: ", arista ** 3 )
contador ← contador + 1 /* Incremento */
escribir( "Introduzca arista: " )
leer( arista )
fin_mientras
escribir( "Ha calculado el volumen de ",
contador, " cubo(s)." )
fin
algoritmo Media_aritmetica_de_numeros_introducidos
variables
caracter seguir
entero acumulador, contador, numero
inicio
acumulador ← 0
contador ← 0
hacer
escribir( "Introduzca un número entero: " )
leer( numero )
acumulador ← acumulador + numero
contador ← contador + 1
escribir( "Ha introducido ", contador,
" número(s)" )
escribir( "La suma es ", acumulador )
escribir( "¿Desea introducir otro número (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
escribir( "La media aritmética es ",
acumulador / contador )
fin
algoritmo Calculo_de_sumas
variables
caracter seguir
entero acumulador, n1, n2
inicio
acumulador ← 0
hacer
escribir( "Introduzca primer número: " )
leer( n1 )
escribir( "Introduzca segundo número: " )
leer( n2 )
escribir( "La suma es ", n1 + n2 )
acumulador ← acumulador + n1 + n2
escribir( "¿Desea realizar otra suma (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
escribir( "La suma total es ", acumulador )
fin
EJERCICIOS
-Elabore un algoritmo que lea para un conjunto de 50 estudiantes, tres notas de evaluaciones con los sgtes valores: nota1 30%, nota2 35%, nota3 35%. Para cada estudiante se debe calcular la nota definitiva, cuantos estudiantes ganaron y cuantos perdieron (teniendo en cuenta que la nota para aprobar es mayor o igual que 3.0), calcular cuántos pueden habilitar(2.0<=nota<3.0), cual es el promedio de notas de los que ganaron, cual es el promedio general de notas definitivas?.
- Diseñe un algoritmo que muestre los numeros primos que existen entre 1 y 100.
Fecha limite de entrega: 17 de julio de 2009