sábado, 20 de junio de 2020

Proyecto algoritmo calculadora recursiva/sucesiva básica (suma, resta, multiplicación, división) y funciones trigonométricas (sen, cos, tan)

Saludos a todos.

A continuación una explicación de como hacer una calculadora en dfd que realice las operaciones básicas sumadas a las funciones trigonométricas.

En primer lugar tenemos que entender el funcionamiento del proyecto.

1. Se necesita mínimo dos valores reales para las 4 operaciones básicas. En el caso de potencia, raíz cuadrada, y demás funciones, el algoritmo puede arrancar con un solo valor.

2. Se necesita poner en pantalla alternativas que le irán indicando al usuario si seguir operando o no, y que operación realizar. 

Para esto: suma se pondrá como operador '+', resta '-', etc.

3. Si no hay mas operaciones ('n') se mostrara el resultado final. Por lo contrario se seguirá realizando las operaciones según el usuario introduzca los datos específicos.

El algoritmo funciona mas o menos de la siguiente manera:

Inicio programa calculadora

real numero1, numero2
caracter operacion

Mostrar 'Introducir numero 1'
Leer numero1
Mostrar 'escoge tu operacion: (+) suma, (-) resta... (/) division'
Leer operacion
Llamar subprograma calcular(numero1, operacion)

Fin programa calculadora

calcular(n1,o)

real numero2
 
Mostrar 'Introduce tu segundo valor:'
Leer numero2
Si o='+'
operacion=n1+numero2
fin si

Si o='-'
operacion=n1-numero2 
fin si
.
.
.

Si o='/' and n2<>0
operacion=n1/numero2      
fin si

Mostrar operacion

Regresar

Hasta este punto la calculadora resuelve la operación de dos variables introducidas por teclado, pero necesitamos que sea mas dinámica y cada vez que le indique que haya una operación mas, la resuelva hasta que le indique lo contrario.

El algoritmo funcionaria mas o menos así, teniendo como base el anterior:

Inicio programa calculadora

mostrar 'introduce tu primer numero:'
leer val1
mostrar 'operacion: (+) suma... (/) division'
leer operador
mostrar 'introduce tu segundo numero:'
leer val2
llamar calculador (val1, val2, operador)

fin calculadora

Calculador()
  operar=1
si tag='+'
  operacion=a1+a2
  mostrar 'hay mas operacion (s/n):'
  leer respuesta
     si respues='s'
       numero1=operacion
       mostrar 'operacion: (+) suma... (/) division'
       leer operador
       mostrar 'introduce tu segundo numero:'
       leer valor2 
       llamar calculador (numero1, valor2, operador)
     si no
       mostrar operacion
     fin si
fin si    
.
.
.

si tag='/' and a2<>0
  operacion=a1/a2
  mostrar 'hay mas operacion (s/n):'
  leer respuesta
     si respues='s'
       numero1=operacion
       mostrar 'operacion: (+) suma... (/) division'
       leer operador
       mostrar 'introduce tu segundo numero:'
       leer valor2 
       llamar calculador (numero1, valor2, operador)
     si no
       mostrar operacion
     fin si
si no 
     si a2=0
        mostrar 'error! no se puede dividir entre cero'
        mostrar 'introduce tu nuevo valor:' 
        leer a2
        llamar calcular (a1,a2,tag) 
     si no
        operacion=a1/a2
        mostrar 'hay mas operacion (s/n):'
        leer respuesta
        si respues='s'
           numero1=operacion
           mostrar 'operacion: (+) suma... (/) division'
           leer operador
           mostrar 'introduce tu segundo numero:'
           leer valor2 
           llamar calculador (numero1, valor2, operador)
        si no
           mostrar operacion
        fin si
     fin si
fin si   
regresar

Ahora hacemos un poco mas desarrollada nuestra aplicación no solo con operación básicas (suma, resta... división) si no que también podrá realizar operaciones de potencia, raíz cuadrada y todas las funciones trigonométricas que dfd permite realizar.

Para eso solo modificaremos el algoritmo calculadora de la siguiente manera:

mostrar 'introduce tu primer numero:'
leer val1
mostar 'operacion: (+) suma... (p) potencia, (r) raiz cuadrada, (x) otras funciones'
leer operador
si operador = 'p'
   mostar 'elevar a:'
   leer val2
   llamar potencia(val1,val2)
si no 
   si operador = 'r'
     llamar raizcuadrada(val1)
     si no
        si operador = 'x'
           llamar funciones(val1)
         si no
             mostrar 'introduce tu segundo numero:'
             leer val2
             llamar calcular(val1,val2,operador)
          fin
       fin
fin  

Ahora lo único que tenemos que estructurar son tres nuevos programas para potencia, raiz y funciones trigonométricas.

potencia(p1,p2)
 operacion = p1^p2
 mostrar 'hay mas operaciones (s/n):'
 leer respuesta
   si respuesta = 's'
      val1 = operacion
      mostrar 'operacion: (+)suma...'
      leer tagp
          si tagp ='p'
            mostrar 'elevar a:'
            leer val2
            llamar potencia(val1,val2)
           si no
             si tagp = 'r'
                 llamar raizcuadrada(val1)
             si no
                  si tagp = 'x'
                     llamar funciones(val1)
                  si no
                      mostrar 'introduce tu segundo numero:'
                      leer val2
                       llamar calculadora(val1, val2, tagp) 
                   fin si
              fin si
            fin si
      si no
         mostrar operacion
      fin si

raizcuadrada(a2)
operacion = sqrt(a2)
de aqui en adelante copiar todo esto

funciones(a1)
  mostrar 'que funcion deseas realizar: (1) valor absoluto, (2) division entera, (3) resto de division, (4) logaritmo decimal, (5) logaritmo neperiano, (6) seno, (7)  coseno, (8)tangente'  
  leer funcion
     si funcion = 1 
        absoluto = abs(a1)
        a1 = absoluto
     fin si

     si funcion = 2
        mostrar 'dividir entre:'
        leer dividir
        entero = trunc(a1/dividir)
        a1 = entero
     fin si

     si funcion = 3 
        mostrar 'dividir entre:'
        leer dividir
        resto = a1 mod dividir 
        a1 = resto
     fin si

     si funcion = 4 
        logaritmo = log(a1)
        a1=logaritmo
     fin si

     si funcion = 5 
        logaritmoneperiano = ln(a1)
        a1 = logaritmoneperiano
     fin si

     si funcion = 6 
        seno = sen(a1)
        a1=sen
     fin si

     si funcion = 7 
        coseno = cos(a1)
        a1=coseno
     fin si

     si funcion = 8
        tangente = tan(a1)
        a1=tangente
     fin si
  mostrar 'hay mas operaciones (s/n):'
  leer respuesta
  si respuesta = 's'
     leer a2
     llamar calcular(a1,a2,respuesta)
  si no
     mostrar a1
  fin si

No hay comentarios.:

Publicar un comentario