Búsqueda personalizada
Curso de Diseño de Algoritmos
 Principal
 Inicio
 Libros
 Librerías
 Mapa Web
 
 Recursos
 Artículos
 Cursos
 Ejercicios
 Guías de uso
 Mini Diccionario 
  
 Sintaxis
 ANSI C
 Ordinogramas
 Pascal
 Pseudocódigo 
  
 Acerca de
 Carlos Pes
 Mi Blog 
  
 Sitios Amigos
 Casas Rurales
 Directorio Web

 
[más enlaces] 
  
 Contenidos > 10.2 Repetitiva hacer...mientras en pseudocódigo
En pseudocódigo, para escribir una instrucción repetitiva hacer...mientras se utiliza la sintaxis:


   hacer
      <bloque_de_instrucciones>
   mientras ( <expresión_lógica> )
 

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

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

Por consiguiente, cuando el flujo de un algoritmo llega a un bucle hacer...mientras, existen dos posibilidades:
  1. Se ejecuta el bloque de instrucciones y, después, si la condición se evalúa a falsa, el bloque de instrucciones no se vuelve a ejecutar, de manera que, el bucle hacer...mientras 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 verdadera, el bloque de instrucciones se vuelve a ejecutar. Y así sucesivamente, hasta que la condición sea falsa.
El <bloque_de_instrucciones> de un bucle hacer...mientras 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 hacer...mientras permite ejecutar repetidamente (una o más veces) un bloque de instrucciones, mientras que, una determinada condición sea verdadera.

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

 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

La traza del algoritmo es:

 
Secuencia:
 
Acción (instrucción):
Valor de:
contador
1 contador  1 1
Inicio de la iteración 1.
2 escribir( contador ) 1
3 contador  contador + 1 2
Fin de la iteración 1.
4 (Comprobar si contador <= 10) 2
La condición es verdadera.
Inicio de la iteración 2.
5 escribir( contador ) 2
6 contador  contador + 1 3
Fin de la iteración 2.
...
n-3 (Comprobar si contador <= 10) 10
La condición es verdadera.
Inicio de la iteración 10.
n-2 escribir( contador ) 10
n-1 contador  contador + 1 11
Fin de la iteración 10.
n (Comprobar si contador <= 10) 11
La condición es falsa.
El bucle finaliza después de 10 iteraciones.

Figura. Traza del ejemplo 1.

Explicación de la traza:
  • En primer lugar, se le asigna el valor 1 a contador (acción 1).
  • A continuación, se ejecuta el bloque de instrucciones del bucle hacer... mientras, mostrándose por pantalla el valor de contador (acción 2) y, después, se incrementa en 1 el valor de la variable contador (acción 3).
  • Una vez ejecutado el bloque de instrucciones, se evalúa la condición de salida del bucle ( contador <= 10 ) (acción 4) y, puesto que, es verdadera, se ejecuta, de nuevo, el bloque de instrucciones.
  • Y así sucesivamente, mientras que, la condición sea verdadera, o dicho de otro modo, hasta que, la condición sea falsa.
  • En este algoritmo, el bloque de instrucciones del bucle se ejecuta diez veces (iteraciones).
Al igual que ocurre con la instrucción repetitiva mientras, cualquier pequeño descuido o error al escribir el código del algoritmo, puede dar lugar a que la instrucción repetitiva hacer...mientras no funcione correctamente.

Como ya se ha dicho, el bucle hacer...mientras 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 hacer...mientras que un bucle mientras, como por ejemplo, en el siguiente problema.

Ejemplo 2: Se quiere diseñar el algoritmo de 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:

Ejemplo: instrucción repetitiva hacer...mientras

Solución:

 algoritmo Suma_de_numeros_introducidos_por_el_usuario

 variables
    caracter seguir
      entero acumulador, numero

 inicio
  /* En acumulador se va a guardar la suma
     de los números introducidos por el usuario. */

   acumulador 
0
   hacer
   escribir( "Introduzca un número entero: " )
   leer( numero )
   acumulador 
acumulador + numero
   escribir( "¿Desea introducir otro número (s/n)?: " )
   leer( seguir )
  mientras ( seguir <> 'n' )
  /* Mientras que el usuario desee introducir
     más números, el bucle iterará. */

  escribir( "La suma de los números introducidos es: ",
              acumulador )
 fin
 
 Más información
Texto extraído de los apartados:

   13.2.2 Repetitiva hacer...mientras

   13.2.2.2 Variable contador

   13.2.2.3 Diferencias entre un bucle mientras y un bucle hacer...mientras

del libro 
EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C, (páginas 417-426).
 Contenidos > Apartado siguiente
10.2.1 Variable acumulador
Búsqueda personalizada
Cursos de Carlos Pes: Ejercicios de Carlos Pes: Libros de Carlos Pes: Enlaces Recomendados:
Curso Diseño de Algoritmos
Curso Informática Básica
Curso Ingeniería del Software
Curso Lenguaje C
Curso Turbo Pascal
Curso Representación Datos
Ejercicios de Algoritmos
Ejercicios de Lenguaje C
Ejercicios de Ordinogramas
Ejercicios de Pascal
Empezar de cero a programar en lenguaje C
Domine la programación en lenguaje C
Empezar de cero a programar en Pascal
Tutoriales y Cursos
Gane dinero con su web
Comprar dominio
Programación Informática
Inicio | Libros | Librerías | Mapa Web | Artículos | Cursos | Ejercicios | Guías | MiniDiccionario | Enlaces | Carlos Pes | Mi Blog
© Carlos Javier Pes Rivas, 2006-2008
Política de privacidad - Contactar