private static void Interpreter1() { var esquerda = new Soma(new Numero(5), new Numero(10)); var direita = new Subtracao(new Numero(20), new Numero(10)); var teste = new Multiplicacao(esquerda, direita); var teste2 = new Divisao(new Numero(10), new Numero(2)); var resultado = new Multiplicacao(teste, teste2); Console.WriteLine(resultado.Avalia()); }
private static void Interpreter3() { var esquerda = new Multiplicacao(new Numero(2), new Numero(10)); var direita = new Divisao(new Numero(20), new Numero(10)); var resultado = new Multiplicacao(esquerda, direita); Console.WriteLine(resultado.Avalia()); var resultadoRaiz = new Raiz(resultado); Console.WriteLine(resultadoRaiz.Avalia()); }
static void Main(string[] args) { IExpressao esquerda = new Soma(new Numero(1), new Numero(10)); IExpressao direita = new Subtrai(new Numero(17), new Numero(4)); IExpressao resultSoma = new Soma(esquerda, direita); IExpressao resultMultiplicacao = new Multiplicacao(esquerda, direita); IExpressao resultDivisao = new Divisao(esquerda, direita); Console.WriteLine(resultSoma.Avalia()); Console.WriteLine(resultMultiplicacao.Avalia()); // Avaliador de Expressões da própria linguagem C# // Expression soma = Expression.Add(Expression.Constant(10), Expression.Constant(29)); // Func<int> funcao = Expression.Lambda<Func<int>>(soma).Compile(); // Console.WriteLine(funcao.Invoke()); }
private static void TestaVisitorExemploCalculadora() { var esquerda = new Soma(new Soma(new Numero(1), new Numero(100)), new Numero(10)); // (1+100) + 10 = 111 var direita = new Subtracao(new Numero(20), new Numero(10)); // 20 - 10 = 10 var soma = new Soma(esquerda, direita); // 111 + 10 = 121 var impressora = new ImpressoraVisitor(); soma.Aceita(impressora); //Imprime expressão. Console.WriteLine($" = {soma.Avalia()}."); //Imprime resultado. var multiplicacao = new Multiplicacao(new Subtracao(new RaizQuadrada(new Numero(9)), new Numero(2)), new Divisao(new Numero(6), new Numero(3))); // (((√9)-2)*(6/3)) multiplicacao.Aceita(impressora); Console.WriteLine($" = {multiplicacao.Avalia()}."); Console.ReadKey(); }
private void testaImpressoraVisitor() { RaizQuadrada raizQuadrada = new RaizQuadrada(new Numero(81)); IVisitor visitor1 = new ImpressoraVisitor(); visitor1.ImprimeRaizQuadrada(raizQuadrada); Console.WriteLine(); Console.WriteLine(raizQuadrada.Avalia()); Console.WriteLine(); Multiplicacao multiplicacao = new Multiplicacao((new Subtracao(new Numero(50), new Numero(45))), new Numero(30)); IVisitor visitor2 = new ImpressoraVisitor(); visitor2.ImprimeMultiplicacao(multiplicacao); Console.WriteLine(); Console.WriteLine(multiplicacao.Avalia()); Console.WriteLine(); Divisao divisao = new Divisao((new Subtracao(new Numero(50), new Numero(50))), new Numero(30)); IVisitor visitor3 = new ImpressoraVisitor(); visitor3.ImprimeDivisao(divisao); Console.WriteLine(); Console.WriteLine(divisao.Avalia()); }
private void testaPreFixaVisitor() { Multiplicacao multiplicacao = new Multiplicacao((new Subtracao(new Numero(50), new Numero(45))), new Numero(30)); IVisitor visitor2 = new PreFixaVisitor(); visitor2.ImprimeMultiplicacao(multiplicacao); Console.WriteLine(); Console.WriteLine(multiplicacao.Avalia()); }