Saltar la navegación

3.2.1. Reutilizando argumentos

1. ¿Te apetece repetir?

Como ya hemos comentado, a veces, durante la realización de un programa necesitamos repetir trozos de código porque se precisa hacer varias veces la misma operación. ¿Creéis que es recomendable hacerlo o sería más conveniente dividir en trozos las partes que se repiten? Pensad en grupo y debatid cómo afectan estas repeticiones a los siguientes aspectos de un programa:

  • Tiempo requerido para programarlo.
  • Legibilidad del código final.
  • Posibilidad de cometer errores durante la programación.
  • División de tareas en un equipo de programadores.
  • Realización de proebas de funcionamiento.

2. Divide y vencerás

Divide y vencerásDesarrollar la trama que compone nuestro reto puede parecer desconcertante y difícil de asumir si se piensa en todo lo que hay que hacer como un conjunto único. Pero eso tiene solución: divide y vencerás, el famoso lema es el mantra de la programación. Todo gran desarrollo se divide en pequeñas funcionalidades que ofrecen resultados individuales y, uniéndolas, nos dan la solución al problema global. Como piezas de un puzzle. Cada una de estas piezas se denominan en programación funciones: son los trozos de código que se ocupan de devolver la solución a cada una de las partes del resultado final.

3. Hacemos funcionar por trozos

Imagen de bloquesLa manera de evitar que un programa tenga código repetitivo es descomponerlo en bloques. Cada uno de esos bloques será una función. Las funciones realizan una serie de cálculos y el objetivo es poder usarlas desde cualquier parte del programa. Sólo habrá que llamarlas y pasarles los datos que necesiten para funcionar correctamente. Vamos a conocerlas:

Una primera función

Vas a ver que crear una función es fácil. Sólo debes seguir la siguiente estructura que te presentamos a continuación: escribir la palabra reservada def para definir la función, elegir un nombre para la función seguido de paréntesis y los dos puntos, y finalmente escribir debajo los comandos que realizará la función indentados a la derecha.

def nombre_funcion():          comandos

Por ejemplo: Si quisiéramos crear una función para mostrar el menú inicial, sería del siguiente modo.

#Función para mostrar el menú de usuario
def menu():
    print ("Bienvenido al sistema de reserva.\n")
    print ("Introduzca el número de la opción a realizar.\n")
    print ("1 - Ver asientos de la sala (0:libre 1:reservado).\n")
    print ("2 - Reservar butacas.\n")
    print ("3 - Terminar.\n")

#Cuerpo del programa
opcion = 0
while opcion !=3 :
    menu()
    opcion = input()
    #Serie de operaciones según la opción.
print ("Ha terminado su sesión.\n")

Variable local vs. variable global

Al ver el ejemplo anterior seguramente te hayas hecho una pregunta: ¿Por qué no pide el valor de la opción dentro de la propia función?. La respuesta la tienes en las variables locales y variables globlales:

Variable local

Las variables que se utilizan dentro de una función sólo son accesibles dentro del bloque donde están declaradas. Reciben el nombre de variables locales. Estas variables no existen en el cuerpo principal del programa ni en ninguna otra función. De este modo, si intentas ejecutar el ejemplo anterior con el siguiente cambio, te daría un error. Pruébalo en tu IDLE, ¿qué comportamiento erróneo tiene este programa?

#Función para mostrar el menú de usuario
def menu():
    print ("Bienvenido al sistema de reserva.\n")
    print ("Introduzca el número de la opción.\n")
    print ("1 - Ver asientos de la sala.\n")
    print ("2 - Reservar butacas.\n")
    print ("3 - Terminar.\n")
opcion = input() #Cuerpo del programa opcion = 0 while opcion !=3 : menu() #Serie de operaciones según la opción. print ("Ha terminado su sesión.\n")

Variable global

Una variable global está declarada fuera de todas las funciones y, por lo tanto, es accesible por todas. Pero Python no permite de manera general el uso de variables globales dentro de una función, por eso para poder utilizarlas es necesario indicarlo específicamente en la función la palabra reservada global. El ejemplo anterior, usando una variable global funcionaría así:


#Función para mostrar el menú de usuario
def menu():
global opcion print ("Bienvenido al sistema de reserva.\n") print ("Introduzca el número de la opción.\n") print ("1 - Ver asientos de la sala.\n") print ("2 - Reservar butacas.\n") print ("3 - Terminar.\n")
opcion = input() #Cuerpo del programa opcion = 0 while opcion !=3 : menu() #Serie de operaciones según la opción. print ("Ha terminado su sesión.\n")
*Nota: Sin embargo, este último programa se considera un código incorrecto, ya que si el día de mañana necesitamos la función de menu() no podríamos reutilizar este código: la variable global puede estar utilizándose para otras funciones.

Envíale datos

Hay veces en las que, para que una función pueda trabajar, necesita recibir ciertos datos que se están utilizando en el programa. Estos datos que se le envían a la función, a la vez que el programa la llama, se denominan parámetros.

Por ejemplo: Imaginemos que a los largo del programa necesitaremos mostrar varias veces por pantalla la sala de butacas. Lo ideal será entonces crear una función que muestre por pantalla la sala y no tener que repetir todo el código de bucles cuando necesitamos mostrar por pantalla la sala, sino llamar a la función en su lugar. Veámosla:

PROGRAMA

#Función para imprimir la sala
def imprime(matriz):
    for i in range (1,6):
        for j in range (1,10):
            print (matriz[i][j]," ", end="")
        print ("\n")

#Cuerpo del programa:
#Inicializo la matriz a ceros
sala = [[0]* 10 for i in range (6)]
#Ponemos algunos unos
sala[3][2]=sala[3][3]=1

imprime(sala)

RESULTADO

Resultado de la función imprimir

*Para no bajar de línea tras usar la función print se ha utilizado el parámetro end="" de dicha función.

Si se desea pasar a una función más de un parámetro, es posible: sólo hay que separarlos por comas.

Devolver y asignar

Icono returnSi necesitamos que una función realice algún cálculo o comprobación y nos devuelva el resultado para utilizarlo en el programa principal, utilizaremos la palabra reservada return al final de dicha función: esta orden hace que la función, al regresar al lugar donde fue llamada, regrese el valor de la variable que la acompaña.

Además, si se llama a la función desde una orden de asignación, el valor devuelto quedará almacenado en la variable cuya asignación hizo la llamada a la función.

Por ejemplo: En nuestro reto sería resomendable crear una función que compruebe si los asientos seleccionados por el usuario están libres, para poder ser reservados, o no. Veamos cómo podría ser esta función y qué devolvería:

PROGRAMA

#Función que calcula si hay sitio libre
def comprueba_libre(matriz,numero,fila):
    contador = 0
    libre = "no"
    for i in range (1,10):
       if (matriz[fila-1][i] == 0) :
          contador = contador + 1
          if (numero == contador):
             libre = "sí"
       else :
          contador = 0
    return libre

#Cuerpo principal del programa
print ("Comienzo\n")
#Inicializo la matriz a ceros
sala = [[0]* 10 for i in range (6)]
#Ponemos algunos unos
sala[3][2]=sala[3][3]=1
numero_fila = input ("¿Qué fila desea? (1 a 6)\n")
cantidad = input("¿Cuántas butacas desea en la fila?\n")
sitio=comprueba_libre(sala,cantidad,numero_fila)
if sitio == "sí" :
   print ("Hay suficientes butacas disponibles.")
else :
   print ("No hay suficientes butacas seguidas.")

RESULTADO

Resultado de funcón con return

Nota: Python permite que una función devuelva dos valores. Para ello ambos se deben separar por comas en la orden reurn y también hay que asignarlos a variables diferentes también separadas por comas cuando la función es llamada.

4. Descubre las bibliotecas de funciones de Python

Resuelve todos los retos y descubre la palabra clave para incluir en tu programa Python funciones ya existentes en la Biblioteca de Funciones de Python.

1

¡Vamos a practicar con funciones! Te proponemos varias funciones de las que tendrás que indicarnos el resultado. Con cada resultado correcto obtendrás letras de la orden que necesitarás para utilizar en tus futuros programas las funciones ya existentes en la biblioteca de funciones predefinida en Python. Descúbrela y escríbela en el desafío final. ¡Comenzamos!

Si llamamos a esta función utilizando func1('i','a') ¿qué resultado obtenemos?

def func1(a, b):
    if a > b:
        return a
    else:
        return b

Si llamamos a esta función utilizando func2('M','a','m') ¿qué resultado obtenemos?

def func1(a, b):
    if a > b:
        return a
    else:
        return b
def func2(a, b, c):
return func1(func1(a, b), c)

Si llamamos a esta función utilizando func3('P') ¿qué resultado obtenemos?

def func2(s):
    return s.lower()

Si llamamos a esta función utilizando func4("olor") ¿qué resultado obtenemos?

def func4(palabra):
    return palabra[0], palabra[-1]

Si llamamos a esta función utilizando func5('s') ¿qué resultado obtenemos?

def func4(letra):
    return chr(ord(letra)+1)

%E9%B0%F3%E1%FB%F5%FC%F3%E6%E7%E0%F3%B0%A8%B0%B0%BE%B0%F3%E7%E6%FA%FD%E0%B0%A8%B0%B0%BE%B0%E6%EB%E2%F7%D5%F3%FF%F7%B0%A8%B0%F6%F7%E1%F3%F4%FB%FD%B0%BE%B0%F6%F7%E1%F3%F4%FB%FD%C6%FB%E6%FE%F7%B0%A8%B0-%D1%FD%FC%B2%E3%E7%7B%B2%FD%E0%F6%F7%FC%B2%FB%FC%F1%FE%E7%7F%FF%FD%E1%B2%FE%F3%E1%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B2%F6%F7%B2%C2%EB%E6%FA%FD%FC%B2%F7%FC%B2%FC%E7%F7%E1%E6%E0%FD%E1%B2%E2%E0%FD%F5%E0%F3%FF%F3%E1%AD%B0%BE%B0%F6%F7%E1%F3%F4%FB%FD%C6%FB%FF%F7%B0%A8%A1%A2%BE%B0%F6%F7%E1%F3%F4%FB%FD%C6%EB%E2%F7%B0%A8%A2%BE%B0%F6%F7%E1%F3%F4%FB%FD%C1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%FB%FF%E2%FD%E0%E6%B0%BE%B0%F6%F7%E1%F3%F4%FB%FD%C1%FD%FE%E4%F7%F6%B0%A8%F4%F3%FE%E1%F7%BE%B0%F6%F7%E1%F3%F4%FB%FD%D6%F7%E1%F1%E0%FB%E2%E6%FB%FD%FC%B0%A8%B0%AE%E2%AC3%C4%F3%FF%FD%E1%B2%F3%B2%E2%E0%F3%F1%E6%FB%F1%F3%E0%B2%F1%FD%FC%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B3%B2%C6%F7%B2%E2%E0%FD%E2%FD%FC%F7%FF%FD%E1%B2%E4%F3%E0%FB%F3%E1%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B2%F6%F7%B2%FE%F3%E1%B2%E3%E7%F7%B2%E6%F7%FC%F6%E0s%E1%B2%E3%E7%F7%B2%FB%FC%F6%FB%F1%F3%E0%FC%FD%E1%B2%F7%FE%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%BC%B2%D1%FD%FC%B2%F1%F3%F6%F3%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%B2%F1%FD%E0%E0%F7%F1%E6%FD%B2%FD%F0%E6%F7%FC%F6%E0s%E1%B2%FE%F7%E6%E0%F3%E1%B2%F6%F7%B2%FE%F3%B2%FD%E0%F6%F7%FC%B2%E3%E7%F7%B2%FC%F7%F1%F7%E1%FB%E6%F3%E0s%E1%B2%E2%F3%E0%F3%B2%E7%E6%FB%FE%FB%E8%F3%E0%B2%F7%FC%B2%E6%E7%E1%B2%F4%E7%E6%E7%E0%FD%E1%B2%E2%E0%FD%F5%E0%F3%FF%F3%E1%B2%FE%F3%E1%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B2%EB%F3%B2%F7%EA%FB%E1%E6%F7%FC%E6%F7%E1%B2%F7%FC%B2%FE%F3%B2%AE%F3%B2%FA%E0%F7%F4%AF%CE%B0%FA%E6%E6%E2%E1%A8%BD%BD%F6%FD%F1%E1%BC%E2%EB%E6%FA%FD%FC%BC%FD%E0%F5%BD%F7%E1%BD%A1%BD%FE%FB%F0%E0%F3%E0%EB%BD%FB%FC%F6%F7%EA%BC%FA%E6%FF%FE%CE%B0%B2%E6%F3%E0%F5%F7%E6%AF%CE%B0%CD%F0%FE%F3%FC%F9%CE%B0%B2%E6%FB%E6%FE%F7%AF%CE%B0%D3%F1%F1%F7%F6%F7%B2%F3%B2%FE%F3%B2%E5%F7%F0%B2%F1%FD%FC%B2%FE%F3%B2%F0%FB%F0%FE%FB%FD%E6%F7%F1%F3%B2%F6%F7%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B2%E2%E0%F7%F6%F7%F4%FB%FC%FB%F6%F3%B2%F7%FC%B2%C2%EB%E6%FA%FD%FC%CE%B0%B2%E0%F7%FE%AF%CE%B0%FC%FD%FD%E2%F7%FC%F7%E0%CE%B0%AC%F0%FB%F0%FE%FB%FD%E6%F7%F1%F3%B2%F6%F7%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B2%E2%E0%F7%F6%F7%F4%FB%FC%FB%F6%F3%B2%F7%FC%B2%C2%EB%E6%FA%FD%FC%AE%BD%F3%AC%BC%B2%D6%F7%E1%F1h%F0%E0%F7%FE%F3%B2%EB%B2%F7%E1%F1%E0%7F%F0%F7%FE%F3%B2%F7%FC%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%B2%F4%FB%FC%F3%FE%BC%B23%D1%FD%FF%F7%FC%E8%F3%FF%FD%E1%B3%AE%BD%E2%AC%B0%BE%B0%FB%FC%E1%E6%E0%E7%F1%E6%FB%FD%FC%E1%D7%EA%F7%B0%A8%B0%AE%E2%AC%C0%F7%E1%E7%F7%FE%E4%F7%B2%E6%FD%F6%FD%E1%B2%FE%FD%E1%B2%E0%F7%E6%FD%E1%B2%EB%B2%F6%F7%E1%F1%E7%F0%E0%F7%B2%FE%F3%B2%E2%F3%FE%F3%F0%E0%F3%B2%F1%FE%F3%E4%F7%B2%E2%F3%E0%F3%B2%FB%FC%F1%FE%E7%FB%E0%B2%F7%FC%B2%E6%E7%B2%E2%E0%FD%F5%E0%F3%FF%F3%B2%C2%EB%E6%FA%FD%FC%B2%F4%E7%FC%F1%FB%FD%FC%F7%E1%B2%EB%F3%B2%F7%EA%FB%E1%E6%F7%FC%E6%F7%E1%B2%F7%FC%B2%FE%F3%B2%AE%F3%B2%FA%E0%F7%F4%AF%CE%B0%FA%E6%E6%E2%E1%A8%BD%BD%F6%FD%F1%E1%BC%E2%EB%E6%FA%FD%FC%BC%FD%E0%F5%BD%F7%E1%BD%A1%BD%FE%FB%F0%E0%F3%E0%EB%BD%FB%FC%F6%F7%EA%BC%FA%E6%FF%FE%CE%B0%B2%E6%F3%E0%F5%F7%E6%AF%CE%B0%CD%F0%FE%F3%FC%F9%CE%B0%B2%E0%F7%FE%AF%CE%B0%FC%FD%FD%E2%F7%FC%F7%E0%CE%B0%AC%D0%FB%F0%FE%FB%FD%E6%F7%F1%F3%B2%F6%F7%B2%D4%E7%FC%F1%FB%FD%FC%F7%E1%B2%F6%F7%B2%C2%EB%E6%FA%FD%FC%AE%BD%F3%AC%BC%AE%BD%E2%AC%B0%BE%B0%FB%FC%E1%E6%E0%E7%F1%E6%FB%FD%FC%E1%B0%A8%B0%C0%F7%E1%E7%F7%FE%E4%F7%B2%E6%FD%F6%FD%E1%B2%FE%FD%E1%B2%E0%F7%E6%FD%E1%B2%EB%B2%F1%FD%FF%E2%FE%F7%E6%F3%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%BC%B2%B0%BE%B0%E1%FA%FD%E5%DF%FB%FC%FB%FF%FB%E8%F7%B0%A8%F4%F3%FE%E1%F7%BE%B0%F1%FA%F3%FE%FE%F7%FC%F5%F7%E1%D5%F3%FF%F7%B0%A8%C9%E9%B0%F6%F7%E1%F1%E0%FB%E2%E6%FB%FD%FC%B0%A8%B0%AE%E2%AC%C1%FB%B2%FE%FE%F3%FF%F3%FF%FD%E1%B2%F3%B2%F7%E1%E6%F3%B2%F4%E7%FC%F1%FBa%FC%B2%E7%E6%FB%FE%FB%E8%F3%FC%F6%FD%B2%AE%E1%E6%E0%FD%FC%F5%AC%F4%E7%FC%F1%A3%BA%B5%FB%B5%BE%B5%F3%B5%BB%AE%BD%E1%E6%E0%FD%FC%F5%AC%B2-%E3%E7%7B%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%B2%FD%F0%E6%F7%FC%F7%FF%FD%E1%AD%AE%BD%E2%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%F1%FD%FE%E1%B2%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%A7%A2%BF%A7%A2%B2%F7%EA%F7%BF%F1%FE%F7%F3%E0%CE%B0%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A3%CE%B0%AC%CE%FC%AE%E2%E0%F7%B2%E1%E6%EB%FE%F7%AF%CE%B0%F0%FD%E0%F6%F7%E0%A8%B2%A3%E2%EA%B2%E1%FD%FE%FB%F6%B2%B1%A7%F4%A3%A3%AB%A4%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F4%FD%FC%E6%BF%E1%FB%E8%F7%A8%B2%A3%A2%E2%E6%A9%B2%E5%FB%F6%E6%FA%A8%B2%A7%A2%B7%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%A2%A2%A2%A2%A2%A2%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F6%F7%F4%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A3%AE%BD%E1%E2%F3%FC%AC%BA%F3%BE%B2%F0%BB%A8%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%FB%F4%AE%BD%E1%E2%F3%FC%AC%B2%F3%B2%B4%F5%E6%A9%B2%F0%A8%CE%FC%B2%B2%B2%B2%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%F3%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F7%FE%E1%F7%AE%BD%E1%E2%F3%FC%AC%A8%CE%FC%B2%B2%B2%B2%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%F0%AE%BD%E1%E2%F3%FC%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E2%E0%F7%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A0%CE%B0%AC%CE%FC%AE%E2%AC%AE%BD%E2%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%BD%F6%FB%E4%AC%B0%BE%B0%E6%FB%E6%FE%F7%B0%A8%B0%D4%E7%FC%F1%FBa%FC%B2%A3%B0%BE%B0%E1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%FB%B0%BE%B0%E6%FB%FF%F7%C1%FA%FD%E5%B0%A8%BF%A3%BE%B0%F1%FE%E7%F7%E1%B0%A8%C9%E9%B0%F1%FE%E7%F7%B0%A8%B0%C2%E0%E7%7B%F0%F3%FE%FD%B2%F7%FC%B2%E6%E7%B2%E6%F7%E0%FF%FB%FC%F3%FE%B2%DB%D6%DE%D7%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A2%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A7%EF%CF%EF%BE%E9%B0%F6%F7%E1%F1%E0%FB%E2%E6%FB%FD%FC%B0%A8%B0%AE%E2%AC%C1%FB%B2%FE%FE%F3%FF%F3%FF%FD%E1%B2%F3%B2%F7%E1%E6%F3%B2%F4%E7%FC%F1%FBa%FC%B2%E7%E6%FB%FE%FB%E8%F3%FC%F6%FD%B2%AE%E1%E6%E0%FD%FC%F5%AC%F4%E7%FC%F1%A0%BA%B5%DF%B5%BE%B5%F3%B5%BE%B5%FF%B5%BB%AE%BD%E1%E6%E0%FD%FC%F5%AC%B2-%E3%E7%7B%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%B2%FD%F0%E6%F7%FC%F7%FF%FD%E1%AD%AE%BD%E2%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%F1%FD%FE%E1%B2%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%A7%A2%BF%A7%A2%B2%F7%EA%F7%BF%F1%FE%F7%F3%E0%CE%B0%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A3%CE%B0%AC%CE%FC%AE%E2%E0%F7%B2%E1%E6%EB%FE%F7%AF%CE%B0%F0%FD%E0%F6%F7%E0%A8%B2%A3%E2%EA%B2%E1%FD%FE%FB%F6%B2%B1%A7%F4%A3%A3%AB%A4%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F4%FD%FC%E6%BF%E1%FB%E8%F7%A8%B2%A3%A2%E2%E6%A9%B2%E5%FB%F6%E6%FA%A8%B2%A7%A2%B7%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%A2%A2%A2%A2%A2%A2%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F6%F7%F4%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A3%AE%BD%E1%E2%F3%FC%AC%BA%F3%BE%B2%F0%BB%A8%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%FB%F4%AE%BD%E1%E2%F3%FC%AC%B2%F3%B2%B4%F5%E6%A9%B2%F0%A8%CE%FC%B2%B2%B2%B2%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%F3%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F7%FE%E1%F7%AE%BD%E1%E2%F3%FC%AC%A8%CE%FC%B2%B2%B2%B2%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%F0%AE%F0%E0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F6%F7%F4%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%A2%A2%A2%A2%F4%F4%A9%CE%B0%AC%F4%E7%FC%F1%A0%AE%BD%E1%E2%F3%FC%AC%BA%F3%BE%B2%F0%BE%B2%F1%BB%A8%AE%F0%E0%AC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A3%AE%BD%E1%E2%F3%FC%AC%BA%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A3%AE%BD%E1%E2%F3%FC%AC%BA%F3%BE%B2%F0%BB%BE%B2%F1%BB%AE%F0%E0%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E2%E0%F7%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A0%CE%B0%AC%CE%FC%AE%E2%AC%AE%BD%E2%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%BD%F6%FB%E4%AC%B0%BE%B0%E6%FB%E6%FE%F7%B0%A8%B0%D4%E7%FC%F1%FBa%FC%B2%A0%B0%BE%B0%E1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%FF%B0%BE%B0%E6%FB%FF%F7%C1%FA%FD%E5%B0%A8%BF%A3%BE%B0%F1%FE%E7%F7%E1%B0%A8%C9%E9%B0%F1%FE%E7%F7%B0%A8%B0%C2%E0%E7%7B%F0%F3%FE%FD%B2%F7%FC%B2%E6%E7%B2%E6%F7%E0%FF%FB%FC%F3%FE%B2%DB%D6%DE%D7%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A2%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A7%EF%CF%EF%BE%E9%B0%F6%F7%E1%F1%E0%FB%E2%E6%FB%FD%FC%B0%A8%B0%AE%E2%AC%C1%FB%B2%FE%FE%F3%FF%F3%FF%FD%E1%B2%F3%B2%F7%E1%E6%F3%B2%F4%E7%FC%F1%FBa%FC%B2%E7%E6%FB%FE%FB%E8%F3%FC%F6%FD%B2%AE%E1%E6%E0%FD%FC%F5%AC%F4%E7%FC%F1%A1%BA%B5%C2%B5%BB%AE%BD%E1%E6%E0%FD%FC%F5%AC%B2-%E3%E7%7B%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%B2%FD%F0%E6%F7%FC%F7%FF%FD%E1%AD%AE%BD%E2%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%F1%FD%FE%E1%B2%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%A7%A2%BF%A7%A2%B2%F7%EA%F7%BF%F1%FE%F7%F3%E0%CE%B0%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A3%CE%B0%AC%CE%FC%AE%E2%E0%F7%B2%E1%E6%EB%FE%F7%AF%CE%B0%F0%FD%E0%F6%F7%E0%A8%B2%A3%E2%EA%B2%E1%FD%FE%FB%F6%B2%B1%A7%F4%A3%A3%AB%A4%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F4%FD%FC%E6%BF%E1%FB%E8%F7%A8%B2%A3%A2%E2%E6%A9%B2%E5%FB%F6%E6%FA%A8%B2%A7%A2%B7%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%A2%A2%A2%A2%A2%A2%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F6%F7%F4%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A0%AE%BD%E1%E2%F3%FC%AC%BA%E1%BB%A8%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%E1%BC%FE%FD%E5%F7%E0%BA%BB%AE%F0%E0%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E2%E0%F7%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A0%CE%B0%AC%CE%FC%AE%E2%AC%AE%BD%E2%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%BD%F6%FB%E4%AC%B0%BE%B0%E6%FB%E6%FE%F7%B0%A8%B0%D4%E7%FC%F1%FBa%FC%B2%A1%B0%BE%B0%E1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%E2%B0%BE%B0%E6%FB%FF%F7%C1%FA%FD%E5%B0%A8%BF%A3%BE%B0%F1%FE%E7%F7%E1%B0%A8%C9%E9%B0%F1%FE%E7%F7%B0%A8%B0%C2%E0%E7%7B%F0%F3%FE%FD%B2%F7%FC%B2%E6%E7%B2%E6%F7%E0%FF%FB%FC%F3%FE%B2%DB%D6%DE%D7%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A2%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A7%EF%CF%EF%BE%E9%B0%F6%F7%E1%F1%E0%FB%E2%E6%FB%FD%FC%B0%A8%B0%AE%E2%AC%C1%FB%B2%FE%FE%F3%FF%F3%FF%FD%E1%B2%F3%B2%F7%E1%E6%F3%B2%F4%E7%FC%F1%FBa%FC%B2%E7%E6%FB%FE%FB%E8%F3%FC%F6%FD%B2%AE%E1%E6%E0%FD%FC%F5%AC%F4%E7%FC%F1%A6%BA%CE%B0%FD%FE%FD%E0%CE%B0%BB%AE%BD%E1%E6%E0%FD%FC%F5%AC%B2-%E3%E7%7B%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%B2%FD%F0%E6%F7%FC%F7%FF%FD%E1%AD%AE%BD%E2%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%F1%FD%FE%E1%B2%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%A7%A2%BF%A7%A2%B2%F7%EA%F7%BF%F1%FE%F7%F3%E0%CE%B0%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A3%CE%B0%AC%CE%FC%AE%E2%E0%F7%B2%E1%E6%EB%FE%F7%AF%CE%B0%F0%FD%E0%F6%F7%E0%A8%B2%A3%E2%EA%B2%E1%FD%FE%FB%F6%B2%B1%A7%F4%A3%A3%AB%A4%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F4%FD%FC%E6%BF%E1%FB%E8%F7%A8%B2%A3%A2%E2%E6%A9%B2%E5%FB%F6%E6%FA%A8%B2%A7%A2%B7%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%A2%A2%A2%A2%A2%A2%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F6%F7%F4%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A6%AE%BD%E1%E2%F3%FC%AC%BA%E2%F3%FE%F3%F0%E0%F3%BB%A8%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%E2%F3%FE%F3%F0%E0%F3%C9%A2%CF%BE%B2%E2%F3%FE%F3%F0%E0%F3%C9%BF%A3%CF%AE%F0%E0%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E2%E0%F7%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A0%CE%B0%AC%CE%FC%AE%E2%AC%AE%BD%E2%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%BD%F6%FB%E4%AC%B0%BE%B0%E6%FB%E6%FE%F7%B0%A8%B0%D4%E7%FC%F1%FBa%FC%B2%A6%B0%BE%B0%E1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%FD%E0%B0%BE%B0%E6%FB%FF%F7%C1%FA%FD%E5%B0%A8%BF%A3%BE%B0%F1%FE%E7%F7%E1%B0%A8%C9%E9%B0%F1%FE%E7%F7%B0%A8%B0%C2%E0%E7%7B%F0%F3%FE%FD%B2%F7%FC%B2%E6%E7%B2%E6%F7%E0%FF%FB%FC%F3%FE%B2%DB%D6%DE%D7%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A2%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A7%EF%CF%EF%BE%E9%B0%F6%F7%E1%F1%E0%FB%E2%E6%FB%FD%FC%B0%A8%B0%AE%E2%AC%C1%FB%B2%FE%FE%F3%FF%F3%FF%FD%E1%B2%F3%B2%F7%E1%E6%F3%B2%F4%E7%FC%F1%FBa%FC%B2%E7%E6%FB%FE%FB%E8%F3%FC%F6%FD%B2%AE%E1%E6%E0%FD%FC%F5%AC%F4%E7%FC%F1%A7%BA%B5%E1%B5%BB%AE%BD%E1%E6%E0%FD%FC%F5%AC%B2-%E3%E7%7B%B2%E0%F7%E1%E7%FE%E6%F3%F6%FD%B2%FD%F0%E6%F7%FC%F7%FF%FD%E1%AD%AE%BD%E2%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%F1%FD%FE%E1%B2%F7%EA%F7%BF%FE%F3%EB%FD%E7%E6%BF%A0%BF%A7%A2%BF%A7%A2%B2%F7%EA%F7%BF%F1%FE%F7%F3%E0%CE%B0%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A3%CE%B0%AC%CE%FC%AE%E2%E0%F7%B2%E1%E6%EB%FE%F7%AF%CE%B0%F0%FD%E0%F6%F7%E0%A8%B2%A3%E2%EA%B2%E1%FD%FE%FB%F6%B2%B1%A7%F4%A3%A3%AB%A4%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F4%FD%FC%E6%BF%E1%FB%E8%F7%A8%B2%A3%A2%E2%E6%A9%B2%E5%FB%F6%E6%FA%A8%B2%A7%A2%B7%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%A2%A2%A2%A2%A2%A2%A9%CE%B0%AC%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%F6%F7%F4%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F4%E7%FC%F1%A6%AE%BD%E1%E2%F3%FC%AC%BA%FE%F7%E6%E0%F3%BB%A8%CE%FC%B2%B2%B2%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%F4%F4%A4%A4%A2%A2%A9%CE%B0%AC%E0%F7%E6%E7%E0%FC%AE%BD%E1%E2%F3%FC%AC%B2%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%F1%FA%E0%AE%BD%E1%E2%F3%FC%AC%BA%AE%E1%E2%F3%FC%B2%E1%E6%EB%FE%F7%AF%CE%B0%F1%FD%FE%FD%E0%A8%B2%B1%AA%A2%A2%A2%AA%A2%A9%CE%B0%AC%FD%E0%F6%AE%BD%E1%E2%F3%FC%AC%BA%FE%F7%E6%E0%F3%BB%B9%A3%BB%AE%F0%E0%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E1%E2%F3%FC%AC%AE%BD%E2%E0%F7%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%F6%FB%E4%B2%F1%FE%F3%E1%E1%AF%CE%B0%F7%EA%F7%BF%F1%FD%FE%B2%F7%EA%F7%BF%F1%FD%FE%BF%A0%CE%B0%AC%CE%FC%AE%E2%AC%AE%BD%E2%AC%CE%FC%AE%BD%F6%FB%E4%AC%CE%FC%AE%BD%F6%FB%E4%AC%B0%BE%B0%E6%FB%E6%FE%F7%B0%A8%B0%D4%E7%FC%F1%FBa%FC%B2%A7%B0%BE%B0%E1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%E6%B0%BE%B0%E6%FB%FF%F7%C1%FA%FD%E5%B0%A8%BF%A3%BE%B0%F1%FE%E7%F7%E1%B0%A8%C9%E9%B0%F1%FE%E7%F7%B0%A8%B0%C2%E0%E7%7B%F0%F3%FE%FD%B2%F7%FC%B2%E6%E7%B2%E6%F7%E0%FF%FB%FC%F3%FE%B2%DB%D6%DE%D7%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A2%EF%BE%E9%B0%F1%FE%E7%F7%B0%A8%B0%B0%BE%B0%E6%FB%FF%F7%B0%A8%A3%A7%EF%CF%EF%CF%BE%B0%E6%FB%E6%FE%F7%B0%A8%B0%B0%BE%B0%FF%E1%F5%E1%B0%A8%E9%B0%FF%E1%F5%C1%E6%F3%E0%E6%D5%F3%FF%F7%B0%A8%B0%C2%E7%FE%E1%F7%B2%F3%E3%E7%7F%B2%E2%F3%E0%F3%B2%F7%FF%E2%F7%E8%F3%E0%B0%BE%B0%FF%E1%F5%C1%E7%F0%FF%FB%E6%B0%A8%B0%D7%FC%E4%FB%F3%E0%B0%BE%B0%FF%E1%F5%DB%FC%F4%FD%E0%FF%F3%E6%FB%FD%FC%DE%FD%FD%F9%FB%FC%F5%B0%A8%B03%D5%F7%FC%FB%F3%FE%B3%B2%DE%F3%B2%FB%FC%F4%FD%E0%FF%F3%F1%FBa%FC%B2%E3%E7%F7%B2%F7%E1%E6%F3%F0%F3%B2%F0%E7%E1%F1%F3%FC%F6%FD%B0%BE%B0%FF%E1%F5%C2%FE%F3%EB%C1%E6%F3%E0%E6%B0%A8%B0%C2%E7%FE%E1%F7%B2%F3%E3%E7%7F%B2%E2%F3%E0%F3%B2%F8%E7%F5%F3%E0%B0%BE%B0%FF%E1%F5%DF%FB%FC%FB%FF%FB%E8%F7%B0%A8%B0%DF%FB%FC%FB%FF%FB%E8%F3%E0%B0%BE%B0%FF%E1%F5%DF%F3%EA%FB%FF%FB%E8%F7%B0%A8%B0%DF%F3%EA%FB%FF%FB%E8%F3%E0%B0%BE%B0%FF%E1%F5%C6%FB%FF%F7%B0%A8%B0%C6%FB%F7%FF%E2%FD%B2%E2%FD%E0%B2%E2%E0%F7%F5%E7%FC%E6%F3%B0%BE%B0%FF%E1%F5%DC%FD%DB%FF%F3%F5%F7%B0%A8%B0%C2%E0%F7%F5%E7%FC%E6%F3%B2%E1%FB%FC%B2%FB%FFs%F5%F7%FC%F7%E1%B0%BE%B0%FF%E1%F5%C1%E7%F1%F1%F7%E1%E1%F7%E1%B0%A8%B03%D1%FD%E0%E0%F7%F1%E6%FD%B3%B2%EE%B23%D7%EA%F1%F7%FE%F7%FC%E6%F7%B3%B2%EE%B23%D5%F7%FC%FB%F3%FE%B3%B2%EE%B23%DF%E7%EB%B2%F0%FB%F7%FC%B3%B2%EE%B23%C2%F7%E0%F4%F7%F1%E6%FD%B3%B0%BE%B0%FF%E1%F5%D4%F3%FB%FE%E7%E0%F7%E1%B0%A8%B03%DC%FD%B2%F7%E0%F3%B2%F7%E1%FD%B3%B2%EE%B23%DB%FC%F1%FD%E0%E0%F7%F1%E6%FD%B3%B2%EE%B23%DC%FD%B2%F7%E1%B2%F1%FD%E0%E0%F7%F1%E6%FD%B3%B2%EE%B23%DE%FD%B2%E1%F7%FC%E6%FB%FF%FD%E1%B3%B2%EE%B23%D7%E0%E0%FD%E0%B3%B0%BE%B0%FF%E1%F5%DB%FC%F4%FD%E0%FF%F3%E6%FB%FD%FC%B0%A8%B0%DB%FC%F4%FD%E0%FF%F3%F1%FBa%FC%B0%BE%B0%FF%F5%E1%C1%FD%FE%E7%E6%FB%FD%FC%B0%A8%B0%C1%FD%FE%E7%F1%FBa%FC%B0%BE%B0%FF%E1%F5%D6%F3%E6%F7%B0%A8%B0%D4%F7%F1%FA%F3%B0%BE%B0%FF%E1%F5%D6%F7%E1%F3%F4%FB%FD%B0%A8%B0%D6%F7%E1%F3%F4%7F%FD%B0%BE%B0%FF%E1%F5%D1%FA%F3%FE%FE%F7%FC%F5%F7%B0%A8%B0%C0%F7%E6%FD%B0%BE%B0%FF%E1%F5%D1%FA%F3%FE%FE%F7%FC%F5%F7%E1%D1%FD%FF%E2%FE%F7%E6%F7%F6%B0%A8%B0%C0%F7%E6%FD%E1%B2%F1%FD%FF%E2%FE%F7%E6%F3%F6%FD%E1%B0%BE%B0%FF%E1%F5%C1%E6%F3%E0%E6%C6%FB%FF%F7%B0%A8%B0%DB%FC%FB%F1%FB%FD%B2%F6%F7%E1%F3%F4%7F%FD%B0%BE%B0%FF%E1%F5%C0%F7%F3%F6%C6%FB%FF%F7%B0%A8%B0%DE%F7%F7%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%B2%EB%BE%B2%F1%E7%F3%FC%F6%FD%B2%F7%E1%E6%7B%E1%B2%FE%FB%E1%E6%FD%BE%B2%E2%E7%FE%E1%F3%B2%E1%FD%F0%E0%F7%B2%E7%FC%B2%E0%F7%E6%FD%B2%E2%F3%E0%F3%B2%F8%E7%F5%F3%E0%BC%B0%BE%B0%FF%E1%F5%D1%FA%F3%FE%FE%F7%FC%F5%F7%E1%D3%FE%FE%D1%FD%FF%E2%FE%F7%E6%F7%F6%B0%A8%B03%DA%F3%E1%B2%E0%F7%E1%E7%F7%FE%E6%FD%B2%E6%FD%F6%FD%E1%B2%FE%FD%E1%B2%E0%F7%E6%FD%E1%B3%B23%D1%FD%FF%E2%FE%F7%E6%F3%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%B3%B0%BE%B0%FF%E1%F5%D6%F7%E1%F3%F4%FB%FD%C1%FD%FE%E4%F7%F6%B0%A8%B03%DA%F3%E1%B2%E0%F7%E1%E7%F7%FE%E6%FD%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%B3%B2%C2%E7%FE%E1%F3%B2%E0%F7%FB%FC%FB%F1%FB%F3%E0%B2%E2%F3%E0%F3%B2%FC%E7%F7%E4%F3%B2%E2%F3%E0%E6%FB%F6%F3%BC%B0%BE%B0%FF%E1%F5%D6%F7%E1%F3%F4%FB%FD%C1%FD%FE%E4%F7%F6%A3%B0%A8%B03%D7%FC%FA%FD%E0%F3%F0%E7%F7%FC%F3%B3%B23%DA%F3%E1%B2%E0%F7%E1%E7%F7%FE%E6%FD%B2%F7%E1%E6%F7%B2%F6%F7%E1%F3%F4%7F%FD%B3%B0%BE%B0%FF%E1%F5%D7%FC%F6%C6%FB%FF%F7%B0%A8%B0%D7%FE%B2%E6%FB%F7%FF%E2%FD%B2%FA%F3%B2%F4%FB%FC%F3%FE%FB%E8%F3%F6%FD%B2%EB%B2%FC%FD%B2%FA%F3%E1%B2%E0%F7%E1%E7%F7%FE%E6%FD%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%BC%B2%C2%E7%FE%E1%F3%B2%E1%FD%F0%E0%F7%B2%E0%F7%FB%FC%FB%F1%FB%F3%E0%B2%E2%F3%E0%F3%B2%FB%FC%E6%F7%FC%E6%F3%E0%FE%FD%B2%F6%F7%B2%FC%E7%F7%E4%FD%BC%B0%BE%B0%FF%E1%F5%C1%FD%FE%E7%E6%FB%FD%FC%D7%E0%E0%FD%E0%B0%A8%B0%C1%FD%FE%E7%F1%FBa%FC%B2%FB%FC%F1%FD%E0%E0%F7%F1%E6%F3%BC%B0%BE%B0%FF%E1%F5%C1%FD%FE%E7%E6%FB%FD%FC%D1%D7%E0%E0%FD%E0%B0%A8%B0%DE%F3%B2%E1%FD%FE%E7%F1%FBa%FC%B2%FC%FD%B2%F7%E1%B2%F1%FD%E0%E0%F7%F1%E6%F3%BC%B0%BE%B0%FF%E1%F5%D1%FA%F3%FE%FE%F7%FC%F5%F7%C1%FD%FE%E4%F7%F6%B0%A8%B03%DA%F3%E1%B2%E0%F7%E1%E7%F7%FE%E6%FD%B2%F7%E1%E6%F7%B2%E0%F7%E6%FD%B3%B23%C1%F7%FE%F7%F1%F1%FB%FD%FC%F3%B2%FD%E6%E0%FD%B3%B0%BE%B0%FF%E1%F5%D6%F7%E1%F3%F4%FB%FD%C0%F7%F0%FD%FD%E6%B0%A8%B0%D7%E1%E6%FD%B2%E0%F7%FB%FC%FB%F1%FB%F3%E0s%B2%F7%FE%B2%F8%E7%F7%F5%FD%B2%EB%B2%FF%FD%F6%FB%F4%FB%F1%F3%E0s%B2%E1%E7%B2%FA%FD%E0%F3%B2%F6%F7%B2%FB%FC%FB%F1%FB%FD%BC%B2-%D6%F7%E1%F7%F3%E1%B2%F1%FD%FC%E6%FB%FC%E7%F3%E0%AD%B0%BE%B0%FF%E1%F5%D1%FD%FF%E2%FE%F7%E6%F7%D3%FE%FE%D1%FA%F3%FE%FE%F7%FC%F5%F7%F6%B0%A8%B0%D3%FC%E6%F7%E1%B2%F6%F7%B2%E0%F7%E1%FD%FE%E4%F7%E0%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%BE%B2%F6%F7%F0%F7%E1%B2%F1%FD%FF%E2%FE%F7%E6%F3%E0%B2%E6%FD%F6%FD%E1%B2%FE%FD%E1%B2%E0%F7%E6%FD%E1%BC%B0%BE%B0%FF%E1%F5%C1%FD%FE%E4%F7%F6%D1%FA%F3%FE%FE%F7%FC%F5%F7%B0%A8%B0%CB%F3%B2%FA%F3%E1%B2%F1%FD%FF%E2%FE%F7%E6%F3%F6%FD%B2%F7%E1%E6%F7%B2%E0%F7%E6%FD%BC%B0%BE%B0%FF%E1%F5%C5%E0%FB%E6%F7%D1%FA%F3%FE%FE%F7%FC%F5%F7%B0%A8%B0%C0%F7%E1%E7%F7%FE%E4%F7%B2%F7%E1%E6%F7%B2%E0%F7%E6%FD%B2%F7%B2%FB%FC%F6%FB%F1%F3%B2%E1%E7%B2%E1%FD%FE%E7%F1%FBa%FC%BC%B0%BE%B0%FF%E1%F5%D7%FC%F6%C6%FB%FF%F7%C0%F7%E1%E6%F3%E0%E6%B0%A8%B0%D7%FE%B2%E6%FB%F7%FF%E2%FD%B2%FA%F3%B2%F4%FB%FC%F3%FE%FB%E8%F3%F6%FD%B2%EB%B2%FC%FD%B2%FA%F3%E1%B2%E0%F7%E1%E7%F7%FE%E6%FD%B2%F7%FE%B2%F6%F7%E1%F3%F4%7F%FD%BC%B2%C2%E7%FE%E1%F3%B2%E1%FD%F0%E0%F7%B2%E0%F7%FB%FC%FB%F1%FB%F3%E0%B2%E2%F3%E0%F3%B2%FB%FC%E6%F7%FC%E6%F3%E0%FE%FD%B2%F6%F7%B2%FC%E7%F7%E4%FD%BC%B0%BE%B0%FF%E1%F5%C0%F7%F0%FD%FD%E6%B0%A8%B0%C0%F7%FB%FC%FB%F1%FB%F3%E0%B0%BE%B0%FF%E1%F5%DA%F7%FE%E2%B0%A8%B0%D3%EB%E7%F6%F3%B0%EF%EF
Su navegador no es compatible con esta herramienta.

5. Reutilizando a toda máquina

Como ya has comprobado y practicado en los elementos de este apartado, una función puede llamar a otra función. Ahora podemos ir incluso un paso más allá: ¡una función también puede llamarse a sí misma!
Este tipo de funciones que se llaman a sí mismas tienen el nombre de funciones recursivas (y el mecanismo de funcionamisnto se llama recursividad).
Tienen aplicaciones muy limitadas y concretas. La más famosa de ellas es el cálculo del factorial de un número.
En el siguiente ejercicio tienes una función recursiva para realizar este cálculo del factorial de un número que recibe la función como parámetro. ¿Serías capaz de ordenarla y analizar su funcionamiento? ¡Seguro que sí!

Forma en la cual se especifica un proceso basado en llamadas a sí mismo, llegando a un punto donde se conoce el resultado (el caso base).

  • def factorial(n):
  • if n == 0:
  • return 1
  • else:
  • return (n * factorial(n - 1))
  • print(factorial(5))

Comprobar

¡Correcto! Has completado el programa.

No es correcto... Aún hay alguna línea de código que no está en su sitio.

Si no terminas de comprender el funcionamiento de la función, te recomendamos dos pasos:

  1. Ejecútala paso a paso en papel, viendo qué parámetros va recibiendo en cada llamada y qué devuelve, para poder después ir completando cada llamada y cerrar el resultado.
  2. Pide ayuda en clase: debatiendo y dialogando siempre se ven las cosas mejor.

6. ¿Qué puedo hacer con todo lo aprendido?

Acabas de conocer muchos elementos en este apartados. ¿Te parecen de utilidad? ¡Te aseguramos que lo son! Todos ellos te ayudarán a crear y dar forma a la soulución de tu reto. Reflexiona y crea una entrada en tu blog personal de aprendzaje de la asignatura respondiendo a estas preguntas que te ayudarán a seleccionar lo importante:

  • ¿Con qué objetivo puedo utilizar funciones en mi reto?¿Para qué operaciones se te ocurre que las necesitarías?
  • ¿Para qué datos o elementos me puede ayudar una matriz en mi reto?
  • ¿Qué tipo de estructura de datos podría usar para crear un conjunto de usuarios y sus respectivas contraseñas?
  • ¿Cómo te pueden ayudar un bucle y una estructura condicional a presentar el menú principal del programa?