¿Te gustaría que este contenido siga siendo gratuito?, puedes apoyar al canal de las siguientes maneras: 1. Donaciones: www.paypal.me/LaGeekipedia 2. Desactivando Adblock y Adblock Plus en KZbin. 3. Compartiendo los vídeos del canal en foros y redes sociales. Cualquier opción es de gran ayuda. ¡Muchas gracias!
@felipec.23084 жыл бұрын
Para mi usted es el mejor canal de programación que hay y quiero que lo sepa, ante todo. Quisiera darle una idea, yo lo sigo desde que vi su explicación del método burbuja con punteros, como iba cambiando los punteros uno a uno y haciendo el paso a paso de la explicación y volvía entendible algo tan abstracto como el cambio de lugar de las posiciones etc. Explica con muchísima calma, y para personas como yo que les cuesta mucho entender los movimientos imaginarios de la lógica de programación eso es de mucha ayuda. Usted es el único canal que explica de tal manera un método burbuja, o por lo menos dentro de los que yo he buscado -que son muchos-. Y, además, yo que estoy cursando una ingeniería le puedo decir con seguridad que muchos de los programadores que nos dan clases no tienen ni la mitad de la paciencia que tiene usted y lo felicito por eso. La idea que quería darle consiste en que yo noto en estos videos (un poco más avanzados que el método burbuja) imagino que por cuestión de tiempo usted no puede explicar cada detalle de lo que hace con representaciones graficas de cada método, de cada ciclo, de cada condición etc. Es lógico que el video se alargaría demasiado, pero depronto sería muy provechoso para su audiencia -incluyéndome- que hiciera videos aparte, explicando con la misma metodología que hizo en el método burbuja, gráficamente, paso a paso y demas, los códigos que elabora en videos como este. ¡Un saludo y muchas gracias por tanto!
@jaimemanuel9369 Жыл бұрын
Recién encontre tu canal Ernesto, y debo decir "EXCELENTE" y muy didáctico tu forma de enseñar y agradecido con los ejemplos tan practicos. Toma un poco de tiempo a veces pero aquí juega la imaginación y los conceptos vistos en clases anteriores, se tiene que juntar todo para entender. Muchas gracias por tu paciencia y enseñanza.
@brianquesada24944 жыл бұрын
Ernesto sos genial explicando mucho mejor que cualquier profe que haya tenido en toda mi vida, aun así pienso que en estos vídeos no dedicaste el suficiente tiempo en explicar todo a como acostumbras dejándolo todo tan claro que seria raro tener dudas acá fue todo distinto osea vídeo 33 y 34 ya que diste por hecho que explicaste o los que ven los vídeos ya tenían conocimientos teóricos por lo menos de cosas que no mencionaste en los vídeos anteriores, igual muchas gracias por hacer estos cursos.
@orlando6804 Жыл бұрын
Excelente trabajo el que haces Ernesto, gracias a ti estoy aprendiendo más de lo que aprendí en la universidad. En lo particular estos últimos videos se me han dificultado, pero agradezco tu esfuerzo y compromiso
@Rockoonesong Жыл бұрын
Funcionamiento del programa: 1. Se agrega un carácter a la pila si cumple con "(" , "[" o "{". 2. En caso contrario, se verifica si los caracteres son ")", "]", o "}" (los cierres). 3. Si se trata de uno de esos caracteres, se elimina el último carácter ingresado en la pila. 4. Si el carácter eliminado NO ES igual a "(" (por ejemplo, al verificar ")"), se finaliza el proceso y se retorna false. 5. Al finalizar el bucle, se retorna el valor de pila.PilaVacia (un valor booleano). Lógica del programa: El programa utiliza una pila para rastrear la apertura de paréntesis, corchetes y llaves. Si se encuentra un cierre, se busca su correspondiente apertura. Si no coincide, se detiene y retorna false. Al final, se verifica si la pila está vacía. Si PilaVacia() devuelve true, no hay errores de sintaxis; si es false, indica que hay paréntesis o corchetes abiertos que no se han cerrado. Espero que les sirva para entender mejor :)
@Carlos-d7u7d3 ай бұрын
Gracias compañero lo entedere mejor asi :)
@fernandogomezmartirena8562 жыл бұрын
Gran curso Ernesto! Considero que hacés un bien inimaginable a la comunidad brindando gratis tu conocimiento y pasión. La forma de enseñar y explicar cada tema es admirable. También entiendo que haya gente que se esté trabando y le cueste seguir el paso a esta altura porque lo que se está viendo no es sencillo. Estructuras de datos es bastante complejo y requiere tiempo para entenderlo y más tiempo para que fluya a la hora de programar. Quería decirte, con todo respeto que el método "extraer" es muy mejorable. A mi en la universidad me enseñaron que es buena práctica de programador dejar un solo return a pesar de que muchas personas hacen lo que vos hiciste. También creo que, en ese mismo método, podrías haber simplificado el código creando la variable "información" del tipo Char fuera de la estructura condicional, nomás empezar el método. De esa forma usar esa variable tanto en el if como en el else y fuera del condicional el return de la misma (en el if se guardaríaa info y en el else podría guardarse un espacio en blanco ""). Muchas gracias y saludos.
@ricardocolladodev4 жыл бұрын
En un principio pense que estariamos hablando de expresiones regulares (he estudiado ese tema ya por ahi) Pero me parecio fantastico el usar nodos para esto! *.* Fue hermoso. Veo muchos comentarios negativos, la verdad es que si fue un poco rapido, pero igual, quien haya estado practicando los videos anteriores y haya analizado los temas por su cuenta, les parecio como a mi, muy bien explicado, CLARO, hay que tomar el ejercicio y sentarse a leerlo, no solo es copiar el codigo, cuando termine, me sente a leerlo como prueba de escritorio y me di cuenta porque hacias cada cosa. El tema de Nodos adjacentes los vi al hacer una practica de una pagina que uso para (valga la redundancia) practicar, "edabit" muy buena, la recomiendo para ir avanzando. Excelente explicacion, El video en verdad sirve mas para aumentar la logica, practicando lo que hiciste!
@JoseLuis-cu4bc2 жыл бұрын
Estas listas y nodos me han dado duro! Bueno, toca ver el video varias veces. Gracias Ernesto!
@cesarmateoveraandrade93943 жыл бұрын
llevo 3 días sin dormir xd analizando esto son como las 8 casi de la tarde en mi pais que no despego del ordenador, y bueno ya lo entendi xdxd me tomo más tiempo de lo que esperaba pero igual gracias ernesto, tu explicaste bien solo no copie bien algunas cosas xd y al final si logre entender aunque fue un poco dificil pero al final con esfuerzo y mucho cafe lo logre ojala todos logren entenderloo xd pdt a los que sientan q no entiendan y esten leyendo los coments intentando buscar ayuda xd como yo hace unos dias namas les digo que aunque todo parezca dificl siempre hay una luz al final del tunel y cada esfuerzo tiene su recompenza y mucha suerte
@d-landjs3 жыл бұрын
Excelente contenido!!! Lástima que ya no expliques tan a detallado como antes :'c solo queda darle vuelta hasta entender bien xD
@ricardoivanmaldonadogamez2512 Жыл бұрын
no explica solo dice que hacer se le olvido que esta ensenando a personas que están en curva de aprendizaje, no somos experimentados en el tema para comprenderlo de golpe, es un detalle que podria hacer sus videos de mejor calidad, aun asi sirven solo que tienes que pausar practicamente cada paso que dice
@luisramirez1314 Жыл бұрын
yo me pase 3 días con el video anterior 😂
@NeicerVera7297 ай бұрын
@@luisramirez1314 yo estuve 2 dias hasta que entendi el tema de pilas, segui con este video y estuve 3 dias , ahora ya entiendo mucho mejor
@AtomWR13 жыл бұрын
Ernesto Saludos de Colombia 2021! No lo voy a negar me costo mucho pero logre entenderlo Gracias por esas acciones tan bonitas como lo es compartir conocimiento hermano 💯
@ivanblanco6140 Жыл бұрын
Todo Entendido Profe gracias voy por el siguiente.. 👍💪
@gggggerman20084 жыл бұрын
muy a las patadas sinceramente la explicación, tan bien que ibas
@cristianherrera69053 жыл бұрын
La primera vez que vi esto de los nodos pensé que era muy jodi**, pero después de reverme 4 veces el video, parando cada vez que hacia un método para pensarlo, al final mas o menos ya lo entiendo. Los que penséis que es muy difícil no os desaniméis eeeh, tomáoslo con calma y en un día o dos ya lo pillareis!! :-)
@alexmartin5365 жыл бұрын
Ahora si que no entendi nada
@cristianmateoflorezgarcia88623 жыл бұрын
hahahahahahahahah
@brunopadillagutierrez38128 ай бұрын
X2 xd
@katitaa194 ай бұрын
Lo que entendimos hoy, mañana lo vamos a entender.
@tvBioskoop_show5 жыл бұрын
te agradezco mucho. porque se que contigo voy a aprender mucho.
@mat24mese4 жыл бұрын
Esto de Pilas y nodos lo enseñan para mejorar su logica como programador , yo lo vi en la u pero a nivel de papel nunca en programación, es un poco complejo pero ya cuando cuando te das cuenta que es solamente guardar información y que apunte al siguiente nodo para que haya un orden se hara mas sencillo..... pero ahora me doy cuenta que si ha tenido una funcion util todo eso de pilas y nodos
@whitshh1493 жыл бұрын
Me sacaste totalmente las ganas de terminar el curso. Es increible pero cierto. Venias explicando todo bien y se ve que te aburriste o algo, "Nodo" "char" "Ya lo vimos en la clase pasada" nunca explicaste que son o como funcioann. Solo escribes tu codigo y y dices "Mira que bien quedo". Estos 2 videos son los ultimos que vere. Mucho aprendi hasta aca, agradecido por eso, pero este salto de velocidad al escribir, explicar etc mataste todas las ganas que tenia de seguir tu curso. Salu2.
@carloszambrano85485 жыл бұрын
Ahora si estas explicando a millón jajaja... bueno fino aquí vamos repitiendo el vídeo pero activo.. :D
@carlosysucodigoconcafe2908Ай бұрын
LIKE !!! A los que bajaron la velocidad de Preproducción :D, Saludos Ernesto eres un crack
@lucioberardobj165 жыл бұрын
Todo iba bien hasta que empezamos con estas listas y nodos, no me quedo muy claro, pero excelente instructor.
@jyscalv70084 жыл бұрын
Que es lo que no entiendes?
@stevenjm84443 жыл бұрын
yo tambien no entendi a la primera, pero me descarge el proyecto que dejo ernesto y estuve analizando cada una de las lineas de codigo, y a la final termine por comprender como funcinan esas estructuras
@samuelgutierrez57043 жыл бұрын
@@jyscalv7008 no me quedo clara la lógica de como administrar la lista tipo pila:(, ósea decía cosas, pero no daba a entender la lógica.
@manueloropeza54082 жыл бұрын
@@samuelgutierrez5704 x2
@xshadowsystem2 жыл бұрын
ando igual... no entiendo porque hace lo que hace y si lo que me imagino yo que debe hacerse tambien es una opcion valida
@leonardoenriquesanchezrosa69173 жыл бұрын
Excelente curso. Muchas gracias Ernesto!!!
@YoURoCkDrY4 жыл бұрын
Hola, Soy un fiel seguidor de este curso y quiero solicitar apoyo ya sea de Ernesto o de cualquier colega que pudiera apoyarme, la cuestión es que por necesidades laborales debo usar IntelliJ y la GUI que tiene para crear Formularios no se parece en nada la de NetBeans, el código al crear el form es diferente y bueno, descargue la practica esperando que si copiaba el código de "Interfaz" y a poder lograr que se ejecutara sin problema, el punto es que en efecto lo ejecuta exitosamente pero no muestra el formulario y me indica una serie de Warnings! con las excepciones que contiene el try/catch del codigo de Ernesto. Si pudieran orientarme a saber como puedo trabajar con Intellij IDEA se los agradecería mucho ya que de lo contrario solo podría seguir el curso instalando NetBeans. Que tengan un excelente día.
@MARQUITOSGUALACBA6 жыл бұрын
Ya me hice bola
@Carlos-d7u7d3 ай бұрын
Gracias, complicado el tema pero muy buen video !
@TheErickS6 жыл бұрын
Explicas muy bien bro! Estoy empezando a ver tus vídeo para ir aprendiendo a programar ya que pienso estudiar programación y tus videos son geniales! Gracias!
@javiermendoza95794 жыл бұрын
Saludos Ernesto, tengo problemas nuevamente, para entender la lógica del metodo ValidarExpresion(). Se supone y entiendo yo que la pila se conforma con todos los carácteres de apertura así: " { ( { [", ya que el programa no reconoce los números ni los signos (no hay nada programado para eso), y el va preguntando si encuentra el carácter de cierre el extrae el último elemento de la pila y lo compara si corresponde al mismo par {}, []. () el manda a true, si es true el JOptionPane manda que está escrito correctamente de lo contrario no. Lo que no entiendo es la primera y última llave, se supone que cadena.charAt(20) es igual a "}" y si el compara con el último elemento de la pila es "[", debería arrojar error automáticamente desde el comienzo cuando se da click en el botón Validar Expresión. Por favor ayúdame a entender, soy un estudiante de programación que quiere aprender y salir adelante con este oficio de programador, muchas gracias.
@javiermendoza95794 жыл бұрын
Yo del futuro (27 minutos después🤭): Creo saber porqué, no entendía bien la lógica de extraer(), ésta función retorna el último valor de carácter de apertura y con el apuntador siguiente siempre mandaba a la llave de inicio "{" que es el primer elemento de la pila, dejando esa llave siempre como último valor ingresado cada vez que se extraía el último nodo. Al llegar el último carácter de la cadena que es la llave de cierre "}" se finalizaba el programa dejando UltimoValorIngresado.siguiente => null ya que se ha extraído el último elemento y se llegaba al ultimo i = 20, del ciclo for.
@alanrodriguez56164 жыл бұрын
@@javiermendoza9579 pero el ultimo valor ingresado sigue siendo "[" no?
@RamonJPerez862 жыл бұрын
Excelente ejercicio
@alexanderaguero6 жыл бұрын
Con lo enseñado en Pila y Nodo puedo hacer mi lenguaje de programacion??
@fernandotorres_137 Жыл бұрын
Podrías hacer un mini proyecto de analizador sintáctico con más detalles? :(
@andresavila18126 жыл бұрын
explicas muy bien
@LaGeekipediaDeErnesto6 жыл бұрын
¡Muchas gracias!, saludos.
@DavidG0856 жыл бұрын
El último video y este me parece que explicas muy rápido y no quedan la cosas del todo claras, al menos sobre este tema.
@LaGeekipediaDeErnesto6 жыл бұрын
¡Hola!, lamento bastante esta situación, no obstante te invito a consultar alguna de las siguientes alternativas: 1. Si deseas una asesoria personal, puedes solicitarla a través de inbox en la pagina de Facebook del canal: facebook.com/LaGeekipediaDeErnesto/ 2. Puedes consultar la documentanción de Java, donde se explica a detalle para que y como se utiliza cada herramienta que Java pone a nuestra disposición: docs.oracle.com/javase/7/docs/api/ Saludos.
@juanst30575 жыл бұрын
Cierto explico todo rápido, nada que ver con los demás videos... pero bueno
@kevinandreschicasanchez814 жыл бұрын
@@LaGeekipediaDeErnesto Como pongo o lo lista una información de una persona
@gggggerman20084 жыл бұрын
totalmente de acuerdo, parece como mas de mala gana la explicacion
@Zero-yt1og4 жыл бұрын
@@gggggerman2008 No lo creo, solamente ya estamos tocando temas mas complejos, por eso advirtio que tengamos los fundamentos claros para no confundirnos tanto. En mi opinión fue excelente, pero yo ya había visto estructura de datos en otro canal. Si no lo entiendes busca bro, no te quedes solo con lo que Ernesto te enseña, hasta el estaría de acuerdo con ello. Muchas suerte bro, se que vas a poder :D
@agustinsa98294 жыл бұрын
Operaciones de Matrices = Meh, pasa... se puede... LISTAS Y NODOS = Uff... duele
@juanstromsdorfergamarra97084 жыл бұрын
Hola Ernesto. Vengo siguiendo tu curso y avanzando diariamente varias sesiones. Primero que nada reiterarte mis felicitaciones y agradecimiento por tan excelente trabajo y forma de enseñar. Quería salir de una duda, porque recién he podido empezar a descargar el código de las sesiones. A partir de las sesión 38 (Gráficas) veo en la descarga del código dos archivos: uno de tipo java.class y el otro de tipo java Frame. Ambos con método main. ¿Significa esto que son dos formas alternativas de generar la solución? ¿Hay una alternativa que trabaje con el archivo tipo class y dentro de él haga ejecutarse el JFRame? El método main, no siempre va al final del código. De qué depende? Gracias y saludos.
@fernandolondono87523 жыл бұрын
Me funciono correctamente pero quedan muchas cosas x recordar
@nadiefuego6 жыл бұрын
Saludos. Ahora a practicar.
@carlosdeoliveira9854 жыл бұрын
que funcion cumple return character.MAX_VALUE; ????
@sebasmusic8886 жыл бұрын
Muchas gracias Ernesto, a por los 100 k de subs!!! :D
@LaGeekipediaDeErnesto6 жыл бұрын
Al contrario, gracias a ti por continuar atento al contenido del canal y por el apoyo brindado. En verdad ¡Muchas gracias!, y si, estamos próximos a llegar a los 100K. Saludos.
@martineza21936 жыл бұрын
Hola amigo, podrías hacer un video o algo donde hables de java (este del curso) y java web? Ya que ahora debo aprender java web, estoy estudiándolo, y estoy algo confundido. Estoy viendo Spring MVC y hasta ahora no le veo mucha relación con todo lo del código de java XD (hasta ahora solo los controladores). Gracias.
@diegovargasriquelme82806 жыл бұрын
hola, profesor ernesto, muy bien video pero tengo una duda, cuando uno crea un Objeto de tipo "Nodo" ¿es un objeto que hace referencia a la clase "Nodo"? ó ¿es una clase ya integrada en el jdk?, por lo que veo esa referencia a la clase,pero no estoy del todo seguro. jajaj un Saludo profe es el mejor !
@alonsodelgadillo61596 жыл бұрын
Es una clase ya integrada en el JDk
@conkers1826 жыл бұрын
Cuando escribe " Nodo siguiente ; " lo que está haciendo es creando un apuntador en la clase Nodo , es decir si la clase se hubiera llamado Nodoccc hubiese escrito " Nodoccc siguiente; "
@nicotoobebello63865 жыл бұрын
No es una clase ya integrada en el JDK, es un tema que todavía no se dio. Este tema se llama "programación recursiva" en donde una clase o método se llama a si misma. El Nodo "siguiente" es como dice conkers182 un apuntador que apunta al siguiente nodo. El tema de este video se llama "listas enlazadas" por si te cuesta entender puedes ver videos de otros canales que lo explican a fondo.
@katsu71886 жыл бұрын
Entendí perfectamente :D Muchas gracias Ernesto
@facundoguereta92486 жыл бұрын
El mas grande!
@ConradoValencia-g4q14 күн бұрын
yo si entendí hasta que fuí a correr el programa y no me dio porque en el source aparece una cantidad de codigo que el profe ernesto no explico, me expkican por favor?
@YoURoCkDrY4 жыл бұрын
Insisto una vez mas con el post citado anteriormente. Agradeceria mucho su apoyo.
@danielll72894 жыл бұрын
Si no saben hacer las comillas simples: Alt (mantener) + 39 o copien y peguen......... ' '
@MARQUITOSGUALACBA6 жыл бұрын
es necesario el else del minuto 9: 10? porque retorna cualquier valor char, en este caso MAXValue,
@quijote91173 жыл бұрын
Faltó añadir explicación de qué es lo que pasa o cómo funciona el sistema, pero una vez que uno lo hace, puede analizarlo por su cuenta y entender el porqué funciona, les recomiendo simplemente seguir el flujo de su código cuando lo terminen y prueben.
@GianmarcoContreras4 жыл бұрын
cada vez se va poniendo mas dificil
@rodrigoivan26616 жыл бұрын
maestro!!!
@hectorelpro1235 жыл бұрын
Porfin Entendi todo. a patadas pero lo entendi xd
@YoURoCkDrY4 жыл бұрын
Haz un tuto para explicarnos en slowmotion, jajajaja
@shi28663 жыл бұрын
Lo entendí prácticamente todo pero no entiendo porque al hacer el if para botar el mensaje de "está escrito correctamente" solo pone "if(ValidarExpresion())" y por alguna razón el programa le detecta como si hubiera puesto "si el método retrona true"
@Rockoonesong Жыл бұрын
Porque el método es un valor booleano, si el metodo es "True" entonces el programa entiende que no hay ningun error de sintaxis, en caso contrario, entiende que si lo hubo. (Medio tarde te respondieron tu duda XD pero weno)
2 жыл бұрын
Lo transcribí solo por compromiso, porque la verdad quede perdido, gracias por la explicación.
@ROBERTINful5 жыл бұрын
En la creación de la clase Pila, en el método insertar, porque el UltimoValorIngresado tiene que tiene que tener información para poder efectuar una inserción? Y si se va a meter información por primera vez que no se supone que es nodo va a estar vacío, entonces no se puede insertar información porque estaría vacío, si alguien puede explicarme y resolver mi ignorancia se los agradecería mucho porque no entiendo
@linox204 жыл бұрын
alguien secuestro al vedadero ernesto :(
@luisgera224 жыл бұрын
lo que pasa es que para acabar este ejercicio es dificil si se agarra explicando además de que hay cosas muy complejas que creo yo ahora vale la pena solo memorizar, y poco a poco ir viendo cómo se hace comparando con otros ejercicios, el problema es que esperamos que cada video avance con algo nuevo pero en este caso estamos viendo todo lo visto siendo trabajado, cómo interactua y se vuelve mucho más complejo , no es lo mismo ir viendo un carro cómo funciona cada parte que armar un coche pues y no da tiempo
@gggggerman20084 жыл бұрын
@@luisgera22 por eso es mejor hacer por ejemplo una lista tipo pila entre varios videos para que se pueda entender bien, de paso en el camino va explicando muy a la ligera metodos nuevos que no sabiamos como ese de retun character, o el de charAt(), entre otros , de paso parece rapido y furioso explicando
@andrestutoriales78124 жыл бұрын
No entendí mucho pero por si acaso existe una libreria llamada java.util.stack que es nativa de java y funciona muy bien, creo que lo único que entendí fue la parte de valídar la expresión que es la mas importante de lo demas eso de nodo y pila no me queda nada claro
@sergiodanielportillocaball20473 жыл бұрын
en el minuto 8:41, por que si al poner el char informacion = UltimoValorIngresado.informacion; antes del if, no funciona de la misma manera, a mi parecer no deberia haber ninguna diferencia en declarar antes o dentro del if funcionar igual pero al agregar un } mas a la expresion matematica, da error? public char extraer(){ char informacion = UltimoValorIngresado.informacion; if (UltimoValorIngresado != null) { UltimoValorIngresado = UltimoValorIngresado.siguiente; return informacion; } else { return Character.MAX_VALUE; } }
@sergiodanielportillocaball20473 жыл бұрын
ahhh ya entendi, el problema esta que cuando la pila se vacia, osea UltimoValorIngresado == null, al llamar a la funcion extraer, intenta cargar al caracter informacion la informacion del UltimoValorIngresado pero como este tiene valor null por que esta vacio, carga el caracter con informacion null y como esto no es un caracter hace que el programa salte el error NullPointerException. En sintesis para poder declarar una variable tipo char, la informacion que se le carga no debe ser null, y para que no sea null, la pila no debe estar vacia. por lo que si o si debe estar dentro del if(UltimoValorIngresado != null).
@MARQUITOSGUALACBA6 жыл бұрын
Que funcion cumple el return pila.PilaVacia(); del final del programa?
@nicotoobebello63865 жыл бұрын
Es lo mismo que usar "return true" Si entramos en el método PilaVacia() la condición dice que si "UltimoValorAgregado == null" nos devuelve true. Lo que se cumple siempre ya que en las condicionales de arriba de "return pila.PilaVacia()" se coloca un solo valor a la pila y luego se usa SIEMPRE el método "pila.Extraer()". Esto hace que la pila siempre agregue un valor y luego lo quite. Por lo que siempre la pila estará vacía y por eso el método pila.PilaVacia() nos devuelve "true" y por eso es lo mismo poner return true en vez de return pila.PilaVacia().
@AngelGonzalez-yo5gy6 жыл бұрын
Que bien, Data Structure
@GianmarcoContreras4 жыл бұрын
Disculpa amigo Ernesto, pero creo que tu expresión solo esta validado para hacer eses cambio en las llaves, a tu ejercicio le falta validar lo demas. Aca les dejo el mio, me tarde como 3 horas, pero al final lo hize. Psdt: No valida las llaves externas, lo demas si. package clases; public class Nodo { char dato; Nodo siguiente; public Nodo(char dato) { this.dato = dato; siguiente = null; } } package clases; public class ListaTipoPila { Nodo UltimoValorIngresado; public ListaTipoPila() { UltimoValorIngresado = null; } public void Insertar(char dato) { Nodo NuevoNodo = new Nodo(dato); NuevoNodo.dato = dato; NuevoNodo.siguiente = UltimoValorIngresado; UltimoValorIngresado = NuevoNodo; } public char Eliminar() { if (UltimoValorIngresado != null) { char dato = UltimoValorIngresado.dato; UltimoValorIngresado = UltimoValorIngresado.siguiente; return dato; } else { return Character.MAX_VALUE; } } } package clases; import javax.swing.JOptionPane; public class InterfazPrincipal extends javax.swing.JFrame { public InterfazPrincipal() { initComponents(); setLocationRelativeTo(null); txtExpresión.setText("3*(7-6)-{3*7}-[6-3]"); } //Si ValidarExpresión devuelve un true, expresión correcta if (ValidarExpresión()) { JOptionPane.showMessageDialog(null, "La expresión es correcta"); } else { JOptionPane.showMessageDialog(null, "ERROR, La expresión es incorrecta"); } public boolean ValidarExpresión() { ListaTipoPila pila = new ListaTipoPila(); float emparejamientos = 0, inserciónes = 0; String cadena = txtExpresión.getText(); //Insertamos en la lista los caracteres a validar de la expresión for (int i = 0; i < cadena.length(); i++) { if (cadena.charAt(i) == '(' || cadena.charAt(i) == '[' || cadena.charAt(i) == '{' || cadena.charAt(i) == ')' || cadena.charAt(i) == ']' || cadena.charAt(i) == '}') { pila.Insertar(cadena.charAt(i)); inserciónes++; } } /*Cada vez que hay un signo de cierre, lo eliminamos y también el siguiente, y si es el signo de apertura que le corresponde, aumentamos un emparejamiento*/ for (int i = cadena.length() - 1; i >= 0; i--) { if (cadena.charAt(i) == ')') { pila.Eliminar(); if (pila.Eliminar() == '(') { emparejamientos++; } } else if (cadena.charAt(i) == ']') { pila.Eliminar(); if (pila.Eliminar() == '[') { emparejamientos++; } } else if (cadena.charAt(i) == '}') { pila.Eliminar(); if (pila.Eliminar() == '{') { emparejamientos++; } } } return inserciónes / 2 == emparejamientos; //Si inserciones es el doble de emparejamientos, devuelve un true } }
@nahuelito214 жыл бұрын
eso si que la parte de programación a lo ultimo en la clase interfaz no entendí un joraca
@josuedeleon95654 жыл бұрын
tendras algun tutorial de analizador lexico?
@Piczzi5 жыл бұрын
Lo que es el video 33 y éste, no profundizas en explicaciones que tienen un mayor grado de dificultad (a diferencia de cosas más sencillas de vídeos anteriores). Siendo sincero no entendí la mayoría de la explicación que nos diste. Ojalá que sólo sea cosa de estos dos vídeos y los demás sean más entendibles. De cualquier forma muchas gracias Ernesto por compartirnos tu conocimiento. Saludos.
@ericksasonet4 жыл бұрын
igual yo andaba medio perdido y por eso consulte otras fuentes, otros videos sobre pilas y colas, luego de entender muy bien recien me vine a ver nuevamente los videos y ahora si entiendo todo.
@ROBERTINful5 жыл бұрын
con que fin se pone el ultimo método de saber si la pila esta bacía en la clase de la interfaz gráfica, espero y resuelvan mi ignorancia gracias
@enmanuelcastillozambrano28665 жыл бұрын
Creería que es para validar si el rectángulo de texto tiene o no texto para validar. En caso de que no tenga, arrojaría un mensaje tipo "inserte datos" o "Debe escribir datos para validar". PSDT: Estoy viendo el vídeo y aún no lo he terminado, voy en la mitad. Estaba mirando comentarios a ver si encontraba información de otras dudas que me surgieron. Saludos!
@enmanuelcastillozambrano28665 жыл бұрын
Díganme que no soy el único que ajusta EXACTAMENTE el JFrame al tamaño que pone Ernesto sin importar los números. xd
@gomezmarco5 жыл бұрын
déjeme decirle mi estimado que si es el único jajajajaj
@ronpb39434 жыл бұрын
ah bueno la gente echándole la culpa a ernesto porque no entendieron, en vez de eso deberían de esforzarse y practicar mas , sin rendirse, hasta a llegar a dominarlo
@srmanzana77336 жыл бұрын
Buen video Ernesto pero yo y creo que tambien hablo por la gente que nos gustaria que nos enseñes a crear juegos para android o para pc :)
@yisuslopez62403 жыл бұрын
A alguien mas se le hizo densa esta clase?
@nandodo2033 жыл бұрын
Me había confundido en un operador de comparación, gracias al debug pude averiguar cual había sido el error xd
@lautycabrera84372 жыл бұрын
this.setLocationRelativeTo(null); txt_expresion.setText("{3*(7-6)-{3*7}-[6-3]}"); mi programa no anda revise el codigo de arriba a abajo, es como si no me tomara esas lineas de codigo. lo compare con el del profe, borro esas lineas del codigo del profe y bien hace lo mismo que el mio. vuelvo a pegar esas lineas de codigo en el codigo del profe anda perfecto. las pego en mi codigo y sigue sin andar. mi error seria: No reacciona al SetLocationRelativeTo y tampoco al setText no veo el error.
@danielll72894 жыл бұрын
velocidad de video 0.75
@alanrodriguez56164 жыл бұрын
Alguien seria tan amable de explicarme por favor como funciona el método ValidarExpresion( ) , ya que no entiendo como sabe el programa al validar la ultima "}" ya que el ultimo valor ingresado seria "[". Muchas gracias.
@nandodo2033 жыл бұрын
Funciona guardando las caracteres "(, ), [, ],{, }" dentro de una pila, por ejemplo, si tengo la expresión
@nandodo2033 жыл бұрын
si tienes alguna duda de como se comporta el código siempre puedes usar el debugger; es muy útil cuando no sabes que es lo que está pasando, búscate algún tut por youtube de como usarlo en netbeans
@martinsandoval36 жыл бұрын
Adoptame Ernesto!!! 🙂
@LaGeekipediaDeErnesto6 жыл бұрын
Claro! 🙂
@enmanuelcastillozambrano28665 жыл бұрын
#Martin Sandoval x2 xd
@visionhumana65744 жыл бұрын
@@enmanuelcastillozambrano2866 jajja
@ROBERTINful5 жыл бұрын
porque si comento la caja de texto para que entre en blanco desde el principio no funciona correctamente el método de validación, porque me marca que la validación esta correcta aunque la caja este vacía
@LaGeekipediaDeErnesto5 жыл бұрын
¡Hola!, es importante mencionar que los cursos son completamente gratuitos y de acceso publico desde KZbin. Lamentablemente me es imposible brindar asesorías de manera personal debido a la alta demanda de solicitudes que recibo a diario, por tal motivo he colocado un filtro para otorgar asesorías a aquellos que realmente la necesitan. Si deseas una asesoría personal, o bien alguna clase privada, puedes contratar uno de los distintos paquetes que pongo a tu disposición solicitando información a través del correo electrónico: epmgrams@gmail.com, o bien, vía inbox en Facbook: facebook.com/LaGeekipediaDeErnesto, donde con gusto te haré llegar los costos y beneficios de cada uno de estos paquetes. Saludos
@ROBERTINful5 жыл бұрын
@@LaGeekipediaDeErnesto Antes que nada te agradezco por responderme, ya solucione que mis dudas anteriores pero en un futuro tomare uno de tus paquetes, quiero aprender java de manera profesional para dedicarme a trabajar de frilannce mas adelante.
@operacionesecelectronica97654 жыл бұрын
por que crea un valor tipo NODO? , SE PUEDE HACER ESO? IGUA EN EL VIDEO ANTERIOR
@wilmercuevas64914 жыл бұрын
como estas amigo, te explico por si aun no entendiste: Recuerdas cuando creamos un objeto de alguna clase? (lo que se llama crear una instancia) se hace de esta manera: MiClase objeto = new MiClase(); la parte a la izquierda de el signo igual es donde creamos el espacio de memoria donde se va a alojar ese objeto, como cuando creamos un entero : "int entero". Recuerdas que con los enteros podiamos declararlos y luego en otro momento darles un valor? Podiamos hacer: int entero = 34; (le damos el valor en la misma declaracion). o esto: int entero; entero = 454; (le damos el valor despues en otra parte de nuestro programa). Bueno, al igual que con los tipos de datos primitivos podemos hacer lo mismo, en este caso declaramos el objeto de nuestra clase Nodo (la que nosotros hicimos) y no le asignamos ningun valor. En el curso vimos instancias como por ejemplo: Nodo objeto = new Nodo(); pero en este caso no queremos hacer eso, ya que después es que vamos a ir dandole los valores a nuestro objeto, recuerda que vamos a estar constantemente creando nuevos nodos y luego eliminandolos, por lo tanto le damos los valores despues. Es decir, en la clase nodo tenemos el valor informacion y luego tenemos el espacio de tipo nodo que hace referencia al nodo siguiente, pero para cada nodo, el nodo que le sigue va a ser otro, va a ser distinto, entonces eso lo vamos a ir cambiando en nuestra clase lista en el metodo agregar nodo, y en el metodo eliminar nodo, fijate que ahi le damos y cambiamos los valores de el valor siguiente de la clase nodo. Espero haber ayudado.
@wilmercuevas64914 жыл бұрын
Lo mismo pasa con el UltimoValorIngresado, que es de tipo nodo. Como el ultimo valor va a estar variando constantemente no lo podemos inicializar, eso lo vamos cambiando en nuestro programa, le damos el valor después. Es decir, en vez de hacer esto: Nodo UltimoValorIngresado = new Nodo(); estamos haciendo esto: Nodo UltimoValorIngresado; (aca creamos el espacio de memoria); Nodo MiNodo = new Nodo(); (aca creamos el nodo nuevo ) UltimoValorIngresado = MiNodo; (aca metemos nuestro objeto MiNodo dentro del espacio de memoria que habiamos declarado) y lo podemos actualizar despues también y no hay problema: UltimoValorIngresado = OtroNodoQueAcaboDeCrear; Para mas entendimiento recuerda cuando creabamos los objetos de tipo JButton, JLabel, JTextField, recuerda que estamos realmente creando instancias de la clase original de estos objetos. Es decir que existe una clase original llamada JButton y cuando nosotros hacemos nuestras interfaces hacemos instancias o copias de esa clase original, eso son los objetos. primero declarabamos todo: private JButton = boton1, boton2; y luego le dabamos los valores y empezabamos a darle sus propiedades haciendo uso de los metodos que estan dentro de la clase original; boton1 = new JButton(); boton1.setBounds(20,30,150,30); Ok ahora si, creo que ya con la explicacion cualquiera que lo lea lo va a entender, de todos modos recomiendo que investiguen el funcionamiento de los objetos por su cuenta.
@ronpb39434 жыл бұрын
en resumida no es "tipo nodo " solo es el nombre de la clase man
@ronpb39434 жыл бұрын
@@wilmercuevas6491 buena explicacion bro
@marceloperezcolman94093 жыл бұрын
@@wilmercuevas6491 Muy buena tu explicación, después de verlo a mi también me costo entender el porqué hasta que me di cuenta de que lo que estaba haciendo Ernesto era "declarar" el objeto en la clase Nodo y luego le daba "valor" en la clase Pila en el método InsertarNodo(). Muchas gracias!!!
@frandysedilberbaezamaro69244 жыл бұрын
todo venia excelente, pero con estos ejemplos de listas resulto muy complicado, tal vez fuese servido comenzar con unos mas sencillos y gradualmente aumentar la complejidad de los mismos. pero de todos modo gracias.
@jefri19935 жыл бұрын
Hola Ernesto, como saber uno al momento de poner if(ValidarExpresion()) { JOptionPane(null, "La expresion esta escrita correctamente"); como saber que ahi nos devolvera una true si no especifica, y como se escribiria en el caso que digame if(ValidarExpresion()) nos devuelva un false ?? Gracias !!!!
@gomezmarco5 жыл бұрын
Eso ya está prediseñado por Java, por llamarlo de alguna manera, siempre que se ponga un método booleano sólo, es por que esperas un valor "true", si quieres lo contrario debes poner entre los paréntesis del IF lo siguiente if( !ValidarExpresion() ) ...En síntesis si buscas un "false" debes poner adelante del método un "!"
@Jose-ov3vv6 жыл бұрын
Me gustaría que enseñases a crear plugins de Minecraft :)
@antudippolito11833 жыл бұрын
no den dislike gatos
@sergiorechi25345 жыл бұрын
Las listas tipo pila se me están atragantando. Espero que no sean de gran utilidad, porque pese a ver los videos varias veces no consigo pillarlo.
@ericksasonet4 жыл бұрын
Antes de ver estos videos de pilas y colas te aconsejo ver el video de Tutoriales de Programacion Explicada, la parte de pilas y colas, luego te vuelves a ver los videos del profesor Ernesto y entenderas todo facilmente.
@ronpb39434 жыл бұрын
@@ericksasonet oh que buen canal gracias por recomendarlo
@valentinpoggio53894 жыл бұрын
Este curso es muy bueno, pero la verdad que este tema y POO están super mal explicados. POO yo por suerte lo entendí gracias a Programación ATS (Q.E.P.D.) que lo explica mucho mejor. Concretamente en este video, El funcionamiento del método VERIFICAR no se explica, y es la clave del programa. En fin, una lástima, ya buscaré otras vías para entender este tema en profundidad
@anasepulvedadesanchez42353 жыл бұрын
para los que leparece rapido...en cuanto tiempo creen que los clientes esperan sus programa...jajaja no todo el mundo puede ser programador..definitivamente
@rominagiselleviola35173 жыл бұрын
Ernesto muchas gracias por todos tus videos, me costo mucho entender todo el tema de Pila, porque explicas muy rapido y no das ejemplos. Saludos.
@pablobernal33294 жыл бұрын
Me estas fallando Ernesto :c
@joseestebanmedinaparedes77855 жыл бұрын
Nunca hiciste un video de apuntadores.
@hugohernandez1353 жыл бұрын
senti que esta explicacion estuvo muy rapido y a las patadas...no explicas por que la funcionalidad de ValidarExpresion va antes de la ultima llave ni por que los if van sin else o por que se coloca el return depilaVacia en la tercera llave. De verdad que no entendi nada nada baje el codigo para irlo destripando por mi cuenta pero termine peor. Este video si estuvo muy mal pero se agradece
@luismayorga28865 жыл бұрын
Ya vali... :(
@erickkerber13344 жыл бұрын
a mi me marca que la expresion esta mal escrita
@GianmarcoContreras4 жыл бұрын
solo esta validado para esa forma
@abraham33366 жыл бұрын
Despues enseña a programar un juego
@434emm4 жыл бұрын
joder, odio esas pilas
@danielcampos40624 жыл бұрын
Malditas Pilas, no entiendo nada
@brandpcalderon53433 жыл бұрын
Hablas mucho, si se supone que es un curso de Java Intermedio no deberías estar explicando métodos básicos como charAt() o como hacer una pila casera con nodos, sobre todo "Usaremos una estructura condicional, es decir un if else" ¡Que redundante eres!
@GianmarcoContreras4 жыл бұрын
que funcion cumple return character.MAX_VALUE; ????
@nandodo2033 жыл бұрын
creo que en realidad puede haber culquier cosa, con tal que no sea '(' ')' '[' ']' '{' '}'; tiene que retornar algo sí o sí, y como en el método ValidarExpresion solo verifica con esos caracteres entonces no hay problema