コード例 #1
0
        static void Main(string[] args)
        {
            /* Interpreter
             * Usado para avaliar uma arvore de Expressoes
             *
             * EXEMPLO COM UMA EXPRESSAO MATEMATICA:
             *
             *  ( 2 + 30 ) + ( 35 - 15)
             +
             +             -
             +    2 e 30       35 e 15
             + (Resultado: 32) (Resultado: 20)
             +
             */


            IExpressao esquerda;
            IExpressao direita;
            IExpressao soma;

            esquerda = new Soma(new Numero(2), new Numero(30));       // ( 2 + 30 ) = 32
            direita  = new Subtracao(new Numero(35), new Numero(15)); // ( 35 - 15 ) = 20

            soma = new Soma(esquerda, direita);                       // ( 32 ) + ( 20 )

            Console.WriteLine($" ( 2 + 30 ) + ( 35 - 15 ) = {soma.Avaliar()}");
            Console.WriteLine();

            // AUMENTANDO A COMPLEXIDADE
            // ( ( ( 2 + 20 ) + ( 20 - 10 ) ) * 4 )  / 2

            esquerda = new Soma(new Numero(2), new Numero(20));
            direita  = new Subtracao(new Numero(20), new Numero(10));

            soma = new Soma(esquerda, direita);                            // (2 + 20) + (20 - 10) = 32

            IExpressao multiplicao = new Multiplicao(soma, new Numero(4)); // 32 * 4

            IExpressao divisao = new Divisao(multiplicao, new Numero(2));  // ( 32 * 4 ) / 2

            Console.WriteLine($" ( ( ( 2 + 20 ) + ( 20 - 10 ) ) * 4 ) / 2 = {divisao.Avaliar()}");

            Console.ReadKey();
        }
コード例 #2
0
        public static void Main(string[] args)
        {
            // (1+2) + (20-10)
            var esquerda = new Soma(new Numero(1), new Numero(2));
            var direita  = new Subtracao(new Numero(20), new Numero(10));
            var soma     = new Soma(direita, esquerda);

            Console.WriteLine(soma.Avalia());
            Console.ReadKey();



            //nativo c#
            var expression = Expression.Divide(Expression.Constant(10m), Expression.Constant(2m));
            var funcao     = Expression.Lambda <Func <decimal> >(expression).Compile();

            //Console.WriteLine(funcao());
            //Console.ReadKey();
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: DiegoBarney/PadraoVisitor
        static void Main(string[] args)
        {
            // A(5) = (5+5) - 5
            Expressao A = new Subtracao(new Soma(new Numero(5), new Numero(5)), new Numero(5));

            //B(5) = 10 - 5
            Expressao B = new Subtracao(new Numero(10), new Numero(5));

            //conta(10) = Raiz( (5+5) )
            Expressao conta   = new Soma(B, A);
            Visitor   visitor = new Impressora();

            conta.aceita(visitor);


            /*double resultado = new RaizQuadrada(new Soma(B, A)).avalia();
             *
             * Console.WriteLine(resultado);*/
        }
コード例 #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Resolvendo a expressão (2 + 3) - 2  = 3");
            var soma       = new Soma(new Numero(2), new Numero(3));
            var substracao = new Subtracao(soma, new Numero(2));

            Console.WriteLine("Resultado: {0}", substracao.Avalia());

            Console.WriteLine("Resolvendo a expresao ((4 * 10) / (1 + 1)) = 20");
            var multiplicacao = new Multiplicacao(new Numero(4), new Numero(10));

            soma = new Soma(new Numero(1), new Numero(1));
            var divisao = new Divisao(multiplicacao, soma);

            Console.WriteLine("Resultado: {0}", divisao.Avalia());

            Console.WriteLine("Resolvendo raiz quadrada de 8 + 10 = 12.8284");
            var raizquadrada = new RaizQuadrada(new Numero(8));

            soma = new Soma(raizquadrada, new Numero(10));
            Console.WriteLine("Resultado: {0}", soma.Avalia());
        }