Sunteți pe pagina 1din 18

Estructura Repetitiva while

Profesor: J. Ignacio Vzquez Herrera

Estructuras Repetitivas
Las estructuras repetitivas se utilizan cuando se quiere que un conjunto de instrucciones se ejecuten un cierto nmero finito de veces. Hay 3 tipos de estructuras repetitivas: Mientras (while). Repite el cuerpo del bucle mientras se cumpla una determinada condicin.
Repetir hasta (do while). Cumple la misma funcin que la estructura mientras. La diferencia est en que sta comprueba al final. Es por ello que la estructura repetir se ejecuta por lo menos una vez. Desde o para (for). Esta estructura ejecuta las acciones del cuerpo del bucle un nmero especificado de veces, y de modo automtico controla el nmero de pasos.

Estructura Iterativa while (mientras que )


Se ejecuta una sentencia o bloque de sentencias mientras que se cumpla una determinada condicin.
Condicin Falso

Verdadero Sentencias

Como se observa, la sentencia puede ser nula

Ejemplo con diagrama de flujo (flujograma)


Hacer un programa que reciba caracteres desde el teclado hasta que se teclee una letra A.

carac = \0

No
carac != 'A' Si carac

Ejemplo estructura while (codificacin en C)


stdio.h incluye informacin sobre la funcin getchar() Se inicializa carac a nulo Recibe un caracter desde el teclado y es asignado a la variable carac

Variantes del ejemplo anterior


carac se inicia a \0 (no se inicializa por default) para evitar que por azar tenga el valor de A Al restarse el char ingresado y la constante A en realidad se restan cdigos ASCII

Y que tal si nos ahorramos el uso de la variable carac y manejamos la entrada de getchar() directamente?

Contadores
Un contador es una variable que sirve para controlar el nmero de veces que se ejecuta un ciclo. En este ejemplo x es un contador.
x se decrementa en 1

Mientras que x sea mayor que cero se ejecuta el bloque entre llaves

Acumuladores
Un acumulador sirve para guardar el acumulado de operaciones sucesivas, sean sumas, multiplicaciones, etc. En este ejemplo suma es un acumulador.

Primero se acumula a suma el valor actual de x, para despus incrementarse este ltimo

Banderas o Centinelas
Una bandera o centinela se utiliza para terminar un ciclo cuando no se conoce con exactitud el nmero de iteraciones porque dependen del valor que adquiera(n) una o ms variables. En este ejemplo test es una bandera.

Mientras que test no sea cero se ejecuta el ciclo while

Rupturas

Mientras que test Como 1 siempre no sea cero se equivale a verdadero ejecuta el cdigo se ejecuta el ciclo de forma indefinida

Una ruptura es un punto donde, aunque no se cumple an la condicin, no es necesario continuar con el ciclo o iteracin.
En este ejemplo, cuando x es cero break interrumpe la ejecucin.

Evitar break en la medida de lo posible. Es preferible en este ejemplo la versin de la lmina anterior.

Excepciones
Una excepcin es un punto donde no se desea que se ejecute el cdigo restante, aunque s que se siga ejecutando el ciclo. En este ejemplo, continue termina la iteracin que est en proceso, para continuar con el siguiente ciclo.

De ser posible evitar tambin la clausula continue.

Sobre las clausulas break y continue


En muchos casos es factible evitar su uso, con una adecuada estructuracin. Aunque a veces son necesarias, en otras no reflejan ms que una falla en la lgica del programador.
En este caso se evita el uso de continue incrementando x de dos en dos.

Sobre las clausulas break y continue


En el ejemplo mostrado anteriormente, se puede evitar la clausula break con este cambio, que incluso hace ms clara y lgica la solucin mostrada.
x inicia en 5 y se va decrementando. Al volverse cero la expresin lgica en while() devuelve el valor de falso.

Variantes del ejemplo anterior


x-- (incremento postfijo) incrementa x despus de la expresin.

--x (incremento prefijo) incrementa x antes de la expresin.

Casi siempre hay ms de una forma de resolver un problema. Se debe preferir la que sea ms clara y entendible para la mayora de los programadores.

Estructuras while anidadas


Falso

Condicin Verdadero
Falso Condicin

Verdadero Sentencias

Como en cualquier estructura, las estructuras while pueden anidarse entre s, como se muestra en el diagrama de la izquierda.

Estructuras while anidadas


X=0; Y=0 Falso

X<5
Verdadero
Falso

Hacer un programa que imprima un tringulo de asteriscos de 5 de base por 5 de altura.


Ciclo while anidado. Se imprime asterisco y se incrementa Y Se utilizan dos contadores, uno anidado dentro del otro

Y<=X
Verdadero

*
Y=Y+1

Y=0; X=X+1

Se reinicia el contador Y Y se incrementa el contador X

Estructuras while anidadas


Hacer un programa que imprima un tringulo de asteriscos de 5 de base por 5 de altura.
Se utilizan dos contadores x, y; y anidado dentro de x

Preguntas:

S-ar putea să vă placă și