A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Generaci贸n de datos aleatorios

28/32
Recursos

Si un m茅todo tiene m谩s de 50 l铆neas significa que est谩 mal dise帽ado, cada m茅todo debe tener una sola responsabilidad. Es por eso por lo que vamos a separar en distintos m茅todos la carga de datos de nuestro proyecto.

Aportes 41

Preguntas 4

Ordenar por:

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

los nombres para que no tengan que descargar el archivo

 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" };```

Tip 馃挕.
Hace tiempo tuve la oportunidad de asistir a unas clases de C# en donde nos ense帽aron peque帽os trucos de optimizaci贸n de c贸digo. El tip es este:
Las listas son una clase que por dentro tienen implementadas interfaces, en este caso la clase List tiene implementada la interfaz IEnumerable. Es por ello que podemos devolver este tipo de dato en la funci贸n CargarAlumnos.
La cuesti贸n es: 驴Por qu茅 devolvemos un IEnumerable en vez de un List de alumnos? La respuesta ser铆a: si NO es necesario hacer operaciones con la lista, como a帽adir nuevos elementos, borrar, etc. Lo ideal es trabajar con IEnumerable ya que este no tiene cargada toda una estructura de una clase, por lo cual se ahorra toda la carga de funciones que NO ser谩n usados. Ahora, si necesitamos seguir haciendo operaciones con la lista deberiamos devolver un tipo de dato List.

Diagrama de clases del proyecto de la Escuela, solo lo realic茅 como lo entend铆, y no le puse las funciones/m茅todos como para dejar al libre an谩lisis y comentarios constructivos para mejora del mismo.

En que parte se creo Alumno.cs, Asignatura.cs, Evaluaciones.cs que no los vi?.

Para los que quieran cargar las asignaturas:

List<Asignatura> listaAsignaturas = new List<Asignatura>(){
                    new Asignatura{Nombre = "Matem谩ticas"},
                    new Asignatura{Nombre = "Educaci贸n F铆sica"},
                    new Asignatura{Nombre = "Castellano"},
                    new Asignatura{Nombre = "Ciencias Naturales"}
                };
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" };
.```

No entiendo por que en este curso se saltaron una parte en donde el profesor incluyo en el c贸digo cosas, es cierto que si te vas a los archivos est谩n los cambios pero鈥 Para mi no es clara esta parte del curso y mas si estas aprendiendo los fundamentos.

PLATZI ES GENIAL.

Pero鈥
Equipo de platzi por favor prestar atenci贸n a este tipo de cosas.

Me cae demasiado bien Juan Carlos! muchas gracias por el curso

Se puede optimizar el c贸digo mas evitando tener que hacer el foreach para cargar los alumnos si cuando creamos los cursos lo hacemos al mismo tiempo

List<Alumno> alumnos = new List<Alumno>(CargarAlumnos());

            Escuela.Cursos = new List<Curso>{
                new Curso()
                    {
                        Nombre = "101",
                        Jornada = TiposJornada.Tarde,
                        Alumnos = alumnos
                    },
                new Curso()
                    {
                        Nombre = "202",
                        Jornada = TiposJornada.Ma帽ana,
                        Alumnos = alumnos
                    },
                new Curso()
                    {
                        Nombre = "301",
                        Jornada = TiposJornada.Noche,
                        Alumnos = alumnos
                    }
                };   ```
Si se quiere hacer la creaci贸n de alumnos cada vez que se crea el curso solo hay que hacerlo as铆.



        Escuela.Cursos = new List<Curso>{
            new Curso()
                {
                    Nombre = "101",
                    Jornada = TiposJornada.Tarde,
                    Alumnos = new List<Alumno>(CargarAlumnos())
                },
            new Curso()
                {
                    Nombre = "202",
                    Jornada = TiposJornada.Ma帽ana,
                    Alumnos = new List<Alumno>(CargarAlumnos())
                },
            new Curso()
                {
                    Nombre = "301",
                    Jornada = TiposJornada.Noche,
                    Alumnos = new List<Alumno>(CargarAlumnos())
                }
            };   ```

Espero que les guste.

Saludos.

El producto cartesiano revela una relaci贸n de orden entre dos conjuntos, constituy茅ndose como un tercer conjunto.

El producto cartesiano de un conjunto A y de un conjunto B es el conjunto constituido por la totalidad de los pares ordenados que tienen un primer componente en A y un segundo componente en B.

Si un m茅todo tiene m谩s de 50 l铆neas significa que est谩 mal dise帽ado, cada m茅todo debe tener una sola responsabilidad.

asignatura" no contiene una definici贸n para 鈥淎ddRange鈥 ni un m茅todo de extensi贸n accesible 鈥淎ddRange鈥 que acepte un primer argumento del tipo 鈥渁signatura鈥 (驴falta alguna directiva using o una referencia de ensamblado?) [proyectod] alguien me ayuda con esto sinceramente no se que me esta faltando

Alguna vez en un proyecto vi Linq sin saber que era, ahora ya lo s茅, gracias!

Para generar aleatorios existen algo que es ramdom

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

Amigos dejo mi soluci贸n

private void CargarEvaluaciones()
        {

            double number;
            Random rnd = new Random();
            foreach (var cur in Escuela.Curso)
            {
                foreach (var alu in cur.Alumnos)
                {
                    foreach (var asig in cur.Asignaturas)
                    {
                        for (int i = 0; i < 5; i++)
                        {
                            number = rnd.NextDouble();
                            number = Math.Round(number * 5, 1);
                            var Evaluaciones = new Evaluaciones
                            {
                                Asignatura = asig.Nombre,
                                Alumno = alu.Nombre,
                                Nota = number,
                                Trismestre = i + 1
                            };
                        }

                    }
                }

            }
        }```

Minuto 6:30 a 7:00 XD

Una clase y un m茅todo solo pueden tener una responsabilidad, eso es parte de los principios SOLID, el principio de responsabilidad 煤nica. Para cuando se termine el curso pueden darle una ojeada a esos principios SOLID.

Excelente

Esto de asignar rapidamente la variable con unos cliks se puede hacer en vim ?

Minuto 1:16, que risa jajajaja!!!

Una forma de crear una lista de alumnos podr铆a ser:

List<Alumno> alumnos = new List<Alumno>();
for (int i = 0; i < 30; i++)
            {
                var rand = new Random();
                string nombreCompleto = $"{nombre1[rand.Next(nombre1.Length)]} {nombre2[rand.Next(nombre2.Length)]} {apellido1[rand.Next(apellido1.Length)]}.";
                alumnos.Add(new Alumno(nombreCompleto));
            }```

De esta forma tienes control de cuantos alumnos quieres generar, en este ejemplo 30... Bueno es otra forma de hacerlo.

Crear los metodos antes de definirlos es la leche.

En realidad no se agregaron 5 materias. Solo agrego 4 jaja

Excelente!

Ser铆a genial un diagrama de clases para saber como est谩 estructurada la aplicaci贸n, platzi no tiene un curso de UML?

Buenas clases

Ya se esta poniendo interesante :v

genial esto de linq, escuchaba que se usaba mucho y lo hab铆a visto pero no entend铆a porqu茅 era 煤til

Explica bn pero habla rapidisimo

no se porque me salta este error con n1 y n2

omg

Excelente demostraci贸n de uso de LinQ

Excelente clase.

Si un m茅todo tiene m谩s de 50 l铆neas significa que est谩 mal dise帽ado, cada m茅todo debe tener una sola responsabilidad. Es por eso por lo que vamos a separar en distintos m茅todos la carga de datos de nuestro proyecto.

Wow, es un tip simple pero muy bueno el que us贸 para combinar los arrays, 茅sta es una de clases muy buenas.
En Linq existen dos tiempos de notaciones, la Query y la Extensi贸n.
el profe us贸 Query, ya estuve buscando y no encuentro la forma de hacerlo con extensi贸n, seguro si hay, pero quedar谩 algo muy rebuscado.
La notaci贸n de extensi贸n se caracteriza por concatenar el resultado de una sentencia detr谩s de la otra y as铆 crear una sola. por ejemplo:

var result = MyList.Where(x=> 鈥).Select(y => new{}鈥).ToList();

Si son como yo y sacaron sus nombres y apellidos de una lista y no quieren ponerle comillas y comas nombre por nombre pueden usar esta expresi贸n regular en VS Code para que a帽ada esto. Quedar铆a as铆 en find:
^ ?(.+)$

Y as铆 queda en replace "$1",

Listo, nos vemos en un pr贸ximo video.

Donald Freddy Trump 0:

Ese apellido 鈥淢aduro鈥 no qued贸 bien ah铆 xD