Esempio n. 1
0
        public frmFormulasV2(int IdFormula)
        {
            InitializeComponent();

            this.IdFormula           = IdFormula;
            ribbonPageGroup2.Visible = (IdFormula > 0);
            btnBaja.Visibility       = (IdFormula > 0) ? BarItemVisibility.Always : BarItemVisibility.Never;
            string connectionString = ConfigurationManager.ConnectionStrings["sdprolizaEntitiessp"].ConnectionString;

            cnDetallesFormulas = new CNDetallesFormulas(connectionString);
            cnFormulas         = new CNFormulas(connectionString);
            reporteador        = new Reporteador(connectionString);
            cnProductos        = new CNProductos(connectionString);
            cnTipoDeCambio     = new CNTipoDeCambio(connectionString);
            cnFamiliaFormulas  = new CNFamiliaFormulas(connectionString);
            cnInsumos          = new CNInsumos(connectionString, -1, null, false, 0);

            llenarComboFamilia();
            llenarComboUnidadMedida();
            llenarComboInsumos();

            if (IdFormula > 0)
            {
                DataTable Formula = cnFormulas.ConsultaPorId(IdFormula);
                txtFormula.Text = Formula.Rows[0]["NombreFormula"].ToString();
                txtFormula.Properties.ReadOnly = (Convert.ToInt32(Formula.Rows[0]["IdFamilia"]) == 1);
                cmbFamilia.EditValue           = Convert.ToInt32(Formula.Rows[0]["IdFamilia"]);
                txtCantidad.Text          = Formula.Rows[0]["Cantidad"].ToString();
                cmbUnidadMedida.EditValue = Formula.Rows[0]["Capacidad"].ToString();
                foreach (DataRow item in cnDetallesFormulas.ConsultaPorFormula(IdFormula).Rows)
                {
                    AgregarNuevoRegistro(Convert.ToInt32(item["IdDetalle"]), Convert.ToInt32(item["IdInsumo"]), item["CantidadInsumo"].ToString(), item["UnidadMedidaInsumo"].ToString());
                }
            }
        }
Esempio n. 2
0
        public frmDetallesFormulas(int IdFormula)
        {
            InitializeComponent();
            string connectionString = ConfigurationManager.ConnectionStrings["sdprolizaEntitiessp"].ConnectionString;

            cnFormulas         = new CNFormulas(connectionString);
            cnDetallesFormulas = new CNDetallesFormulas(connectionString);
            actualizaFormulas  = new ActualizaFormulas(connectionString);
            cnTipoDeCambio     = new CNTipoDeCambio(connectionString);
            cnProductos        = new CNProductos(connectionString);
            reporteador        = new Reporteador(connectionString);
            cnInsumos          = new CNInsumos(connectionString, -1, null, false, 0);
            llenarComboInsumos();
            cmbInsumos.Focus();
            if (IdFormula > 0)
            {
                ribbonPageGroup1.Visible = true;
                Actualizar = true;
                DataTable Formula = cnFormulas.ConsultaPorId(IdFormula);
                lblIdFormula.Text       = Formula.Rows[0]["IdFormula"].ToString();
                txtFormula.Text         = Formula.Rows[0]["NombreFormula"].ToString();
                txtFamilia.Text         = Formula.Rows[0]["NombreFamilia"].ToString();
                txtCantidadFormula.Text = Formula.Rows[0]["Cantidad"] + " " + Formula.Rows[0]["Capacidad"];
                Cantidad      = Convert.ToDecimal(Formula.Rows[0]["Cantidad"]);
                UnidadMedida  = Formula.Rows[0]["UnidadMedida"].ToString();
                lblCosto.Text = "0.00"; // T.Rows[0]["CostoTotal"].ToString();
                foreach (DataRow item in cnDetallesFormulas.ConsultaPorFormula(IdFormula).Rows)
                {
                    AgregarNuevoRegistro(Convert.ToInt32(item["IdDetalle"]), Convert.ToInt32(item["IdInsumo"]), item["CantidadInsumo"].ToString(), item["UnidadMedidaInsumo"].ToString());
                }
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            //AppDomain.CurrentDomain.ProcessExit += finalizarAplicacion;
            //AppDomain.CurrentDomain.ProcessExit += (o, s)=> Console.WriteLine("Adios  Adios");

            var engine = new EscuelaEngine();

            engine.inicializar();
            var objetosEscuela = engine.ListaObj(traerEvaluaciones: false, traerAsignaturas: false);


            var nuevoReporteador  = new Reporteador(engine.GetObjetosDiccionario());
            var listaevaluaciones = nuevoReporteador.getNotas();

            /*foreach (var item in listaevaluaciones)
             * {
             *  Console.WriteLine($"{item.Nombre} NOTA : {item.Nota}");
             * }*/


            nuevoReporteador.getAlumnos();


            //engine.imprimirDiccionario(dicc);


            //Util.Timbrar();

            /* Util.printTitle($"Bienvenidos a la Escuela {engine.Escuela.Nombre}");
             * foreach (var curso in engine.Escuela.Cursos)
             * {
             *   foreach (var al in curso.Alumnos)
             *   {
             *       Util.printTitle($"{al.Nombre} curso {curso.Nombre}");
             *       foreach (var asignatura in al.Asignaturas)
             *       {
             *           Util.printTitle(asignatura.Nombre);
             *           foreach (var evaluacion in asignatura.Evaluaciones)
             *           {
             *               Console.WriteLine($"{evaluacion.Nombre} Nota {evaluacion.Nota}");
             *
             *           }
             *       }
             *   }
             * }*/
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            /******EVENTOOOSSS*/
            //AppDomain es de .netcore y es donde se ejecutan las aplicaciones en un momento determinado
            //current domain es donde se esta ejecutando la aplicacion
            //este evento es lo que pasa cuando la aplicacion esta finalizando
            AppDomain.CurrentDomain.ProcessExit += accionDelMetodo;
            //se puede tener dos eventos para un caso y se acumulan
            //la expresion lamda recibe cualquiercosa por parametros, pero el los pide dependiendo el metodo
            AppDomain.CurrentDomain.ProcessExit += (s, h) => Console.WriteLine("evento2 saliendo");
            //se pueden tener la candidad de delegados que uno quiera como eventos, asi se puede quitar la accion, y nunca la realiza
            AppDomain.CurrentDomain.ProcessExit -= accionDelMetodo;
            var engine = new EscuelaEngine();

            engine.Inicializar();
            Printer.dibujarTitulo("Bienvenidos a la escuela");
            //En el diccionario las llaves son unicas
            Dictionary <int, string> diccionario = new Dictionary <int, string>();

            diccionario.Add(10, "JuanK");
            diccionario.Add(23, "Lorem Psum");

            foreach (var keyVailPair in diccionario)
            {
                Console.WriteLine("LLave es : " + keyVailPair.Key + " valor : " + keyVailPair.Value);
            }

            Printer.dibujarTitulo("Acceso a diccionario");
            diccionario[0] = "prueba 0";
            Console.WriteLine(diccionario[23]);

            Printer.dibujarTitulo("Otro Diccionario");
            var dic = new Dictionary <string, string>();

            var dicTemp = engine.GetDiccionarioObjetos();

            engine.ImprimirDiccionario(dicTemp);

            var repor    = new Reporteador(engine.GetDiccionarioObjetos());
            var evaList  = repor.getListaEvaluaciones();
            var asigList = repor.GetListaAsignaturas();
            var listaEvaluacionesXAsing = repor.GetDicEvaluXAsign();
            var listaPromXasign         = repor.getPromedioAlumnAsignatura();
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            //Las siguientes dos instrucciones asignan un delegado al evento de ProcessExit que es cuando
            //termina la ejecución del sistema, si no se remueve alguno de los delegados, el evento será
            //ejecutado tantas veces como delegados tenga asignados, en este ejemplo serian 2
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.WriteTitle("Terminando la ejecución 2");
            //La siguiente instrucción remueve el delegado al evento, removiendo solo se ejecutaria 1
            AppDomain.CurrentDomain.ProcessExit -= AccionDelEvento;

            var engine = new EscuelaEngine();

            engine.Inicializar();
            ImprimirCursosEscuela(engine.Escuela);

            Dictionary <int, string> diccionario = new Dictionary <int, string>();

            diccionario.Add(12, "Juan K");
            diccionario.Add(13, "Lorem Ipsum");

            foreach (var keyValPair in diccionario)
            {
                WriteLine($"Key: {keyValPair.Key} Valor: {keyValPair.Value}");
            }

            Printer.WriteTitle("Acceso a diccionario");
            var dic = engine.GetDiccionarioObjetos();

            engine.ImprimirDiccionario(dic, true);

            var rep = new Reporteador(engine.GetDiccionarioObjetos());

            // var rep = new Reporteador(null);
            rep.GetListaEvaluacion();
            var evalList         = rep.GetListaEvaluacion();
            var listaAsig        = rep.GetListaAsignatura();
            var listaEvalPorAsig = rep.GetDiccEvaluacionesPorAsignatura();
            var listaPromXAsig   = rep.GetPromedioAlumnosPorAsignatura();
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += SaliendoApp;
            AppDomain.CurrentDomain.ProcessExit += (obj, s) => Printer.Beep(1000, 1000, 1);
            AppDomain.CurrentDomain.ProcessExit -= SaliendoApp;

            // var escuela = new Escuela("Platzi Academy",foundation_year: 2012);
            // var escuela = new Escuela("Platzi Academy", 2012, Types_School.Secundaria, country: "Colombia", city: "Bogota");
            // escuela.Country = "Colombia";
            // escuela.City = "Bogota";
            // escuela.Type_School = Types_School.PreEscolar;

            // var curso1 = new Course() {
            //     Name = "101"
            // };

            // var curso2 = new Course() {
            //     Name = "201"
            // };

            // var curso3 = new Course() {
            //     Name = "301"
            // };

            // Console.WriteLine(escuela.Name);
            // Console.WriteLine(escuela);

            // System.Console.WriteLine("==========================");
            // // System.Console.WriteLine(curso1.Name + "," + curso1.Unique_Id);
            // // System.Console.WriteLine($"{curso2.Name},{curso2.Unique_Id}");
            // // System.Console.WriteLine(curso3);


            // var cursos = new Course[3];

            // cursos[0] = new Course() {
            //     Name = "101"
            // };

            // cursos[1] = curso2;

            // cursos[2] = new Course {
            //     Name = "101"
            // };
            // System.Console.WriteLine("While ==========================>");
            // ImprimirCursosWhile(cursos);

            // System.Console.WriteLine("DoWhile ==========================>");
            // ImprimirCursosDoWhile(cursos);

            // System.Console.WriteLine("For ==========================>");
            // ImprimirCursosFor(cursos);

            // System.Console.WriteLine("ForEach ==========================>");
            // ImprimirCursosForEach(cursos);


            // escuela.Arreglo_Cursos = new Course[] {
            //     new Course() { Name = "101"},
            //     new Course() { Name = "201"},
            //     new Course { Name = "301", Tipo_Jornada = Tipos_Jornada.Morning}
            // };

            // escuela.Lista_Cursos = new List<Course> {
            //     new Course() { Name = "101"},
            //     new Course() { Name = "201"},
            //     new Course { Name = "301", Tipo_Jornada = Tipos_Jornada.Morning}
            // };

            // escuela.Lista_Cursos.Add(new Course() { Name = "402", Tipo_Jornada = Tipos_Jornada.Afternoon });
            // escuela.Lista_Cursos.Add(new Course { Name = "102", Tipo_Jornada = Tipos_Jornada.Afternoon });

            // var otros_cursos = new List<Course> {
            //     new Course() { Name = "401"},
            //     new Course() { Name = "501"},
            //     new Course { Name = "601"}
            // };

            // escuela.Lista_Cursos.AddRange(otros_cursos);



            // otros_cursos.RemoveAt(2);

            // otros_cursos.Clear();

            // var otro = new Course() { Name = "602", Tipo_Jornada = Tipos_Jornada.Evening };

            // Console.WriteLine($"HashCode: {otro.GetHashCode()}");
            // escuela.Lista_Cursos.Add(otro);

            // escuela = null;
            // escuela.Cursos = null;

            // ImprimirCursos(escuela);
            // Console.WriteLine("================");
            // escuela.Lista_Cursos.Remove(otro);
            // escuela.Lista_Cursos.RemoveAll(Predicado);
            // escuela.Lista_Cursos.RemoveAll(x => x.Tipo_Jornada == Tipos_Jornada.Pending_Assignment);

            // ImprimirCursos(escuela);


            var engine = new Escuela_Engine();

            engine.Inicializar();
            Printer.Dibujar_Titulo("Bienvenidos a la Escuela");

            ImprimirCursos(engine.Escuela);

            //ObjetoEscuelaBase xx = new ObjetoEscuelaBase();
            //Printer.Ring_Bell();

            int conteoEvaluaciones,
                conteoAlumnos,
                conteoAsignaturas,
                conteoCursos = 0;

            var tt = engine.GetObjetosEscuela(false, false, false, false);

            var listaObjetos = engine.GetObjetosEscuela(out conteoEvaluaciones,
                                                        out conteoAlumnos,
                                                        out conteoAsignaturas,
                                                        out conteoCursos,
                                                        traeCursos: false,
                                                        traeEvaluaciones: false);

            var listaILugar = from obj in listaObjetos
                              where obj is ILugar
                              select(ILugar) obj;

            engine.Escuela.LimpiarLugar();

            Dictionary <int, string> dic = new Dictionary <int, string>();

            dic[88] = "Hola";
            dic[40] = "Rangel";

            foreach (var item in dic)
            {
                Console.WriteLine($"Key: {item.Key} Value: {item.Value}");
            }

            var dictmp = engine.GetDiccionarioObjetos();

            engine.ImprimirDiccionario(dictmp);

            var reporteador = new Reporteador(engine.GetDiccionarioObjetos());

            reporteador.GetListaEvaluaciones();

            var listaAsig           = reporteador.GetListaAsignaturas();
            var listaEvalXAsig      = reporteador.GetDicEvalXAsig();
            var listaPromedioAlumno = reporteador.GetPromedioAlumnoPorAsignatura();

            var listaTopPromedioAlumno = reporteador.GetListaTopPromedio(10);


            Printer.Dibujar_Titulo("Captura de Evaluacion por Consola");

            var    newEval = new Evaluacion();
            string nombre, notastr;

            Console.WriteLine("Ingrese el nombre de la evaluacion:");
            Printer.presioneEnter();
            nombre = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(nombre))
            {
                Printer.Dibujar_Titulo("El valor del nombre no puede ser vacio.");
                Console.WriteLine("Saliendo del programa...");
            }
            else
            {
                newEval.Name = nombre.ToLower();
                Console.WriteLine("El nombre de la evaluacion ha sido ingresado correctamente.");
            }

            Console.WriteLine("Ingrese la nota de la evaluacion:");
            Printer.presioneEnter();
            notastr = Console.ReadLine();

            try
            {
                if (string.IsNullOrWhiteSpace(notastr))
                {
                    Printer.Dibujar_Titulo("El valor de la nota no puede ser vacio.");
                    Console.WriteLine("Saliendo del programa...");
                }
                else
                {
                    newEval.Nota = float.Parse(notastr);
                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe de estar entre 0 y 5");
                    }
                    Console.WriteLine("La nota de la evaluacion ha sido ingresada correctamente.");

                    Printer.Dibujar_Linea();
                    Console.WriteLine($"Nombre de la Evaluacion: {newEval.Name} ");
                    Console.WriteLine($"Nota de la Evaluacion: {newEval.Nota} ");
                }
            }
            catch (ArgumentOutOfRangeException arge)
            {
                Printer.Dibujar_Titulo(arge.Message);
                Console.WriteLine("Saliendo del programa...");
            }
            catch (Exception)
            {
                Printer.Dibujar_Titulo("El valor de la nota no es numero valido.");
                Console.WriteLine("Saliendo del programa...");
            }
            finally
            {
                Printer.Dibujar_Titulo("FINALLY");
            }
        }
        static void Main(string[] args)
        {
            var engine = new EscuelaEngine();

            engine.Inicializar();
            Printer.WriteTitle("BIENVENIDOS A LA ESCUELA!");
            Printer.Beep();
            Printer.Beep(10000, cantidad: 10);
            //Se utiliza los métodos creados en la clase Printer
            //Printer.DibujarLinea(20);
            //Printer.DibujarLinea();

            //ImprimirCursosEscuela(engine.Escuela);

            //POLIMORFISMO
            //El polimorfismo se refiere a la sobrescritura de los métodos de la clase padre por sus clases hijas esto para que cada clase hija tenga un comportamiento diferente para ese método.
            //El polimorfismo permite que un método de la clase PADRE se herede pero tambi[en que cambie su comportamiento en la clase hija(si así lo desea).

            /*Printer.DrawLine(20);
             * Printer.DrawLine(20);
             * Printer.DrawLine(20);
             * Printer.WriteTitle("Pruebas de Polimorfismo");
             * //Alumno es de tipo "Alumno" que hereda de "ObjetoEscuelaBase"
             * var alumnoTest = new Alumno { Nombre = "Claire Murillo" };
             * //Objetos compatibles por el polimorfismo
             * ObjetoEscuelaBase ob = alumnoTest;
             *
             * Printer.WriteTitle("Alumno");
             * WriteLine($"Alumno: {alumnoTest.Nombre}");
             * WriteLine($"Alumno: {alumnoTest.UniqueId}");
             * WriteLine($"Alumno: {alumnoTest.GetType()}");
             *
             * Printer.WriteTitle("ObjetoEscuela");
             * WriteLine($"Alumno: {ob.Nombre}");
             * WriteLine($"Alumno: {ob.UniqueId}");
             * WriteLine($"Alumno: {ob.GetType()}");
             *
             * var evaluacion = new Evaluacion() { Nombre = "Evaluacion de matematicas", Nota = 4.5f };
             * Printer.WriteTitle("Evaluacion");
             * WriteLine($"Evaluacion: {evaluacion.Nombre}");
             * WriteLine($"Evaluacion: {evaluacion.UniqueId}");
             * WriteLine($"Evaluacion: {evaluacion.Nota}");
             * WriteLine($"Evaluacion: {evaluacion.GetType()}");
             *
             * ob = evaluacion;
             * Printer.WriteTitle("ObjetoEscuela");
             * WriteLine($"Evaluacion: {ob.Nombre}");
             * WriteLine($"Evaluacion: {ob.UniqueId}");
             * WriteLine($"Evaluacion: {ob.GetType()}");
             *
             * //EVITAR ERRORES EN TIEMPO DE EJECUCIÓN - VALIDACIÓN CON "IS" y "AS"
             * //"IS" PARA PREGUNTAR SI UN OBJETO ES DE UN TIPO DETERMINADO
             * //
             * if(ob is Alumno)
             * {
             *  var alumnoRecuperado = (Alumno)ob;
             * }
             * //Si obj lo puede tomar como Alumno, devuelve el obj transformado en Alumno. Pero si obj no lo puede transformar en alumno entonces devuelve null.
             * //"AS" tome este objeto como si fuera este objeto
             * //Mas recomendada
             * Alumno alumnoRecuperado2 = ob as Alumno;*/

            //------------------------------------------------------------------------------------------------------------------------

            //Solicitar el metodo GetObjetosEscuela
            //1era implementación
            //var listaObjetos = engine.GetObjetosEscuela(false, false, false, false);
            //2nda implementacion: haciendo un conteo de objetos con contadores. En este caso, listaObjetos es una TUPLA
            //var listaObjetos = engine.GetObjetosEscuela(true, false, false, false);
            //3era implementacion:

            /*int dummy = 0; // Reemplazar en caso de no querer obtener ese conteo.
             * var listaObjetos = engine.GetObjetosEscuela(
             *  out int conteoEvaluaciones,
             *  out int conteoCursos,
             *  out int conteoAsignaturas,
             *  out int conteoAlumnos);*/
            //Las 3 implementaciones responden AL PROBLEMA DE OBTENER UNA LISTA DE OBJETOS Y PODERLOS CLASIFICAR.
            //Implementación de los métodos con SOBRECARGA
            var listaObjetos = engine.GetObjetosEscuela();


            //Llamar al Limpiar definido en el Interface Ilugar
            engine.Escuela.LimpiarLugar();

            //Desde el punto de vista de la programación orientada a objetos cualquier objeto puede ser visto como una interfaz.
            //Haciendo uso de Linq vamos a seleccionar de nuestra lista de objetos todos los objetos y les haremos casting con ILugar.Si no declaramos que nos retorne sólo los objetos que sean de tipo ILugar, entonces el programa al realizar el casting va a causar errores silenciosos.

            /*var listaIlugar = from obj in listaObjetos
             *                where obj is Alumno
             *                select (Alumno)obj;*/

            //CREACION DE DICCIONARIO DE DATOS

            /*Dictionary<int, string> diccionario = new Dictionary<int, string>();
             * diccionario.Add(10, "JuanK"); //Llave, Valor
             * diccionario.Add(12, "LoremIpsus");
             * diccionario[0] = "Nato";
             *
             * foreach (var keyValPair in diccionario)
             * {
             *  WriteLine($"Key: {keyValPair.Key}, Valor: {keyValPair.Value}");
             * }
             * //Otra forma de recorrer un diccionario
             * Printer.WriteTitle("Acceso a diccionario");
             * WriteLine(diccionario[12]);
             * WriteLine(diccionario[0]);
             * Printer.WriteTitle("Otro diccionario");
             * var dic = new Dictionary<string, string>();
             * dic["Luna"] = "Cuerpo Celeste que gira alrededor de la Tierra";
             * WriteLine(dic["Luna"]);
             * dic["Luna"] = "Protagonista de Soy Luna";
             * WriteLine(dic["Luna"]);
             * //En el caso de adicionar un campo con la misma llave y otro valor, falla ya que la llave debe ser única.*/

            var dictmp = engine.GetDiccionarioObjetos();

            engine.ImprimirDiccionario(dictmp);

            //MANEJADOR DE EVENTO
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            //Acumulación de DELEGADOS o MULTICAST DELEGATE
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.Beep(2000, 1000, 1);

            //  REPORTEADOR
            var reporteador        = new Reporteador(engine.GetDiccionarioObjetos());
            var evalList           = reporteador.GetListaEvaluaciones();
            var listaAsig          = reporteador.GetListaAsignaturas();
            var listaEvalXAsig     = reporteador.GetDicEvaluaXAsig();
            var listaPromedioxAsig = reporteador.GetPromAlumnPorAsignatura();


            Printer.WriteTitle("Captura de una Evaluación por Consola");
            var    newEval = new Evaluacion();
            string nombre, notastring;
            float  nota;

            WriteLine("Ingrese el nombre de la evaluación y presione Enter:");
            Printer.PresioneENTER();
            //CAPTURAR EL ENTER
            nombre = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(nombre))
            {
                Printer.WriteTitle("El valor del nombre no puede ser vacio");
                WriteLine("Saliendo del programa.");
            }
            else
            {
                newEval.Nombre = nombre.ToLower();
                WriteLine("El nombre de la evaluacion ha sido ingresado correctamente.");
            }

            ///////////////-------------------------------------------- NOTA

            WriteLine("Ingrese la nota de la evaluación y presione Enter:");
            Printer.PresioneENTER();
            //CAPTURAR EL ENTER
            notastring = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(notastring))
            {
                Printer.WriteTitle("El valor de la nota no puede ser vacio");
                WriteLine("Saliendo del programa.");
            }
            else
            {
                try
                {
                    newEval.Nota = float.Parse(notastring);
                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe estar entre 0 y 5");
                    }
                    WriteLine("La nota de la evaluación ha sido ingresada correctamente.");
                }
                catch (ArgumentOutOfRangeException arg0)
                {
                    Printer.WriteTitle(arg0.Message);
                    WriteLine("Saliendo del programa");
                }
                catch (Exception)
                {
                    Printer.WriteTitle("El valor de la nota no es un número válido.");
                    WriteLine("Saliendo del programa");
                }
                finally
                {
                    Printer.WriteTitle("FINALLY!");
                    Printer.Beep(2500, 500, 3);
                }
            }



            Console.ReadKey();
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.Beep(100, 1000, 1);
            AppDomain.CurrentDomain.ProcessExit -= AccionDelEvento;

            var engine = new EscuelaEngine();

            engine.Inicializar();

            Printer.WriteTitle("Bienvenidos a la Escuela");

            var reporteador           = new Reporteador(engine.GetDiccionarioObjetos());
            var listaEval             = reporteador.GetListaEvaluaciones();
            var listaAsig             = reporteador.GetListaAsignaturas();
            var listaEvalXAsig        = reporteador.GetDiccEvaluaXAsig();
            var listaPromXAsig        = reporteador.GetPromAlumPorAsignatura();
            var listaMejoresPromXAsig = reporteador.GetMejoresPromAlumPorAsignatura(5);


            Printer.WriteTitle("Captura de una Evaluacion por Consola");
            var    newEval = new Evaluacion();
            string nombre, notaString;

            WriteLine("Ingrese el nombre de la evaluación");
            Printer.PresioneENTER();
            nombre = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(nombre))
            {
                Printer.WriteTitle("El valor del nombre no puede ser vacio");
                WriteLine("Saliendo del programa");
            }
            else
            {
                newEval.Nombre = nombre.ToLower();
                WriteLine("El nombre se ingresó correctamente.");
            }

            WriteLine("Ingrese la nota de la evaluación");
            Printer.PresioneENTER();
            notaString = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(notaString))
            {
                Printer.WriteTitle("El valor de la nota no puede ser vacio");
                WriteLine("Saliendo del programa");
            }
            else
            {
                try
                {
                    newEval.Nota = float.Parse(notaString);
                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe estar entre 0 y 5");
                    }
                    WriteLine("La nota se ingresó correctamente.");
                }
                catch (ArgumentOutOfRangeException arge)
                {
                    Printer.WriteTitle(arge.Message);
                    WriteLine("Saliendo del programa");
                }
                catch (Exception)
                {
                    Printer.WriteTitle("El valor de la nota no es un número válido.");
                    WriteLine("Saliendo del programa");
                }
                finally
                {
                    Printer.WriteTitle("Finally.");
                    Printer.Beep(2500, 500, 3);
                }
            }
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            AppDomain.CurrentDomain.ProcessExit += (Object sender, EventArgs e) => Printer.WriteTitle("Despues de salir");
            AppDomain.CurrentDomain.ProcessExit -= AccionDelEvento;
            var engine = new EscuelaEngine();

            engine.Inicializar();
            Printer.WriteTitle("BIENVENIDOS A LA ESCUELA");

            var reporteador = new Reporteador(engine.GetDiccionarioObjetos());

            reporteador.GetDicEvaluacionesXAsignatura();
            reporteador.GetPromedioAlumnosXAsig();

            Printer.WriteTitle("Captura de una evaluación por consola");
            var    newEval = new Evaluacion();
            string nombre, notaString;
            float  nota;

            WriteLine("Ingrese el nombre de la evaluación");
            Printer.PresioneEnter();
            nombre = Console.ReadLine();
            if (string.IsNullOrEmpty(nombre))
            {
                throw new ArgumentException("el valor del nombre no puede ser vacio");
            }
            else
            {
                newEval.Nombre = nombre.ToLower();
                WriteLine("El nombre de la evaluación ha sido ingresado correctamente");
            }

            WriteLine("Ingrese la nota de la evaluación");
            Printer.PresioneEnter();
            notaString = Console.ReadLine();
            if (string.IsNullOrEmpty(notaString))
            {
                throw new ArgumentException("el valor del nombre no puede ser vacio");
            }
            else
            {
                try
                {
                    newEval.Nota = float.Parse(notaString);
                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("La nota debe estar entre 0 y 5");
                    }
                    WriteLine("La nota de la evaluación ha sido ingresada correctamente");
                }
                catch (ArgumentOutOfRangeException arg) {
                    WriteLine(arg.Message);
                }
                catch (System.Exception)
                {
                    WriteLine("El valor de la nota no es un número válido");
                } finally {
                    WriteLine("FINALLY");
                }
            }
        }
Esempio n. 10
0
        static void Main(string[] args)
        {
            ///Etapa 9

            Printer.WriteTitle("Captura de una evaluación por Consola.");

            var newEval = new Evaluacion();

            string nombre, notaEvaluacion;
            float  nota;


            WriteLine("Ingrese el nombre de la evaluación.");
            Printer.PresioneEnter();
            nombre = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(nombre))
            {
                ///throw new ArgumentException("El valor del nombre no puede ser nulo.");
                Printer.WriteTitle("El valor del nombre no puede ser vacío");
                WriteLine("Saliendo del programa");
            }
            else
            {
                newEval.Nombre = nombre.ToLower();
                WriteLine("El nombre de la evaluación ha sido creada correctamente.");
            }

            WriteLine("Ingrese la nota de la evaluación.");
            Printer.PresioneEnter();
            notaEvaluacion = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(notaEvaluacion))
            {
                ////throw new ArgumentException("El valor de la nota no puede ser vacío.");
                Printer.WriteTitle("El valor de la nota no puede ser vacío");
                WriteLine("Saliendo del programa");
            }
            else
            {
                try
                {
                    newEval.Nota = float.Parse(notaEvaluacion);

                    if (newEval.Nota < 0 || newEval.Nota > 5)
                    {
                        throw new ArgumentOutOfRangeException("la nota debe estar entre 0 y 5");
                    }
                    WriteLine("La nota de la evaluación ha sido ingresada correctamente.");
                }
                catch (ArgumentOutOfRangeException arge)
                {
                    Printer.WriteTitle(arge.Message);
                    WriteLine("Saliendo del programa");
                }
                catch (Exception)
                {
                    Printer.WriteTitle("El valor de la nota no es número valido. ");
                    WriteLine("Saliendo del programa");
                }
                finally
                {
                    Printer.WriteTitle("Finalmente");
                    Printer.Beep(2500, 500, 3);
                }
            }

            return;



            #region Etapa 8
            var engine = new EscuelaEngine();
            engine.Inicializar();
            Printer.WriteTitle("==== Etapa 8 ====");

            //Para que me visualice el mensaje de error.
            ////var reporteador = new Reporteador(null);

            var reporteador      = new Reporteador(engine.GetDiccionarioObjetos());
            var evaluacionesList = reporteador.GetListaEvaluaciones();

            ///Nos importa la lista de asignaturas que han sido evaluadas 3.0f no me importa si han sido evaluadas varias veces.
            var listaAsignaturas   = reporteador.GetListaAsignaturas();
            var listaEvaXAsig      = reporteador.GetDicEvaluacionesXAsignatura();
            var listaPromedioXAsig = reporteador.GetPromedioAlumnoPorAsignatura();


            var listaPromedioXAsigTop5 = reporteador.GetPromedioAlumnoPorAsignaturaTop(5);

            return;

            #endregion


            ///Inicio de la Etapa 7 Funcionalidades Variables de Salida, Diccionario de Datos
            #region Etapa 7

            ///Un evento genera varias acciones, este evento se dispara cada vez que finaliza la aplicación
            ///cada vez que ocurre este evento haga algo.
            AppDomain.CurrentDomain.ProcessExit += AccionDelEvento;
            ///Es sumale a lo que ya tiene es como una sobre carga del operador.
            ///Tengo mi controlador de Eventos, sumele a lo que ya hice.
            ///vamos a colocarle como una expresión lamda
            ///vamos a poner un pitido diferente, Necesito tener la firma del Evento
            ///un objeto y unos argumentos, asi no los tenga me va pedir (0,s)
            ///Lo que se puede decir es un multicast delegate que recibe muchos delegados.
            AppDomain.CurrentDomain.ProcessExit += (o, s) => Printer.Beep(2000, 1000, 1);
            ///Ya no quiero este manejador de Evento o este predicado.
            AppDomain.CurrentDomain.ProcessExit -= AccionDelEvento;


            ///var engine = new EscuelaEngine();
            engine.Inicializar();
            Printer.WriteTitle("==== Etapa 7 ====");
            //Printer.Beep(1000, cantidad: 10);
            ImprimirCursosEscuelaEtapa4(engine.Escuela);
            //Ya no es una lista es una tupla una colección de dos valores.

            var listaObjetosSinEvaluciones = engine.GetObjetosEscuela(isTraeEvaluaciones: false);

            var listaObjetosEvaluacionesConteo = engine.GetObjetosEscuela(
                true, false, false, false);

            var listaObjetos = engine.GetObjetosEscuela(
                out int conteoEvaluaciones,
                out int conteoAlumnos,
                out int conteoAsignaturas,
                out int conteoCursos,
                true, false, false, false);
            ///Aca si me permite agregar ya que no es de solo lectura
            listaObjetos.Add(new Evaluacion {
                Nombre = "Curso Loco"
            });

            var listaObjetosLectura = engine.GetObjetosEscuelaLectura(
                out conteoEvaluaciones,
                out conteoAlumnos,
                out conteoAsignaturas,
                out conteoCursos,
                true, false, false, false);

            ///Yo trato de adicionar una Evaluación me sale una advertencia ya que es solo de lectura
            ////listaObjetosLectura.Add( new Evaluacion{Nombre="Curso Loco"});

            Dictionary <int, string> diccionario = new Dictionary <int, string>();
            diccionario.Add(10, "Danilo");
            diccionario.Add(23, "Pedro Cando");
            ///Tambien puedo adicionar objetos de esta manera.
            diccionario[0] = "Pekerman";

            foreach (var keyvalorPair in diccionario)
            {
                WriteLine($"key: {keyvalorPair.Key}, Valor: {keyvalorPair.Value}");
            }

            Printer.WriteTitle("Acceso a Diccionario");
            ///Me devuelve una cadena
            WriteLine(diccionario[23]);
            WriteLine(diccionario[0]);
            Printer.WriteTitle("Otro Diccionario");
            ///Diciconario Polimórfico: Que tiene o puede tener varias formas.
            var dic = new Dictionary <string, string>();

            dic["Luna"] = "Cuerpo celeste que gira al rededor de Planeta Tierra.";

            foreach (var keyvalorPair in dic)
            {
                WriteLine($"key: {keyvalorPair.Key}, Valor: {keyvalorPair.Value}");
            }
            ///Las llaves en los diccionarios son irrepetibles.
            dic["Luna"] = "Protagonista de Soy Luna";
            WriteLine(dic["Luna"]);

            var diccionariotemporal = engine.GetDiccionarioObjetos();

            engine.ImprimirDiccionario(diccionariotemporal, true);



            return;

            #endregion


            ///Inicio de la Etapa #6 Interfaces
            #region Etapa 6
            ////var engine = new EscuelaEngine();
            engine.Inicializar();
            Printer.WriteTitle("==== Etapa 6 ====");
            //Printer.Beep(1000, cantidad: 10);
            ImprimirCursosEscuelaEtapa4(engine.Escuela);

            ////var listaObjetos = engine.GetObjetosEscuela();

            ///engine.Escuela.LimpiarLugar();

            #region INTERFACE vs ABSTRACT CLASS

            /*
             * INTERFACE vs ABSTRACT CLASS
             *
             * 1)Access Specifier 1)Especificador de Acceso
             *
             * C# INTERFACE
             * In C#, Interface cannot have access specifier for functions. It is public by default.
             * En C#, Interface no puede tener especificador de acceso a funciones, es PUBLICO por defecto.
             *
             * C# ABSTRACT CLASS
             * In C#, abstract class can have access specifier for functions.
             * En # La Clase abstracta puede tener especificador de acceso para funciones.
             *
             * 2) Implementation 2) Implementación
             *
             * C# INTERFACE
             * In C#, an interface can only have signature not the implementation.
             * En C#, una interface solo puede tener firma o declaraciones pero no la implementación.
             *
             * C# ABSTRACT CLASS
             * Abstract class can provide complete implementation.
             * Una clase abstracta puede proporcionar una implementación completa en su definición.
             *
             * 3) Speed 3) Velocidad
             *
             * C# INTERFACE
             * Interface is comparatively slow.
             * Interface es comparativamente lento.
             *
             * C# ABSTRACT CLASS
             * Abstract class is fast.
             * Clase abstracta es rápida.
             *
             * 4) Instantiate 4) Instanciamiento
             *
             * C# INTERFACE
             * Interface is absolutely abstract and cannot be instantiated.
             * la interfaz es absolutamente abstracta y no puede ser instanciada.
             *
             * C# ABSTRACT CLASS
             * Abstract class cannot be instantiated.
             * La clase abstracta no puede ser instanciada.
             *
             * 5) Fields 5) Campos
             *
             * C# INTERFACE
             * Interface cannot have fields.
             * La interfaz no puede tener campos.
             *
             * C# ABSTRACT CLASS
             * Abstract class can have defined and constants.
             * La clase abstracta puede tener campos definidos y constantes.
             *
             * 6) Methods 6) Métodos
             *
             * C# INTERFACE
             * Interface has only abstract methods.
             * La interfaz solamente tiene métodos abstractos.
             *
             * C# ABSTRACT CLASS
             * Abstract class can have non-abstract methods.
             * La clase abstracta puede tener métodos no abstractos.
             */
            #endregion

            ///Podemos extender el polimorfismo a travez de Interfaces.
            ///Debemos pensar las Interfaces de algo más abstracto, que solo objeto de Interfaces de C#
            ///Hemos utilizado interfaces para cumplir una funcionalidad especifica.
            ///de los objetos que cumplan con la implementación de la Interfaz.
            var listaILugar = from obj in listaObjetos
                              where obj is ILugar
                              select(ILugar) obj;

            ///La nueva lista me trae solo objetos de Alumnos.
            var listaAlumnos = from obj in listaObjetos
                               where obj is Alumno
                               select(Alumno) obj;

            ///return;
            #endregion

            ///Inicio Etapa 5 Herencia - Polimorfismo
            #region Etapa 5
            ////var engine = new EscuelaEngine();
            ////engine.Inicializar();
            Printer.WriteTitle("==== Etapa 5 ====");
            //Printer.Beep(1000, cantidad: 10);
            ImprimirCursosEscuelaEtapa4(engine.Escuela);

            Printer.DrawLine(20);
            Printer.DrawLine(20);
            Printer.DrawLine(20);
            Printer.WriteTitle("Prueba de Polimorfismo");
            var alumnoTest = new Alumno {
                Nombre = "Claire UnderWood"
            };

            Printer.WriteTitle("Alumno");
            WriteLine($"Alumno: {alumnoTest.Nombre}");
            WriteLine($"Alumno: {alumnoTest.UniqueId}");
            WriteLine($"Alumno: {alumnoTest.GetType()}");

            ObjetoEscuelaBase ob = alumnoTest;
            Printer.WriteTitle("ObjetoEscuela");
            WriteLine($"Alumno: {ob.Nombre}");
            WriteLine($"Alumno: {ob.UniqueId}");
            WriteLine($"Alumno: {ob.GetType()}");

            /*
             * ///Una clase abstacta no se puede instanciar si se le quita abstrac es para un ejemplo
             * var objDummy = new ObjetoEscuelaBase() { Nombre = "Frank Underwood" };
             * Printer.WriteTitle("ObjetoEscuelaBase");
             * WriteLine($"Alumno: {objDummy.Nombre}");
             * WriteLine($"Alumno: {objDummy.UniqueId}");
             * WriteLine($"Alumno: {objDummy.GetType()}"); */

            alumnoTest = (Alumno)ob;
            Printer.WriteTitle("ObjetoEscuela Es un Alumno si puede verlo como un Alumno");
            WriteLine($"Alumno: {alumnoTest.Nombre}");
            WriteLine($"Alumno: {alumnoTest.UniqueId}");
            WriteLine($"Alumno: {alumnoTest.GetType()}");

            ///Este objeto nunca fue un Alumno.
            ///Nunca podemos hacer que se vea como un objeto hijo.
            ///ya que fue un objeto Padre
            ///Ya que no tiene todas las características que tiene el hijo.
            // alumnoTest = (Alumno)objDummy;
            // Printer.WriteTitle("ObjetoEscuela Es un Alumno si puede verlo como un Alumno");
            // WriteLine($"Alumno: {alumnoTest.Nombre}");
            // WriteLine($"Alumno: {alumnoTest.UniqueId}");
            // WriteLine($"Alumno: {alumnoTest.GetType()}");

            var evaluacion = new Evaluacion()
            {
                Nombre = "Evaluación de Matemáticas", Nota = 4.7f
            };
            Printer.WriteTitle("Evaluación");
            WriteLine($"Evaluación: {evaluacion.Nombre}");
            WriteLine($"Evaluación: {evaluacion.UniqueId}");
            WriteLine($"Evaluación: {evaluacion.Nota}");
            WriteLine($"Evaluación: {evaluacion.GetType()}");

            ob = evaluacion;
            Printer.WriteTitle("ObjetoEscuela");
            WriteLine($"Alumno: {ob.Nombre}");
            WriteLine($"Alumno: {ob.UniqueId}");
            WriteLine($"Alumno: {ob.GetType()}");

            ///Evaluación no es compatible con Alumno.
            ///El polimorfismo es bueno nos puede llevar a cometer errores.
            ///alumnoTest = (Alumno)evaluacion;

            //Si es posible convertirle
            if (ob is Alumno)
            {
                Alumno alumnoRecuperado = (Alumno)ob;
            }

            ob = evaluacion;
            if (ob is Alumno)
            {
                Alumno alumnoRecuperado = (Alumno)ob;
            }

            ///ob as Alumno = Objeto le puede tomar como Alumno (Tome este objeto como si fuera este objeto).
            ///El me va devolver el objeto transformado como Alumno,
            ///Pero si objeto no me puede transformar como alumno me va devolver null.
            Alumno alumnoRecuperado2 = ob as Alumno;

            ///Esto seria una pregunta subsecuente

            if (alumnoRecuperado2 != null)
            {
            }


            ////return;

            #endregion

            ///Etapa 4 Generar Colecciones
            #region Etapa 4

            /* var engine = new EscuelaEngine();
             * engine.Inicializar();
             *
             * ////Printer.DibujarLinea();
             * Printer.WriteTitle("==== Etapa 4 ====");
             * Printer.Beep(1000,cantidad:10);
             * ImprimirCursosEscuelaEtapa4(engine.Escuela);
             *
             * return; */
            #endregion

            //////========= Inicio Etapa 3  Arreglos ==========
            #region Etapa 3

            /*  var escuela = new Escuela("Sisfel", 2021);
             * escuela.Pais="Ecuador";
             * escuela.Ciudad ="Cuenca";
             * escuela.TipoEscuela = TiposEscuela.Primaria;
             *
             * Console.WriteLine(escuela); */


            /* var arregloCursos = new Curso[3];
             *
             * arregloCursos[0] = new Curso()
             * {
             *  Nombre = "101"
             * };
             *
             * arregloCursos[1] = new Curso()
             * {
             *  Nombre = "102"
             * };
             *
             * arregloCursos[2] = new Curso()
             * {
             *  Nombre = "103"
             * }; */
            /* var curso1 = new Curso()
             * {
             *  Nombre = "101"
             * };
             *
             * var curso2 = new Curso()
             * {
             *  Nombre = "201"
             * };
             *
             * var curso3 = new Curso()
             * {
             *  Nombre = "301"
             * }; */

            /* Curso[] arregloCursos = {
             *
             *  new Curso
             *  {
             *      Nombre = "101"
             *  },
             *  new Curso() { Nombre = "201" },
             *  new Curso { Nombre = "301" }
             * }; */


            /* var listaCursos = new List<Curso>{
             *  new Curso { Nombre = "101"},
             *  new Curso() { Nombre = "201" },
             *  new Curso { Nombre = "301" }
             * }; */

            var escuela = new Escuela("Sisfel", 2021, TiposEscuela.Primaria,
                                      ciudad: "Cuenca", pais: "Ecuador"
                                      );

            escuela.ListaCursos = new List <Curso> {
                new Curso {
                    Nombre = "101", Jornada = TiposJornada.Manana
                },
                new Curso()
                {
                    Nombre = "201", Jornada = TiposJornada.Manana
                },
                new Curso {
                    Nombre = "301", Jornada = TiposJornada.Manana
                }
            };

            ///Le quito el parentisis porque no voy a utilizar un parámetro en el Curso.
            ///escuela.ListaCursos.Add(new Curso() { Nombre = "102", Jornada = TiposJornada.Tarde });
            escuela.ListaCursos.Add(new Curso {
                Nombre = "102", Jornada = TiposJornada.Tarde
            });
            escuela.ListaCursos.Add(new Curso {
                Nombre = "202", Jornada = TiposJornada.Tarde
            });

            var otraColeccion = new List <Curso> {
                new Curso {
                    Nombre = "401", Jornada = TiposJornada.Manana
                },
                new Curso()
                {
                    Nombre = "501", Jornada = TiposJornada.Manana
                },
                new Curso()
                {
                    Nombre = "501", Jornada = TiposJornada.Tarde
                },
                new Curso {
                    Nombre = "601", Jornada = TiposJornada.Manana
                }
            };

            escuela.Cursos = new Curso[] {
                new Curso
                {
                    Nombre = "101"
                },
                new Curso()
                {
                    Nombre = "201"
                },
                new Curso {
                    Nombre = "301"
                }
            };

            WriteLine(escuela);
            WriteLine("===========");

            /*  Console.WriteLine(curso1.Nombre+","+curso1.UniqueId);
             * Console.WriteLine($"{curso2.Nombre}, {curso2.UniqueId}");
             * Console.WriteLine(curso3); */

            /* Console.WriteLine(arregloCursos[0].Nombre);
            *  Console.WriteLine("Presione enter para continuar.");
            *  Console.ReadLine();
            *  Console.WriteLine(arregloCursos[5].Nombre); */

            /* ImprimirCursosWhile(arregloCursos);
             * Console.WriteLine("===========");
             * ImprimirCursosDoWhile(arregloCursos);
             * Console.WriteLine("===========");
             * ImprimirCursosFor(arregloCursos);
             * Console.WriteLine("===========");
             * ImprimirCursosForEach(arregloCursos); */

            Curso temporal = new Curso {
                Nombre = "101-Vacacional", Jornada = TiposJornada.Noche
            };
            ///Eliminar todos los elementos de la lista.
            ////otraColeccion.Clear();
            escuela.ListaCursos.AddRange(otraColeccion);
            escuela.ListaCursos.Add(temporal);

            ImprimirCursosEscuela(escuela);
            WriteLine("Curso.Hash" + temporal.GetHashCode());
            escuela.ListaCursos.Remove(temporal);
            WriteLine("===========");

            ///Predicate Generico de Curso lo que voy hacer voy a ponerle un nombre
            ///es más esto se llama encapsulación de algoritmos le voy asignaral método Precicado
            ///Porque estoy haciendo este paso adicional.
            ///Resulta si Yo miro este Predicate, Preciono Ctrl en Predicado me dice que es un delegado
            ///y ese delegado devuelve booleano y que recibe un parámetro Generico de un tipo de dato.
            ///Yo le puedo asignar metodos que devuelvan boleano y que reciban como parámetro el tipo de dato
            ///Generico especificado.
            Predicate <Curso> miAlgoritmo = Predicado;

            escuela.ListaCursos.RemoveAll(miAlgoritmo);

            ///Desde C# 3.5 hay inferencia de tipos el ya sabe que este predicado cumple con la especificación
            ///que nos pide este Predicate, es capaz de darse cuenta que cumple no hay necesidad de hacer el Mapping
            ///Puede inferir con un tipo o el otro
            ///Como le puedo recibir diferente hay una expresión Lamda y hay otra cosa que se llama delegado.
            ///Puede reescribirlo de la siguiente manera
            ///El delegate recibe algo como parámetro curso no necesito decirle el tipo por ahora
            ///Le digo que esto conlleva (=>) Con lleva a evaluar que curso sea 301.
            escuela.ListaCursos.RemoveAll(delegate(Curso cur) { return(cur.Nombre == "301"); });

            ///Expresiones lamda que a la final también son un delegado
            escuela.ListaCursos.RemoveAll((Curso cur) => cur.Nombre == "401");

            ///Inclusive puede sin definir el tipo simplemente voy a recibir un cur esta lista es generica de Cursos
            ///por ende lo que voy a recibir de cur es de tipo Curso inclusive ya le incluyo.
            escuela.ListaCursos.RemoveAll((cur) => cur.Nombre == "501" && cur.Jornada == TiposJornada.Manana);

            ImprimirCursosEscuela(escuela);

            int a, b, c;
            a = 7;
            b = a;
            c = b++;
            b = a + b * c;
            c = a >= 100 ? b : c / 10;
            a = (int)Math.Sqrt(b * b + c * c);

            string s = "String literal";
            char   l = s[s.Length - 1];

            var numbers = new List <int>(new[] { 1, 2, 3 });
            b = numbers.FindLast(n => n > 1);

            var direction = Directions.Right;
            Console.WriteLine($"Map view direction is {direction}");

            /* var orientation = direction switch
             * {
             *  Directions.Up => Orientation.North,
             *  Directions.Right => Orientation.East,
             *  Directions.Down => Orientation.South,
             *  Directions.Left => Orientation.West,
             * };
             * Console.WriteLine($"Cardinal orientation is {orientation}"); */

            #endregion
        }