0% encontró este documento útil (0 votos)
110 vistas24 páginas

10 Funciones Python

Este documento explica las funciones en programación y su utilidad. Las funciones permiten dividir un programa grande en módulos más pequeños y reutilizables llamados subprogramas. Esto facilita realizar cambios y correcciones en el programa, así como ensamblar programas grandes a partir de módulos probados. Las funciones reciben parámetros de entrada, ejecutan un conjunto de instrucciones y pueden devolver uno o más valores. Esto permite reutilizar código fácilmente invocando funciones desde otros lugares del programa o desde otros programas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
110 vistas24 páginas

10 Funciones Python

Este documento explica las funciones en programación y su utilidad. Las funciones permiten dividir un programa grande en módulos más pequeños y reutilizables llamados subprogramas. Esto facilita realizar cambios y correcciones en el programa, así como ensamblar programas grandes a partir de módulos probados. Las funciones reciben parámetros de entrada, ejecutan un conjunto de instrucciones y pueden devolver uno o más valores. Esto permite reutilizar código fácilmente invocando funciones desde otros lugares del programa o desde otros programas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

Funciones

Fundamentos de programación
Funciones
• A medida que crece un programa es hace necesario introducir cambios o
modificaciones a los programas, como por ejemplo:
• Reparar errores
• hacer optimizaciones o
• adaptaciones o quizás se quiera agregar nueva funcionalidad;
• Entonces ocurre en la vida real que los programas muy grandes son difíciles
de mantener en el tiempo, ya que, al hacerles modificaciones, con mucha
frecuencia se introducen efectos colaterales inesperados e involuntarios
(consistentes en errores obviamente no deseados), particularmente, cuando
los cambios los ha de hacer una persona diferente del autor inicial del
programa, que no conoce la estrategia seguida originalmente.
Funciones
• Para facilitar la tarea al hacer cambios, es altamente deseable trabajar
sobre programas pequeños o modulares, módulos fáciles de revisar y
de garantizar que funcionan correctamente.
• Estos módulos sirven para construir sistemas grandes mediante el
ensamblaje de programas grandes a partir de módulos pequeños,
cuyo correcto funcionamiento se ha garantizado previamente.
• Esto es similar a ensamblar un automóvil a partir de módulos, como
son carrocería, ruedas, frenos, motor, suspensión, etc. De esta
manera se llega a producir programas robustos a partir de librerías de
funciones previamente manufacturadas, probadas y garantizadas.
Funciones
• Por esto se habla de reutilización de código, ya que los módulos se
pueden utilizar en varias partes del mismo sistema y aun en sistemas
diferentes, garantizando resultados correctos, sin necesidad de volver
a construirlos y probarlos desde cero.
• Esto exige que los programas se documenten, (al guardar la interior
del programa el análisis hecho inicialmente y el diccionario de
variables)
Funciones
• Los módulos en programación se llaman funciones.
• Una función es un subprograma (o sea parte de un programa) que al
ejecutarlo, devuelve un resultado a partir de unos datos de entrada.
• Podemos concibir una función como una caja negra, a la cual le
ingresan unos datos de entrada, y produce una salida consistente, que
debe cumplir con las postcondiciones establecidas.
Funciones
• En la definición de una función las variables de entrada, se llaman
parámetros formales.
• Los parámetros son una lista de variables, separada por comas que van
entre paréntesis, por ejemplo:
• (a,b,c,d).
• Normalmente una función devuelve una respuesta, pero en Matlab
pueden ser varias respuestas.
• Si se tuvieran varias respuestas, estas se encierran entre corchetes.
• Ejemplo: [NF, NC]=size(A) % Significa que devuelve 2 respuestas, que el
programador definió que se guardaran en las variables NF y NC, donde se definen
sus nombres a conveniencia.
Funciones
• La sintaxis en Python es:
• def nombre_de_la_funcion(lista de variables de entrada)
• “def” es una palabra reservada de python
• Ejemplo para la función factorial en python:

%Clase 10 -- funciones
def  factorial(n):
    facto=1 #Multiplicación
    for k in range(1,n+1):
        facto=facto*k #Se calcula el factorial
Funciones
• Una función puede guardarse como un programa normal en Python y
ser invocada desde otro programa con la palabra include.
• La función facto no retorna nada
• Si queremos que retorne el valor calculado debemos usar la palabra
return
%Semana 11 -- funciones
def  factorial(n):
    facto=1 #Multiplicación
    for k in range(1,n+1):
        facto=facto*k #Se calcula el factorial
    return facto
Funciones Invocación
• Se escribe el nombre de la función y en seguida -y entre paréntesis, la
lista de datos de entrada separada por comas, que llamaremos
argumentos actuales; el resultado de la invocación de la función la
guardamos en otra variable:
• resp = facto(8)
• print(resp)
• En resumen, los datos con los que invocamos a la función, los
llamaremos argumentos o parámetros de entrada actuales.
• Al momento de invocar la función, se debe proporcionar un
argumento por cada parámetro formal que la función espera.
Funciones -- Invocación
• Por lo tanto, los parámetros formales y los argumentos actuales
deben coincidir en numero, orden y tipo, pero no en nombre, o sea,
parámetros formales y argumentos actuales no tienen que llamarse
con el mismo nombre.
• En el ejemplo del factorial, a la variable “n” de la función le copia el
valor 8.
• Luego se ejecutada la función, el resultado lo sostiene temporalmente
en la variable “facto” de la función,
• este valor se copia en la variable “resp” del programa principal,
antecitos de terminar su ejecución.
Funciones – Secuencia de Invocación
• Al momento de invocar una función, ocurre lo siguiente:
1. Python busca el archivo facto en el directorio corriente,
2. Carga o sube a memoria el código ejecutable de la función para poder ejecutarla.
3. Reserva espacio para los parámetros, en cuyas variables se almacena una copia de los argumentos con que
se invoca y también separa espacio para las variables auxiliares o de trabajo.
4. Procesa el código ejecutable, (Ojo: En el cuerpo de la función se debe almacenar la respuesta en la variable
de salida.)
5. Copia la respuesta a la variable del programa que la llamo.
6. Al terminar su ejecución, la función se destruye, o sea, la función se borra de memoria.
• Observe en la función del ejemplo, que la variable de salida se llama “facto”, y que en el cuerpo de
la función, se debe asignar un valor a facto, para que al terminar pueda devolver algún resultado.
• Las variables de la función, no se mezclan ni confunden con las del programa que la llamo, son
copias separadas, independientes que solo tienen vida, mientras se ejecuta la función y luego se
destruyen.
Funciones – Alcance de las variables
• Hay variables locales a cada función, esto es, solo existen en el ámbito de la
función, al terminar la función, esas variables dejan de existir.
• Hay variables globales, que son compartidas entre el programa principal y las
funciones, su manejo es de cuidado, ya que puede ocurrir que su valor lo
modifique otra función que el programador no sospecha de ella y eso hace su
diagnostico mas difícil.
• Al pasar datos a una función, se pasan por valor, es decir se crea una copia en
la función invocada a partir de la variable del programa que hace el llamado.
• Alternativamente, los datos se pueden pasar por referencia, es decir, a la
función se pasa la dirección en memoria donde esta el dato, esto es útil para
pasar arreglos grandes, para no duplicar la memoria de almacenamiento.
UTILIDAD DE LAS FUNCIONES
• Las funciones también son muy útiles cuando requerimos ejecutar
varias veces un trozo de código en el programa principal, como es el
caso de combinatorio(m,n), donde m y n tienen valores asignados
previamente.

def combi(m, n):


     resu =1
     resu= factorial(m)/(factorial(n)*factorial(m-n))
     return resu
#ejemplo funciones
def  factorial(n):
    facto=1 #Multiplicación
    for k in range(1,n+1):
        facto=facto*k #Se calcula el factorial
    return facto

def combi(n, m):


     resu =1
     resu= factorial(m)/(factorial(n)*factorial(m-n))
     return resu

def Pruebafacto():
    opc=0
    while(opc<3 ):
        print('Menu\n')
        print('1. Calculo del factorial\n')
        print('2. Es el Calculo de la combinatoria\n')
        print('3. Salir\n')
        opc= int(input('Digite su opcion'))
        match(opc):
            case 1:
                n= int(input('Digite el numero entero para calcular el factorial'))
                res=factorial(n)
                print('El factorial de', n , ' es' , res)
            case 2:
                print('Calculo de la combinatoria, basado en el factorial\n')
                n= int(input('digite un numero entero'))
                p= int(input('digite un número entero p'))
                resCom = combi(n,p)
                print('El resultado de la combinatoria de' , n, ' con ', p , 'es' , resCom)
       
            case _ :
                print('Usted no ha digitado una opción válida\n')
Retorno de valores
• Una función en Python puede retornar mas de un valor
• def mayor(vector):
•     mayor = vector[0]
•     pos=0
•     for i in range(1,len(vector)):
•         if vector[i] > mayor:
•             mayor = vector[i]
•             print("max=",mayor)
•             pos = i
•             print('pos', pos)
•     return pos , mayor

V =  [2,6,12,15,20,45,9]
• pos, max = mayor(V)
• print(pos , max)
Parámetros de entrada
• Una función puede tener más de un parámetro de entrada
• def my_function(fname, lname):
•     print(fname ," ", lname)

my_function("Emil","Refsnes")
Parámetros de entrada
• Una función pude tener un número de parámetros
indefinidos
• def my_function(*kids):
•     print("The youngest child is "+ kids[2])
• my_function("Emil","Tobias","Linus")
Parámetros de entrada
• Una función en python puede tener un valor predeterminado en un
parámetro
• def  factorial(n=5):
•     facto=1 #Multiplicación
•     for k in range(1,n+1):
•         facto=facto*k #Se calcula el factorial
•     return facto
• print(factorial())
Funciones Lambda o anónimas
• x = lambda a, b, c : a + b + c
• print(x(5, 6, 2))

• def myfunc(n):
•   return lambda a : a * n
• mydoubler = myfunc(2)
• print(mydoubler(11))

• mydoubler = myfunc(2)
• mytripler = myfunc(3)
• print(mydoubler(11))
• print(mytripler(11))
Ejercicios - todo deben ser funciones
• Hacer las siguientes funciones e invocarlas desde un menú solicitándole los datos al
usuario
1. Cálculo del área círculo
2. Hacer la función que calcula el n-esimo termino de fibonacci
3. Contar cuantas veces aparece n entre 1 y 100
4. Hacer una función que compare el tiempo de respuesta de dos algoritmos usando
calculo del tiempo, fibo y factorial
5. Dado un vector de letras, pasar las letras del vector que estén en minúsculas a
Mayúsculas.
6. Identificador de símbolos en una cadena de texto. Devuelve 1 si está el símbolo en la
cadena y 0 en caso contrario.
7. Identificar el tipo de triangulo: dados 3 lados definir el tipo de triangulo, isósceles,
escaleno, equilátero
Ejercicios
8. Buscar un determinado valor dentro de un vector; si lo encuentra, r tomará el valor de la posición en la
que se halla dicho valor dentro del vector. En caso contrario, r seguirá siendo 0. Usar la función que
desarrollamos en clase.
9. Insertar un nuevo valor en un vector, le entra un vector (v) y el valor a insertar (x)
10.Ordenar un vector usando la función Burbuja realizada en clase.
11.Insertar un nuevo valor en un vector ordenado, le entra v el vector ordenado y x el valor a insertar, si el
vector no esta ordenado hay que ordenarlo.
12. Un anagrama es una palabra que resulta de la transposición de letras de otra palabra. Dicho de otra forma, una palabra
es anagrama de otra si las dos tienen las mismas letras, con el mismo número de apariciones, pero en un orden
diferente. Dados dos vectores con letras que forman una palabra hacer una función que defina si una es un anagrama
de la otra
13.Hacer una función que resuelva una ecuación de Segundo grado y retorne sus dos raíces. Verificar si tiene
raíces complejas.
14.Un palíndromo, es una palabra o frase que se lee igual en un sentido que en otro (por ejemplo; Ana, Anna,
Otto). Si se trata de números en lugar de letras, se llama capicúa. Dado un vector con determine si es palíndromo,
Ejercicios
15. La Conjetura de Goldbach es uno de los problemas abiertos más
antiguos en matemáticas. Concretamente, G.H. Hardy, en 1921, en
su famoso discurso pronunciado en la Sociedad Matemática de
Copenhague, comentó que probablemente la conjetura de
Goldbach no es solo uno de los problemas no resueltos más difíciles
de la teoría de números, sino de todas las matemáticas. Su
enunciado es el siguiente: Todo número par mayor que 2 puede
escribirse como suma de dos números primos. Dado un número
retornar los dos primos que sumados dan como resultado el
número
Ejercicios
16. Listar los números divisibles por 2 y no por3
17. Un número perfecto es un número entero positivo que es igual a la suma de sus divisores
propios positivos. Dicho de otra forma, un número perfecto es aquel que es amigo de sí mismo.
Así, 6 es un número perfecto porque sus divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3. Los siguientes números
perfectos son 28, 496 y 8128.
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064
Hacer una función que dado un número retorne en un arreglo sus divisores y defina si el número es perfecto o
no.
18. Escribir una función lambda que revise si un número es positivo, lambda x: x > 0, y usarla con la
función filter para crear una lista de números positivos.
19. Escribir una función lambda que duplique sus argumentos lambda x: x * 2 y usarla con la función
map para duplicar todos los elementos de una lista:
Bibliografía
• https://www.w3schools.com/python/python_functions.asp
• https://www.programiz.com/python-programming/function
• https://www.programiz.com/python-programming/function-argumen
t

También podría gustarte