5.1.3 Funciones – Archivos de librerias

Los algoritmos que se reutilizan y se convierten a funciones, se pueden agrupar en un archivo.py

Esto permite realizar un archivo de librerias de funciones personalizadas.

Las librerias se pueden llamar por la instrucción import y se usan individualmente por el nombre de la función.

Ejemplo

Archivo de funciones personalizadas politoESPOL.py, en directorio de trabajo:

# ejemplo de libreria de funciones

def sumando(a,b):
    c = a + b
    return(c)

def invierteletras(palabra):
    n = len(palabra)
    invertida = ''
    for i in range(0,n,1):
        invertida = palabra[i] + invertida
    return(invertida)

Archivo de programa principal politoProgram.pyen el mismo directorio que el archivo de funciones.

# probando importar funciones
import politoESPOL as espol

# INGRESO
a = 3
b = 5
palabra = 'polito'

# PROCEDIMIENTO
sumado = espol.sumando(a,b)
alreves = espol.invierteletras(palabra)

# SALIDA
print('la suma es: ', sumado)
print('palabra invertida: ',alreves)

Resultado del algoritmo

la suma es:  8
palabra invertida:  otilop
>>> 

5.1.2 Funciones – Ejercicios

Funciones Numéricas

2Eva_IT2014_T2 Función color RGB a gris

2Eva_IIT2011_T1 Algoritmo de Euclides MCD

2Eva_IIT2013_T3 Encriptar binarios con XOR

2Eva_IT2003_T1 Funciones promedio, mayor y menor

2daEva_IIT2004_T3 Reciclar vasos


Funciones con cadenas de caracteres

2Eva_IIT2009_T1 Mensaje a SMS

2Eva_IIT2014_T3 Palabras monovocalicas en frase

2Eva_IIT2015_T1 función lipovocal(frase)

2Eva_IT2006_T3 Encriptar a Morse

2Eva_IT2009_T1 Desordenar una palabra

2Eva_IT2014_T1 Palabras con eco

5.2 Funciones – Matrices con arreglos

Ejemplos

2Eva_IIT2008_T3 Crear un Calendario

Solución propuesta: Sol_py

2Eva_IIT2003_T2 Mostrar un triángulo de Pascal

Solución propuesta: Sol_py

3Eva_IT2003_T1 Raíces enteras positivas del polinomio

Solución propuesta: Sol_py


Ejercicios

2Eva_IT2014_T3 Imagen RGB a gris

Nota:  requiere el tema 2 sobre funciones.

2Eva_IT2013_T2 Una Tabla de Bingo

2Eva_IT2012_T3 Consumo de tinta y negativo de foto

2Eva_IIT2011_T2 Ubicar ficha en tablero

5.4 Funciones – librerias

Algunas librerías vienen en la instalación básica de Python, como por ejemplo:

Revisar en el enlace: https://docs.python.org/2/library/math.html

La librería math contiene funciones matemáticas, para usarla se la llama al inicio (import):

import math

para luego usarla como en los ejemplos .

math.sqrt(4)
math.sin(0.4)
math.cos(0.3)
math.tan(0.45)

Aleatorios se pueden obtener al importar la librería random

import random

ejemplo de un dado se obtiene como:

dado=int(random.random()*6)+1

Otras librerías se desarrollan por diferentes comunidades y se deben incorporar a la instalación. Revisar sección Descargas

Arreglos: Matrices, Vectores

Numpy es una librería de funciones para manejo de matrices y vectores (álgebra). http://www.numpy.org/

numpy.zeros(n, dtype=int)
numpy.zeros(shape=(n,n), dtype=int)
numpy.arange(2, 10, dtype=np.float)
numpy.linspace(1., 4., 6)
numpy.sin()
numpy.cos()
numpy.random.random()

Gráficas

de funciones en los planos cartesianos, ver sección para graficas usan las librerías matplotlib: https://matplotlib.org/

import matplotlib.pyplot as plt

Existen algunas versiones empaquetadas de Python que permiten disponer de las librerías científicas preinstaladas. El proceso de instalación es simplificado y se encuentra en la sección WinPython (portable)

5.1 Función – Reusar algoritmos

Cuando un algoritmo es usado de forma frecuente, en lugar de repetir las instrucciones cada vez que se necesitan, se pueden resumir y extraer en un bloque dedicado.

Si cada algoritmo sigue la «estructura básica», la función es un bloque que se podrá reutilizar en cualquier otro problema y trabaja de forma «modular».

El bloque se identifica con un nombre de la función
y usa las variables de entrada (a)
y variable de salida (z).

En programación estructurada, al cambiarse los bloques de entrada (input) y los bloques de salida (print), las instrucciones de entrada y salida se las mantiene dentro del programa principal que llama a las funciones.

La definición de una función en Python se escribe como:

def funcion(entrada):
    # intrucciones
    # detalladas de la funcion
    return(respuesta)

Definida la función se puede usar una o varias veces en un programa principal usando el nombre de la función junto a la variable de entrada.

El resultado de la función se asigna a una variable que es usada dentro del programa principal.

resultado = funcion(entrada)

Se pueden hacer tantas llamadas a la función como sean necesarias.

Las funciones se pueden realizar usando variables tipo escalar (enteras, reales), vectoriales o matriciales, tipo texto o cadena de caracteres, etc.

Las variables escalares se declaran como variables internas a la función, mientras que las variables vectoriales o matriciales tienen un alcance global.

Referencia: Rodriguez 6.1 p155, Van Rossum p19



Variables dentro de una función

Las variables dentro de una función se tratan como variables de un algoritmo aparte.Por lo que los nombres de las variables internas, no afectan a las variables del algoritmo principal.

Exceptuando el caso de Arreglos y listas que el paso es por «referencia» (o álias), pues se condidera que si las matrices y vectores del problema son de gran tamaño, crear copias de cada una de ellas dentro de cada llamada a la función ocupa memoria que podría ser usada para otras tareas.


Estructura del Algoritmo con funciones creadas por usuario

Cuando el algoritmo tiene funciones básicas creadas por usted, y son relativamente «pequeñas», se incluyen dentro del bloque de inicio.

# INICIO
# Referencia del problema
import numpy as np
import random as np
# funciones creadas por usuario
def miprimerafuncion(variableentrada,otravariable):
    # algunas instrucciones
    return(respuesta)

# INGRESO
a = int(input(' un numero entero'))
b = float(input(' un numero real'))

# PROCEDIMIENTO
respuesta =  miprimerafuncion(a,b)

# SALIDA
print('alguna respuesta: ',respuesta)

Si las funciones son varias o siempre usa esas funciones las puede incluir en un archivo .py y llamarlas desde el archivo con el algoritmo principal. Detalles en el siguiente tema publicado.