A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Datos de prueba

29/32
Recursos

A nuestro m茅todo de CargarAlumnos vamos a a帽adirle la l贸gica para pasarle un par谩metro indicando la cantidad de alumnos que queremos devuelta y para evitar que siempre nos regrese a los mismos alumnos debe generarlos de forma aleatoria.

La clase Random nos sirve para generar n煤meros aleatorios.

Aportes 53

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Pienso que un problema de este curso鈥 es que cambia muchas cosas ya creadas, me parece que al ser fundamentos y pensado para alguien primerizo no deber铆a de lanzar tantas formas de hacer algo con el mismo resultado, solo sugerir la mejor forma de hacerlo. No sabes cual opci贸n cachar y al final ninguna te acomoda xD.

Sin embargo, esta es la tercera vez que lo veo y reci茅n entiendo cada una de las formas de hacer cada cosa y todos los cambios que hace super r谩pido鈥 PARA HACER LO MISMO, PERO DE DIFERENTE FORMA. xD

Es bueno el curso, pero es mejorable.

Solo es una critica. Amor a todos.

Con respecto a la pregunta que hace el instructor, en mi caso, no ha sido del todo f谩cil; explica bastantes cosas y detalles r谩pido y, aunque soy programador, hay cosas bastante nuevas en cuanto al lenguaje y a la metodolog铆a del desarrollo.

Sin embargo, contin煤o porque vale la pena algo nuevo. 驴A alguien m谩s le pasa esto?

De un video de 15 minutos estoy 1 hora

Sinceramente el curso ha sido BUENISIMO 10/10

Como cr铆tica, al iniciar el curso, creo que ser铆a bueno indicar que los estudiantes primero tomen el curso de Prog B谩sica y el de Prog estructurada.

Ya que las cosas 鈥渂谩sicas鈥 de la programaci贸n las explic贸 muy r谩pido, cosa que a m铆 me vino de maravilla por lo que no soy tan Novato en la prog, pero para aquellos que es su primer lenguaje y no saben nada, les puede ser muy, muy dif铆cil tanta informaci贸n.

Para que sirva la funci贸n AddRange de las listas es necesario inicializar la lista asi sea vacia con eso despu茅s de que recorremos con el for no nos sacar谩 la excepci贸n, a continuaci贸n les comparto parte de las l铆neas de c贸digo que me funcionaron para esto:

public Course() =>(this.UniqueId,this.ListStudents) =( Guid.NewGuid().ToString(),new List<Student>());

Se debe tener en cuenta que es necesario generar una sobre carga del constructor de la clase estudiante[student] para que no reciba ning煤n parametro de entrada para crear alumnos.

public class Student
    {
        public Guid ID { get; set; }
        public string Name { get; set; }

        public Student(){}
        public Student(string n) => (ID, Name) =(Guid.NewGuid(),n);  
    }```

Y en el for para adicionar la lista de estudiantes s贸lo es necesario a帽adir el m茅todo AddRange



Random rnd = new Random();

        foreach (var course in school.courses)
        {
            int len = rnd.Next(5,20);
            course.ListStudents.AddRange(initStudents(len));

}```

la lista alumnos me aparece vac铆a

Modifique un poco el c贸digo. Cree un m茅todo para asignar alumnos a cada curso que llama a CrearAlumnos, y que toma un par谩metro int que va a ser una variable random inicializada en el primer m茅todo que mencione.

As铆 solo se crea una cantidad moderada de alumnos por curso y no se crean los 391 objetos cada vez que se llama al m茅todo para crear alumnos.

Gran clase!!! Estoy aprendiendo cada vez m谩s

        private List<Alumno> CrearAlumnos(int cantidad)
        {
            string[] nombre1 = { "Alba", "Felipa", "Eusebio", "Farid", "Donald", "Alvaro", "Nicol谩s" };
            string[] apellido1 = { "Ruiz", "Sarmiento", "Uribe", "Maduro", "Trump", "Toledo", "Herrera" };
            string[] nombre2 = { "Freddy", "Anabel", "Rick", "Murty", "Silvana", "Diomedes", "Nicomedes", "Teodoro" };

            var listaAlumnos = from n1 in nombre1
                               from n2 in nombre2
                               from a1 in apellido1
                               select new Alumno { Nombre = $"{n1} {n2} {a1}" };
            return listaAlumnos.OrderBy((al) => al.UniqueId).Take(cantidad).ToList();
        }

        private void CargarCursos()
        {
            Escuela.Cursos = new List<Curso>(){
                new Curso {Nombre = "101", Jornada = TiposJornada.Ma帽ana},
                new Curso {Nombre = "201", Jornada = TiposJornada.Ma帽ana},
                new Curso {Nombre = "301", Jornada = TiposJornada.Ma帽ana},
                new Curso {Nombre = "401", Jornada = TiposJornada.Tarde},
                new Curso {Nombre = "501", Jornada = TiposJornada.Tarde}
            };
            asignarAlumnos();
        }

        private void asignarAlumnos()
        {
            foreach (var curso in Escuela.Cursos)
            {
                var random = new Random().Next(5, 25);
                curso.Alumnos = CrearAlumnos(random);
                foreach (var al in curso.Alumnos)
                {
                    al.Curso = curso;
                }
            }

        }

Otra nota es que tambi茅n no me permit铆a meter la lista de asignaturas a cada curso aqu铆:

CargarCursos();
CargarAsignaturas();
var listaAlumni = CargarAlumnos();
foreach (var curso in Escuela.CursosLista)
{
curso.Alumnos = listaAlumni.ToList();
}

Ya que me argumentaba no poder convertir un IEnumerable a List.
Entonces puedes hacer esa conversi贸n con ToList():

curso.Alumnos = listaAlumni.ToList();

Cheers!

Este curso es m谩ginifico a nivel de conocimiento y la forma en que se imparte!

La unica retroalimentaci贸n que puedo darle, es que hubiera sido mucho mejor si desde el principio hubieran estructurado todo en un diagrama UML, as铆 los estudiantes sabr铆amos a donde estamos yendo y con que relaciones tenemos que contar, pienso que la diagramaci贸n UML es una parte fundamental de todo desarrollo!

En esta clase iba a todo gas. Parece que ya le urg铆a acabar el curso 馃き Pero vamos 10/10

Como nota tuve un problema al agregar listaAsignaturas a curso.Asignaturas en el m茅tido CargarAsignaturas de la forma

var listaAsignaturas = [...codigo...];
Curso.Asignaturas.AddRange(listaAsignaturas)

Pero met铆 la lista sin problemas con:

var listaAsignaturas = [...codigo...];
curso.Asignaturas = listaAsignaturas

Como todos los lenguajes tienen su complejidad, pero estoy aprendiendo bien aunque un video de 15 minutos para mi se convierta en una hora estoy aprendiendo mucho y en especializarme en este lenguaje, profe Carlos Ruiz es excelente

Siempre hay algo nuevo que aprender, he aprendido bastante hasta este punto, a pesar de usar C# desde hace varios a帽os. 馃槃 haha

Gracias, muy buena clase, s贸lo veo un par de observaciones.
En el m茅todo carga CargarAlumnos, se quiere intenta tomar 鈥淎leatoriamente鈥 la cantidad enviada en
CargarAlumnos(int cantidad).
Tal cual est谩 el ejemplo, funciona, pero porque en cada iteraci贸n de cursos donde se llama a CargarAlumnos, se crean cada vez los 391 alumnos, por eso hay Guids diferentes siempre, los cuales se ordenan nuevamente en cada ciclo y no se va a repetir en nuestro Take().
El problema es la misma soluci贸n, en un ejemplo practico no se deber铆a de crear un conjunto de datos 鈥淕rande鈥 cada vez, porque supongamos que es una llamada a un servicio o BD se va a repetir la consulta siempre, eso a parte de que va a consumir el recurso externo innecesariamente nos va a consumir memoria y tiempo de ejecuci贸n de m谩s.
Por lo cual deber铆a de estar separada la creaci贸n del conjunto de datos una sola vez y el take aleatorio manejarlo con aleatorios que tomen fragmentos de la 煤nica lista original para que realmente no se repitan.
Es decir el error original es que se est谩 鈥渁segurando鈥 un set aleatorio en el Guid pero no en las combinaciones generadas.

Realmente ando siguiendo lentamente cada paso, por lo que estoy haciendo un simple copy paste, me tardo bastante en entender como se comunica cada archivo y en si mismo como es que funciona cada propiedad que le agregamos a la escuela.
Por ah铆 estaba pensando en cuanto termine, agregarle una especie de grado especial, tipo refuerzo y que lleve a alumnos autom谩ticamente que tenga notas bajas. Pero eso mas adelante.

llegue hasta esta clase, quede super perdido , tengo bases de programaci贸n pero hay bastantes cosas nuevas , descansar un rato y retomar de a poco

Yo siguiendo el paso a paso de la creaci贸n de la escuela para aplicarlo a un proyecto nuevo.

Excelente la clase!!

Excelente curso

no pude hacer el reto porque TENGO UN DOTNET MAS ACTUALIZADO Y LA GENERACION DE ALUMNOS NO SIRVE

392*鈥 :B

Yo estoy dise帽ando el Liceo en Windows Form y con lo aprendido aqui se esta poniendo interesante

Yo estoy creando C# Academy con materias de programaci贸n y computer science.

Excelente Profe!

Para generar aleatorios existen algo que es ramdom

<public static void generarAleaotorio() {
Random rnd = new Random();
intmonth = rnd.Next(1, 13);
Console.WriteLine(month);
}>

Si esta algo complicado, voy algo perdido pero espero entenderlo

Excelente!

Excelente Curso!

Buenas clases

Yo estoy creando mi Universidad xd

Vengo de Java y ha sido un poco complejo adaptarme a esta nueva forma de programar, pero todo lo estoy comprendiendo bastante bien鈥

uve algunos problemas 鈥 por que xd

Habia que crear algo? :v

estoy con oxigene pero trato de adaptar esto a un sistema de facturaci贸n.

Gracias Juank.

Excelente!!

El curso es muy bueno.

Excelentes explicaciones del profe de como usar las diferentes herramientas que hemos aprendido

Todos los ejemplos son aplicables en proyectos de la vida real, trabajar con estructuras de datos, listas, etc. Buen curso.

Pues yo tengo una idea de crear un sistema completo en el cual nos permita crear una escuela mediante el ingreso de datos en la terminal ademas de tener multiples opciones que ejecutar una vez dentro de ella. En dos o tres horas que lo termine pienso agregarlo a un repositorio y compartirlo junto con el examen final 馃槃

Esta clase estuvo muy buena, encuentro muy divertido jugar con los nombres aleatorios.

Que buena implementaci贸n de las funciones. Se aprende bastante con estos ejemplos.

A nuestro m茅todo de CargarAlumnos vamos a a帽adirle la l贸gica para pasarle un par谩metro indicando la cantidad de alumnos que queremos devuelta y para evitar que siempre nos regrese a los mismos alumnos debe generarlos de forma aleatoria.

La clase Random nos sirve para generar n煤meros aleatorios.

Este es mi metodo de imprision por curso, asignatura y alumnos

public static void Impresion(List<Curso> listCurso)
        {

            foreach (Curso curso in listCurso)
            {
                Printer.Dibujar();
                System.Console.WriteLine($"Curso: {curso.Nombre}");
                 Printer.Dibujar();
                 System.Console.WriteLine("");
                foreach (var asa in curso.Asignaturas)
                {
                    System.Console.WriteLine($"Asignatura: {asa.Nombre}");
                }
                Printer.Dibujar();
                 System.Console.WriteLine("");
                foreach (var al in curso.Alumnos)
                {
                    System.Console.WriteLine($"Alumno: {al.Nombre}");
                }
                
            }
        }

tengo un error en genera alumnos me cuando pongo la listaAlumnos en el return me dice que no puede convertir implicitamente al list<t> .de un iEnumerable a alguien le paso lo mismo?

private list<Alumno> GeneraAlumnos(int cantidad)
        {

            string[] nombre1 = { "Alba", "Felipa", "Eusebio", "Farid", "Donald", "Alvaro", "Nicol谩s" };
            string[] nombre2 = { "Freddy", "Anabel", "Rick", "Murty", "Silvana", "Diomedes", "Nicomedes", "Teodoro" };
            string[] apellido1 = { "Ruiz", "Sarmiento", "Uribe", "Maduro", "Trump", "Toledo", "Herrera" };


            var listaDeAlumnos = from n1 in nombre1
                                 from n2 in nombre2
                                 from a1 in apellido1
                                 select new Alumno { Nombre = $"{n1} {n2} {a1}"};

            return listaDeAlumnos.ToList();
            
        }

Creo que debi贸 generar **una 煤nica vez **los alumnos y de forma aleatoria seleccionar n.

Excelente curso! felicidades por este taller

Por si alguien quiere ver como imprimir el listado de asignaturas por curso y alumnos:

Tambien pueden crear todo lo que se ha realizado en distintos metodos en uno solo. Para esto yo utilic茅 el mismo m茅todo de cargar alumno y as铆 evitar crear dem谩s m茅todos y asignaciones que al final me sirve para cargar los alumnos:

private void CargarAlumnos()
{
string[] nombre1 = { 鈥淎lba鈥, 鈥淔elipa鈥, 鈥淓usebio鈥, 鈥淔arid鈥, 鈥淒onald鈥, 鈥淎lvaro鈥, 鈥淣icol谩s鈥 };
string[] apellido1 = { 鈥淩uiz鈥, 鈥淪armiento鈥, 鈥淯ribe鈥, 鈥淢aduro鈥, 鈥淭rump鈥, 鈥淭oledo鈥, 鈥淗errera鈥 };
string[] nombre2 = { 鈥淔reddy鈥, 鈥淎nabel鈥, 鈥淩ick鈥, 鈥淢urty鈥, 鈥淪ilvana鈥, 鈥淒iomedes鈥, 鈥淣icomedes鈥, 鈥淭eodoro鈥 };

        var listaAlumnos = from n1 in nombre1 from n2 in nombre2 from a1 in apellido1 select new Alumno { Nombre = $"{n1} {n2} {a1}" };

        foreach (var curso in Escuela.Cursos)
        {
            curso.Alumnos = (listaAlumnos.OrderBy((a) => a.UniqueId).Take(new Random().Next(5, 20)).ToList());
        }
    }

Otra manera de solucionar el problema del objeto no inicializado en los primeros dos minutos del video, es asignandolo justamente en cuanto se creo, como se realizo para la carga de cursos.

private void CargarMaterias()
 {
   foreach (var grupo in escuela.Grupo)
    {
       grupo.Materias  = new List<Materia>(){
           new Materia { Nombre = "Biologia"},
           new Materia{ Nombre = "Matematicas"},
           new Materia{ Nombre = "Electronica"},
           new Materia{ Nombre = "Programaci贸n"}
         };               
    }
 }

Notese que yo las asignaturas las llamo Materias y a los cursos como grupos.

Me gusta mucho la forma en que Juan Carlos imparte el curso, estoy comprendiendo el porque de utilizar algunos atributos o m茅todos que alguna vez los us茅 sin saber a fondo para que serv铆an. Yo le inclu铆 la materia de Ingl茅s.

Resumen Etapa4