16
30/03/20 Ing. Roberto Martínez Román - [email protected] 1 DIVIDE Y VENCERÁ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

DIVIDE Y VENCERÁS · 2020-03-30 · [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

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 2: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 3: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 4: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 5: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 6: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 7: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 8: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 9: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 10: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 11: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 12: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 13: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 14: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 15: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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

Page 16: DIVIDE Y VENCERÁS · 2020-03-30 · rmroman@itesm.mx 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

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