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.1.3 Errores en un bucle mientras

Errores en un bucle mientras

En este apartado vamos a ver varios ejemplos de posibles errores que se pueden cometer al escribir un bucle mientras, tomando como referencia el ejemplo del apartado anterior, 10.1.2 Cambios en un bucle mientras.

Ejemplo 1: Un pequeño descuido, como por ejemplo, no escribir de forma correcta la condición del bucle, puede producir un bucle infinito:

 algoritmo Numeros_del_10_al_1

 variables
    entero contador

 inicio
    contador 
10                /* Cambio 1 */
    mientras ( contador <= 10 )  /* Descuido */
       escribir( contador )
       contador 
contador - 1   /* Cambio 3 */
    fin_mientras
 fin

Por pantalla se mostrará:

Ejemplo: bucle infinito

Ejemplo 2: Otro error muy frecuente es inicializar mal la variable que participa en la condición del bucle:

 algoritmo Numeros_del_10_al_1

 variables
    entero contador

 inicio
    contador 
1                 /* Descuido */
    mientras ( contador >= 1 )   /* Cambio 2 */
       escribir( contador )
       contador 
contador - 1   /* Cambio 3 */
    fin_mientras
 fin

Por pantalla sólo se mostrará el número 1:

Ejemplo: error en bucle mientras

Ejemplo 3: También es un error muy típico olvidarse de escribir alguna instrucción, como por ejemplo, la instrucción de asignación

   contador  contador - 1

del bloque de instrucciones del bucle:

 algoritmo Numeros_del_10_al_1

 variables
    entero contador

 inicio
    contador 
10                /* Cambio 1 */
    mientras ( contador >= 1 )   /* Cambio 2 */
       escribir( contador )
                               
   /* Descuido */
    fin_mientras
 fin

De nuevo, por pantalla, se obtiene la salida de un bucle infinito:

Ejemplo: bucle infinito

Ejemplo 4: Como ya se ha dicho, un bucle mientras puede iterar cero o más veces. Así, por ejemplo, en el algoritmo siguiente existe un error lógico que provoca que el bucle no itere ninguna vez.

 algoritmo Numeros_del_10_al_1

 variables
    entero contador

 inicio
    contador 
 0                 /* Descuido */
    mientras ( contador >= 1 )   /* Cambio 2 */
       escribir( contador )
       contador 
contador - 1   /* Cambio 3 */
    fin_mientras
 fin

Por pantalla no se mostrará nada:

Ejemplo: error en bucle mientras

En este caso, se ha producido un error lógico, ya que, para que el bucle iterase diez veces, se debería haber asignado a la variable contador el valor 10, en vez del 0.

No obstante, bajo determinadas circunstancias, sí puede tener sentido hacer uso de un bucle mientras, el cual pueda no iterar ninguna vez. Véase, por ejemplo, el problema del apartado siguiente, 10.1.4 Uso de un bucle mientras que puede no iterar.

Ejercicios Recomendados:
 Más información
Texto extraído de los apartados:

   13.2 INSTRUCCIONES REPETITIVAS

   13.2.1 Repetitiva mientras

   13.2.1.1 Variable contador

del libro 
EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C, (páginas 402-416).
 Contenidos > Apartado siguiente
10.1.4 Uso de un bucle mientras que puede no iterar
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