sesión 15: funciones (1). 2009/1 circuitos digitales iii 2010/1 circuitos digitales iii 2010/1...
TRANSCRIPT
Informática ISesión 15: Funciones (1)
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Ejemplos
Partes de una función
Funciones
Introducción a las funcionesIntroducción a las funciones
A continuación…A continuación…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Estructuras Básicas de los programasEstructuras Básicas de los programas
EncabezadoTitulo:Autor:Fecha:Descripción:
Ingreso de DatosProcesoInforme de resultados
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Se tiene un solo archivo fuente. Todo lo que hace el programa se implementa
dentro de la función principal. Sólo hemos declarado "variables locales".
Estructuras de los programas vista hasta el momento
Estructuras de los programas vista hasta el momento
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
print(" Ingrese valor: ") x = int(input()) print(" valor: ", x)
print(" Ingrese valor: ") y = int(input()) print(" valor: ", y)
print(" La suma es: ") z = x+y print(" valor: ", z)
Código Repetitivo y engorroso
1
1
2
2
2
Problemas de esta metodologíaProblemas de esta metodologíaRepetición de código
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Mejorar el programa de las raices de modo que calcule la raiz cuadrada, la raiz cubica para cualquier valor de x y epsilon.
6
# Ingreso de datosx = float(input("Ingrese el numero: ")) epsilon = float(input("Ingrese el valor de epsilon: "))
# Parte del programa que calcula la raiz cuadradaguesses = 0 low = 0.0 high = max(1.0, x) ans = (high + low)/2.0 while abs(ans**2 - x) >= epsilon: guesses += 1 if ans**2 < x: low = ans else: high = ans ans = (high + low)/2.0
# Despliegue de la raiz cuadradaprint()print(ans, 'es aproximadamente la raiz cuadrada de', x )print('Hubo', guesses, 'intentos')...
Problemas de esta metodologíaProblemas de esta metodología
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia7
...# Parte del programa que calcula la raiz cubicaguesses2 = 0 low2 = 0.0 high2 = max(1.0, x) ans2 = (high2 + low2)/2.0 while abs(ans2**3 - x) >= epsilon: guesses2 += 1 if ans2**3 < x: low2 = ans2 else: high2 = ans2 ans2 = (high2 + low2)/2.0
# Despliegue de la raiz cubicaprint()print(ans2, 'es aproximadamente la raiz cubica de', x )print('Hubo', guesses2, 'intentos')
Problemas de esta metodologíaProblemas de esta metodología
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Salida en pantalla y valores finales de las variable del programa anterior.
8
Problemas de esta metodologíaProblemas de esta metodología
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Reutilizar un código ya hecho en otro programa más grande:
los nombres de las variables deben ajustarse al nuevo programa
copiar el mismo código en todos los lugares donde se necesite
si se quiere modificar el código que se copió, será necesario modificar todas las copias
9
Problemas de esta metodologíaProblemas de esta metodología
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Solución al problema: USO DE FUNCIONES
Solución al problema: USO DE FUNCIONES
• Programación repetida.• A medida que el problema se hace mas
complejo la solución algorítmica tiende a crecer mucho y hacerse mas difícil de entender.
• Poca reutilización de código.
Problemas de esta metodologíaProblemas de esta metodología
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
2• Al hacer modificaciones es más fácil sobre
un módulo en particular que en todo el algoritmo.
3
• En cuanto a los resultados, se probarán mucho mejor comprobando si cada módulo da el resultado correcto que si se intenta probar de un golpe todo el programa
1• Al dividir el problema en módulos o partes
se comprende más fácilmente
Ventajas del uso de funcionesVentajas del uso de funciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
PROCESO
MOD 1
MOD 1.1
MOD 1.2
MOD 1.1.1
MOD 1.1.2
MOD 1.2.1
MOD 1.2.2
MOD 2
MOD 2.1
MOD 2.2
MOD 2.1.1
MOD 2.1.2
MOD 2.2.1
MOD 2.2.2
=
=
=
=
=
=
=
Ventajas del uso de funcionesVentajas del uso de funciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Ejemplos
Partes de una función
Funciones
Introducción a las funciones
Funciones
A continuación…A continuación…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Conjunto de instrucciones que realizan una acción especifica y que tienen un nombre que las representa.
Una función sirve para facilitar la programación, ahorrar espacio, tiempo y para facilitar la portabilidad de los programas.
print (“El valor es:”, x)
FuncionesFunciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
La forma más razonable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar "Programación Top – Down”.
Esto implica que, luego de conocer cual es la meta a alcanzar, se subdivide esta en varias tareas.
Luego a estas se las vuelve a dividir en otras menores. Y así se continúa hasta llegar a tener un gran conjunto de pequeñas y simples tareas.
Luego sólo queda resolver cada una de ellas por separado.
FuncionesFunciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
principal()
f1() f2() f3()
f4()
FuncionesFunciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
______return
-------- -------- Func1() -------- -------- Func2() -------- -------- ----
Func3()----return
______return
Func3
Func1
Func2
Programa
17
FuncionesFunciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
FuncionesFunciones
El uso de funciones permite dividir grandes tareas.
Se ahorra programación repetida. Se evita reinventar la rueda gracias a la
reutilización de código. Hace que los programas sean más modulares,
mas fáciles de leer y mas fáciles de editar .
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
FuncionesFuncionesLas funciones permiten agrupar una serie de operaciones de tal manera que se puedan utilizar más tarde sin tener que preocuparnos por cómo están implementadas, simplemente sabiendo lo que harán.
El uso de funciones es una práctica común y recomendable ya que permite modularizar nuestro código, simplificando así el desarrollo y la depuración del mismo.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Programa que recibe el radio de una esfera y calcula el volumen y el área de la superficie de la esfera y los muestra.
r = leaRadio (); v= calVolumen (r);a= calArea (r);muestreArVol (a,v);
EjemploEjemplo
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
FuncionesFunciones
Una función es un segmento de código que ha sido encapsulado con un nombre para ser fácilmente reutilizado en diferentes partes de un programa o en otros programas.
21
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Ejemplos
Partes de una función
Funciones
Introducción a las funciones
Partes de una función
A continuación…A continuación…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Partes de una FunciónPartes de una Función
En el momento de crear mi_función debo seguir 2 pasos fundamentales:
1• Definición de la función
2• Llamado a la función
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Definición de una FunciónDefinición de una Función
def nombre(param_1, param_N):
Palabra reservada que indica que estamos creando una función (definición de una función)
def
Es el nombre de la función es el nombre que le damos al conjunto de instrucciones que ella representa.
nombre
Son todos aquellos parámetros que la función necesita para su funcionamiento. Si la función no necesita parámetros se dejan los paréntesis vacios.
parametros
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Definición de una FunciónDefinición de una Función
Definición de una Función:
Retomando la función que calcula el máximo de dos números anteriormente mostrada:
25
def nombre de la funcion(lista de parametros formales): cuerpo de la funcion
nombre de la función Parametros
Cuerpo de la funcion
def mini(x, y): if x < y: return x else: return y
x
ymenor
mini
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Definición de una FunciónDefinición de una Función
Una función que calcula el máximo de dos números sería:
26
def mini(x, y): if x < y: return x else: return y
Inputs
Process
Output
definición de una función
nombre de la función
datos de entrada (parámetros formales)
dato de salida e interrupción de la función
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
def mi_funcion(i, j): def otra_funcion(): def otra_mas(p) ; def la_ultima_funcion(z, y, x) ;
def nombre(lista_Parametros):
Ejemplo definición de funcionesEjemplo definición de funciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Una vez se ha definido la función, podemos pasar a la fase en el que la funcion ya se puede utilizar.
varRetorno = nomb_funcion(variables)
Para hacer que las instrucciones contenidas en una función, se ejecuten en determinado momento, no es necesario más que escribir su nombre como una línea de sentencia en el programa.
raiz=sqrt(a)print (¨el valor es:¨, val )
2 Llamado a la funciónLlamado a la función
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia29
Convencionalmente los nombres de las funciones se escriben en minúscula y siguen las reglas de las variables, se distinguen de las variables porque van seguidas de parentesis.
Llamado a la funciónLlamado a la función
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Ejemplos
Partes de una función
Funciones
Introducción a las funciones
Ejemplos
A continuación…A continuación…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Funciones en PythonFunciones en PythonEjemplo 4 – Recapitulando un poco: Dado el siguiente código: ¿Cuales serán los valores correspondientes a las variables a, b, c, d y e? ¿Cuál será la salida en pantalla del programa?
31
def mini(x,y): if (x<y): menor = x return menor else: menor = y return menor
x, y, z = 1, 2, 3 a = mini(1,2)b = mini(x + z,y - 1)c = mini(4,(x+1)*z)d = mini(mini(2,3),4)e = mini(mini(2,3),mini(z+y,3))for i in range(4): print(mini(i,z)) z-=1
Código online
Archivo: example4_clase13.py
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Funciones en PythonFunciones en PythonEjemplo 5 – Sin funciones: Desarrolle un programa que convierta °C a °F. Recuerde que la expresión de conversión es: °F = (9/5)°C + 32.
32
C = float(input("Ingrese los °C: "))F = (9.0/5)*C + 32print(C,"°C =",F,"°F")
Código online
Archivo: example5_clase13.py
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Funciones en PythonFunciones en PythonEjemplo 6 – Con funciones: Desarrolle un programa que convierta °C a °F. Recuerde que la expresión de conversión es: °F = (9/5)°C + 32. Sin embargo, para este caso haga uso de funciones
33
def celcius_to_fahrenheit(c): f = (9.0/5)*c + 32 return f
C = float(input("Ingrese los °C: "))F = celcius_to_fahrenheit(C)print(C,"°C =",F,"°F")
Código online
Archivo: example6_clase13.py
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Using functionsUsing functions
34
Ejemplo 7 – Sin funciones: Hacer un programa que solicite la edad y el peso de dos personas y devuelva el menor peso y la menor edad de los ingresados.
age1 = int(input('Enter age of first person: ')) weight1 = int(input('Enter weight of first person: ')) age2 = int(input('Enter age of second person: ')) weight2 = int(input('Enter weight of second person: ')) if age1 < age2: young = age1 else: young = age2 if weight1 < weight2: slim = weight1 else: slim = weight2 print('The young one is', young, 'years old') print('and the slim one weights', slim, 'kilos')
Archivo: example7_clase13.py
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Using functionsUsing functions
35
Ejemplo 7 – Con funciones: Hacer un programa que solicite la edad y el peso de dos personas y devuelva el menor peso y la menor edad de los ingresados.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Using functionsUsing functions
36
Ejemplo 7 – Con funciones:
Parte 1: Definición de la función
def mini(x, y): if x<y: menor = x else: menor = y return menor
x
ymenor
mini
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Using functionsUsing functions
37
Ejemplo 8 – Con funciones:
Parte 2: Haciendo uso de las funciones creadas
def mini(x, y): if x<y: return x else: return y age1 = int(input('Enter age of first person: '))weight1 = int(input('Enter weight of first person: ')) age2 = int(input('Enter age of second person: ')) weight2 = int(input('Enter weight of second person: ')) young = mini(age1, age2) slim = mini(weight1, weight2) print('The young one is', young, 'years old') print('and the slim one weights', slim, 'kilos')
x
ymenor
mini
age1
age2young
Archivo: example8_clase13.py
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Using functions - Comparison
Using functions - Comparison
38
Sin Funciones Con Funciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
Using functions - Comparison
Using functions - Comparison
39
def mini(x, y): if x<y: return x else: return y age1 = int(input('Enter age of first person: '))weight1 = int(input('Enter weight of first person: ')) age2 = int(input('Enter age of second person: ')) weight2 = int(input('Enter weight of second person: ')) young = mini(age1, age2) slim = mini(weight1, weight2) print('The young one is', young, 'years old') print('and the slim one weights', slim, 'kilos')
age1 = int(input('Enter age of first person: ')) weight1 = int(input('Enter weight of first person: ')) age2 = int(input('Enter age of second person: ')) weight2 = int(input('Enter weight of second person: ')) if age1 < age2: young = age1 else: young = age2 if weight1 < weight2: slim = weight1 else: slim = weight2 print('The young one is', young, 'years old') print('and the slim one weights', slim, 'kilos')
definición de la función
invocación o llamado de la función
parámetros formales
argumentos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Informática I Universidad de Antioquia
• Realice programa que sume dos numeros. Hagalo utlizando una funcion que se llame suma()
Definición
Llamado
EjemplosEjemplos