Haciendo algo útil para la clase de mates

Fijaos que ya tenemos realmente los cimientos para construir cualquier software. El resto ya es aprender a usar las funciones que vamos a necesitar y eso se puede aprender leyendo la documentación del autor. Y es que al final gran parte del trabajo consiste en saber leer el código de los demás y saber usar sus funciones. Todo lo demás es usar if, bucles y poco más. Veamos un ejemplo de lo que podemos hacer con lo que sabemos.

 Supongamos que el profesor o profesora de matemáticas nos pide resolver ecuaciones de segundo grado completas y nos deja utilizar la programación para resolverlo, es decir, que podemos resolver las ecuaciones manualmente o haciendo un algoritmo. Y pensamos que con un algoritmo se ahorra trabajos, veamos si es así: Analicemos el problema primero: una ecuación de segundo grado está compuesta de 3 variables: a, b y c. Y se resuelve de esta manera:


By Drini - CC BY-SA 4.0 from Wikimedia Commons

Empecemos dividiendo el problema en subproblemas. Está claro que lo más complicado es la resolución de la raiz cuadrada del cuadrado de b - 4*a*c que vamos a resolver solamente esa parte:

from math import sqrt
   raiz = sqrt(b*b - 4*a*c)
 
Como ya dijimos en Haciendo grandes cosas con poco usamos una función que ya existe para hacer raíces cuadradas que se llama sqrt. Esa línea lo que está diciendo es del paquete "math" voy a usar la función sqrt. Finalmente una vez que tenemos la raíz, le pasamos el parámetro que será el cuadrado - 4*a*c, y ya sabemos que nos devolverá el resultado de la raíz yl o guardamos en la variable raíz.
El segundo subproblema es más sencillo, vamos a calcular el resultado siguiendo la fórmula:

resultado1 = (-b + raiz) / 2 * a
resultado2 = (-b - raiz) / 2 * a
 
Y ya hemos acabado realmente, colocamos para leer los números que nos diga el usuario e imprimimos los resultados quedando el algoritmo entero de esta forma:


from math import sqrt

a = int(input('a:'))
b = int(input('b:'))
c = int(input('c:'))

raiz = sqrt(b*b - 4*a*c)
resultado1 = (-b + raiz) / 2 * a
resultado2 = (-b - raiz) / 2 * a
print("resultado1:{}".format(resultado1))
print("resultado2:{}".format(resultado2))
 
Podríamos quedarnos aquí pero entonces no seguiríamos las prácticamos que llevamos comentando. ¿Qué falta? O mejor dicho, si pensáramos con la mentalidad del software libre, nos deberíamos preguntar: ¿este código lo podría usar alguien? La respuesta es que no, porque no lo hemos encapsulado en ninguna función, veamos lo fácil que se hace:

from math import sqrt

def calcular_ecuacion(a, b, c):
    raiz = sqrt(b*b - 4*a*c)
    resultado1 = (-b + raiz) / 2 * a
    resultado2 = (-b - raiz) / 2 * a
    return resultado1, resultado2

a = int(input('a:'))
b = int(input('b:'))
c = int(input('c:'))
resultado1, resultado2 = calcular_ecuacion(a, b, c)
print("resultado1:{}".format(resultado1))
print("resultado2:{}".format(resultado2))

 
Como vemos, tenemos una función que dados los parámetros a, b y c, devuelve 2 valores: resultado1 y resultado2. Cualquier persona puede usar esa función como hemos hecho abajo y recoger en 2 variables el resultado de la ecuación.

No hay comentarios:

Publicar un comentario

Semana 10 · Del 10/04/19 al 10/04/19

Hoy ha sido mi último día en el centro y en la primera hora he estado terminando el practicum en la sala de profesores, y después hemos teni...