Skip to content

Commit 246f26b

Browse files
committed
#17 - javascript
1 parent 0031851 commit 246f26b

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/**
2+
* Demostración de diferentes mecanismos de iteración en JavaScript
3+
*
4+
* JavaScript, como lenguaje moderno y versátil, ofrece múltiples formas
5+
* de realizar iteraciones. Cada método tiene sus propias características
6+
* y casos de uso óptimos.
7+
*/
8+
9+
console.log("=== Demostración de Mecanismos de Iteración en JavaScript ===\n");
10+
11+
// 1. Bucle for tradicional
12+
console.log("1. Usando bucle for tradicional:");
13+
/*
14+
* El bucle for es uno de los más básicos y ampliamente utilizados.
15+
* Sintaxis: for (inicialización; condición; incremento)
16+
* Es muy similar a otros lenguajes como Java o C++
17+
*/
18+
for (let i = 1; i <= 10; i++) {
19+
process.stdout.write(i + " ");
20+
}
21+
console.log("\n");
22+
23+
// 2. Bucle while
24+
console.log("2. Usando bucle while:");
25+
/*
26+
* El bucle while ejecuta un bloque de código mientras
27+
* una condición específica sea verdadera.
28+
*/
29+
let contador = 1;
30+
while (contador <= 10) {
31+
process.stdout.write(contador + " ");
32+
contador++;
33+
}
34+
console.log("\n");
35+
36+
// 3. Bucle do...while
37+
console.log("3. Usando bucle do...while:");
38+
/*
39+
* Similar al while, pero garantiza que el código se ejecute
40+
* al menos una vez, ya que la condición se evalúa al final.
41+
*/
42+
let num = 1;
43+
do {
44+
process.stdout.write(num + " ");
45+
num++;
46+
} while (num <= 10);
47+
console.log("\n");
48+
49+
// 4. forEach con array
50+
console.log("4. Usando forEach con array:");
51+
/*
52+
* El método forEach es una forma más funcional de iterar
53+
* sobre elementos de un array.
54+
*/
55+
const numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
56+
numeros.forEach(numero => process.stdout.write(numero + " "));
57+
console.log("\n");
58+
59+
// 5. for...of loop
60+
console.log("5. Usando for...of:");
61+
/*
62+
* Introducido en ES6, for...of proporciona una forma más concisa
63+
* de iterar sobre elementos iterables (arrays, strings, etc.)
64+
*/
65+
for (const numero of numeros) {
66+
process.stdout.write(numero + " ");
67+
}
68+
console.log("\n");
69+
70+
// 6. Array.from con mapeo
71+
console.log("6. Usando Array.from con mapeo:");
72+
/*
73+
* Array.from puede crear un array a partir de un objeto iterable
74+
* y permite mapear valores durante la creación
75+
*/
76+
Array.from({length: 10}, (_, i) => i + 1)
77+
.forEach(num => process.stdout.write(num + " "));
78+
console.log("\n");
79+
80+
// 7. Recursión
81+
console.log("7. Usando recursión:");
82+
/*
83+
* Aunque técnicamente no es un loop, la recursión es otra forma
84+
* de realizar iteraciones mediante una función que se llama a sí misma
85+
*/
86+
function contarHasta10(n = 1) {
87+
process.stdout.write(n + " ");
88+
if (n < 10) contarHasta10(n + 1);
89+
}
90+
contarHasta10();
91+
console.log("\n");
92+
93+
// 8. Map
94+
console.log("8. Usando Map:");
95+
/*
96+
* Similar a forEach, pero crea un nuevo array con los resultados
97+
* de llamar a una función para cada elemento
98+
*/
99+
console.log(Array(10).fill().map((_, index) => index + 1).join(" "));
100+
101+
// 9. Generator function
102+
console.log("9. Usando Generator function:");
103+
/*
104+
* Las funciones generadoras permiten definir un algoritmo iterativo
105+
* escribiendo una función que puede mantener su propio estado
106+
*/
107+
function* generarNumeros() {
108+
for (let i = 1; i <= 10; i++) {
109+
yield i;
110+
}
111+
}
112+
113+
for (const num of generarNumeros()) {
114+
process.stdout.write(num + " ");
115+
}
116+
console.log("\n");
117+
118+
// 10. Reduce
119+
console.log("10. Usando Reduce (aunque no es su uso típico):");
120+
/*
121+
* Reduce normalmente se usa para acumular valores, pero también
122+
* puede usarse para iterar realizando una acción en cada paso
123+
*/
124+
Array(10).fill().reduce((_, __, i) => {
125+
process.stdout.write((i + 1) + " ");
126+
return null;
127+
}, null);
128+
console.log("\n");
129+
130+
console.log("\n=== Fin de la demostración ===");

0 commit comments

Comments
 (0)