Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
30/03/20
Ing. Roberto Martínez Román [email protected] 1
D I V I D E Y V E N C E R Á S
Funciones
Ing. Roberto Martínez Román - [email protected]
Capítulo 3 y 6 del libro interactivo
1
¿Qué es una función?
� Las funciones en matemáticas, definen relaciones entre valores. Por ejemplo,
f(x) = sin(x)Si hacemos que x sea un valor particular como 45 grados, la función realiza un cálculo y nos regresa el resultado 0.7071.
Decimos que x es el argumento y que la función regresa un valor.
Ing. Roberto Martínez Román - [email protected]
2
30/03/20
Ing. Roberto Martínez Román [email protected] 2
Funciones
Ing. Roberto Martínez Román - [email protected]
� Una función es un grupo de instrucciones autocontenidas dentro del programa que realiza una tarea única.
� Las funciones ayudan al programador a resolver un problema de manera más simple. En lugar de escribir un programa que resuelve un problema grande, se escriben varias funciones que resuelven problemas pequeños.
3
Tomado de: Starting Out with Python, 2nd. editionCopyright 2012, Pearson Education,
Funciones
Ing. Roberto Martínez Román - [email protected]
4
30/03/20
Ing. Roberto Martínez Román [email protected] 3
Funciones en Python
� Las funciones en Python tienen las siguientes características:¡ Representan una operación simple.¡ Toma cero o más parámetros como entrada.¡ Pueden regresar, o no, un valor de salida.
La función es importante, porque representa el concepto de encapsulamiento.
Ing. Roberto Martínez Román - [email protected]
FunciónEntrada Salida
5
Ventajas de las funciones
Ing. Roberto Martínez Román - [email protected]
Código más simple Reúso de código
Mejores pruebas
Desarrollo más rápido
Trabajo en equipo
6
30/03/20
Ing. Roberto Martínez Román [email protected] 4
Nombre de funciones
Ing. Roberto Martínez Román - [email protected]
� Seguimos las mismas reglas que definimos para las variables. Y agregamos:¡ Deben nombrarse con verbos en infinitivo.
÷calcularImpuesto÷resolverEcuacion÷sumarListaDeValores÷promediar÷ leerParciales÷esMayor (funciones con tipo de regreso booleano)÷estaEnRango
7
Definiendo funciones
Ing. Roberto Martínez Román - [email protected]
Indentación obligatoria
� Para definir una función en Python seguimos este formato:
def nombreDeFuncion(parámetros) :instruccionesinstrucciones
return valor # Opcional
8
30/03/20
Ing. Roberto Martínez Román [email protected] 5
Programa con funciones
Ing. Roberto Martínez Román - [email protected]
def main() : # Declaración de la función
print("Hola")print("Mundo")
main() # Llama a la función main
9
Dibujando con la tortuga
Ing. Roberto Martínez Román - [email protected]
� Escribe código con funciones para dibujar las siguientes figuras.
dibujarCuadro100 dibujarCuadro50
100 px 50 px
10
30/03/20
Ing. Roberto Martínez Román [email protected] 6
Comandos de la tortuga
Ing. Roberto Martínez Román - [email protected]
https://docs.python.org/3.6/library/turtle.html
11
Encapsular funcionalidad
Ing. Roberto Martínez Román - [email protected]
� Escribe una función para trazar un cuadro de longitud 100 y después úsala para reproducir las figuras anteriores.
� Modifica la función anterior para que reciba como parámetro la longitud del cuadro que va a dibujar.
12
30/03/20
Ing. Roberto Martínez Román [email protected] 7
La función
Ing. Roberto Martínez Román - [email protected]
import turtleturtle.shape("turtle")
def dibujarCuadrado(longitud):turtle.forward(longitud)turtle.left(90)turtle.forward(longitud)turtle.left(90)turtle.forward(longitud)turtle.left(90)turtle.forward(longitud)turtle.left(90)
13
Misión 03
Ing. Roberto Martínez Román - [email protected]
� Revisar página del curso para verificar las fechas de entrega. Martes,
� Examen jueves 26 de marzo, 2020. Sólo práctico.
14
30/03/20
Ing. Roberto Martínez Román [email protected] 8
Función que regresa un valor
Ing. Roberto Martínez Román - [email protected]
def convertirPulgadasCm(pulgadas) :cm = 2.54 * pulgadasreturn cm
def main() :pulg = int(input("¿Cuántas pulgadas quiere convertir? "))cm = convertirPulgadasCm(pulg)print("%d pulgadas equivalen a %.2f cm" % (pulg, cm))
# Programa principalmain()
Definición de la función
Llamada a la función
15
Función que regresa un valor
Ing. Roberto Martínez Román - [email protected]
def convertirPulgadasCm(pulgadas) :cm = 2.54 * pulgadasreturn cm
def main() :pulg = int(input("¿Cuántas pulgadas quiere convertir? "))cm = convertirPulgadasCm(pulg)print("%d pulgadas equivalen a %.2f cm" % (pulg, cm))
# Programa principalmain()
Parámetro
Argumento
Una copia del valor
16
30/03/20
Ing. Roberto Martínez Román [email protected] 9
Ejercicios
Ing. Roberto Martínez Román - [email protected]
� Escribe una función que convierta grados Fahrenheit a grados Celsius.
� Escribe una función que convierta dólares canadienses a pesos mexicanos.
� Escribe una función que reciba la edad de una persona en años y meses enteros, y que regrese el número aproximado de días que ha vivido. Agrega la aproximación por años bisiestos.
17
Diseñando programas usando funciones
Ing. Roberto Martínez Román - [email protected]
� Diseño Arriba-Abajo. Top-Down.
main()
imprimir()calcularNomina()leerDatos()
leerEmpleados() leerPagoHora() leerHoras()
18
30/03/20
Ing. Roberto Martínez Román [email protected] 10
Ejercicio
Ing. Roberto Martínez Román - [email protected]
� Escribe un programa que lea una imagen que imprima en la pantalla lo siguiente:¡ Ancho de la imagen.¡ Alto de la imagen.¡ Tamaño de la imagen.¡ La imagen en escala de grises.¡ El espejo de la imagen.
19
La librería PIL
Ing. Roberto Martínez Román - [email protected]
� Para utilizar algunas funciones importamos la clase Image de la librería PIL¡ from PIL import Image
� Para cargar una imagen usamos la función open¡ img = Image.open("archivo.jpg")
� Para funciones como; grayscale, mirror, invert, scale, posterize y solarize usamos la clase ImageOps¡ imgGris = ImageOps.grayscale(img)
20
30/03/20
Ing. Roberto Martínez Román [email protected] 11
Ejercicio
Ing. Roberto Martínez Román - [email protected]
� Elabora un diseño Top-Down para el siguiente problema.¡ Escribe un programa que pida al usuario la altura de un triángulo
equilátero, lo dibuja en la pantalla e imprime el área y perímetro.
¡ Las funciones trigonométricas están en la librería math.¡ Las funciones trigonométricas reciben radianes como parámetro.
alturaÁrea = 5773.50Perímetro = 346.41
21
Solución
Ing. Roberto Martínez Román - [email protected]
main
leer altura dibujar
calcularLado dibujarTriangulo
calcularArea calcularPerimetro imprimir
altura
altura
lado
altura
lado
altura área
altura
perímetro
área,
perímetro
22
30/03/20
Ing. Roberto Martínez Román [email protected] 12
Variables locales
Ing. Roberto Martínez Román - [email protected]
� Las variables locales son creadas dentro de una función y sólo existen dentro de esa función.
� El ámbito de la variable se refiere a la parte del programa en la cual la variable es accesible o conocida.
� El ámbito de una variable local es la función en la cual es creada.
� Puede haber variables locales en diferentes funciones con el mismo nombre.
23
Parámetros
Ing. Roberto Martínez Román - [email protected]
� Los parámetros tienen el mismo ámbito de una variable local.
� Los parámetros reciben una copia del argumento, por lo tanto, los cambios que haces a un parámetro NO afectan al argumento.
24
30/03/20
Ing. Roberto Martínez Román [email protected] 13
Ámbito de las variables locales y parámetros
Ing. Roberto Martínez Román - [email protected]
def funcion_1():a = 10# instruciones# instruciones# instruciones
def funcion_2(p):a = 5q = 0# instrucionesprint(a) # local (5)# instruciones
def funcion_3(c):p = 0 # localprint(a) # error# instrucionesprint(q) # errorprint(p) # local (0)
25
Variables globales
Ing. Roberto Martínez Román - [email protected]
� Las variables globales son accesibles en todo el programa. Incluye todas las funciones.
� El ámbito de una variable global es TODO el programa.
valor = 20def funcion():
print(valor) # accede a la variable global (20)
funcion()print(valor) # accede a la variable global (20)
26
30/03/20
Ing. Roberto Martínez Román [email protected] 14
Ámbito de las variables locales y parámetros
Ing. Roberto Martínez Román - [email protected]
a = 50
def funcion_1():b = 10 # locala = 5 # localprint(a) # 5
def funcion_2(c):p = 0 # localprint(a) # global (50)print(c) # local (7)
print(a) # ok (50)funcion_1()funcion_2(7)print(a) # ok (50)
27
Variables globales
Ing. Roberto Martínez Román - [email protected]
� Cuando una función requiere modificar el valor de una variable global debe hacer un paso adicional.
valor = 20def funcion():
valor = 5print(valor) # 5
print(valor) #global (20)funcion()print(valor)
valor = 20def funcion():
global valorvalor = 5print(valor) # 5!
print(valor) #global (20)funcion()print(valor)
Quiero modificar la
variable global
28
30/03/20
Ing. Roberto Martínez Román [email protected] 15
Constantes globales
Ing. Roberto Martínez Román - [email protected]
� Se definen al inicio del programa y la convención es nombrarlas con mayúsculas.
IVA = 0.16IMPUESTO_LOCAL = 0.07def funcion(precio) :
total = precio + precio*IVAreturn total
totalAPagar = funcion(250)
29
Práctica en parejas
Ing. Roberto Martínez Román - [email protected]
� Diseña e implementa un programa que le pide al usuario el subtotal de una compra. El programa debe calcular el impuesto federal y el impuesto estatal. Suponga que el impuesto federal es 17% y el estatal es 4%. El programa debe imprimir el subtotal de la compra, el impuesto federal, el impuesto estatal, el total de impuestos y el total de la compra (la suma del subtotal más los impuestos)
¡ Especificación¡ Diseño TopDown. Tantas funciones como sea posible.¡ Algoritmo¡ Codificación
30
30/03/20
Ing. Roberto Martínez Román [email protected] 16
Ejercicio (Diseño Top-Down)
When you say you are 18 years old, you are really saying the Earth has circled the Sun 18 times. Since other planets take fewer or more days than Earth to travel around the Sun, your age would be different on other planets. You can compute how old you are on other planets by the formula:y = x * 365 / d
where x is the age on Earth, y is the age on planet Y, and d is the number of Earth days the planet Y takes to travel around the Sun. Write an application that inputs the user’s Earth age and print outs his or her age on Mercury, Venus, Jupiter, and Saturn. The values for d are listed in the table.
Ing. Roberto Martínez Román - [email protected]
Planeta d (Approximate number of earth days for this planet to travel around the sun)
Mercury 88
Venus 225
Jupiter 4,380
Saturn 10,767
31