divide y vencerÁs

13
05/02/19 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 ¿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]

Upload: others

Post on 19-Nov-2021

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DIVIDE Y VENCERÁS

05/02/19

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

¿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]

Page 2: DIVIDE Y VENCERÁS

05/02/19

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.

Tomado de: Starting Out with Python, 2nd. editionCopyright 2012, Pearson Education,

Funciones

Ing. Roberto Martínez Román - [email protected]

Page 3: DIVIDE Y VENCERÁS

05/02/19

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

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

Page 4: DIVIDE Y VENCERÁS

05/02/19

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

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

Page 5: DIVIDE Y VENCERÁS

05/02/19

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

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

Page 6: DIVIDE Y VENCERÁS

05/02/19

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

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.

Page 7: DIVIDE Y VENCERÁS

05/02/19

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)

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

Page 8: DIVIDE Y VENCERÁS

05/02/19

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

Parámetro

Argumento

Una copia del valor

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.

Page 9: DIVIDE Y VENCERÁS

05/02/19

Ing. Roberto Martínez Román [email protected] 9

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

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

Page 10: DIVIDE Y VENCERÁS

05/02/19

Ing. Roberto Martínez Román [email protected] 10

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

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.

Page 11: DIVIDE Y VENCERÁS

05/02/19

Ing. Roberto Martínez Román [email protected] 11

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.

Á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):q = 0# instrucionesprint(a) # error# instruciones

def funcion_3(c):p = 0 # localprint(a) # error# instrucionesprint(q) # error

Page 12: DIVIDE Y VENCERÁS

05/02/19

Ing. Roberto Martínez Román [email protected] 12

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

funcion()print(valor) # accede a la variable global

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

def funcion_2(c):p = 0 # localprint(a) # globalprint(c) # local

print(a) # okfuncion_1()funcion_2(7)print(a)

Page 13: DIVIDE Y VENCERÁS

05/02/19

Ing. Roberto Martínez Román [email protected] 13

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) #local!!!

funcion()print(valor) #global!!!

valor = 20def funcion():

global valorvalor = 5print(valor) #global!

funcion()print(valor) #global!

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

def funcion(precio) :total = precio + precio*IVAreturn total

totalAPagar = funcion(250)