La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sesión 15: Funciones (1). 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad.

Presentaciones similares


Presentación del tema: "Sesión 15: Funciones (1). 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad."— Transcripción de la presentación:

1 Sesión 15: Funciones (1)

2 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos Partes de una función Funciones Introducción a las funciones A continuación…

3 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Estructuras Básicas de los programas Encabezado Titulo: Autor: Fecha: Descripción: Ingreso de Datos Proceso Informe de resultados

4 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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

5 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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 1 1 2 2 2 2 2 2 Problemas de esta metodología Repetición de código

6 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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 datos x = float(input("Ingrese el numero: ")) epsilon = float(input("Ingrese el valor de epsilon: ")) # Parte del programa que calcula la raiz cuadrada guesses = 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 cuadrada print() print(ans, 'es aproximadamente la raiz cuadrada de', x ) print('Hubo', guesses, 'intentos')... # Ingreso de datos x = float(input("Ingrese el numero: ")) epsilon = float(input("Ingrese el valor de epsilon: ")) # Parte del programa que calcula la raiz cuadrada guesses = 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 cuadrada print() print(ans, 'es aproximadamente la raiz cuadrada de', x ) print('Hubo', guesses, 'intentos')... Problemas de esta metodología

7 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 7... # Parte del programa que calcula la raiz cubica guesses2 = 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 cubica print() print(ans2, 'es aproximadamente la raiz cubica de', x ) print('Hubo', guesses2, 'intentos')... # Parte del programa que calcula la raiz cubica guesses2 = 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 cubica print() print(ans2, 'es aproximadamente la raiz cubica de', x ) print('Hubo', guesses2, 'intentos') Problemas de esta metodología

8 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Salida en pantalla y valores finales de las variable del programa anterior. 8 Problemas de esta metodología

9 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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ía

10 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 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ía

11 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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 funciones

12 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 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 funciones

13 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos Partes de una función Funciones Introducción a las funciones Funciones A continuación…

14 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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) Funciones

15 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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.  Funciones

16 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia principal() f1() f2() f3() f4() Funciones

17 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia ______return______return -------- Func1() -------- Func2() -------- Func1() -------- Func2() -------- ----Func3()----return----Func3()----return______return______return Func3 Func1 Func2 Programa 17 Funciones

18 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Funciones  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.

19 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Funciones Las 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.

20 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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); Ejemplo

21 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Funciones 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

22 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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…

23 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Partes 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

24 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Definició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

25 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Definició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 y menor mini

26 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Definició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

27 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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 funciones

28 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informá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ón

29 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 29 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ón

30 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos Partes de una función Funciones Introducción a las funciones Ejemplos A continuación…

31 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Funciones en Python Ejemplo 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 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

32 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Funciones en Python Ejemplo 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 + 32 print(C,"°C =",F,"°F") C = float(input("Ingrese los °C: ")) F = (9.0/5)*C + 32 print(C,"°C =",F,"°F") Código online Archivo: example5_clase13.py

33 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Funciones en Python Ejemplo 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") 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

34 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Using functions 34 Ejemplo 7Ejemplo 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') 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

35 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Using 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.

36 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Using 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 def mini(x, y): if x<y: menor = x else: menor = y return menor x y menor mini

37 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Using functions 37 Ejemplo 8Ejemplo 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') 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 y menor mini age1 age2 young Archivo: example8_clase13.py

38 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Using functions - Comparison 38 Sin Funciones Con Funciones

39 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 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') 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') 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

40 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Realice programa que sume dos numeros. Hagalo utlizando una funcion que se llame suma() Ejemplos


Descargar ppt "Sesión 15: Funciones (1). 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad."

Presentaciones similares


Anuncios Google