Modulo 4 - Introducción A Los Algoritmos
Modulo 4 - Introducción A Los Algoritmos
Modulo 4 - Introducción A Los Algoritmos
ALGORITMOS
Capas de
Abstracción
¿Que es un
algoritmo?
Algoritmo
¿Que es un
algoritmo?
Un algoritmo es
una secuencia
Problema
detallada de pasos
que nos permite
resolver un
problema
Algoritmo
¿Que es un
programa?
Un algoritmo es
una secuencia
Problema
detallada de pasos Programa
que nos permite
resolver un
problema
Algoritmo
¿Que es un
programa?
Un algoritmo es Un programa es
Problema Computadora una secuencia de
una secuencia
detallada de pasos instrucciones que
que nos permite pueden ser
resolver un ejecutadas por
problema una computadora
Algoritmo Programa
¿Cómo se relaciona
programa y un algoritmo?
Un algoritmo es Un programa es la
Problema Un programa es
una secuencia implementación Computadora una secuencia de
detallada de pasos de un algoritmo
instrucciones que
que nos permite tal que pueda ser
pueden ser
resolver un interpretado por
ejecutadas por
problema una computadora.
una computadora
Algoritmo Programa
¿Cómo se relaciona
programa y un algoritmo?
Un algoritmo es Un programa es la
Problema Un programa es
una secuencia implementación Computadora una secuencia de
detallada de pasos de un algoritmo
instrucciones que
que nos permite tal que pueda ser
pueden ser
resolver un interpretado por
ejecutadas por
problema una computadora.
una computadora
Algoritmo Programa
Un programa se
Un algoritmo se
puede escribir
puede escribir
usando un
usando
lenguaje de
pseudocódigo
programación
Ejercicio 10 mins ⏱
Multiplicar por 5:
Escribir un algoritmo para poder
multiplicar cualquier número por
5.
Nota:
Usar solamente la operación suma. Teniendo en
cuenta que:
N x 5 = N + N + N + N +N
Ejercicio
Multiplicar por 5
Le sumo N a 0
Al resultado le sumo N
Al resultado le sumo N
Al resultado le sumo N
Al resultado le sumo N
Ejercicio
Multiplicar por 5
Pseudocódigo
Le sumo N a 0 Entrada: N
Al resultado le sumo N M <- 0
Al resultado le sumo N M <- M + N
Al resultado le sumo N M <- M + N
Al resultado le sumo N M <- M + N
M <- M + N
M <- M + N
Salida: M
Ejercicio
Multiplicar por 5
Pseudocódigo Python
Algunas Operaciones: +, -, *, /
TIPOS
Numéricos
ejemplos
Python Python
>>> 0 >>> 0
0
>>> 2 + 2 >>> 2 + 2
4
>>> 2 * 5 >>> 2 * 5
10
>>> 3 + 2 * 3 >>> 3 + 2 * 3
9
>>> 1/4 >>> 1/4
0.25
>>> 3.123456 >>> 3.123456
3.123456
>>> 0.1 + 0.2 >>> 0.1 + 0.2
0.30000000000000004
TIPOS
Cadenas
Algunas Operaciones: +, *
TIPOS Cadenas
ejemplos
Python
Python
>>> 'Hola mundo!'
>>> 'Hola mundo!'
'Hola mundo!'
>>> "Curso introductorio :)"
>>> "Curso introductorio :)"
'Curso introductorio :)'
>>> 'abc' + 'def'
>>> 'abc' + 'def'
'abcdef'
>>> 'hola' * 3
>>> 'hola' * 3
'holaholahola'
Variables
¿Qué es una
variable?
Python
Python
>>> x = 7
>>> y = 8 >>> x = 7
>>> x = 6 >>> y = 8
>>> x >>> x = 6
>>> x
>>> x = x + 1 6
>>> x >>> x = x + 1
>>> x
>>> y = x * x 7
>>> y >>> y = x * x
>>> y
>>> x = 3 49
>>> y >>> x = 3
>>> y
49
VARIABLES
Estado de computación
>>> x = 8
>>> y = 22
>>> lenguaje = 'Python'
Nombres Valores
x 8
y 22
lenguaje 'Python'
Funciones
¿Qué es una
función?
- Agarrar
1- Agarrar las llaves 3 - Caminar hacia la puerta 5 - Atravesar la puerta
- Caminar hacia
- Abrir puerta
- Atravesar 2 - Agarrar la billetera 4 - Abrir la puerta
¿Qué es una
función?
Python
def f(x, y):
...
return <resultado>
Ejercicio
Multiplicar por 5
Python
def multiplicar5(N):
M = 0
M = M + N
M = M + N
M = M + N
M = M + N
M = M + N
return M
Ejercicio 10 mins ⏱
Elevar a la 3:
Implementar una función
que eleve un número a la 3.
Ejercicio
Elevar a la 3
Python
def elevar3(N):
M = 1
M = M * N
M = M * N
M = M * N
return M
Ejercicio 5 mins ⏱
Reutilización de Funciones:
Implementar una función
que multiplique por 5 y luego
eleve el resultado a la 3.
Ejercicio
Reutilización de Funciones
Ejercicio
Reutilización de Funciones
Python
def multiplicar5YElevar3(N):
return elevar3(multiplicar5(N))
Condiciones
Booleanas
Booleanos
bool El tipo de dato bool, permite representar booleanos, es decir, cosas que se
pueden modelar solo como Verdaderas (True) o Falsas (False).
Python Python
>>> 1 + 1 == 2 >>> 1 + 1 == 2
True
>>> 1 + 1 != 2 >>> 1 + 1 != 2
False
>>> 1 + 1 < 2 >>> 1 + 1 < 2
False
>>> 1 + 1 <= 2 >>> 1 + 1 <= 2
True
>>> 1 + 1 > 2 >>> 1 + 1 > 2
False
>>> 1 + 1 >= 2 >>> 1 + 1 >= 2
True
OPERADORES
Ejemplos
LÓGICOS
Python Python
>>> True >>> True
True
>>> True and False >>> True and False
False
>>> True or False >>> True or False
True
>>> not True >>> not True
False
>>> not False >>> not False
True
Instrucciones
Condicionales: if
Obtener fizzbuzz:
Implementar una función llamada
obtener_fizzbuzz que reciba un
número entero, devuelva Fizz si es
múltiplo de 3, Buzz si es múltiplo de 5
(y no es múltiplo de 3), FizzBuzz si es
múltiplo de 3 y de 5, o el número
recibido en caso contrario.
Ejercicio 15 mins ⏱
Obtener fizzbuzz:
Implementar una función llamada
obtener_fizzbuzz que reciba un
número entero, devuelva Fizz si es
múltiplo de 3, Buzz si es múltiplo de 5
(y no es múltiplo de 3), FizzBuzz si es
múltiplo de 3 y de 5, o el número
recibido en caso contrario. Operador %: El operador %
Ejemplo
permite obtener el resto de
>>> obtener_fizzbuzz(12) una división, es importante
“Fizz” tener en cuenta que decir “a
>>> obtener_fizzbuzz(7) es múltiplo de n” es
7 equivalente a decir que “el
>>> obtener_fizzbuzz(10) resto de a divido n es 0” (a
“Buzz” % n == 0).
>>> obtener_fizzbuzz(30)
“FizzBuzz”
Ejercicio
Obtener fizzbuzz
def obtener_fizzbuzz(n):
if n % 3 == 0 and n % 5 == 0: Python
return 'FizzBuzz'
if n % 3 == 0: def obtener_fizzbuzz(n):
return 'Fizz' if n % 3 == 0:
if n % 5 == 0: return 'Fizz'
return 'Buzz' if n % 5 == 0:
return n return 'Buzz'
if n % 3 == 0 and n % 5 == 0:
return 'FizzBuzz'
return n
Instrucciones
Condicionales: if … else
if (viene el colectivo):
me tomo el colectivo
else:
me tomo un taxi
Ejercicio 15 mins ⏱
Python Python
def obtener_fizzbuzz(n): def obtener_fizzbuzz(n):
if n % 3 == 0 and n % 5 == 0: if n % 3 == 0:
return 'FizzBuzz' return 'Fizz'
else: else:
if n % 3 == 0: if n % 3 == 0 and n % 5 == 0:
return 'Fizz' return 'FizzBuzz'
else: else:
if n % 5 == 0: if n % 5 == 0:
return 'Buzz' return 'Buzz'
return n return n
Instrucciones
Condicionales: if...elif...else
if <expresión>:
<instrucciones>
else:
La instrucción condicional elif permite if <expresión>:
que se ejecuten determinadas <instrucciones>
instrucciones, cuando no se cumplen las
condiciones anteriores, y además una else:
expresión evalúa a True. <instrucciones>
Es equivalente a “anidar” un if dentro de
un else. if <expresión>:
<instrucciones>
elif <expresión>:
<instrucciones>
else:
<instrucciones>
Ejercicio 10 mins ⏱
Python
def obtener_fizzbuzz(n):
if n % 3 == 0 and n % 5 == 0:
return 'FizzBuzz'
elif n % 3 == 0:
return 'Fizz'
elif n % 5 == 0:
return 'Buzz'
else:
return n
Estilo y legibilidad
de código
Ejercicio 10 mins ⏱
Comparativa Obtener
fizzbuz:
Discutir las 3 soluciones vistas
anteriormente. ¿Cual es mejor? ¿Cual
es más clara?
Ejercicio
Comparativa Obtener fizzbuz
Sumatoria:
Implementar una función sumatoria
que reciba un número entero n, y
devuelva la suma de todos los
números del 0 al n.
Ejercicio
Obtener fizzbuzz
Python
def sumatoria(n):
suma = 0
for i in range(n+1):
suma += i
return suma
Ejercicio 10 mins ⏱
FizzBuzz:
Haciendo uso de la función
obtener_fizzbuzz implementada en
ejercicios anteriores, implementar una
función fizzbuzz que reciba un número
entero n y para todos los números del
0 al n, imprima Fizz si es múltiplo de 3,
Buzz si es múltiplo de 5 (y no es
múltiplo de 3), FizzBuzz si es múltiplo
de 3 y de 5, o el número recibido en
caso contrario.
FUNCIÓN
print
FizzBuzz:
Haciendo uso de la función
obtener_fizzbuzz implementada en
ejercicios anteriores, implementar una
función fizzbuzz que reciba un número
entero n y para todos los números del
0 al n, imprima Fizz si es múltiplo de 3,
Buzz si es múltiplo de 5 (y no es
múltiplo de 3), FizzBuzz si es múltiplo
de 3 y de 5, o el número recibido en
caso contrario.
Ejercicio
fizzbuzz
Python
def fizzbuzz(n):
for i in range(n+1):
print(obtener_fizzbuzz(i))
CICLOS
While
INDEFINIDOS
def multiplicar5(N):
def multiplicar5(N):
M = 0
def multiplicar5(N): M = 0
M = M + N
M = 0 i = 0
M = M + N
for i in range(5): while i < 5:
M = M + N
M = M + N M = M + N
M = M + N
return M i += 1
M = M + N
return M
return M
Ciclo definido Ciclo indefinido
Sin ciclos
Ejercicio 5 mins ⏱
FizzBuzz:
Haciendo uso de la función
obtener_fizzbuzz implementada en
ejercicios anteriores, implementar una
función fizzbuzz que reciba un número
entero n y para todos los números del 0 al n,
imprima Fizz si es múltiplo de 3, Buzz si es
múltiplo de 5 (y no es múltiplo de 3),
FizzBuzz si es múltiplo de 3 y de 5, o el
número recibido en caso contrario.
Python
def fizzbuzz(n):
i = 0
while i < n:
print(obtener_fizzbuzz(i))
i += 1
Tipos Avanzados:
Listas y un poco más
Listas
Python Python
>>> [1,2,3,4] >>> [1,2,3,4]
[1,2,3,4]
>>> [1,2] + [3,4] >>> [1,2] + [3,4]
[1,2,3,4]
>>> [1,2] * 2 >>> [1,2] * 2
[1,2,1,2]
>>> lista = [1,2,3,4] >>> lista = [1,2,3,4]
[1,2,3,4]
>>> lista[2] >>> lista[2]
3
>>> lista[1:3] >>> lista[1:3]
[2,3]
>>> lista.append(5) >>> lista.append(5)
>>> lista >>> lista
[1,2,3,4,5]
Listas: Iterar
con un for
Python
>>> lista = [1,2,3,4]
>>> for elemento in lista:
... print("Elemento:", elemento)
...
Elemento: 1
Elemento: 2
Elemento: 3
Elemento: 4
Ejercicio 10 mins ⏱
FizzBuzz Variante:
En esta ocasión, queremos implementar
una función fizzbuzz que en lugar de
imprimir los valores correspondientes a
fizzbuzz, devuelva una lista con los
mismos.
Ejemplo:
>>> fizzbuzz(5)
[“FizzBuzz”, 1, 2, “Fizz”, 4, “Buzz”]
Ejercicio
Fizzbuzz Variante
Python
def fizzbuzz(n):
fizzbuzzes = []
for i in range(n+1):
fizzbuzzes.append(obtener_fizzbuzz(i))
return fizzbuzzes
Un poco más:
Diccionarios y Set
Especificación Describir detalladamente qué debe hacer el programa (no cómo). En problemas sencillos, puede ser:
- Datos de entrada
- Datos de salida
- Cómo se relaciona la entrada con la salida
Diseño Analizar cómo vamos a resolver el problema, cuáles son los algoritmos y las estructuras de datos
que vamos a usar. Estudiamos posibles variantes, beneficios y contras de cada una.
Pruebas Diseñar un conjunto de pruebas para probar cada parte aislada, y la integración entre ellas.
Mantenimiento Realizar los cambios necesarios en base a las nuevas demandas, esto puede incluir tanto nuevas
funcionalidades como arreglo de bugs.
CONSTRUCCIÓN DE
Conversión de unidades
UN PROGRAMA
Análisis: Especificación:
¿Qué unidades quiero convertir? ¿Cuál es la entrada de mi programa?
Millas, pies y pulgadas a metros Millas, Pies y Pulgadas
¿Cuál es la salida de mi programa?
Metros
¿Cómo se relacionan las millas, pies y
pulgadas con los metros?
→ 1 milla = 1.609344 km = 1609.344 m
→ 1 pie = 30.48 cm = 0.3048 m
→ 1 pulgada = 2.54 cm = 0.0254 m
→ M = 1609,344 * L + 0,3048 * F + 0,0254 * P
CONSTRUCCIÓN DE
Conversión de unidades
UN PROGRAMA
Implementación:
Python
def convertir_a_metros(millas, pies, pulgadas):
return 1609.344 * millas + 0.3048 * pies + 0.0254 * pulgadas
def main():
print "Convierte medidas inglesas a sistema metrico"
L = int(input("Cuántas millas?: "))
F = int(input("Y cuántos pies?: "))
P = int(input("Y cuántas pulgadas?: "))
M = convertir_a_metros(L, F, P)
print("La longitud es de ", M, " metros")
main()
CONSTRUCCIÓN DE
Conversión de unidades
UN PROGRAMA
Pruebas: Mantenimiento:
Probar el programa para valores Detectar bugs:
conocidos, por ejemplo: ¿Qué pasa si usamos un float en lugar de un int?
→ 1 milla, 0 pies, 0 pulgadas Bug
→ 0 millas, 1 pie, 0 pulgadas ¿Qué pasa si usamos un string en lugar de un int?
→ 0 millas, 0 pies, 1 pulgada Bug
Ejercicio 20 mins ⏱
Factorial:
→ Escribir una función que, dado un
número entero n, permita calcular su
factorial.
Conversor de Temperatura:
Baraja Española
→ Escribir un programa que imprima todas
las cartas de la baraja española.
Astrología
→ Escribir un programa que pida al usuario
su fecha de cumpleaños e imprima por
pantalla a que signo corresponde.
Sucesión de números
→ Escribir un programa que le pida al
usuario que ingrese una sucesión de
números naturales (primero uno, luego otro,
y así hasta que el usuario ingrese ’-1’ como
condición de salida). Al final, el programa
debe imprimir cuántos números fueron
ingresados, la suma total de los valores y el
promedio.
Caracteres:
Escribir funciones que dada una cadena de
caracteres:
Cadena y caracteres:
Escribir funciones que dada una cadena de caracteres:
Consonantes
Escribir un programa que reciba una palabra
e imprima por pantalla solamente las letras
consonantes. Por ejemplo, si recibe
'algoritmos' o 'logaritmos' debe devolver
'lgrtms'.
Ejercicio 20 mins ⏱
Palíndromos
Escribir un programa que le pida al usuario
una palabra, e indique si se trata de un
palíndromo. Por ejemplo, 'anita lava la tina'
es un palíndromo (se lee igual de izquierda
a derecha que de derecha a izquierda).