<%@ Page masterpagefile="~/programarpor.master" language="VB" title="Evaluar expresiones usando BigFloat" %>
Utilidades

Evaluar expresiones usando BigFloat

EvalExpr_BigNum_lib


Publicado: 12/Nov/2007
Actualizado: 12/nov/2007
Autor: Guillermo 'guille' Som
 

Contenido

Esta librería te sirve para evaluar expresiones aritméticas, las cuales pueden incluir variables definidas por el usuario y funciones definidas en esta misma librería.

Como el Expression Web este de las narices no deja de colgarse, pues no me voy a enrollar, que antes de colgarse tampoco pensaba enrollarme, pero ahora tengo otra excusa más y es que ya me tiene mu jartico el p*** Expression Web este de los c****.

En realidad lo que te decía antes de que se me colgara el Expression Web, es que esta librería usa el tipo BigFloat que tengo definido en la librería BigInt_lib y que básicamente hace lo mismo que la clase EvaluarFunciones que publiqué hace unas semanas (abajo tienes el link de estas dos cosas que te servirán para saber que es lo que hace esta nueva DLL para evaluar expresiones aritméticas).

Lo que si te voy a poner es los comentarios que tengo en la clase principal, para que te hagas una idea de qué es lo que hace y además de qué es lo que se incluye en el código fuente que te puedes bajar y cuyo link está ahí abajo).

 

Explicación de lo que hace esta librería y cómo lo hace (más o menos)

'-----------------------------------------------------------------------------
' EvalExpr
'
' Basado en QuickEvaluator.cs
' De las news:
' http://www.msnewsgroups.net/group/microsoft.public.dotnet.languages.csharp/topic38122.aspx
' Autor: Barry Kelly
' http: barrkel.blogspot.com/
'
' Este código es parecido al que publicó en el año 1988 Herbert Schildt en
' el evaluador de expresiones del capítulo 7 del libro:
' Intérpretes de lenguajes del libro C Guía para usuarios expertos,
' ISBN: 84-7615-381-3
' Título original: C: Power user's guide,
' ISBN: 0-07-881307-7, publicado por McGraw-Hill
'
' También es parecido al ejemplo del libro de C++ de Bjarne Stroustrup
' en realidad es más parecido al de Bjarne que al de Herbert.
'
' En cualquier caso, no me he complicado la vida reinventando el código, ya que
' he visto que este estaba bien, (aunque tenía algunos fallos),
' además, al estar escrito en C#, era más fácil convertirlo a Visual Basic.
'
' Después le he añadido algo de lo que hace el código de Bjarne, como es el tema
' de las variables y le he añadido más cosas, como es la posibilidad de usar
' funciones predefinidas, además de los cálculos normales, a los que he añadido
' la potencia, el módulo y la división entera.
'
' En los cambios que he hecho, he incluido la posibilidad de escribir varias
' instrucciones en la misma línea, aunque esto solo tiene sentido para definir
' variables, ya que si se escriben varias instrucciones, solo se devuelve
' el valor de una de las operaciones.
'
' Todas las operaciones se realizan usando el tipo de datos BigFloat, que es
' un tipo de datos de coma flotante que acepta valores con muchos dígitos,
' aunque de forma predeterminada está previsto que solo se muestren hasta
' 30 decimales, pero admite números enteros de muchísisisisimos dígitos.
' A pesar de trabajar con tipos BigFloat, todo se devuelve como cadena,
' con idea de que se puedan usar otras funciones como las que devuelven
' listas de números primos o los factores de un número.
'
' También permite trabajar con un par de funciones que convierten números
' de base 2, 8 y 16 a decimal (base 10), en teoría se podría operar con
' cualquier base, pero el programa solo admite números en base 10, y en caso
' de que se indique algo que no se pueda interpretar como un valor en base 10
' no hace ni caso, salvo si es un parámetro de las funciones de conversión.
' Y es que cualquier letra que se use, o es una variable, o es una función o
' en caso de que no sea nada de eso, se evalúa a cero.
'
' Las variables que se definan se mantienen hasta que se cierre el programa o
' se descargue la librería de la memoria.
' Esas variables se pueden eliminar en cualquier momento llamando a Clear().
'
' En un principio hice cambios para usar el separador decimal del sistema,
' pero eso solo lo hice porque internamente usaba valores Double, pero al
' cambiar el tipo de datos con el que se opera a BigFloat, lo dejé con el punto,
' ya que BigFloat lo he configurado para que trabaje con el punto como decimal,
' aunque acepta los dos, el punto y la coma.
'
' Los símbolos o caracteres que se usan para separar instrucciones
' puede ser indistintamente los dos puntos o el punto y coma.
' Las comparaciones se realian usando dos signos iguales ==
' aunque según en qué circunstancias se puede usar un signo igual,
' esas circunstancias es si no hay una variable de por medio, es decir,
' si se comparan números, se puede hacer con los dos: = y ==.
' De la misma forma, la comparación de distinto, se puede hacer con
' != o con <>
' Las asignaciones a variables, se puede hacer con = o con :=
'
' El símbolo % se usa para la operación Mod, lo mismo que la palabra Mod.
' Las potencias se indican con ^ además de con las funciones pow, powi y pow2.
'
' Muchas de las funciones admiten un número variable de argumentos,
' esos argumentos pueden ser números, variables u otras funciones.
'
' Para ver las variables y funciones definidas, puedes usar ?
'
' ©Guillermo 'guille' Som, 2007
'-----------------------------------------------------------------------------

 


El código de EvalExpr_BigNum_lib

Proyecto de Visual Basic 2005 con el código fuente: EvalExpr_BigNum_lib_src.zip - 51.60 KB

Revisión: v1.0.0.22 del 12/Nov/2007

Necesita la DLL de BigInt_lib (en el ZIP se incluye la que actualmente utiliza)

(MD5 checksum: B23DCD2D0487473305F9E8D56DDC14B3)


Links relacionados