Hacer programa para cálculos

CaNaRy_r00lz

Buenas, llevo bastante tiempo dándole vueltas a la cabeza con hacerme un programa para realizar cálculos, muchos son cos/arcos/tang/raices/fracciones todo eso combinado, entonces me gustaría poder realizar un programa que sea un *.exe o el formato que sea, que pueda llevármelo a donde quiera y poder realizar las operaciones que necesite sin ningún problema.

Hay ciertos cálculos que los tengo realizados en excel y otros que me los dejaron para una calculadora HP50g+ en rpn, decir que no tengo ni idea de programación, asi que no se ni que lenguaje debería escoger para tal cosa, había pensado en el c++ que siempre me han dicho que es muy sencillo.

A ver si alguien me puede dar una orientación o algún consejo pk la verdad ando bastante perdido

Gracias por cualquier ayuda!

p.d. no se si este es el foro más adecuado, pero mejor que software y hardware creo que si es.

Josekron

La forma más sencilla es con C# y visual studio. Creas un nuevo proyecto windows Form y arrastrando botones, etiquetas, etc, te creas un formulario/programa en un par de minutos. Solo te queda rellenar el controlador.

Con Java tampoco es que sea mucho más difícil, ya sea usando netbeans o con Eclipse + plugin pero en mi opinión windows Form da bastante más facilidades.

De todas formas, creo que esta necesidad está cubierta con webs como WolframAlpha.

Saludos.

1 respuesta
CaNaRy_r00lz

#2 ehm básicamente no, pk es para cálculos topográficos específicos, con lo cual o me lo hago yo, o pago por un programa que vale mucho xDD y como ahora mismo no hago nada me gustaria tener todo metido en un programita, y tener la certeza de que funciona bien así lo puedo usar para comprobar cosas el día de mañana

Me recomiendas algun tuto o directamente el F1 del windows form es suficiente?

1 respuesta
Josekron

#3 Crear un programa con windows Form es bastante intuitivo pero si dices que no tienes ni idea de programación... no requiere un gran nivel de programación (veo más dificultad en implementar los cálculos en sí) pero hay que tener en cuenta una serie de cosas como por ejemplo controlar el tema de las excepciones (por ejemplo dividir entre 0) para que no pete el programa.

Lo suyo es que te mires algún manual del lenguaje (C# en este caso) que es lo verdaderamente importante. Elijas la opción que elijas, no te vas a librar de tener que aprender su lenguaje.

En cuanto a un tutorial, no conozco ninguno en concreto para recomendarte aunque en google tienes miles para elegir.

1 respuesta
elkaoD

Si no te he entendido mal tú quieres una especie de "calculadora" programable para el PC.

Esos programas ya existen y no, no me refiero a MATLAB, Mathematica, etc. (que es lo ideal, si lo dices por el precio tienes Octave que es algo así como MATLAB GNU.) Me refiero a REPLs.

Un REPL (Read-Eval-Print Loop) no es más que un programa que lee de la entrada del usuario (Read), evalúa la expresión que ha introducido (Eval), imprime el resultado (Print) y vuelve a comenzar el ciclo (Loop).

Un REPL es dinámico, de sintaxis mucho más sencilla que C++ y puedes hacer cosas como si fuera una calculadora gracias a que evalúa al instante. C++ hay que pasarlo a .exe lo que se lleva un precioso tiempo y te dificulta "experimentar".

Una vez terminas tus "experimentos" en la calculadora puedes grabar el código en un archivo y reproducirlo cuando quieras (como si de un programa se tratara.)

Yo personalmente uso muchas veces de calculadora Clojure/R/MATLAB/Python/Node.js/la consola del Google Chrome (dependiendo de qué quiera hacer, qué tenga a mano y lo que me quiera esmerar xD)

Un REPL de cualquier lenguaje interpretado (desde Python hasta Clojure) te va a hacer las mismas funciones y con mucha más potencia que cualquier historia que te quieras programar tú. Créeme, si no quieres tirar de Octave (por complicado, limitado, o porque no te gusta) un REPL cualquiera es tu mejor solución. ¿Cuál? Depende. Cada lenguaje es un mundo. Python es muy sencillito y fácil para empezar. R es muy potente (es como el MATLAB de la estadística) y la consola del Chrome/Firefox te saca de un apuro.

Aquí tienes algunos online para probar: http://repl.it/

PD: C++ no es muy sencillo. De hecho es de los lenguajes más complicados que hay. Huye de él xD

1 2 respuestas
CaNaRy_r00lz

#4 Mirare sobre c# que me tenga que aprender las cosas lo sé, lo que quiero es elegir algo que me vaya a ser util y no verme a mitad de lo que haga que no puedo usarlo xDD

#5 Si que hay programas que hacen esos cálculos ya lo sé, pero como digo son programas de pago, o gente que los ha hecho por ellos mismos, y dependiendo que aproximaciones hagan dan unos u otros resultados, y yo solo me fio de los míos o de alguien de confianza

veamos es para cosas de este tipo

que dependiendo de que que necesites o tengas despejas una u otra cosa

1 respuesta
elkaoD

#6 (he actualizado el post en #5 con más info)

Lo que hablas son palabras mayores. Eso no te lo vas a programar tú ni de coña y, si lo haces, va a ser peor que cualquier implementación por cualquier profesional. Créeme que es un nivel altísimo de programación lo que pretendes.

Los programas de pago por supuesto... son de pago. De los programas "hechos por ellos mismos" pues cosas como Octave llevan años de desarrollo detrás y son un proyecto enorme, me fiaría tanto como de MATLAB (de hecho sigue su sintaxis y todo programa MATLAB es ejecutable en Octave con el mismo resultado.) R que es como el MATLAB de la estadística (muy, muy recomendable), también software libre y muchas soluciones de pago (Revoluton R para Windows por ejemplo, versión free para estudiantes, gran IDE) se basan en ella.

En programas como Derive puedes dejar que el programa te despeje pero como tú dices yo no me fiaría. Al final acabas usando las suites matemáticas como una calculadora y punto.

Aún así el REPL no entra en conflicto con lo que comentas. En el REPL te programas tú todo, solo es una herramienta para facilitar la programación haciéndola dinámica, estilo caculadora. Por lo que me comentas es lo ideal para ti si quieres "ir al meollo".

Aún así tendrás que conocer cómo funciona el lenguaje por detrás (por ejemplo, las imprecisiones del punto flotante) y demás mierda que un programa como MATLAB te abstrae para que no tengas ni que pensar en ellas. Si eliges "la vía de la programación" prepárate a un horror de bits y bytes, comas flotantes, pérdidas de precisión, BigInts, excesivo uso de memoria... etc. Por ejemplo: las implementaciones normales y corrientes del seno y el coseno en los lenguajes usan coma flotante, por lo que no son precisas, así que tendrás que implementar por tu cuenta las funciones de seno y coseno.

Por cierto, Octave es software libre y está programado en C o C++ creo, así que puedes simplemente coger el código y modificarlo tú mismo.

1 1 respuesta
Gusete

Prueba con esto:
http://www.wolframalpha.com/

Si no usa Octave o de pago tienes Mathematica y Matlab.

Si no sabes programar olvidate de hacer lo que pides. Si supieses te lo podrias montar en python bastante rapido.

#9 http://en.wikipedia.org/wiki/SciPy
No discrepes hombre! :P Por ejemplo esta libreria la suelen usar bastante en codigo de research la gente de finanzas y luego lo pasan a C++ para codigo de produccion.

1 1 respuesta
elkaoD

#8 el gran Wolfram Alpha, de cuántos apuros me ha sacado xD

Incluso discreparía con lo Python. Trabajar con fracciones/bigints es un horror y suerte haciendo un seno. Ahí las suites matemáticas y Clojure (que tiene fracciones/bigints nativos) ganan... especialmente las suites matemáticas que tienen sin/cos decentes.

#8 sí, sí, yo me refería al lenguaje base :P

1 1 respuesta
CaNaRy_r00lz

#7 No no a ver, creo que me he explicado mal muy mal xDD

Yo ya se los despejes que tengo que hacer, es decir por ponerte un ejemplo, en esas formulas solo hay 3 despejes posibles, según que caso, será V/R/TD1 o 2, y soy yo quien va a decir que despeje es el que voy a usar, y meteré los valores y listo, es que ahora mismo no tengo el visor de la calculadora que esta en RPN para poder enseñarte un ejemplo

Si, lo que dices en #5 ahora mas explicado si me interesa pk de entrada no te habia entendido asi xDDD

Programar no se, pero todo eso que comento se puede hacer en excel por eso he supuesto que no es muy "complicado" juntarlo todo y tenerlo en algo que no sea excel

como por ejemplo seria esto

spoiler

y cada celda tiene un valor que se ha introducido o proviene de otro resultado previo

#11 ñiiiiie no sabia eso de los fraccionarios, pensaba que era como excel, pero introducirlo en el lenguaje que fuese necesario para hacer el programa y ya, como con el de la calculadora que usa RPN que para mi es la cosa mas atravesada que hay en el mundo xDD y por eso busco otra cosa, pensaba en C o C++, pk tb hay programas para la casio 850p o 880p hechos en c o c++ que no lo hacen todo de golpe, si no que lo haces por partes, consiguiendo resultados para luego calcularlo todo

#11 pues mi gozo en un pozo, pk muchas de las cosas aunque sencillas son con fracciones :/

1 respuesta
elkaoD

#10 lo complicado de esa expresión no es introducirla (es prácticamente igual que comentas) sino que por defecto en los lenguajes de programación los números fraccionales son imprecisos y hay que tener cuidado con cómo trabajas con ellos.

En definitiva, programando te tienes que ocupar tú de ese tipo de mierdas que Excel/MATLAB hacen por ti.

En serio, si programar te la suda y tú solo quieres resultados usa Octave si tiras por matemáticas y R si tiras por estadística. No vas a encontrar nada gratis mejor.

#10 en C/C++ el problema con la coma flotante es aún mayor porque el tipo de datos "especial" para solucionarlo te lo tienes que construir tú (y Python por ejemplo te lo da resuelto.)

¿Que se puede resolver? Sí. ¿Que a veces es un error minúsculo y más con el tipo double? También. ¿Que MATLAB/Octave te quitan de rollos y te lo simplifican al máximo? Por supuesto, y llevan años de optimizaciones en ello.

1 1 respuesta
bLero

Aver, todo depende también de la precisión que él necesite en los cálculos. Si le valen 3 decimales yo creo que con valores double y las funciones matemáticas que introducen la mayoría de APIs de cualquier lenguaje le debería servir.

Simplemente que haga pruebas para calcular la pérdida de precisión, y si esta es asumible que lo programe.

Ahora bien, si es para fórmulas topográficas me imagino que necesitarás precisión milimétrica, así que nose si te servirá, a menos que te sumerjas bastante más en el mundo de los bigInt y fracciones como te dicen por ahi.

1 respuesta
CaNaRy_r00lz

#12 a ver el resultado final, si son 3 decimales, pero las operaciones internas no, es decir no es lo mismo coger 3 decimales en medio de una operación que coger todos los que da, es decir

a ver si me explico pk me da que me he liado xDD

5/6 = 0,833

5/6 = 0,83333333333333333333 (periódico)

osea yo este resultado dentro de la formula que puse mas arriba, si lo pongo solo con 3 decimales, obtengo un resultado distinto a usar todo los números que da (que no se como lo hace por ejemplo una calculadora u excel ) y dependiendo de lo que esté haciendo puede ser una diferencia despreciable o no.

Por eso prefiero hacerlo directo en el sentido de por ejemplo poner seno(5/6) que poner seno(0,833)

#14 ah ok ahora si te entendí lo que querías decir, pues si podría ser una opción, pero yo es que no uso matlab ni nada, uso mi calculadora, que meto la ecuación en peso y ella ya me da el resultado con el churro de decimales, mas que nada pk mi trabajo no esta enfocado a gabinete solamente y si estas en el campo no puedes tener un pc para estar trasteando, a parte que yo en mi calculadora creo que tardaria muchisimo menos en escribirlo que en matlab, pk lo puedo meter igual que lo escribo a mano

1 respuesta
bLero

#13

Sí, yo a lo que me refiero con 3 decimales, es que el resultado final de tus operaciones tendría una precisión aproximada de 3 decimales con respecto a las mismas operaciones en papel o con software matemático específico.

Evidentemente el número de decimales podrá variar según el número de operaciones internas que realices y de la precisión de las funciones matemáticas de la API.

Por eso digo, que yo lo programaría y lo probaría frente a un matlab o similares. Si ves que el resultado que ofrece tu programa no varía en exceso con el que te dice Matlab y te puede servir pues adelante.

Edit: Pues usa tu calculadora entonces, y compara.

1 respuesta

Usuarios habituales

  • bLero
  • CaNaRy_r00lz
  • elkaoD
  • Gusete
  • Josekron