public override float Calcular() { float Media = Valores.Average(); Passos.WriteLineAsyncCounter($"O {Titulo("Desvio padrão")} é uma medida que expressa o grau de dispersão de um conjunto de dados:"); Passos.WriteLineAsyncCounter($" {HTMLElements.Img(Properties: "src='https://dados-agrupados-api.herokuapp.com/Imagens/desvio-padrao-1.png'")}"); Passos.WriteLineAsyncCounter($"Obter a média aritimética dos dados (Ma) = {Media}"); Passos.WriteLineAsyncCounter($"Obter o número de termos (N) = {Valores.Count}"); Passos.WriteLineAsyncCounter($"(Somátorio de Xi = 1 até a posição N ({Valores.Count}) menos a média ({Media})) elevado ao quadrado{HTMLElements.Hr()}"); int xi = 1; foreach (var Elemento in Valores) { //Passos.WriteLineAsync($"Termo (x{xi}) = {Elemento}"); var operacao = (Elemento - Media) * (Elemento - Media); Resultado += operacao; Passos.WriteLineAsync($"$$ {(xi > 1 ? '+' : ' ')}(" + Elemento + " - " + Media.ToString("F2") + $")^ 2 = {operacao} ..." + Resultado + $" $$ {HTMLElements.Hr()}"); xi++; } Passos.WriteLineAsyncCounter($"Obter a raíz quadrada da divisão do somatório ({Resultado}) pelo numero de termos ({Valores.Count}) {HTMLElements.Hr()}"); var operacaoFinal = (float)Math.Sqrt(Resultado / Valores.Count()); Passos.WriteLineAsync($"\n $$ Resultado = \\sqrt {{ \\dfrac{{ {{{Resultado}}} }} {{{Valores.Count()}}} }} = {{{operacaoFinal}}}$$"); Resultado = operacaoFinal; return(Resultado); }
public override float Calcular() { float Media = Valores.Average(); Passos.WriteLineAsyncCounter($"{Titulo("Variância")}: A variância mede quão dispersos estão os dados na amostra. = $$ \\sum_ {{Xi - Ma²}} \\over n $$"); Passos.WriteLineAsyncCounter($"Calcule a média (Ma) = {Media}"); Passos.WriteLineAsyncCounter($"Calcule o número de termos (N) = {Valores.Count} {HTMLElements.Hr()}"); int xi = 1; foreach (var Elemento in Valores) { //Passos.WriteLineAsync($" $$ ( x{xi} - Ma ) ^2 $$"); var operacao = (Elemento - Media) * (Elemento - Media); Resultado += operacao; Passos.WriteLineAsync(" $$ (" + Elemento + " - " + Media.ToString("F2") + $")^ 2 = {operacao} ..." + Resultado + $" + $$ {HTMLElements.Hr()}"); xi++; } Passos.WriteLineAsync($"\n $$ Resultado: \\dfrac{{ {{{Resultado}}} }} {{{Valores.Count()}}} = {{{Resultado /= Valores.Count()}}} $$"); return(Resultado); }
public override object Ejecutar(Entorno e, bool funcion, bool ciclo, bool sw, bool tc, LinkedList <Salida> log, LinkedList <Error> errores) { BD actual = e.Master.Actual; if (actual != null) { if (e.Master.UsuarioActual != null) { if (e.Master.UsuarioActual.GetPermiso(actual.Id)) { Simbolo sim = actual.GetTabla(Id); if (sim != null) { Tabla tabla = (Tabla)sim.Valor; if (Columnas != null) { if (Columnas.Count() == Valores.Count()) { Entorno datos = tabla.GetNuevaFila(); LinkedList <Simbolo> primary = new LinkedList <Simbolo>(); for (int i = 0; i < Columnas.Count(); i++) { Expresion valor = Valores.ElementAt(i); object valValor = valor.GetValor(e, log, errores); if (valValor != null) { if (valValor is Throw) { return(valValor); } string col = Columnas.ElementAt(i); Simbolo dato = datos.GetCualquiera(col); if (dato != null) { if (dato.Tipo.IsCounter()) { return(new Throw("CounterTypeException", Linea, Columna)); //dato.Valor = tabla.Contador; //continue; } if (dato.Tipo.Equals(valor.Tipo)) { dato.Valor = valValor; if (dato.Rol == Rol.PRIMARY) { if (valValor is Null) { errores.AddLast(new Error("Semántico", "Una llave primaria no puede ser Null.", Linea, Columna)); return(null); } } } else { Casteo cast = new Casteo(dato.Tipo, new Literal(valor.Tipo, valValor, 0, 0), 0, 0) { Mostrar = false }; valValor = cast.GetValor(e, log, errores); if (valValor != null) { if (valValor is Throw) { return(valValor); } dato.Valor = valValor; continue; } return(new Throw("ValuesException", Linea, Columna)); //errores.AddLast(new Error("Semántico", "El tipo de la expresión no corresponde al tipo en la columna: " + sim.Id + ".", Linea, Columna)); //return null; } } else { errores.AddLast(new Error("Semántico", "No hay un campo con el id: " + col + " en la Tabla.", Linea, Columna)); return(null); } } else { return(null); } } foreach (Simbolo col in datos.Simbolos) { if (col.Tipo.IsCounter()) { col.Valor = tabla.Contador; } if (col.Rol == Rol.PRIMARY) { if (col.Valor is Null) { errores.AddLast(new Error("Semántico", "Una llave primaria no puede ser Null.", Linea, Columna)); return(null); } primary.AddLast(col); } } if (!tabla.Insertar(datos, primary)) { errores.AddLast(new Error("Semántico", "No se pueden insertar valores con la misma llave primaria.", Linea, Columna)); } else { tabla.Contador++; Correcto = true; } return(null); } else { errores.AddLast(new Error("Semántico", "La lista de campos no corresponde a la lista de valores.", Linea, Columna)); } } else { if (tabla.Cabecera.Simbolos.Count() == Valores.Count()) { Entorno datos = new Entorno(null, new LinkedList <Simbolo>()); LinkedList <Simbolo> primary = new LinkedList <Simbolo>(); for (int i = 0; i < Valores.Count(); i++) { Expresion valor = Valores.ElementAt(i); object valValor = valor.GetValor(e, log, errores); if (valValor != null) { if (valValor is Throw) { return(valValor); } Simbolo col = tabla.Cabecera.Simbolos.ElementAt(i); if (col.Tipo.IsCounter()) { return(new Throw("CounterTypeException", Linea, Columna)); //errores.AddLast(new Error("Semántico", "No se puede insertar un valor en una columna tipo Counter.", Linea, Columna)); //return null; } if (!col.Tipo.Equals(valor.Tipo)) { Casteo cast = new Casteo(col.Tipo, new Literal(valor.Tipo, valValor, 0, 0), 0, 0) { Mostrar = false }; valValor = cast.GetValor(e, log, errores); if (valValor == null) { if (valValor is Throw) { return(valValor); } return(new Throw("ValuesException", Linea, Columna)); //errores.AddLast(new Error("Semántico", "El tipo de la expresión no corresponde al tipo en la columna: " + col.Id + ".", Linea, Columna)); //return null; } } Simbolo dato = new Simbolo(col.Tipo, col.Rol, col.Id, valValor); if (col.Rol == Rol.PRIMARY) { if (valValor is Null) { errores.AddLast(new Error("Semántico", "Una llave primaria no puede ser Null.", Linea, Columna)); return(null); } primary.AddLast(dato); } datos.Add(dato); } else { return(null); } } if (!tabla.Insertar(datos, primary)) { errores.AddLast(new Error("Semántico", "No se pueden insertar valores con la misma llave primaria.", Linea, Columna)); } else { Correcto = true; } return(null); } else { return(new Throw("ValuesException", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "Los valores no corresponden a las columnas en la Tabla.", Linea, Columna)); } } else { return(new Throw("TableDontExists", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "No existe una Tabla con el id: " + Id + " en la base de datos.", Linea, Columna)); } else { errores.AddLast(new Error("Semántico", "El Usuario no tiene permisos sobre: " + actual.Id + ".", Linea, Columna)); } } else { errores.AddLast(new Error("Semántico", "No hay un Usuario logeado.", Linea, Columna)); } } else { return(new Throw("UseBDException", Linea, Columna)); } //errores.AddLast(new Error("Semántico", "No se ha seleccionado una base de datos, no se pudo Insertar.", Linea, Columna)); return(null); }
public override float Calcular() { Resultado = Valores.Average(); Passos.WriteLineAsyncCounter($"{Titulo("Média Aritimética")}: $$ \\sum {{ Xi }} \\over n $$"); Passos.WriteLineAsyncCounter($"Elementos:"); string ValoresCSV = String.Join(",", Valores); string ValoresSoma = String.Join(" + ", Valores); Passos.WriteLineAsyncCounter($"{ValoresCSV}"); Passos.WriteLineAsyncCounter("Some todos os termos: "); Passos.WriteLineAsync($"$$ {ValoresSoma} $$"); Passos.WriteLineAsync($"$$ = {Valores.Sum().ToString()} $$"); Passos.WriteLineAsyncCounter($"Divida o resultado ({Valores.Sum()}) pelo numero de termos ({Valores.Count()}) "); Passos.WriteLineAsync($"$$ Resultado = \\dfrac{{ {{{Valores.Sum()}}} }} {{{Valores.Count()}}} = {Resultado} $$"); return(Resultado); }