Sei sulla pagina 1di 9

Inicio Libros Tutoriales Eventos Foro Buscar

Libros / Algoritmos de Programacin con Python / Captulo 5. Ms sobre ciclos


/ 5.4. Cmo romper un ciclo

5.4. Cmo romper un ciclo


El ciclo con centinela es muy claro pero tiene un problema: hay dos lugares (la primera
lnea del cuerpo y la ltima lnea del ciclo) donde se ingresa el mismo dato. Si en la
etapa de mantenimiento tuviramos que realizar un cambio en el ingreso del dato
(cambio de mensaje, por ejemplo) deberamos estar atentos y hacer dos correcciones
iguales.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Sera preferible poder leer el dato x en un nico punto del programa. A continuacin,
tratamos de disear una solucin con esa restriccin.

Es claro que en ese caso la lectura tiene que estar dentro del ciclo para poder leer ms
de un nmero, pero entonces la condicin del ciclo no puede depender del valor ledo,
ni tampoco de valores calculados dentro del ciclo.

Pero un ciclo que no puede depender de valores ledos o calculados dentro de l ser de
la forma:

Repetir indefinidamente:
Hacer algo.

Y esto se traduce a Python como:

while True:
<hacer algo>

Un ciclo cuya condicin es True parece ser un ciclo infinito (o sea que nunca va a
terminar). Pero eso es gravsimo! Nuestros programas tienen que terminar!

Afortunadamente hay una instruccin de Python, break , que nos permite salir de
adentro de un ciclo (tanto sea for como while ) en medio de su ejecucin.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
En esta construccin:

while <condicion>:
<hacer algo 1>
if <condif>:
break
<hacer algo 2>

El sentido del break es el siguiente:

1. Se evala <condicin> y si es falsa se sale del ciclo.

2. Se ejecuta <hacer algo 1> .

3. Se evala <condif> y si es verdadera se sale del ciclo (con break ).

4. Se ejecuta <hacer algo 2> .

5. Se vuelve al paso 1.

Diseamos entonces:

Repetir indefinidamente:
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Pedir dato.

Si el dato ingresado es el centinela, salir del ciclo.

Operar con el dato.

Codificamos en Python la solucin al problema de los nmeros usando ese esquema:

def pcn_loop3():
while True:
x = input("Ingrese un numero ('*' para terminar): ")
if x == '*':
break
elif x > 0:
print "Numero positivo"
elif x == 0:
print "Igual a 0"
else:
print "Numero negativo"

Y la probamos:

>>> pcn_loop3()
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Ingrese un numero ('*' para terminar): 25
Numero positivo

Ingrese un numero ('*' para terminar): 0


Igual a 0

Ingrese un numero ('*' para terminar): -5


Numero negativo

Ingrese un numero ('*' para terminar): '*'


>>>

NOTA
Desde hace mucho tiempo los ciclos infinitos vienen trayndoles dolores de cabeza
a los programadores. Cuando un programa deja de responder y se queda utilizando
todo el procesador de la computadora, suele deberse a que el programa entr en un
ciclo del que no puede salir.

Estos ciclos pueden aparecer por una gran variedad de causas. A continuacin
algunos ejemplos de ciclos de los que no se puede salir, siempre o para ciertos
parmetros. Queda como ejercicio encontrar el error en cada uno.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
def menor_factor_primo(x):
""" Devuelve el menor factor primo del nmero x. """
n = 2
while n <= x:
if x % n == 0:
return n

def buscar_impar(x):
""" Divide el nmero recibido por 2 hasta que sea impar. """
while x % 2 == 0:
x = x / 2
return x

Anterior Siguiente
5.3. Ciclo con centinela 5.5. Ejercicios

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola, Maximiliano Curia, Marcos Medrano,
Nicols Paez. La copia y redistribucin de esta pgina se permite bajo los trminos de la licencia Creative
Commons Atribucin - Compartir Obras Derivadas Igual 3.0 siempre que se conserve esta nota de copyright.

INDICE DE CONTENIDOS

1. Algunos conceptos bsicos

2. Programas sencillos

3. Funciones

4. Decisiones

Captulo 5. Ms sobre ciclos

5.1. Ciclos indefinidos

5.2. Ciclo interactivo

5.3. Ciclo con centinela

5.4. Cmo romper un ciclo

5.5. Ejercicios

5.6. Resumen

5.7. Ejercicios

6. Cadenas de caracteres

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
7. Tuplas y listas

8. Algoritmos de bsqueda

9. Diccionarios

10. Contratos y Mutabilidad

11. Manejo de archivos

12. Manejo de errores y excepciones

13. Procesamiento de archivos

14. Objetos

15. Polimorfismo, Herencia y Delegacin

16. Listas enlazadas

17. Pilas y colas

18. Modelo de ejecucin de funciones y recursividad

19. Ordenar listas

20. Algunos ordenamientos recursivos

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com

Potrebbero piacerti anche