Modulo 4 - Introducción A Los Algoritmos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 96

INTRODUCCIÓN A LOS

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 ⏱

Salir a la calle: Escribir un


algoritmo con las
instrucciones para poder
salir de tu casa a la calle.
Ejercicio
Salir a la calle

1- Agarrar las llaves 3 - Caminar hacia la puerta 5 - Atravesar la puerta

2 - Agarrar la billetera 4 - Abrir la puerta


Ejercicio
Salir a la calle

Es importante el orden de los pasos?

Como se hace el paso de “Abrir la puerta”? Tenemos


que detallarlos?

Como se hace el paso de “Agarrar las llaves”? Y el de


“Agarrar la billetera”? Tenemos que detallarlos?
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

Le sumo N a 0 Entrada: N def multiplicar5(N):


Al resultado le sumo N M <- 0 M = 0
Al resultado le sumo N M <- M + N M = M + N
Al resultado le sumo N M <- M + N M = M + N
Al resultado le sumo N M <- M + N M = M + N
M <- M + N M = M + N
M <- M + N M = M + N
Salida: M return M
Tipos Básicos:
Numéricos y Cadenas
Tipos Básicos:
¿Que es un Tipo de Dato?

En general, todos los lenguajes tienen


una serie de Tipos de Datos que pueden
manejar y con los que pueden operar.

Por ejemplo, vamos a querer representar


números, y para eso cada lenguaje va a
tener un tipo para representarlos. O
vamos a querer representar palabras, y
para eso cada lenguaje va a tener una
tipo para representarlas.
TIPOSNuméricos

int El tipo de dato int permite representar números enteros. Su precisión es


exacta.

float El tipo de dato float permite representar números con decimales. Su


precisión es aproximada.

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

string El tipo de dato string, también llamado “cadena de caracteres”, permite


representar una serie de caracteres concatenados (por ejemplo, palabras)

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?

Son “contenedores” que permiten


guardar información

Permiten tener memoria de los valores

Permiten ponerle etiquetas descriptivas a


los valores

Cada dato está asociado a un tipo (ej. int,


float, string)
VARIABLES
Ejemplos

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?

Una función es un bloque de código que


puede ser reutilizado.

Permiten reutilizar comportamiento, y


evitar repetición de código.

Permiten reutilizar comportamiento, y


evitar repetición de código.
Ejercicio
Salir a la calle

1- Agarrar las llaves 3 - Caminar hacia la puerta 5 - Atravesar la puerta

2 - Agarrar la billetera 4 - Abrir la puerta


Ejercicio
Salir a la calle

- 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).

Operadores de Comparación: == , != , < , <= , > , >=


Operadores Lógicos: and , or , not
OPERADORES
Ejemplos DE
COMPARACIÓN

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

La instrucción condicional if permite que


se ejecuten determinadas instrucciones, if <expresión>:
sólo si una expresión se evalúa a True.
<instrucciones>
Es decir, nos permite “preguntar” si se
cumple una condición o no.
INSTRUCCIONES
If
Ejemplos
CONDICIONALES

“Si tengo sueño, “Si estoy cansado o llueve,


me voy a dormir” voy a trabajar en auto”

if (tengo sueño): if (estoy cansado or


me voy a dormir llueve):
voy a trabajar en auto
INSTRUCCIONES
If
Ejemplos
CONDICIONALES

“Si la película se estrenó y mis


“Si no viene el colectivo, entonces
amigos quieren, vamos a ir a verla”
me voy a tomar un taxi”

if (la película se estrenó if (not viene el colectivo):


and mis amigos quieren): me voy a tomar un taxi
vamos a ir a verla
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.
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

Python ¿Que pasa si cambiamos el orden de los if? ¿Funciona?

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

La instrucción condicional else permite if <expresión>:


que se ejecuten determinadas <instrucciones>
instrucciones, cuando la expresión no
evalúa a True. else:
<instrucciones>
INSTRUCCIONES
If … else
Ejemplos
CONDICIONALES

“Si viene el colectivo, entonces me


tomo el colectivo; si no me tomo un
taxi”

if (viene el colectivo):
me tomo el colectivo
else:
me tomo un taxi
Ejercicio 15 mins ⏱

Obtener fizzbuzz 2.0:


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.

Esta vez usando el operador if...else


Ejercicio
Obtener fizzbuzz

¿Que pasa si cambiamos el orden de los if? ¿Funciona?

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 ⏱

Obtener fizzbuzz 3.0:


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

Simplificar la versión 3.0 usando el


operador elif
Ejercicio
Obtener fizzbuzz

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

def obtener_fizzbuzz(n): def obtener_fizzbuzz(n): def obtener_fizzbuzz(n):


if n % 3 == 0 and n % 5 == 0: if n % 3 == 0 and n % 5 == 0: if n % 3 == 0 and n % 5 == 0:
return 'FizzBuzz' return 'FizzBuzz' return 'FizzBuzz'
if n % 3 == 0: else: elif n % 3 == 0:
return 'Fizz' if n % 3 == 0: return 'Fizz'
if n % 5 == 0: return 'Fizz' elif n % 5 == 0:
return 'Buzz' else: return 'Buzz'
return n if n % 5 == 0: else:
return 'Buzz' return n
return n
Zen de Python
Bello es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Espaciado es mejor que denso.
La legibilidad es importante.
Los casos especiales no son lo suficientemente especiales como para
romper las reglas.
Sin embargo la practicidad le gana a la pureza.
Los errores nunca deberían pasar silenciosamente.
A menos que se silencien explícitamente.
Frente a la ambigüedad, evitar la tentación de adivinar.
Debería haber una, y preferiblemente solo una, manera obvia de hacerlo.
A pesar de que esa manera no sea obvia a menos que seas Holandés.
Ahora es mejor que nunca.
A pesar de que nunca es muchas veces mejor que *ahora* mismo.
Si la implementación es difícil de explicar, es una mala idea.
Si la implementación es fácil de explicar, puede que sea una buena idea.
Los espacios de nombres son una gran idea, ¡tengamos más de esos!
Ciclos
Ciclos
Definición: Estructura que nos permite
ejecutar una serie de instrucciones
muchas veces.
Ciclos
definidos: for … in ...

Los ciclos definidos sirven cuando


sabemos de antemano cuántas veces
for <nombre> in <expresión>:
queremos iterar, es decir, cuántas veces <instrucciones>
queremos ejecutar las instrucciones.
CICLOS
Ejemplos
DEFINIDOS
Multiplicar por 5: def multiplicar5(N):
Anteriormente, como ejemplo de función
M = 0
habíamos visto una función que permite
multiplicar un número por 5.
M = M + N
M = M + N
M = M + N
M = M + N
M = M + N
return M
CICLOS
Ejemplos
DEFINIDOS
def multiplicar5(N): Sabemos que
Multiplicar por 5:
Anteriormente, como ejemplo de función M = 0 queremos sumar 5
habíamos visto una función que permite M = M + N veces N, tenemos
multiplicar un número por 5. M = M + N entonces que iterar 5
M = M + N veces, y ejecutar
M = M + N
cada vez la
M = M + N
return M instrucción M = M +
N.
CICLOS
Ejemplos
DEFINIDOS
Sabemos que
queremos sumar 5 def multiplicar5(N):
Multiplicar por 5:
Anteriormente, como ejemplo de función veces N, tenemos M = 0
habíamos visto una función que permite entonces que iterar 5 for i in range(5):
multiplicar un número por 5. veces, y ejecutar M = M + N
return M
cada vez la
def multiplicar5(N):
instrucción M = M +
M = 0 La expresión range(n)
N.
M = M + N nos va devolviendo todos
M = M + N los números del 0 al n
M = M + N (sin incluirlo). En este
M = M + N caso, se le va asignando
M = M + N a la variable i los valores
0, 1, 2, 3, 4.
return M
Ejercicio 10 mins ⏱

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

La función print() permite imprimir en


pantalla lo que recibe por parámetro.
Python
Python for i in range(5):
print(i)
>>> print("Hola, como estan?")
Hola, como estan? 0
>>> print(1) 1
1 2
>>> print(1.23456) 3
1.23456 4
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.
Ejercicio
fizzbuzz

Python
def fizzbuzz(n):
for i in range(n+1):
print(obtener_fizzbuzz(i))
CICLOS
While
INDEFINIDOS

Los ciclos indefinidos sirven cuando no


sabemos de antemano cuántas veces while <expresión>:
queremos iterar, es decir, cuántas veces <instrucciones>
queremos ejecutar las instrucciones.

Nota: En general, los ciclos que se


pueden hacer con un for, también se
pueden hacer con un while, pero no
necesariamente el while se puede
reemplazar con un for.
EJEMPLO
Multiplicar por 5

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.

Hacer uso de un ciclo indefinido.


Ejercicio
fizzbuzz

Python
def fizzbuzz(n):
i = 0
while i < n:
print(obtener_fizzbuzz(i))
i += 1
Tipos Avanzados:
Listas y un poco más
Listas

list El tipo de dato list, permite representar una secuencia de elementos


ordenados.

Algunas Operaciones: + , *, append, []


LISTAS Ejemplos

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

dict El tipo de dato dict (diccionario), permite representar un conjunto de


elementos indexados a través de una clave. Por ejemplo, en un
“diccionario/enciclopedia” las claves son las palabras y los valores son las
definiciones.

set El tipo de dato set, permite representar conjuntos de elementos


desordenados. La operación principal es preguntar si un elemento está o no
en el conjunto.

Nota: Estos tipos de datos se van a estudiar más en cursos siguientes.


Tipos Avanzados:
Listas y un poco más
Etapas en la construcción de
un programa
Análisis Entender cuál es el problema que se trata de resolver.

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.

Implementación Traducir a un lenguaje de programación el diseño del paso anterior.

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

Diseño: Pedirle al usuario que ingrese pulgadas y


03 guardar respuesta en una variable pulgadas
Pedirle al usuario que ingrese millas y
01 guardar respuesta en una variable Calcular metros (metros = 1609.344 * millas
millas. 04 + 0.3048 * pies + 0.0254 * pulgadas) y
guardarlo en una variable metros
Pedirle al usuario que ingrese pies y
02 guardar respuesta en una variable 05 Mostrar en pantalla metros
pies
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.

→ Usando la función del punto a, escribir un


programa (un archivo .py) que pida al
usuario un número y muestre su factorial.

Utilizar los conceptos de análisis, especificación


y diseño antes de realizar la implementación.
Ejercicio 20 mins ⏱

Conversor de Temperatura:

→ Escribir una función que convierta un


valor dado en grados Fahrenheit a grados
Celsius. Nota: F = 9/5 * C + 32

→ Usando la función del punto a, escribir un


programa que genere e imprima por
pantalla una tabla de conversión de
temperaturas desde 0 °F hasta 120 °F, de 10
en 10.

Utilizar los conceptos de análisis, especificación


y diseño antes de realizar la implementación.
Ejercicio 15 mins ⏱

Baraja Española
→ Escribir un programa que imprima todas
las cartas de la baraja española.

Utilizar los conceptos de análisis, especificación


y diseño antes de realizar la implementación.
Ejercicio 35 mins ⏱

Horas, minutos y segundos:


→Escribir una función que permita calcular la duración en
segundos de un intervalo dado en horas, minutos y
segundos.

→ Escribir una función que permita calcular la duración en


horas, minutos y segundos de un intervalo dado en
segundos.

→ Usando las funciones de los puntos a y b, escribir un


programa que pida al usuario dos intervalos expresados en
horas, minutos y segundos, sume sus duraciones y
muestre por pantalla la duración total en horas, minutos y
segundos.

Utilizar los conceptos de análisis, especificación y diseño antes


de realizar la implementación.
Ejercicio 15 mins ⏱

Astrología
→ Escribir un programa que pida al usuario
su fecha de cumpleaños e imprima por
pantalla a que signo corresponde.

Utilizar los conceptos de análisis, especificación


y diseño antes de realizar la implementación.
Ejercicio 15 mins ⏱

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.

Utilizar los conceptos de análisis, especificación


y diseño antes de realizar la implementación.
Ejercicio 25 mins ⏱

Caracteres:
Escribir funciones que dada una cadena de
caracteres:

→ Imprima los dos primeros caracteres.

→ Imprima los tres últimos caracteres.

→ Imprima dicha cadena cada dos caracteres. Ej.:


'recta' debería imprimir 'rca'

→ Dicha cadena en sentido inverso. Ej.: 'hola


mundo!' debe imprimir '!odnum aloh'

→ Imprima la cadena en un sentido y en sentido


inverso. Ej: 'reflejo' imprime 'reflejoojelfer'.
Ejercicio 30 mins ⏱

Cadena y caracteres:
Escribir funciones que dada una cadena de caracteres:

→ Inserte el caracter entre cada letra de la cadena.


Ej: 'separar' y ',' debería devolver 's,e,p,a,r,a,r'

→ Reemplace todos los espacios por el caracter.


Ej: 'mi archivo de texto.txt' y '_' debería devolver
'mi_archivo_de_texto.txt'

→ Reemplace todos los dígitos en la cadena por el


caracter. Ej: 'su clave es: 1540' y 'X' debería devolver 'su
clave es: XXXX'

→ Inserte el caracter cada 3 dígitos en la cadena.


Ej. '2552552550' y '.' debería devolver '255.255.255.0'.
Ejercicio 15 mins ⏱

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).

También podría gustarte