Introducción a la Programación 2do semestre de 2021
Introducción a la Programación
Práctica 3 Ciclos
Versión del 2 de agosto de 2021
1. Ciclos
Las computadoras son de gran utilidad para la automatización de tareas repetitivas. Repetir
tareas idénticas o similares sin cometer errores es algo que las computadoras hacen muy bien y
las personas no.
Cada repetición se llama iteración, y Python provee algunas herramientas del lenguaje que
simpli
can la escritura de programas iterativos.
Las dos herramientas que vamos a ver son las sentencias while(mientras) y for(para).
1.1. La sentencia while (mientras)
Usando una sentencia while, podemos escribir un programa que haga una cuenta regresiva:
n = int(input("Ingrese un valor para la cuenta regresiva"))
while n > 0:
print(n)
n = n-1
print("½Despegue!")
Una sentencia while se puede leer casi como si estuviese en castellano1 . Lo que signi
ca, Mientras
n es mayor que cero, continuar imprimiendo el valor de n y reduciendo el valor de n en 1. Cuando
llegue a cero, imprimir la palabra `½Despegue!' . Aquí hay un detalle muy importante = signi
ca
asignar y muchas veces se confunde con el = de matemática, n = n − 1 en matemática sería
absurdo pero en programación signi
ca que al valor que tiene actualmente n se le reste uno y se
asigne a n de esta manera en la próxima iteración n vale 1 menos.
Más formalmente, el
ujo de ejecución para una sentencia while es el siguiente:
1. Evaluar la condición entre paréntesis produciendo True o False.
2. Si la condición es falsa, salir de la sentencia while y continuar la ejecución en la siguiente
sentencia.
3. Si la condición es verdadera, ejecutar cada una de las sentencias que están tabuladas a
continuación.
A este tipo de
ujos se los llama ciclos porque el tercer paso arma un ciclo al volver al paso
1. Notá que si la condición es falsa la primera vez, las sentencias dentro del ciclo no se ejecutan
nunca. Las sentencias dentro del ciclo son usualmente llamadas el cuerpo del ciclo.
El cuerpo del ciclo debe cambiar el valor de una o más variables para que, eventualmente,
la condición se haga falsa y el ciclo termine. . Si no, el ciclo se repetirá por siempre, lo cual es
conocido como un ciclo in
nito. A esta variable se la llama Variable de Control
En el caso de nuestra cuenta regresiva, podemos probar que el ciclo terminará ya que sabemos
que el valor de n es
nito, y podemos ver que el valor de n toma valores cada vez más pequeños
cada vez que pasa por el ciclo (en cada iteración), con lo cual eventualmente llegaremos a cero.
En otros casos no es tan sencillo de ver:
1
N.d.T.: la palabra while signi
ca mientras en castellano.
Página 1 de 11
, Introducción a la Programación 2do semestre de 2021
n = int(input("Ingrese un numero mayor a cero"))
while n != 1:
print n,
if n % 2 == 0: # n es par
n = n / 2
else: # n es impar
n = n * 3 + 1
La condición de este ciclo es n != 1, así que el ciclo continuará hasta que n sea 1, lo que hará
falsa la condición.
En cada iteración, el programa imprime el valor de n y luego veri
ca si es par o impar. Si es
par, el valor de n se divide por dos. Si es impar, el valor se reemplaza por 3n + 1. Por ejemplo,
si el valor inicial es 3, la secuencia resultante es 3, 10, 5, 16, 8, 4, 2, 1.
Como n a veces aumenta y a veces disminuye, no hay una demostración obvia de que n
alcance alguna vez 1, o de que el programa vaya a terminar. Para algunos valores particulares de
n, podemos probar que termina. Por ejemplo, si el valor inicial es una potencia de dos, entonces
el valor de n será par cada vez que pase por el ciclo hasta llegar a valer 1. El ejemplo anterior
termina con una secuencia que empieza en 16.
Dejando de lado los valores particulares, la pregunta interesante es si podemos demostrar que
este programa termina para todo valor de n. Hasta ahora, nadie fue capaz de demostrarlo ½o de
refutarlo!
1.2. La función range()
Esta función de Python nos da un rango de valores y es ideal para iterar con la sentencia for
que veremos a continuación.
Se puede utilizar con diferente cantidad de parámetros, en su versión completa, toma 3
parámetros, los cuales deben ser siempre enteros, y tiene la siguiente estructura:
range(INICIO, FIN, PASO)
representa un rango entre INICIO hasta FIN (sin incluirlo), con saltos de tamaño PASO.
Si se omite el parámetro PASO, su valor por defecto es 1. Si se omiten los parámetros INICIO
y PASO, range asume que INICIO es 0 y PASO es 1.
Por ejemplo:
range(0, 10, 1)
representa el rango que incluye a los valores: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.
range(4, 12, 2)
representa el rango que incluye a los valores: 4, 6, 8 y 10.
range(5)
representa el rango que incluye a los valores: 0, 1, 2, 3 y 4.
range(-2, 2)
representa el rango que incluye a los valores: -2, -1, 0 y 1.
En caso de que usemos un PASO negativo, el rango será decreciente, es decir, de mayor a
menor.
Ejemplo:
range(10, 1, -1)
representa el rango que incluye a los valores: 10, 9, 8, 7, 6, 5, 4, 3 y 2.
Página 2 de 11
Introducción a la Programación
Práctica 3 Ciclos
Versión del 2 de agosto de 2021
1. Ciclos
Las computadoras son de gran utilidad para la automatización de tareas repetitivas. Repetir
tareas idénticas o similares sin cometer errores es algo que las computadoras hacen muy bien y
las personas no.
Cada repetición se llama iteración, y Python provee algunas herramientas del lenguaje que
simpli
can la escritura de programas iterativos.
Las dos herramientas que vamos a ver son las sentencias while(mientras) y for(para).
1.1. La sentencia while (mientras)
Usando una sentencia while, podemos escribir un programa que haga una cuenta regresiva:
n = int(input("Ingrese un valor para la cuenta regresiva"))
while n > 0:
print(n)
n = n-1
print("½Despegue!")
Una sentencia while se puede leer casi como si estuviese en castellano1 . Lo que signi
ca, Mientras
n es mayor que cero, continuar imprimiendo el valor de n y reduciendo el valor de n en 1. Cuando
llegue a cero, imprimir la palabra `½Despegue!' . Aquí hay un detalle muy importante = signi
ca
asignar y muchas veces se confunde con el = de matemática, n = n − 1 en matemática sería
absurdo pero en programación signi
ca que al valor que tiene actualmente n se le reste uno y se
asigne a n de esta manera en la próxima iteración n vale 1 menos.
Más formalmente, el
ujo de ejecución para una sentencia while es el siguiente:
1. Evaluar la condición entre paréntesis produciendo True o False.
2. Si la condición es falsa, salir de la sentencia while y continuar la ejecución en la siguiente
sentencia.
3. Si la condición es verdadera, ejecutar cada una de las sentencias que están tabuladas a
continuación.
A este tipo de
ujos se los llama ciclos porque el tercer paso arma un ciclo al volver al paso
1. Notá que si la condición es falsa la primera vez, las sentencias dentro del ciclo no se ejecutan
nunca. Las sentencias dentro del ciclo son usualmente llamadas el cuerpo del ciclo.
El cuerpo del ciclo debe cambiar el valor de una o más variables para que, eventualmente,
la condición se haga falsa y el ciclo termine. . Si no, el ciclo se repetirá por siempre, lo cual es
conocido como un ciclo in
nito. A esta variable se la llama Variable de Control
En el caso de nuestra cuenta regresiva, podemos probar que el ciclo terminará ya que sabemos
que el valor de n es
nito, y podemos ver que el valor de n toma valores cada vez más pequeños
cada vez que pasa por el ciclo (en cada iteración), con lo cual eventualmente llegaremos a cero.
En otros casos no es tan sencillo de ver:
1
N.d.T.: la palabra while signi
ca mientras en castellano.
Página 1 de 11
, Introducción a la Programación 2do semestre de 2021
n = int(input("Ingrese un numero mayor a cero"))
while n != 1:
print n,
if n % 2 == 0: # n es par
n = n / 2
else: # n es impar
n = n * 3 + 1
La condición de este ciclo es n != 1, así que el ciclo continuará hasta que n sea 1, lo que hará
falsa la condición.
En cada iteración, el programa imprime el valor de n y luego veri
ca si es par o impar. Si es
par, el valor de n se divide por dos. Si es impar, el valor se reemplaza por 3n + 1. Por ejemplo,
si el valor inicial es 3, la secuencia resultante es 3, 10, 5, 16, 8, 4, 2, 1.
Como n a veces aumenta y a veces disminuye, no hay una demostración obvia de que n
alcance alguna vez 1, o de que el programa vaya a terminar. Para algunos valores particulares de
n, podemos probar que termina. Por ejemplo, si el valor inicial es una potencia de dos, entonces
el valor de n será par cada vez que pase por el ciclo hasta llegar a valer 1. El ejemplo anterior
termina con una secuencia que empieza en 16.
Dejando de lado los valores particulares, la pregunta interesante es si podemos demostrar que
este programa termina para todo valor de n. Hasta ahora, nadie fue capaz de demostrarlo ½o de
refutarlo!
1.2. La función range()
Esta función de Python nos da un rango de valores y es ideal para iterar con la sentencia for
que veremos a continuación.
Se puede utilizar con diferente cantidad de parámetros, en su versión completa, toma 3
parámetros, los cuales deben ser siempre enteros, y tiene la siguiente estructura:
range(INICIO, FIN, PASO)
representa un rango entre INICIO hasta FIN (sin incluirlo), con saltos de tamaño PASO.
Si se omite el parámetro PASO, su valor por defecto es 1. Si se omiten los parámetros INICIO
y PASO, range asume que INICIO es 0 y PASO es 1.
Por ejemplo:
range(0, 10, 1)
representa el rango que incluye a los valores: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.
range(4, 12, 2)
representa el rango que incluye a los valores: 4, 6, 8 y 10.
range(5)
representa el rango que incluye a los valores: 0, 1, 2, 3 y 4.
range(-2, 2)
representa el rango que incluye a los valores: -2, -1, 0 y 1.
En caso de que usemos un PASO negativo, el rango será decreciente, es decir, de mayor a
menor.
Ejemplo:
range(10, 1, -1)
representa el rango que incluye a los valores: 10, 9, 8, 7, 6, 5, 4, 3 y 2.
Página 2 de 11