divide y vencerÁs
TRANSCRIPT
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]
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]
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
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
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
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.
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
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.
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
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.
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
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)
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)