Contenido del curso
Primeros Pasos
- 5

¡Hola Mundo!
06:13 min - 6

Anatomía de una variable
09:23 min - 7

Tipos de datos: Mutabilidad e inmutabilidad
10:55 min - 8

Paso por valor
11:06 min - 9

Paso por referencia
07:00 min - 10

Creación de strings
11:33 min - 11

Concatenación de strings
08:31 min - 12

Manipulación de strings
12:13 min - 13

Tipo de dato primitivo: number
09:30 min - 14

Conversión a Booleanos
05:08 min - 15

Tipos de datos primitivos: null, undefined, symbol y bigint
07:28 min - 16

Conversión de tipos: Type Casting y Coercion
04:38 min - 17

Conversión de tipos explícita e implícita
12:20 min - 18

Proyecto: Crea un perfil para redes sociales con JavaScript
07:23 min
Funciones y This
- 19

Anatomía de una función
11:39 min - 20

Preguntas a Desarrolladores Senior: ¿Por qué aprender Desarrollo Web?
02:11 min - 21

Funciones vs Métodos
10:01 min - 22

Funciones puras e impuras
11:22 min - 23

Identificador this
11:38 min - 24

Métodos bind, call y apply
10:09 min - 25

Funciones flecha y enlace léxico
10:31 min - 26

Implicaciones de duplicar código
03:19 min - 27

Funciones constructoras
10:41 min - 28

10 Tipos de funciones
01:39 min - 29

Objeto window y modo estricto
07:37 min - 30

Tipos de binding
01:11 min - 31

Expresiones vs Sentencias
04:02 min - 32

Proyecto: Crea biografías de personajes con JavaScript
12:51 min
Lógica y ciclos
- 33

Operadores de comparación
06:12 min - 34

Operadores lógicos
04:33 min - 35

Ejecución condicional: if
07:45 min - 36

Proyecto: Adivina el número
09:36 min - 37

Ejecución condicional: ternario
05:24 min - 38

Ejecución condicional: switch
12:08 min - 39

Loop: for
07:31 min - 40

Loop: forEach
03:57 min - 41

Loop: for of
04:26 min - 42

Loop: for in
07:38 min - 43

Loop: while
03:56 min - 44

Loop: do while
03:13 min - 45

Proyecto: Juego adivina la palabra
15:56 min
Fundamentos de arrays y modificación
- 46

Introducción a Arrays
09:09 min - 47

Mutabilidad e inmutabiliad de Arrays
07:56 min - 48

Modificación básica del final con push(), pop()
04:33 min - 49

Ejercicio: Stack de libros
Viendo ahora - 50

Modificación del principio con shift(), unshift()
10:21 min - 51

Modificación avanzada con splice(), reverse(), sort(), fill()
16:37 min - 52

Proyecto: Juego de cartas
15:37 min - 53

Preguntas a Desarrolladores Senior: Estrategias y métodos de estudio
01:10 min
Iteración de Arrays
- 54

Iteración con map() y forEach()
12:53 min - 55

Filtrado y reducción con filter() y reduce()
11:34 min - 56

Ejercicio: Calificación promedio aprobatoria
05:27 min - 57

Búsqueda de elementos con find() y findIndex()
03:52 min - 58

Ejercicio: Encuentra al ganador de una rifa
11:21 min - 59

Proyecto: Análisis de transacciones
10:55 min - 60

Proyecto: Análisis de transacciones parte 2
08:01 min
Métodos específicos y Operaciones
- 61

Unir y entrelazar con concat(), spread operator y join()
12:05 min - 62

Verificación y evaluación con every() y some()
05:15 min - 63

Métodos de búsqueda con includes(), indexOf() y lastIndexOf()
07:05 min - 64

Ejercicio: Encontrando los índices
11:09 min - 65

Crear copias con slice()
05:28 min - 66

Spread operator: casos de uso
07:11 min
Arrays multidimencionales
Clases y Objetos
- 71

Anatomia de un Objeto
06:48 min - 72

Trabajando con objetos
12:52 min - 73

Función constructora
14:31 min - 74

¿Qué es una clase?
06:17 min - 75

Prototipos y herencias
02:15 min - 76

Herencia en la práctica
15:38 min - 77

Prototipos en la práctica
10:42 min - 78

this en JavaScript
05:36 min - 79

Proyecto: Crea una red social
12:25 min - 80

Proyecto: Crea una red social parte 2
09:00 min
Ejercicio: Stack de libros
Resumen
¿Cómo simular un stack para gestionar una colección de libros?
La programación es una habilidad fascinante que nos permite estructurar datos y procesos de manera eficiente. Un concepto común es el manejo de un stack (o pila), el cual es un tipo de estructura de datos que sigue una secuencia LIFO (Last In, First Out). En este ejercicio, aprenderemos a simular un stack para gestionar una colección de libros utilizando los métodos push y pop. También exploraremos cómo los usuarios pueden interactuar con esta estructura para agregar, eliminar y visualizar libros.
¿Cómo crear un stack básico?
Para comenzar, necesitamos establecer un stack donde alojaremos nuestros libros. Podemos pensar en nuestro stack como un carrito de libros, el cual, inicialmente, estará vacío:
let bookCart = [];
¿Qué acciones pueden realizar los usuarios?
Son tres las acciones principales que los usuarios pueden realizar sobre nuestro stack de libros:
- Agregar un libro
- Remover un libro
- Ver el stack actual
Para facilitar el manejo de estas acciones y minimizar errores, definimos constantes que las representen:
const ADD_TO_CART = 'Add to Cart'; const REMOVE_FROM_CART = 'Remove from Cart'; const VIEW_CART = 'View Cart';
¿Cómo implementar la lógica del stack en un loop?
Implementaremos la lógica del stack dentro de un loop utilizando un switch que recibe la acción deseada. Este es un enfoque efectivo para definir qué acción ejecutar en función de la entrada del usuario:
function performCartActions(action, newBook) { switch(action) { case ADD_TO_CART: bookCart.push(newBook); break; case REMOVE_FROM_CART: if (bookCart.length > 0) { let removedBook = bookCart.pop(); console.log(`Removed "${removedBook}" from the cart.`); } else { console.log("The cart is empty. No books to remove."); } break; case VIEW_CART: console.log("Current cart of books:", bookCart); break; default: console.log("Invalid action. Please choose a valid option."); } }
¿Cómo probar nuestro stack con diferentes casos?
Para probar nuestro programa, podemos simular diferentes casos de uso, como agregar libros al carrito, remover y ver qué libros tenemos en el stack:
// Agregar un libro performCartActions(ADD_TO_CART, 'Think Like a Monk'); // Visualizar el carrito performCartActions(VIEW_CART); // Agregar otro libro performCartActions(ADD_TO_CART, 'Ego is the Enemy'); // Visualizar el carrito de nuevo performCartActions(VIEW_CART); // Remover un libro performCartActions(REMOVE_FROM_CART); // Visualizar el carrito nuevamente performCartActions(VIEW_CART);
¿Cómo asegurar la robustez del código?
Es importante prever situaciones como intentar eliminar un libro cuando el stack está vacío. Por eso, incluimos una validación para verificar si hay libros antes de intentar removerlos. Este tipo de validaciones son esenciales para construir programas robustos y libres de errores.
Además, la inicialización de acciones mediante constantes proporciona una capa adicional de seguridad y claridad. Las constantes aseguran que el programa utilice valores estables y ayudan a evitar errores tipográficos que podrían surgir al utilizar directamente los nombres de las acciones.
Reflexiones finales
El manejo de stacks es fundamental para comprender cómo funcionan las estructuras de datos en programación. Al dedicar tiempo a prácticas como estas, fortalecemos nuestra capacidad para resolver problemas y mejorar nuestra lógica de programación. ¡Sigue explorando y experimentando con nuevos conceptos para fortalecer tus habilidades!