Exemple #1
0
        static void Main(string[] args)
        {
            /*Uso de ref con multiplicacion  */
            Multiplicar m = new Multiplicar();
            int         x = 4;

            m.multi(ref x);
            Console.WriteLine(x);

            /*Uso de out con division*/
            int y = 2;
            int z = 2;
            int r;

            division(y, z, out r);
            Console.WriteLine(division(y, z));

            /*Uso de in con resta*/
            resta res = new resta();
            int   i   = 10;

            i = i - 8;
            res.re(in i);
            Console.WriteLine(i);
        }
Exemple #2
0
 private void button2_Click(object sender, EventArgs e)
 {
     ingreso2    = new resta();
     ingreso2.R1 = double.Parse(textBox1.Text);
     ingreso2.R2 = double.Parse(textBox2.Text);
     label3.Text = ingreso2.calcular().ToString();
 }
Exemple #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (this.checkBox1.Checked == true)
            {
                obj1          = new suma();
                obj1.S1       = double.Parse(textBox1.Text);
                obj1.S2       = double.Parse(textBox2.Text);
                textBox3.Text = obj1.calcular().ToString();
            }
            else if (this.checkBox2.Checked == true)
            {
                obj2          = new resta();
                obj2.R1       = double.Parse(textBox1.Text);
                obj2.R2       = double.Parse(textBox2.Text);
                textBox3.Text = obj2.calcular().ToString();
            }

            else if (this.checkBox3.Checked == true)
            {
                obj3          = new multiplicacion();
                obj3.M1       = double.Parse(textBox1.Text);
                obj3.M2       = double.Parse(textBox2.Text);
                textBox3.Text = obj3.calcular().ToString();
            }
            else if (this.checkBox4.Checked == true)
            {
                obj4          = new division();
                obj4.D1       = double.Parse(textBox1.Text);
                obj4.D2       = double.Parse(textBox2.Text);
                textBox3.Text = obj4.calcular().ToString();
            }
        }
Exemple #4
0
        /*menu 2
         * 1.sumar
         * 2.restar
         * 3.multiplicar
         * 4.dividir
         * 5.raiz cuadrada
         * Default mensaje error y vuelta al menu2*/
        public static void menuCalc(string IdSesion)
        {
            Console.Clear();
            var salida2 = false;

            while (!salida2)
            {
                opcionesCalcular();
                switch (seleccionar())
                {
                case ("1"):
                {
                    Console.Clear();
                    var sumadores = SolicitarValores("sumar");
                    try
                    {
                        var sumadoresDoub = convertirDouble(sumadores);
                        var sumador       = new suma(sumadoresDoub);
                        var streamS       = new MemoryStream();
                        var conversor     = new DataContractJsonSerializer(typeof(suma));
                        conversor.WriteObject(streamS, sumador);
                        var JsonFinal = serializador(conversor, streamS);
                        var res       = new respuesta();
                        var salida    = res.responder($"{servidor}/Calculator/Add", JsonFinal, IdSesion);
                        Console.Clear();
                        var Respuesta = deserializeResponse.DeserializeSuma(salida);
                        Console.WriteLine(Respuesta.ToString());
                        continuar();
                    }
                    catch (Exception)
                    {
                    }
                    break;
                }

                case ("2"):
                {
                    Console.Clear();
                    Console.WriteLine("Escriba el minuendo");

                    try
                    {
                        var minuendo        = Convert.ToDouble(Console.ReadLine());
                        var sustraendos     = SolicitarValores("restar");
                        var sustraendosDoub = convertirDouble(sustraendos);
                        var restador        = new resta(minuendo, sustraendosDoub);
                        var streamS         = new MemoryStream();
                        var conversor       = new DataContractJsonSerializer(typeof(resta));
                        conversor.WriteObject(streamS, restador);
                        var JsonFinal = serializador(conversor, streamS);
                        var res       = new respuesta();
                        Console.Clear();
                        var salida    = res.responder($"{servidor}/Calculator/Sub", JsonFinal, IdSesion);
                        var Respuesta = deserializeResponse.DeserializeResta(salida);
                        Console.WriteLine(Respuesta);
                        continuar();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }


                    break;
                }

                case ("3"):
                {
                    Console.Clear();
                    var multiplicadores = SolicitarValores("multiplicar");
                    try
                    {
                        var multiplicadoresDoub = convertirDouble(multiplicadores);
                        var multiplicador       = new multiplicacion(multiplicadoresDoub);
                        var streamS             = new MemoryStream();
                        var conversor           = new DataContractJsonSerializer(typeof(multiplicacion));
                        conversor.WriteObject(streamS, multiplicador);
                        var JsonFinal = serializador(conversor, streamS);
                        Console.Clear();
                        var res       = new respuesta();
                        var salida    = res.responder($"{servidor}/Calculator/Mult", JsonFinal, IdSesion);
                        var Respuesta = deserializeResponse.DeserializeMult(salida);
                        Console.WriteLine(Respuesta);
                        continuar();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                    break;
                }

                case ("4"):
                {
                    Console.Clear();
                    Console.WriteLine("Escriba el dividendo");
                    try
                    {
                        var dividendo = Convert.ToDouble(Console.ReadLine());
                        var divisores = convertirDouble(SolicitarValores("dividir"));
                        var dividir   = new division(dividendo, divisores);
                        var streamS   = new MemoryStream();
                        var conversor = new DataContractJsonSerializer(typeof(division));
                        conversor.WriteObject(streamS, dividir);
                        var JsonFinal = serializador(conversor, streamS);
                        var res       = new respuesta();
                        Console.Clear();
                        var salida    = res.responder($"{servidor}/Calculator/Div", JsonFinal, IdSesion);
                        var Respuesta = deserializeResponse.DeserializeDiv(salida);
                        Console.WriteLine(Respuesta);
                        continuar();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }

                    break;
                }

                case ("5"):
                {
                    Console.Clear();
                    Console.WriteLine("Escriba el numero para realizar la raiz cuadrada");
                    try
                    {
                        var numeroRaiz = Convert.ToDouble(Console.ReadLine());
                        var raiz       = new raizCuadrada(numeroRaiz);
                        var streamS    = new MemoryStream();
                        var conversor  = new DataContractJsonSerializer(typeof(raizCuadrada));
                        conversor.WriteObject(streamS, raiz);
                        var JsonFinal = serializador(conversor, streamS);
                        var res       = new respuesta();
                        var salida    = res.responder($"{servidor}/Calculator/Sqrt", JsonFinal, IdSesion);
                        if (salida != "")
                        {
                            var ObjRes = deserializeResponse.DeserializeSqrt(salida);
                            Console.Clear();
                            Console.WriteLine($"El resultado es : {ObjRes.square}");
                        }
                        continuar();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }

                    break;
                }

                case ("6"):
                {
                    salida2 = true;
                    break;
                }

                default:
                {
                    Console.Clear();
                    Console.WriteLine("Opcion invalida");
                    break;
                }
                }
            }
        }
Exemple #5
0
        /*
         |-------------------------------------------------------------------------------------------------------------------
         | EJECUCIÓN FINAL
         |-------------------------------------------------------------------------------------------------------------------
         |
         */

        public override itemRetorno ejecutar(elementoEntorno tablaEntornos)

        /*
         |----------------------------
         | EJECUTAR
         |----------------------------
         | 0= normal
         | 1 = return;
         | 2 = break
         | 3 = continue
         | 4 = errores
         */
        {
            itemRetorno retorno = new itemRetorno(0);

            if (hayErrores())
            {
                return(retorno);
            }



            if (hijos.Count == 2)

            /*
             |----------------------------
             |  ID_VAR_FUNC + VAL
             */

            {
                //PUNTERO DONDE VOY A GUARDAR EL VALOR
                _ID_VAR_FUNC nodoFunc = (_ID_VAR_FUNC)getNodo("ID_VAR_FUNC");
                itemEntorno  destino  = nodoFunc.getDestino(tablaEntornos);


                //AHORA OBTENGO EL VALOR
                _VAL nodoVal = (_VAL)getNodo("VAL");
                if (nodoVal != null)
                {
                    if (destino != null)
                    {
                        itemValor valor = nodoVal.getValor(tablaEntornos, destino.tipo);
                        if (destino.lstDimensionesAcceso.Count > 0)
                        //viene la posición de un arreglo
                        {
                            asignarValorMatriz(destino, valor);
                        }
                        else
                        {
                            asignarValor(destino, valor);
                        }
                    }
                    else
                    {
                        println("Me retorno un itemEntorno vacio, no podré asignar la variable prro");
                    }
                }
                else
                {
                    println("no tiene nodo VAl");
                }
            }

            else if (hijos.Count == 1)
            {
                if (lstAtributos.getToken(0).valLower.Equals("+"))

                /*
                 |----------------------------
                 |  ID_VAR_FUNC + sMas + sMas
                 */
                {
                    if (hayErrores())
                    {
                        return(retorno);
                    }

                    _ID_VAR_FUNC nodoFunc = (_ID_VAR_FUNC)getNodo("ID_VAR_FUNC");
                    itemEntorno  destino  = nodoFunc.getDestino(tablaEntornos);



                    if (destino.lstDimensionesAcceso.Count > 0)
                    //viene la posición de un arreglo
                    {
                        tablaSimbolos.tablaErrores.insertErrorSemantic("No se puede incrementar la matriz " + destino.nombre.val + " de tipo: " + destino.tipo.valLower, destino.nombre);
                    }
                    else
                    {
                        itemValor valor  = nodoFunc.getValor(tablaEntornos);
                        itemValor valor2 = new itemValor();
                        valor2.setValue(1);

                        suma sumatoria = new suma(new _E("hijo1", tablaSimbolos), new _E("hijo2", tablaSimbolos), tablaSimbolos, lstAtributos.getToken(0));

                        itemValor resultado = sumatoria.opSumaExterna(tablaEntornos, valor, valor2);

                        Object ObjParseado = resultado.getValorParseado(destino.tipo.valLower);
                        if (ObjParseado != null)
                        {
                            destino.valor.valor = ObjParseado;
                            return(retorno);
                        }
                        else
                        {
                            tablaSimbolos.tablaErrores.insertErrorSemantic("No se puede asignar un tipo :" + sumatoria.GetType() + " a la variable " + destino.nombre.val + " de tipo: " + destino.tipo.valLower, destino.nombre);
                            return(retorno);
                        }
                    }
                }
                else

                /*
                 |----------------------------
                 |  ID_VAR_FUNC + smenos + smenos
                 */
                {
                    if (hayErrores())
                    {
                        return(retorno);
                    }

                    _ID_VAR_FUNC nodoFunc = (_ID_VAR_FUNC)getNodo("ID_VAR_FUNC");
                    itemEntorno  destino  = nodoFunc.getDestino(tablaEntornos);



                    if (destino.lstDimensionesAcceso.Count > 0)
                    //viene la posición de un arreglo
                    {
                        tablaSimbolos.tablaErrores.insertErrorSemantic("No se puede incrementar la matriz " + destino.nombre.val + " de tipo: " + destino.tipo.valLower, destino.nombre);
                    }
                    else
                    {
                        itemValor valor  = nodoFunc.getValor(tablaEntornos);
                        itemValor valor2 = new itemValor();
                        valor2.setValue(1);

                        resta sumatoria = new resta(new _E("hijo1", tablaSimbolos), new _E("hijo2", tablaSimbolos), tablaSimbolos, lstAtributos.getToken(0));

                        itemValor resultado = sumatoria.opRestaExterna(tablaEntornos, valor, valor2);

                        Object ObjParseado = resultado.getValorParseado(destino.tipo.valLower);
                        if (ObjParseado != null)
                        {
                            destino.valor.valor = ObjParseado;
                            return(retorno);
                        }
                        else
                        {
                            tablaSimbolos.tablaErrores.insertErrorSemantic("No se puede asignar un tipo :" + sumatoria.GetType() + " a la variable " + destino.nombre.val + " de tipo: " + destino.tipo.valLower, destino.nombre);
                            return(retorno);
                        }
                    }
                }
            }

            return(retorno);
        }
Exemple #6
0
        public itemValor getValor(elementoEntorno elmen)
        {
            itemValor ob = new itemValor();

            ob.setTypeNulo();

            if (hayErrores())
            {
                return(ob);
            }

            switch (hijos.Count)
            {
            case 0:
                if (lstAtributos.listaAtributos.Count > 0)
                {
                    return(parseandoDato(lstAtributos.listaAtributos[0]));
                }
                else
                {
                    tablaSimbolos.tablaErrores.insertErrorSyntax("[E] Se esperaba un valor ", new token());
                    return(ob);
                    //hay un error
                }

            case 1:

                if (hijos[0].nombre.Equals("OPE_ARITME"))
                {
                    return(hijos[0].ope_tipo(elmen));
                }
                else if (hijos[0].nombre.Equals("OPE_TIPO"))
                {
                    return(hijos[0].ope_tipo(elmen));
                }
                else if (hijos[0].nombre.Equals("SI_SIMPLIFICADO"))
                {
                    _SI_SIMPLIFICADO simplif = (_SI_SIMPLIFICADO)hijos[0];
                    return(simplif.getValor(elmen));
                }
                else if (hijos[0].nombre.Equals("LEN"))
                {
                    _LEN len = (_LEN)hijos[0];
                    return(len.getValor(elmen));
                }
                //operador unario
                else if (lstAtributos.listaAtributos.Count > 0)
                {
                    String signo = lstAtributos.getValItem(0);
                    switch (signo)
                    {
                    //Logico
                    case "-":
                        negativo opNeg = new negativo(hijos[0], tablaSimbolos, lstAtributos.getToken(0));
                        return(opNeg.opNot(" Asignando valor Negativo", elmen));

                    case "!":
                        Not opeNot = new Not(hijos[0], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeNot.opNot("Not", elmen));

                    case "(":
                        _E        ope = (_E)hijos[0];
                        itemValor te  = ope.getValor(elmen);
                        return(te);

                    default:
                        tablaSimbolos.tablaErrores.insertErrorSyntax("[E]No se reconoció el signo", lstAtributos.getToken(0));
                        return(ob);
                    }
                }
                else
                //ID_VAR_FUNC
                {
                    nodoModelo busq = getNodo("ID_VAR_FUNC");
                    if (busq != null)
                    {
                        _ID_VAR_FUNC idFunc = (_ID_VAR_FUNC)busq;
                        return(idFunc.getValor(elmen));
                    }

                    tablaSimbolos.tablaErrores.insertErrorSyntax("[E]Se esperaba un signo para operación unaria", new token());
                    return(ob);
                }

            case 2:
                //operador binario
                if (lstAtributos.listaAtributos.Count > 0)
                {
                    String signo = lstAtributos.getValItem(0);
                    switch (signo)
                    {
                    //Aritmetica
                    case "+":
                        suma ope = new suma(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(ope.opSuma(elmen));

                    case "-":
                        resta opeRes = new resta(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeRes.opResta(elmen));

                    case "*":
                        multiplicacion opeMul = new multiplicacion(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeMul.opMultiplicacion(elmen));

                    case "/":
                        division opeDiv = new division(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeDiv.opDivision(elmen));

                    case "^":
                        potencia opePot = new potencia(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opePot.opPotencia(elmen));

                    case "%":
                        modulo opeModulo = new modulo(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeModulo.opModulo(elmen));


                    //Relacional
                    case "==":
                        IgualQue opeIgualacion = new IgualQue(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeIgualacion.opIgualacion("Igualación", elmen));

                    case "!=":
                        DiferenteQue opeDiferenciacion = new DiferenteQue(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeDiferenciacion.opDiferenciacion("Diferenciación", elmen));

                    case ">":
                        MayorQue opeMayor = new MayorQue(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeMayor.opMayorQue("Mayor Que", elmen));

                    case ">=":
                        MayorIgualQue opeMayorIgual = new MayorIgualQue(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeMayorIgual.opMayorIgualQue("Mayor o Igual Que", elmen));

                    case "<":
                        MenorQue opeMenor = new MenorQue(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeMenor.opMenorQue("Menor Que", elmen));

                    case "<=":
                        MenorIgualQue opeMenorIgual = new MenorIgualQue(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeMenorIgual.opMenorIgualQue("Menor o Igual Que", elmen));

                    //logicas

                    case "&&":
                        And opeAnd = new And(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeAnd.opAnd("And", elmen));

                    case "||":
                        Or opeOr = new Or(hijos[0], hijos[1], tablaSimbolos, lstAtributos.getToken(0));
                        return(opeOr.opOr("Or", elmen));

                    default:
                        tablaSimbolos.tablaErrores.insertErrorSyntax("[E]No se reconoció el sigono", lstAtributos.getToken(0));
                        return(ob);
                    }
                }
                else
                {
                    tablaSimbolos.tablaErrores.insertErrorSyntax("[E]Se esperaba un signo para operación binaria", new token());
                    return(ob);
                }

            default:
                return(ob);
            }
        }