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:
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