Curso C#. Delegados predicados y lambdas II. Vídeo 68

Поділитися
Вставка
  • Опубліковано 17 гру 2024

КОМЕНТАРІ • 69

  • @Zeky
    @Zeky 5 років тому +24

    Siga así profesor, espero que dentro de un año lleguemos a los 200 vídeo de C#
    Saludos.

  • @Jocker88
    @Jocker88 4 роки тому +10

    Entre esta clase, los delegados y los genéricos, estoy haciendo un código en un proyecto que tengo que en mi vida he hecho algo TAN reutilizable, estas últimas clases que he visto son oro, no sabía ni que existian estas cosas en C#, malos vicios de otros lenguajes.
    P.D. Gran explicación :), nunca me cansaré de decir lo bien que explicas y lo explicativos que son tus ejemplos.

  • @omarsanchezcuevas8309
    @omarsanchezcuevas8309 2 роки тому +2

    Leyendo la documentación pude hacer los pases Desde el 7:55 hasta 9:25 sin haber visto antes esa parte ( aunque utilizando el for). Ya es un avance 😁

  • @smokingcrimson128
    @smokingcrimson128 2 роки тому +3

    hice lo de los números primos, pero con números hasta el cien, en realidad funciona hasta el número que quieras jeje, una vez más gracias por tan buenas lecciones Juan:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace Delegados
    {
    internal class Program
    {
    static void Main(string[] args)
    {
    List numOnetoTen = new List();
    for (int i = 0; i < 101; i++)
    {
    numOnetoTen.Add(i);
    }
    //Declaramos Predicado:
    Predicate numPares = new Predicate(returnPar);
    List numParesOneToTen = numOnetoTen.FindAll(returnPar);
    foreach (int i in numParesOneToTen)
    {
    if (i != numParesOneToTen.Last()) Console.Write(i + ", ");
    else Console.Write(i + ".");
    }
    Console.ReadKey(true);
    }
    static bool returnPar(int num)
    {
    int contador = 0;
    int divisor = 1;
    for (int i = 0; i < num; i++)
    {
    if (num % divisor == 0) contador++;
    divisor++;
    }
    if (contador == 2) return true;
    else return false;
    }
    }
    }

  • @lopezvictorh
    @lopezvictorh Рік тому

    Muchas gracias por tan valioso video... en verdad explicas de lo mejor!

  • @sudh3444
    @sudh3444 5 років тому +1

    Pedazos de cursos estos, apenas voy por el de Java, pero estoy pendiente de todos tus aportes que algún día tambien estudiaré; definitivamente sos un dios man, creo que te quiero como familia, como mi hermano, es más creo que te quiero más que a mi familia que vive en España, tal vez un día no muy lejano ande por allá y tenga el gusto de conocerte. Saludos hermano, cuidate y muchos éxitos más...

  • @elvingonzalez8932
    @elvingonzalez8932 5 років тому +11

    Excelente..
    Por favor ayudarnos un poco mas con C# y la cantidad de videos.. es que lo necesitamos mucho. Entiendo que no es fácil por el poco tiempo de disposición pero lo agradeceremos mucho...

  • @xavisanchezgimenez209
    @xavisanchezgimenez209 2 роки тому

    Muy grande, gracias por los cursos tienes infinitamente todos mis likes 🥰

  • @reynablacidoaparicio1892
    @reynablacidoaparicio1892 5 місяців тому

    Excelentes video!

  • @pablofonseca8867
    @pablofonseca8867 4 роки тому

    Esto es súper útil, wow Juan muchas gracias por compartirnos tu conocimiento.

  • @TonicoBonico
    @TonicoBonico 2 роки тому

    Un máquina el caballero.

  • @magdalenogarcia7879
    @magdalenogarcia7879 3 роки тому +1

    Muy buena explicación, saludos.

  • @jomarcordero4515
    @jomarcordero4515 4 роки тому +8

    Para mejor simplicidad retornando valores bool
    static bool EsPar(int num)
    {
    return num % 2 == 0;
    }
    static bool ExisteJuan(Persona persona)
    {
    return persona.Nombre == "Juan";
    }

  • @elsavictoriabarraganoliver7153
    @elsavictoriabarraganoliver7153 4 роки тому +1

    Excelente! Gracias mil.

  • @mralexander9711
    @mralexander9711 3 роки тому

    Muchas gracias amigo. ¡Enseñas muy bien!

  • @nicolacho87
    @nicolacho87 4 роки тому

    Muchas gracias por sus videos he aprendido mucho.
    Yo hice el de los números primos apoyándome de lo que hiciste en este video solo que yo le doy la opción de dar el rango:
    using System;
    using System.Collections.Generic;
    namespace DelegadosPredicados
    {
    class Program
    {
    static void Main(string[] args)
    {
    // Programa para mostrar la lista de numeros primos dando el numero hasta donde quiere que se muestre:
    Console.WriteLine("Ingrese el numero hasta el cual quiere que se muestre los numeros primos.");
    int p = int.Parse(Console.ReadLine());
    List listaNumeros = new List();

    for(int i = 1; i

  • @roderickmedina6970
    @roderickmedina6970 4 роки тому +1

    buen vídeo, muchas gracias por el contenido

  • @CarlosHernandez-xs6py
    @CarlosHernandez-xs6py 5 років тому +1

    Muy buen video como siempre

  • @acaraballo
    @acaraballo 4 роки тому +2

    28/10/2020 : Gracias a tus vídeos he avanzado mucho. Tengo 31 años y hace aproximadamente un año he entrado en lleno al mundo de la programación.
    Faltaron las excepciones y algunos detalles:
    using System;
    using System.Collections.Generic;
    namespace ValidarDatos
    {
    class Programs
    {
    static void Main(string[] args)
    {
    Console.WriteLine("Introduce nombre y edad primera persona:");
    Personas p1 = new Personas();
    p1.Nombre = Console.ReadLine();
    p1.Edad = Int32.Parse(Console.ReadLine());
    Console.WriteLine("Introduce nombre y edad segunda persona:");
    Personas p2 = new Personas();
    p2.Nombre = Console.ReadLine();
    p2.Edad = Int32.Parse(Console.ReadLine());
    Console.WriteLine("Introduce nombre y edad tercera persona:");
    Personas p3 = new Personas();
    p3.Nombre = Console.ReadLine();
    p3.Edad = Int32.Parse(Console.ReadLine());
    List listadoPersonas = new List();
    listadoPersonas.AddRange(new Personas[] { p1, p2, p3 });
    Predicate predicadoNombre = new Predicate(fnValidarNombre);
    Predicate predicadoEdad = new Predicate(fnValidarEdad);
    bool validarNombre = listadoPersonas.Exists(predicadoNombre);
    if (validarNombre) Console.WriteLine("Existen personas con el nombre de El Pepe");
    else Console.WriteLine("No existe persona con el nombre de Juan");
    bool validarEdad = listadoPersonas.Exists(predicadoEdad);
    if (validarEdad) Console.WriteLine("Existen personas menores de edad");
    else Console.WriteLine("No existen personas menores de edad");
    }
    class Personas
    {
    private string nombre;
    private int edad;
    public string Nombre { get => nombre; set => nombre = value; }
    public int Edad { get => edad; set => edad = value; }
    }
    static bool fnValidarNombre(Personas persona)
    {
    if (persona.Nombre == "El Pepe") return true;
    else return false;
    }
    static bool fnValidarEdad(Personas persona)
    {
    if (persona.Edad < 18) return true;
    else return false;
    }
    }
    }

  • @ghss5088
    @ghss5088 3 роки тому +1

    Este es mi segundo comentario con referencia a Java, pero uno hace esta comparación ya que en para usar Predicados en java tu necesitas implementar un Stream o a la lista pasarla a stream(), pero C# lo tiene un la misma interface de List

  • @williamortega8494
    @williamortega8494 5 років тому +2

    Muy buen video como siempre :)...Supongo que luego vendran los action y func...

  • @alfonsolara4592
    @alfonsolara4592 3 роки тому

    Excelente clase profesor!

  • @stevenrocha7482
    @stevenrocha7482 5 років тому

    gracias, sigo su curso y otros más.

  • @JohanRobayo10
    @JohanRobayo10 Рік тому

    Para agregar algo en lo que se dice en el minuto 10:09, el 1 no es considerado un número primo.
    static bool Primos(int num) {
    bool bandera = false;
    int count = 0;
    for (int i = 1; i

  • @arielizurieta9110
    @arielizurieta9110 4 роки тому

    Gracias !

  • @manuelsantiagoojedaperez2180
    @manuelsantiagoojedaperez2180 4 роки тому +4

    el metodo para definir si es primo lo saque asi
    for(int divisor=1 ; divisor

    • @aliciabuendia872
      @aliciabuendia872 3 роки тому

      Hola Manuel, sé que tu comentario es viejo, pero me serviría muchísimo si pudieras contestar a lo siguiente: ¿Por qué funciona si la condición if para que sean primos es true, pero retorna falso?

    • @manuelsantiagoojedaperez2180
      @manuelsantiagoojedaperez2180 3 роки тому +1

      @@aliciabuendia872 hola alicia, la funcion esta pensada para que sea tipo boolean. Haces una llamada desde el metodo main y le das el numero que queres saber si es primo o no como parametro

    • @manuelsantiagoojedaperez2180
      @manuelsantiagoojedaperez2180 3 роки тому +1

      Y el metodo te responde true, si es primo o false si no lo es

    • @aliciabuendia872
      @aliciabuendia872 3 роки тому

      @@manuelsantiagoojedaperez2180 ¡Muchas gracias!

  • @rodrigomarsan1143
    @rodrigomarsan1143 3 роки тому +1

    Consulta, pueden agregarse más predicados por método? Por ejemplo, comprobar si existe alguien que se llama Juan y tiene más de 18 años, o si hay números primos mayores de 10. Tal vez encadenando predicados?

  • @marlonjosevillamizar1556
    @marlonjosevillamizar1556 5 років тому +4

    Hola profe, me gustaría saber si va a haber un vídeo sobre hilos. Gracias...

  • @santiagobedoyaa.8197
    @santiagobedoyaa.8197 4 роки тому

    Miré la página y no hay curso tutorizado de C#. Quisiera que lo hubiera para tener ejercicios y acompañamiento del profesor. Espero lo ofrezca pronto!

  • @leomarqz
    @leomarqz 2 роки тому

    El uso de predicate y findall se me hace similar al funcionamiento de filter en Javascript

  • @jorgecortinas
    @jorgecortinas Рік тому

    10:11 pequeño detalle, el 1 no es primo

  • @JavvaC23
    @JavvaC23 Рік тому

    Hola Juan, tengo una duda, me confunde un poco que tenemos que declarar Predicate y lo que recibe es una función de tipo bool, cual es la necesidad de la clase Predicate sobre por ejemplo imaginando que los métodos .FindAll( ) y .Exist( ) recibieran una función de tipo bool directamente en lugar de un Predicate?

    • @pildorasinformaticas
      @pildorasinformaticas  Рік тому +1

      Predicate es un delegado que encapsula un método que toma un parámetro y devuelve un valor booleano. Esencialmente, Predicate es una definición para una función que toma un argumento de tipo T y devuelve un booleano.
      public delegate bool Predicate(T obj);
      Cuando pasas un Predicate a métodos como List.FindAll() o List.Exists(), estás pasando una función que estos métodos utilizarán para evaluar cada elemento de la lista.
      Podrías preguntarte, ¿por qué no sólo pasar una función booleana directamente? Bueno, técnicamente, eso es lo que estás haciendo. Predicate es esencialmente una manera de definir el tipo de esa función booleana.
      Decir que un método toma un Predicate es simplemente una forma de decir que toma una función que acepta un argumento de tipo T y devuelve un booleano. Hace que el código sea más claro y expresivo, porque sabes exactamente qué tipo de función necesitas pasar.
      Esencialmente, los delegados como Predicate, Func, Action etc., son formas en C# de tratar las funciones como objetos de primera clase, lo que significa que puedes pasar funciones como argumentos, almacenarlas en variables y así sucesivamente. Esta es una característica clave de la programación funcional.
      Además, Predicate añade claridad semántica. Sabes que se espera que una función que acepta un T y devuelve un bool haga una evaluación de verdad sobre T, en otras palabras, es un "predicado". ¡Saludos!

    • @JavvaC23
      @JavvaC23 Рік тому

      @@pildorasinformaticas Muchas gracias Juan!, "pasar funciones como argumentos", lo se hacer en javascript pero en C# por lo que veo se ocupan más pasos, solo me falta ver la parte de Unity, me agrado bastante el curso ahora que regrese a la programación, tenia 2 años sin programar luego de terminar la universidad que fue justo cuando empezó el covid-19.
      Creí que nunca le entendería muy bien a lenguajes como Java, pero en esta segunda vuelta con C# me agradó bastante, la forma de construir una interfaz gráfica fue mucho más intuitiva/fácil con XAML, que cuando utilicé Swing en Java durante la universidad.
      Anteriormente hace algunos 6 años tomé un curso de Unity, pero no sabía C#.
      Saludos también!

  • @GerentedeSistemas
    @GerentedeSistemas 4 роки тому

    Ejercicio Delegado Primo
    Predicate PrimoPredicate = new Predicate(EsPrimo);
    List primo = lista.FindAll(PrimoPredicate);
    primo.ForEach (n =>
    {
    Console.WriteLine(n);
    });
    static bool EsPrimo(int n)
    {
    if (n == 1) return false;
    for (int i = 1; i 1 && i < n)
    {
    if (n % 2 == 0) {
    return false;
    }
    }
    }
    return true;
    }

  • @franciscocruzarriero9951
    @franciscocruzarriero9951 4 роки тому +3

    Excelente, como todo tu trabajo,
    Pero tengo un pregunta, se puede pasar parámetros para que no sean fijos como el de Juan y que sea dinámico a la hora de preguntar?
    Gracias por todo
    Y sigue así

    • @Bola10010
      @Bola10010 3 роки тому

      supiste si se puede?? ando viendo esa parte

    • @barbiechm08
      @barbiechm08 2 роки тому

      @@Bola10010 hay un tipo de dato llamado dynamic, creo, ese funcionaría si es a lo que te refieres

  • @estebanf1490
    @estebanf1490 3 роки тому +1

    Solución a los números primos que cree
    static bool DamePrimos(int num)
    {
    if (num < 2) return false;
    for (int i = 2; i < num - 1; i++) { if (num % i == 0) return false; }
    return true;
    }

  • @Bola10010
    @Bola10010 3 роки тому +1

    Hola Juan, hay alguna forma de saber por ejemplo si existe un Juan y el tiene mas de 18 años, o solo puede evaluar a toda la lista.
    Saludos

  • @Juanda-30
    @Juanda-30 Рік тому

    osea según lo que entiendo los delegados y los predicados son referencias: delegado a metodos void o tipo de dato y predicado referencia a metodos booleanos pero lo que no entiendo es para que tendria que usar una referencia en ves de usar el metodo original? para recordarme de que es lo que hace el metodo o que?

    • @RobertoTexis-h5i
      @RobertoTexis-h5i Рік тому

      Son como punteros

    • @thefran901
      @thefran901 3 місяці тому

      Porque la referencia se puede pasar como argumento a otro método (en los parámetros). De esa manera se pueden crear métodos muy genéricos que aceptar como parámetro un delegado, o un predicado, o una funcion, o una accion, y luego ir llamando a este método pasándole diferentes predicados como argumentos, dependiendo del contexto y caso en que quiera usarlo. Esto permite ahorrar código y no repetir lógica.
      Por ejemplo supongamos que tengo un método que se llama inicializarConexion(...), y lo que hace este método es, como su nombre indica, inicializar una conexión, tiene todo un código complicado adentro, y al pasa a llamar a que se ejecute otro método o función. El tema es, que dependiendo del contexto en que quiera inicializar esa conexión, voy a querer que el método inicializarConexion ejecute una función diferente o específica después de inicializar la conexión. Entonces lo que me conviene es declararle un parámetro que sea un delegado; este delegado puede ser cualquier función o método (con una determinada firma) que yo quiera, y cada vez que llame al método inicializarConexion, lo voy a hacer pasándole diferentes funciones como argumentos.

  • @myaccountofpc3284
    @myaccountofpc3284 5 років тому

    porfin entiendo el tema

  • @azudevcr
    @azudevcr Рік тому

    Se puede simplificar un poquito mas así:
    static bool DamePares(int num) => num % 2 == 0;

  • @sleter2929
    @sleter2929 3 роки тому

    entonces, los delegado predicado son como filtros?

  • @AndresIsMe
    @AndresIsMe 5 років тому

    copado, gracias

  • @jomarcordero4515
    @jomarcordero4515 4 роки тому +1

    List gente = new List
    {
    new Persona{ Nombre = "Juan", Edad = 18},
    new Persona{ Nombre = "Maria", Edad = 28},
    new Persona{ Nombre = "Ana", Edad = 37}
    };

  • @acaraballo
    @acaraballo 4 роки тому

    28/10/2020

  • @alphaalfre
    @alphaalfre 2 роки тому

    👀

  • @ralvarezb78
    @ralvarezb78 5 років тому

    Creo que tarde o temprano me voy a poner con C#

    • @alanmelendez7154
      @alanmelendez7154 4 роки тому

      Deverias comenzar esta ciendo muy demandando .NET ahora mismo espero y no tardes mucho !

  • @RobertoTexis-h5i
    @RobertoTexis-h5i Рік тому

    Con numero primo:
    if (num == 2 || num == 3)
    {
    return true;
    }
    else if (num % 2 == 0 || num % 3 == 0)
    {
    return false;
    }
    else
    {
    return true;
    }

  • @the_naacho097
    @the_naacho097 5 років тому +2

    PíldorasInformaticas necesito un pelín de ayuda en clase de informática y mates (nos da el mismo profesor) nos pidió que hiciéramos un juego RogueLike con gráficos ASCII en Phyton. Pero yo estoy perdido. Podrías hacer una serie de tutoriales haciendo un juego así ? Porfavor 😢
    También nos dijo que nos descargarnos un paquete o algo así que era muy utilizado para hacer Roguelikes se llama Phyton tdl.

  • @Rafaelink17
    @Rafaelink17 4 роки тому

    no, profe :( el uno no es primo u.u 10:10

    • @Rafaelink17
      @Rafaelink17 4 роки тому

      La definición de primo es ser divisible por dos números. El uno es divisible solo por uno.

  • @brayan2063
    @brayan2063 4 роки тому +2

    pedos y petres XD

  • @CesarMendoza-qs2qx
    @CesarMendoza-qs2qx Рік тому

    que gonorrea de ejercicio ! Hice un ejercicio similar con PERSONAS antes de que tu lo hicieras, patine bastante pero viejo... EXCELENTE, en este punto hay que tener los conceptos claros de todo lo que hemos visto porque si no es asi... pailas... no avanza uno.... por ahora AMIGO ENTENDI TODO E HICE UN EJERCICIO SOLO ! Muchas gracias