Iteración
Introducción a la programación
I semestre, 2016
Agenda
● Introducción
● Iteración
● Estructuras de repetición While y for.
● Ejemplos (ejercicios)
● Recursividad e Iteración
● Similitudes y diferencias
Enfoque iterativo
Llegar a una solución programable normalmente requiere de repetir la ejecución de una serie de instrucciones (de forma secuencial)
● Durante el desarrollo del curso se ha utilizado la recursión como una solución a este problema.
Enfoque iterativo
La iteración ofrece una solución que viene a ser una alternativa a la recursividad.
● Según la RAE: acción efecto de iterar. Iterar: repetir.
● Es una forma natural de ejecutar acciones repetidas (si ya se tiene dominada la recursividad, aprender a iteración será sencillísimo)
A las estructuras iterativas también se les llama: ciclos, bucles o simplemente estructuras repetitivas.
Iteración
Lenguajes de programación proveen las estructuras de programación que permiten realizar acciones de forma repetitiva... hasta que se deje de cumplir un criterio o en otras palabras, mientras se cumple una condición.
En Python se dispone de dos estructuras para trabajar iteración:
● while
● For
Sintaxis:
while expresion:bloque-1
[else:bloque]
for iterador in iterable:bloque-1
[else:bloque]
Estructuras de Repetición: While
Mientras una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “mientras”
Mamá: “mi hijito vaya a la pulpería y espere mientras llega el panadero con pan recién horneado”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Es responsabilidad del programador asegurarse que el programa “salga” del ciclo... (¿dónde sucede eso en el ejemplo?)
import time
import random
def ir_por_pan():
print('voy a comprar pan fresco')
while not panadero():
time.sleep(1)
print('Estoy esperando...')
print('Ya voy para la casa con pan fresco' )
def panadero():
num = random.randint(1, 5)
print('\t\t numero:',num)
if num == 3: return True
else: return False
Estructuras de Repetición: For
Hasta que una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “hasta”
Mamá: “mi hijito vaya a la pulpería y espere hasta 5 minutos a ver si llega el panadero con pan recién horneado, sino se viene”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Note: tanto el while como el for (como la recursión) son equivalentes y prácticamente iguales. Los detalles que cambian son principalmente sintácticos.
import time
import random
def ir_por_pan_hasta(espera):
print('voy a comprar pan fresco')
compre_pan = False
for espera in range(0,espera):
if panadero():
compre_pan = True
print('compré pan fresco :)' )
break
else:
print('No estaba el panadero')
print('Estoy esperando...')
time.sleep(1)
if compre_pan == False:
print('No pude comprar pan :(' )
Iteración - ejemplos
Hacer una función para calcular el largo de una lista, utilizando la instrucción while.
def largo(lista)
Escribir una función para contar los elementos de una lista de números que sean pares, utilizando la instrucción for
def contar_pares(lista)
● Una vez que los tenga listos realice de forma manual y verifique en el depurador que la ejecución se realiza como ud. lo espera:
● largo( [1,2,3] )
● contar_pares( [1,2,3] )
Iteración – ejemplos (respuesta)
def largo(lista):
cont = 0
while lista != []:
cont += 1
lista = lista[1:]
return cont
def contar_pares(lista):
cont = 0
for item in lista:
if item % 2 == 0:
cont += 1
return cont
Diferencias While y For
● Control del ciclo (condición de terminación): en el while es “manual” y en el for “automático”
● Al momento de hacer el return, ¿que valor tienen la lista?... ¿es recorrida o destruida?
def largo_while(lista):
cont = 0
while lista != []:
cont += 1
lista = lista[1:]
return cont
def largo_for(lista):
cont = 0
for item in lista:
cont += 1
return cont
Recursividad vs Iteración
Ejercicios de iteración con números
● Determinar si un número tiene algún dígito par.
def tiene_par(numero)
● Calculo de factorial:
0! = 1
1! = 1 * 0! = 1 * 1 = 1
2! = 2 * 1! = 2 * 1 * 0! = 2 * 1 * 1 = 2
n! = n * (n-1)!
def factorial(numero)
● Sumatoria de i en un intervalo A – B (incluyéndolos)
def suma_intervalo(A,B)
Referencias y Lecturas Complementarias
● Material suministrado por el profesor Aurelio Sanabria, Instituto Tecnológico de Costa Rica. I semestre 2011.
● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.
● En general: http://docs.python.org/3/
14
Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una
Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.
http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*
Iteración
Introducción a la programación
I semestre, 2016
Agenda
● Introducción
● Iteración
● Estructuras de repetición While y for.
● Ejemplos (ejercicios)
● Recursividad e Iteración
● Similitudes y diferencias
http://anaisabeltrigo.blogspot.com/2014/06/diario-estival.html
La imagen no se de dónde es, pero también están usando eso en Murcia: http://autoescuelacarland.com/blog/la-senal-que-alerta-a-los-peatones-tecnologicos-enganchados-al-movil/
Enfoque iterativo
Llegar a una solución programable normalmente requiere de repetir la ejecución de una serie de instrucciones (de forma secuencial)
● Durante el desarrollo del curso se ha utilizado la recursión como una solución a este problema.
Enfoque iterativo
La iteración ofrece una solución que viene a ser una alternativa a la recursividad.
● Según la RAE: acción efecto de iterar. Iterar: repetir.
● Es una forma natural de ejecutar acciones repetidas (si ya se tiene dominada la recursividad, aprender a iteración será sencillísimo)
A las estructuras iterativas también se les llama: ciclos, bucles o simplemente estructuras repetitivas.
Iteración
Lenguajes de programación proveen las estructuras de programación que permiten realizar acciones de forma repetitiva... hasta que se deje de cumplir un criterio o en otras palabras, mientras se cumple una condición.
En Python se dispone de dos estructuras para trabajar iteración:
● while
● For
Sintaxis:
while expresion:bloque-1
[else:bloque]
for iterador in iterable:bloque-1
[else:bloque]
el bloque else se ejecuta cuando la expresión se convierte en falsa. → no es común en la mayoría de lenguajes
●Sobre el while: - En caso de que la expresión sea verdadera se ejecuta el while. - La identación define el alcance del while ●Se ejecuta el ciclo siempre que la expresión condicional sea verdadera●Es responsabilidad del programador que el while termine
ForUn iterable es un objeto que puede retornar sus elementos uno a la vez. Las secuencias como los strings, listas, tuplas son iterables
Estructuras de Repetición: While
Mientras una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “mientras”
Mamá: “mi hijito vaya a la pulpería y espere mientras llega el panadero con pan recién horneado”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Es responsabilidad del programador asegurarse que el programa “salga” del ciclo... (¿dónde sucede eso en el ejemplo?)
import time
import random
def ir_por_pan():
print('voy a comprar pan fresco')
while not panadero():
time.sleep(1)
print('Estoy esperando...')
print('Ya voy para la casa con pan fresco' )
def panadero():
num = random.randint(1, 5)
print('\t\t numero:',num)
if num == 3: return True
else: return False
Estructuras de Repetición: For
Hasta que una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “hasta”
Mamá: “mi hijito vaya a la pulpería y espere hasta 5 minutos a ver si llega el panadero con pan recién horneado, sino se viene”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Note: tanto el while como el for (como la recursión) son equivalentes y prácticamente iguales. Los detalles que cambian son principalmente sintácticos.
import time
import random
def ir_por_pan_hasta(espera):
print('voy a comprar pan fresco')
compre_pan = False
for espera in range(0,espera):
if panadero():
compre_pan = True
print('compré pan fresco :)' )
break
else:
print('No estaba el panadero')
print('Estoy esperando...')
time.sleep(1)
if compre_pan == False:
print('No pude comprar pan :(' )
Iteración - ejemplos
Hacer una función para calcular el largo de una lista, utilizando la instrucción while.
def largo(lista)
Escribir una función para contar los elementos de una lista de números que sean pares, utilizando la instrucción for
def contar_pares(lista)
● Una vez que los tenga listos realice de forma manual y verifique en el depurador que la ejecución se realiza como ud. lo espera:
● largo( [1,2,3] )
● contar_pares( [1,2,3] )
Se debe inicializar una variable contador, entrar en el ciclo y contar hasta que se acabe la lista.
def largo(lista):Cont = 0 # contador del largo de la
listawhile lista != []:
Cont += 1 # actualización del contador
lista = lista[1:]return cont
def contar_pares(lista): cont = 0 # contador de pares for item in lista: if item % 2 == 0: cont += 1 # actualización del contador lista = lista[1:] return cont
Iteración – ejemplos (respuesta)
def largo(lista):
cont = 0
while lista != []:
cont += 1
lista = lista[1:]
return cont
def contar_pares(lista):
cont = 0
for item in lista:
if item % 2 == 0:
cont += 1
return cont
Diferencias While y For
● Control del ciclo (condición de terminación): en el while es “manual” y en el for “automático”
● Al momento de hacer el return, ¿que valor tienen la lista?... ¿es recorrida o destruida?
def largo_while(lista):
cont = 0
while lista != []:
cont += 1
lista = lista[1:]
return cont
def largo_for(lista):
cont = 0
for item in lista:
cont += 1
return cont
Control de cilco: lista no sea nula, llegar al caso base, y terminar la función.En la versión de while la lista de destruye, en el for no.
Recursividad vs Iteración
1.num = valor absoluto de num, para evitar recursividad infinita o ejecución infinita en iteración.2. dig = cero, sirve para guardar el número de digitos.3. La cond. de terminación usada en la func. Recursiva, se niega en la iteración para indicar la condición que va a mantener el ciclo while.4. Recursiva: num se pasa como parametro con el valor de dig entre 10. Iterativa, la variable num se asigna con la división en forma entera entre 10.5. Recursiva, dig se pasa como parametro aumentado en 1. Iterativa, se asigna dig al incremento dedig en cada ciclo.
Además hay muchas cuestiones técnicas involucradas en la comparación: uso de la pila de llamados.
Ejercicios de iteración con números
● Determinar si un número tiene algún dígito par.
def tiene_par(numero)
● Calculo de factorial:
0! = 1
1! = 1 * 0! = 1 * 1 = 1
2! = 2 * 1! = 2 * 1 * 0! = 2 * 1 * 1 = 2
n! = n * (n-1)!
def factorial(numero)
● Sumatoria de i en un intervalo A – B (incluyéndolos)
def suma_intervalo(A,B)
def tiene_par(num):if not isinstance(num,int):
return "Error: número debe ser entero"
if num == 0:return True
num = abs(num)while num != 0:
If num % 2 == 0:return True
num //= 10return False
Referencias y Lecturas Complementarias
● Material suministrado por el profesor Aurelio Sanabria, Instituto Tecnológico de Costa Rica. I semestre 2011.
● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.
● En general: http://docs.python.org/3/
14
Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una
Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.
http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*
Top Related