Você está na página 1de 35

¡Subprogramas y más!

Unidad 3: Subprogramas
Ejercicio 1
Crear una función que calcula el factorial de un número.

¿Qué es el factorial?

Cantidad que resulta de la multiplicación de determinado número


natural por todos los números naturales que le anteceden excluyendo
el cero; se representa por n!

Por definición el factorial de 0 es 1


El factorial de 4 es: 24
4*3*2*1 = 24 15
Resolución del Ejercicio 1
Resolución 2 del Ejercicio 1
Resolucion Recursiva del
Ejercicio 1
Resolucion Optimizada del
Ejercicio 1

Bonus:
• Usa la función factorial en un programa para escribir el factorial de los 6
primeros números naturales de forma automática (partiendo del 1).
Ejercicio 2
Se tiene un archivo de texto llamado “rangos.txt” que contiene por
cada registro el rango inicial y el rango final.

Desplegar la suma de todas las distancias entre todos los rangos


1 y 3: 1 valor de distancia 1 que es el número 2
6 y 8: 1 valor de distancia 1 que sería el número 7
9 y 12: 2 valores de distancias 2 (10 y 11)
1 y 9: 7 valores de distancia 7 (2,3,4,5,6,7,8)

La suma sería 1 + 1 + 2 + 7 = 11

Debe construir una función que lea el archivo y


otra que calcule la distancia 25
Resolución Posible del Ejercicio
2
Ejercicio 3
Se lee desde teclado la cantidad de figuras geométricas a procesar.
Luego, por cada figura se pregunta si es un triángulo, un
rectángulo o un círculo.
• Si es un triángulo se pregunta además la base y la altura
• Si es un rectángulo se pregunta su largo y su ancho
• Si es un círculo se pregunta su radio, considerando el valor de
pi = 3.14

Después de leer todos los datos despliegue el nombre de la


figura con el área mayor
35
¿Que subprogramas creaste?
En este ejercicio es muy conveniente usar la técnica de
dividir para conquistar, es decir, separar nuestro
programa en uno o más subprogramas que realicen
tareas específicas para cumplir con lo solicitado

¿Qué subprogramas pudiste crear?


¡Funciones!
Unidad 3: Subprogramas
Parámetros otra vez
• ¿Hasta el momento hemos enviado parámetros de
forma deliberada, que sucede si comenzamos a asignar
el valor enviado a una variable?
Parámetros predefinidos
• Es posible igualmente predefinir un valor en la misma
función.
Multiples retornos
• Es posible igualmente retornar multiples valores desde
una función.

Esto es una Tupla


La tupla es algo que ya hemos
usado
• Recuerdan en la lectura de archivos cuando usamos la
variable partes[n]
Datos sobre Tuplas

• Las tuplas nos permiten almacenar diferentes tipos de


datos.
• Pero tienen una gran restricción, no pueden ser
modificadas directamente, por lo que debemos
reasignarlas o solo utilizarlas para alojar datos
constantes.
Asignando en una línea
• También podemos asignar los elementos todos de una
vez:
Funciones en Funciones
• Podemos incluso enviar una función a otra función.

Aquí podemos ver como


definimos una función suma
luego una función
mostrar_suma, a continuación
asignamos la función suma a la
variable “sumador” y luego la
enviamos como parámetro de la
función mostrar_suma donde
finalmente es utilizada para
sumar 1 y 2.
Argumentos
• Los argumentos son las variables recibidas por nuestra
función, por ejemplo en la función suma las variables
num1 y num2 son los argumentos de nuestra función.

• De cierta forma esto nos limita, ya que tenemos que


saber de antemano que vamos a recibir y nuestra
funcion se prepara de acuerdo a eso.
N Argumentos
• ¿Qué sucede cuando no sabemos cuantos argumentos vamos a recibir?
• Python ha pensado en esto y es posible recibir n cantidad de
argumentos haciendo uso del *.
Convenciones
• La convención para cuando necesitamos ingresar N argumentos ya esta
definida:
• 1.-Para cuando los argumentos no están identificados y se asignan a una tupla
es *args:

tupla

• 2.-Para cuando los argumentos están identificados con un nombre de variable


y pueden ser accedidos por estos, es **kwargs:

????
Diccionarios
• Al utilizar **kwargs hemos recibido un formato muy diferente a las tuplas que
teníamos antes, este formato se llama diccionario y sirve para almacenar
llaves y su respectivo valor.

• El acceso a sus variables se hace de forma parecida a las tuplas pero la


diferencia es que se debe indicar el valor de la llave no la posición:
¿Y si el valor no existe?
• Cuando intentamos acceder a un valor que no existe en
el diccionario obtendremos un error:

• Para evitar esto podemos utilizar la funcion de


diccionario get()
Los diccionarios son
modificables
• A diferencia de las tuplas el diccionario podemos
modificarlo, por ejemplo podríamos eliminar un
elemento:
¿Y si no sabemos que trae el
diccionario?
• Si no sabemos que trae el diccionario y necesitamos sus
llaves existe la función keys() y si necesitamos sus
valores existe la función values():
Y que hago con esa respuesta?
• Lo que nos devuelven estas funciones podemos
convertirlo en tupla para trabajarlo:
¿Y como agregamos elementos?
• Para agregar elementos podemos utilizar la función
update() enviando un nuevo elemento de diccionario:
Funciones anidadas
• Hasta el momento hemos utilizado funciones anidadas sin saber que son
anidadas como por ejemplo el procedimiento print() que imprime por pantalla
y lo utilizamos en la clase anterior dentro de una función creada por nosotros.
Import
• Finalmente es una buena practica alojar todas nuestras
funciones genéricas en un archivo .py externo a nuestra
solución principal, de esta forma creamos una ‘librería’
de funciones, una vez que tenemos nuestro archivo
creado podremos importarlo a nuestra solución:

SR.py ejemplo.py
Otra forma de hacer Import
• Si bien es posible iniciar con la sentencia Import y
asignar su valor a una variable también podemos ‘traer’
elementos específicos de nuestra ‘librería’:
La estructura de la librería
• Las librerías normalmente
tienen cierta estructura la
cual se muestra a
continuación:
1. La ruta del interprete
2. La documentación de la
librería
3. Metadata de la librería
4. Funciones
Librerías
• Ahora que sabemos crear nuestras propias librerías
comprendemos un poco mas como funcionan y estamos
preparados para conocer algunas:
Mas librerias
• Una librería muy útil es la librería time la cual nos
permite controlar el tiempo de ejecución.
numpy
• Y una de las mas importantes la librería que utilizaremos
en el modulo 4 de nuestra asignatura, NumPy, esta
librería nos permite manejar vectores y arreglos.
Ejercicios
Realice un programa en Python:

1. Que muestre por pantalla si un número es par o impar, utilizar una función.

2. Que rellene un diccionario de 20 enteros, utilizar un procedimiento.

3. Que muestre una tabla de multiplicar de un número cualquiera por pantalla, el


número se pedirá en el programa principal.

4. Que muestre 3 números ordenados de ascendentemente y descendentemente, utilizar


un procedimiento para cada operación.

5. Que verifique que un carácter introducido es un número, utilizar funciones.

6. Que transforme un número del 0 al 999 a números romanos, utilizar funciones.

Você também pode gostar