Siempre creciendo, siempre aprendiendo. Cultura maker.

A vueltas con el uso de los diagramas de flujo, vamos a trabajar con otro ejemplo para que veáis la utilidad de esta herramienta: vamos a implementar un programa en Python que nos pedirá los términos cuadrático, simple e independiente de una ecuación de 2º grado (en nuestro programa, variables a, b y c introducidas por teclado) para que nos la resuelva. Como sabes (y si no lo sabes, te lo explico), la fórmula que resuelve este tipo de ecuaciones trabaja con la fórmula:

El contenido de la raíz cuadrada se denomina discriminante, y dependiendo de su valor, nos encontraremos con tres posibilidades:

  1. El discriminante es mayor que cero: entonces tenemos dos soluciones de tipo real .
  2. El discriminante es menor que cero: tenemos dos soluciones de tipo imaginario.
  3. El discriminante es cero: la única solución posible es real, de tipo -b/2a

Como yo no tengo tiempo ni tú ganas de leer, te ofrezco a continuación el diagrama de flujo que contempla y reacciona a las tres posibilidades, seguido del código correspondiente en Python. El código se reproduce indefinidamente, de ahí el conector en el diagrama de flujo y el while(1) en Python:

resolucionEcuaciones2grado

 

Y aquí el código:

import math
while(1):
    a=input("introduzca coeficiente cuadratico: ")
    b=input("Introduzca coeficiente dependiente: ")
    c=input("Introduzca coeficiente independiente: ")
    print "La ecuacion es: ",a,"x2 + ",b,"x + ",c


    discriminante=pow(b,2)-4*a*c
    #print "El discriminante vale: ",discriminante
    if (discriminante<0):
        print "La solucion es compleja: "
        discriminante=discriminante*(-1)
        imaginario=pow(discriminante,0.5)
        r=-b/(2*a)
        print "Solucion 1: "+str(r)+"+"+str(imaginario)+"i"
        print "Solucion 2: "+str(r)+"-"+str(imaginario)+"i"
    elif (discriminante==0):
        print "Hay una solucion: "+(str)(r=(-b)/(2*a))
    else:
        print "Hay dos soluciones: "
        print "Solucion 1: "+(str)((-b+pow(discriminante,0.5))/(2*a))
        print "Solucion 2: "+(str)((-b-pow(discriminante,0.5))/(2*a))
        
        
    

¡Y eso es todo por ahora!. ¡Seguimos en contacto!. ¡Podéis comentarme lo que queráis en esta web, en los comentarios, o por Facebook, YouTube o Twitter!. ¡Seguid creciendo!. ¡Seguid aprendiendo!. ¡Cultura maker!. ¡Sed felices!