Download Toma de Decisiones
Document related concepts
Transcript
Iteración Elaborado por Mauricio Avilés Iteración • En programación siempre es necesario repetir acciones para solucionar problemas • La iteración es la forma más natural y común para repetir acciones • Alternativa a la recursividad Estatutos de iteración en Python • Estructuras de control para realizar acciones de forma repetitiva • Dependen de la evaluación de alguna condición • Ciclos, bucle o estructura repetitiva – while – for Estatutos de iteración en Python • A diferencia de la recursividad, Python no tiene límite para repeticiones en un ciclo • Si la condición de terminación del ciclo no se cumple, el ciclo es infinito • Es responsabilidad del programador considerar que el ciclo debe terminar while • Repetir la ejecución de un bloque mientras una condición sea verdadera while expresion: bloque1 Contar los elementos de una lista • While • Utilizar variable para guardar el valor def contar(lista): cont = 0 while lista != []: lista = lista[1:] cont += 1 return cont for • La cantidad de veces que se repite depende de un iterable • Un iterable es un objeto que puede retornar sus elementos uno a la vez • El iterable va tomando el valor de cada uno de los elementos en la secuencia • Strings, listas, tuplas, funciones especiales y otras clases definidas por el usuario for iterador in iterable: bloque Contar los elementos de una lista • For def contar2(lista): cont = 0 for elemento in lista: cont += 1 return cont Diferencias def contar(lista): cont = 0 while lista != []: lista = lista[1:] cont += 1 return cont def contar2(lista): cont = 0 for elemento in lista: cont += 1 return cont Condición de terminación Control automático Se va eliminando el primer elemento El iterable toma el valor de cada elemento La lista termina como nula No se modifica la lista Factorial • Calcular el factorial de un número mediante iteración n! = n * (n-1)! 0! = 1 Sumatoria 𝑛 𝑖 = (𝐴) + (𝐴 + 1) + (𝐴 + 2) + ⋯ + 𝑛 𝑖=𝐴 Problema: crear una función que retorne la sumatoria desde A hasta un número entero positivo n Calcular con iteración Obtener los elementos pares • Hacer una función que recorra una lista de números enteros y retorne una nueva lista con los números que son pares • Utilizar iteración >>> unirpares([1, 2, 3, 4, 5, 6, 7]) [2, 4, 6] >>> unirpares([2, 3, 5, 7, 11, 13, 17]) [2] >>> unirpares([3, 5, 7, 9]) [] Obtener el elemento mayor • Hacer una función que recorra una lista de números y retorne el mayor de ellos • La lista no puede estar vacía • Usar iteración >>> mayor([1, 5, 7, 4, 2, 6, 3]) 7 >>> mayor([2, 13, 5, 17, 11, 3, 7]) 17 Determinar si un entero es primo • Función que reciba un número entero y retorne un valor booleano que indique si el número es primo o no • Entradas: n, número a analizar • Salidas: True si es primo, False si no • Restricciones: debe ser entero positivo • Utilizar iteración Multiplicar los elementos de una lista • Multiplicar los elementos que se reciben como argumento en una lista no nula • Recorrer la lista e ir tomando el primer elemento para multiplicarlo • Utilizar iteración >>> multi([3,4,5]) 60 >>> multi([12, 3.5, 4.3]) 180.6 >>> multi([]) 'La lista no debe ser nula' Comparación entre recursividad e iteración Recursividad vs. Iteración • Alternativas para resolver un problema • Depende de la eficiencia, uso de recursos, legibilidad del código y naturaleza del algoritmo • Ejemplo: contar los dígitos de un número – Divisiones enteras sucesivas entre 10 Contar dígitos de un número, iterativo Recursividad vs. Iteración