Skip to content

Commit 617f0c4

Browse files
authored
múltiples correcciones
1 parent ad4d41d commit 617f0c4

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

1-js/02-first-steps/12-while-for/article.md

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Usualmente necesitamos repetir acciones.
44

5-
Por ejemplo, imprimir bienes de una lista uno tras otro o simplemente ejecutar el mismo código para cada número del 1 al 10.
5+
Por ejemplo, mostrar los elementos de una lista uno tras otro o simplemente ejecutar el mismo código para cada número del 1 al 10.
66

77
Los *Bucles* son una forma de repetir el mismo código varias veces.
88

@@ -17,38 +17,38 @@ while (condition) {
1717
}
1818
```
1919

20-
Mientras que `condition` (condición) sea `true`, el `código` del cuerpo del bucle sera ejecutado.
20+
Mientras que la `condition` (condición) sea `true`, el `código` del cuerpo del bucle será ejecutado.
2121

2222
Por ejemplo, el bucle debajo imprime `i` mientras que `i < 3`:
2323

2424
```js run
2525
let i = 0;
26-
while (i < 3) { // muestra 0, entonces 1, entonces 2
26+
while (i < 3) { // muestra 0, luego 1, luego 2
2727
alert( i );
2828
i++;
2929
}
3030
```
3131

32-
Una sola ejecución del cuerpo del bucle es llamada *una iteración*. El bucle en ejemplo de arriba realiza 3 iteraciones.
32+
Una sola ejecución del cuerpo del bucle es llamada *una iteración*. El bucle en el ejemplo de arriba realiza 3 iteraciones.
3333

34-
Si `i++` no estuviera en el ejemplo de arriba, el bucle sera repetido (en teoría) eternamente. En la practica, el navegador proporciona maneras de detener dichos bucles, y en el JavaScript del lado del servidor, podemos eliminar el proceso.
34+
Si `i++` no estuviera en el ejemplo de arriba, el bucle sería repetido (en teoría) eternamente. En la practica, el navegador proporciona maneras de detener dichos bucles, y en el JavaScript del lado del servidor, podemos eliminar el proceso.
3535

36-
Cualquier expresión o variable puede ser una condición del bucle, no solo comparaciones: la condición sera evaluada y transformada a un booleano por `while`.
36+
Cualquier expresión o variable puede ser una condición del bucle, no solo comparaciones: la condición será evaluada y transformada a un booleano por `while`.
3737

3838
Por ejemplo, una manera más corta de escribir `while (i != 0)` es `while (i)`:
3939

4040
```js run
4141
let i = 3;
4242
*!*
43-
while (i) { // cuando i sea 0, la condición sera un valor falso, y el bucle se detendrá
43+
while (i) { // cuando i sea 0, la condición será un valor falso, y el bucle se detendrá
4444
*/!*
4545
alert( i );
4646
i--;
4747
}
4848
```
4949

50-
````smart header="Las llaves no son requeridas por un cuerpo de una sola línea"
51-
Si el cuerpo del bucle no tiene una sola declaración, podemos omitir las llaves `{…}`:
50+
````smart header="Las llaves no son requeridas para un cuerpo de una sola línea"
51+
Si el cuerpo del bucle tiene una sola sentencia, podemos omitir las llaves `{…}`:
5252
5353
```js run
5454
let i = 3;
@@ -68,7 +68,7 @@ do {
6868
} while (condition);
6969
```
7070

71-
El bucle primero ejecuta el cuerpo, luego comprueba la condición, y, mientras sea un valor verdadero, la ejecutara una y otra vez.
71+
El bucle primero ejecuta el cuerpo, luego comprueba la condición, y, mientras sea un valor verdadero, la ejecuta una y otra vez.
7272

7373
Por ejemplo:
7474

@@ -80,11 +80,11 @@ do {
8080
} while (i < 3);
8181
```
8282

83-
Esta forma de sintaxis solo debería ser usado cuando quieres que el cuerpo del bucle sea ejecutado **al menos una vez** sin importar que la condición sea un valor verdadero. Usualmente, la otra forma es preferida: `while(…) {…}`.
83+
Esta sintaxis solo debería ser usada cuando quieres que el cuerpo del bucle sea ejecutado **al menos una vez** sin importar que la condición sea verdadera. Usualmente, se prefiere la otra forma: `while(…) {…}`.
8484

8585
## El bucle "for"
8686

87-
El bucle `for` es el bucle comúnmente más usado.
87+
El bucle `for` es el bucle más comúnmente usado.
8888

8989
Se ve así:
9090

@@ -94,10 +94,10 @@ for (begin; condition; step) {
9494
}
9595
```
9696

97-
Aprendamos el significado de cada parte, por ejemplo. El bucle debajo corre `alert(i)` para `i` del `0` hasta (pero no incluyendo) `3`:
97+
Aprendamos el significado de cada parte con un ejemplo. El bucle debajo corre `alert(i)` para `i` desde `0` hasta (pero no incluyendo) `3`:
9898

9999
```js run
100-
for (let i = 0; i < 3; i++) { // muestra 0, entonces 1, entonces 2
100+
for (let i = 0; i < 3; i++) { // muestra 0, luego 1, luego 2
101101
alert(i);
102102
}
103103
```
@@ -106,10 +106,10 @@ Vamos a examinar la declaración `for` parte por parte:
106106

107107
| parte | | |
108108
|-------|----------|----------------------------------------------------------------------------|
109-
| comenzar | `i = 0` | Se ejecuta una vez comenzando el bucle. |
109+
| comienzo | `i = 0` | Se ejecuta una vez al comienzo del bucle. |
110110
| condición | `i < 3`| Comprobada antes de cada iteración del bucle. Si es falsa, el bucle se detiene. |
111111
| paso | `i++` | Se ejecuta después del cuerpo en cada iteración pero antes de la comprobación de la condición. |
112-
| cuerpo | `alert(i)`| Se ejecuta una y otra vez mientras que la condición sea un valor verdadero. |
112+
| cuerpo | `alert(i)`| Se ejecuta una y otra vez mientras que la condición sea verdadera. |
113113

114114
El algoritmo general del bucle funciona de esta forma:
115115
```
@@ -120,9 +120,9 @@ Se ejecuta comenzar
120120
→ ...
121121
```
122122

123-
Si eres nuevo en bucles, te podría ayudar regresar al ejemplo y reproducir como se ejecuta paso por paso en una pedazo de papel.
123+
Si eres nuevo en bucles, te podría ayudar regresar al ejemplo y reproducir cómo se ejecuta paso por paso en una pedazo de papel.
124124

125-
Aquí esta exactamente que sucede en nuestro caso:
125+
Esto es lo que sucede exactamente en nuestro caso:
126126

127127
```js
128128
// for (let i = 0; i < 3; i++) alert(i)
@@ -139,25 +139,25 @@ if (i < 3) { alert(i); i++ }
139139
```
140140

141141
````smart header="Declaración de variable en línea"
142-
Aquí, la variable "counter" `i` es declarado en el bucle. Esto es llamado una declaración de variable "en línea". Dichas variables son visibles solo dentro del bucle.
142+
Aquí, la variable "counter" `i` es declarada en el bucle. Esto es llamado una declaración de variable "en línea". Dichas variables son visibles solo dentro del bucle.
143143
144144
```js run
145145
for (*!*let*/!* i = 0; i < 3; i++) {
146146
alert(i); // 0, 1, 2
147147
}
148-
alert(i); // error, no hay dicha variable
148+
alert(i); // error, no existe dicha variable
149149
```
150150
151151
En vez de definir una variable, podemos usar una que ya exista:
152152
153153
```js run
154154
let i = 0;
155155
156-
for (i = 0; i < 3; i++) { // usar variable existente
156+
for (i = 0; i < 3; i++) { // usa una variable existente
157157
alert(i); // 0, 1, 2
158158
}
159159
160-
alert(i); // 3, visible, porque es declarado afuera del bucle
160+
alert(i); // 3, visible, porque fue declarada fuera del bucle
161161
```
162162
163163
````
@@ -172,7 +172,7 @@ Por ejemplo, podemos omitir `comenzar` si no necesitamos realizar nada al comien
172172
Como aquí:
173173

174174
```js run
175-
let i = 0; // Ya tenemos i declarado y asignado
175+
let i = 0; // Ya tenemos i declarada y asignada
176176

177177
for (; i < 3; i++) { // no hay necesidad de "comenzar"
178178
alert( i ); // 0, 1, 2
@@ -199,11 +199,11 @@ for (;;) {
199199
}
200200
```
201201

202-
Por favor nota que los dos punto y comas `;` deben estar presente. De otra manera, habría un error de sintaxis.
202+
Por favor, nota que los dos punto y coma `;` del `for` deben estar presentes. De otra manera, habría un error de sintaxis.
203203

204204
## Rompiendo el bucle
205205

206-
Normalmente, se sale de un bucle cuando la condición es un valor falso.
206+
Normalmente, se sale de un bucle cuando la condición es falsa.
207207

208208
Pero podemos forzar una salida en cualquier momento usando la directiva especial `break`.
209209

@@ -226,13 +226,13 @@ while (true) {
226226
alert( 'Suma: ' + sum );
227227
```
228228

229-
La directiva `break` es activada en la linea `(*)` si el usuario ingresa una línea vacía o cancela la entrada. Detiene inmediatamente el bucle, pasando el control a la primera linea después de el bucle. `alert`.
229+
La directiva `break` es activada en la línea `(*)` si el usuario ingresa una línea vacía o cancela la entrada. Detiene inmediatamente el bucle, pasando el control a la primera línea después de el bucle. En este caso, `alert`.
230230

231-
La combinación "bucle infinito + `break` según sea necesario" es genial para situaciones cuando la condición del bucle debe ser comprobada no en el inicio o al final de el bucle, sino a la mitad o incluso en varias partes del cuerpo.
231+
La combinación "bucle infinito + `break` según sea necesario" es ideal en situaciones donde la condición del bucle debe ser comprobada no al inicio o al final de el bucle, sino a la mitad o incluso en varias partes del cuerpo.
232232

233233
## Continuar a la siguiente iteración [#continue]
234234

235-
La directiva `continue` es una "versión más ligera" de `break`. No detiene todo el bucle. En lugar, detiene la iteración actual y forzá el bucle a comenzar una nueva (si la condición lo permite).
235+
La directiva `continue` es una "versión más ligera" de `break`. No detiene todo el bucle. En su lugar, detiene la iteración actual y fuerza al bucle a comenzar una nueva (si la condición lo permite).
236236

237237
Podemos usarlo si hemos terminado con la iteración actual y nos gustaría movernos a la siguiente.
238238

@@ -244,11 +244,11 @@ for (let i = 0; i < 10; i++) {
244244
// si es verdadero, saltar el resto del cuerpo
245245
*!*if (i % 2 == 0) continue;*/!*
246246

247-
alert(i); // 1, entonces 3, 5, 7, 9
247+
alert(i); // 1, luego 3, 5, 7, 9
248248
}
249249
```
250250

251-
Para los valores pares de `i`, la directiva `continue` para de ejecutar el cuerpo y pasa el control a la siguiente iteración de `for` (con el siguiente número). Así que el `alert` solo es llamado para valores impares.
251+
Para los valores pares de `i`, la directiva `continue` deja de ejecutar el cuerpo y pasa el control a la siguiente iteración de `for` (con el siguiente número). Así que el `alert` solo es llamado para valores impares.
252252

253253
````smart header="La directiva `continue` ayuda a disminuir la anidación"
254254
Un bucle que muestra valores impares podría verse así:
@@ -263,13 +263,13 @@ for (let i = 0; i < 10; i++) {
263263
}
264264
```
265265

266-
Desde un punto de vista técnico, esto es idéntico al ejemplo de arriba. Claro, podemos simplemente envolver el code en un bloque `if` en vez de usar `continue`.
266+
Desde un punto de vista técnico, esto es idéntico al ejemplo de arriba. Claro, podemos simplemente envolver el código en un bloque `if` en vez de usar `continue`.
267267

268-
Pero como efecto secundario, esto crearía un nivel mas de anidación (la llamada a `alert` dentro de las llaves). Si el código dentro de `if` es más que solo unas líneas, eso podría reducir la legibilidad en general.
268+
Pero como efecto secundario, esto crearía un nivel más de anidación (la llamada a `alert` dentro de las llaves). Si el código dentro de `if` posee varias líneas, eso podría reducir la legibilidad en general.
269269
````
270270
271271
````warn header="No `break/continue` a la derecha de '?'"
272-
Por favor nota que las construcciones de sintaxis que no son expresiones no pueden user usadas con el operador terniario `?`. En particular, directivas como `break/continue` no son permitidas aquí.
272+
Por favor, nota que las construcciones de sintaxis que no son expresiones no pueden user usadas con el operador terniario `?`. En particular, directivas como `break/continue` no son permitidas aquí.
273273
274274
Por ejemplo, si tomamos este código:
275275
@@ -285,13 +285,13 @@ if (i > 5) {
285285
286286
287287
```js no-beautify
288-
(i > 5) ? alert(i) : *!*continue*/!*; // continue no es permitido aquí
288+
(i > 5) ? alert(i) : *!*continue*/!*; // continue no está permitida aquí
289289
```
290290
291-
...deja de funcionar. Código como este generaran un error de sintaxis:
291+
...deja de funcionar. Código como este generarán un error de sintaxis:
292292
293293
294-
Esta es otra razón por la cual se recomienda no usar el operador de signo de interrogación `?` en vez de `if`.
294+
Esta es otra razón por la cual se recomienda no usar el operador de signo de interrogación `?` en lugar de `if`.
295295
````
296296

297297
## Etiquetas para break/continue
@@ -307,7 +307,7 @@ for (let i = 0; i < 3; i++) {
307307

308308
let input = prompt(`Valor en las coordenadas (${i},${j})`, '');
309309

310-
// ¿Y si quier salir de aquí hacia Listo (debajo)?
310+
// ¿Y si quiero salir de aquí hacia Listo (debajo)?
311311

312312
}
313313
}
@@ -317,7 +317,7 @@ alert('Listo!');
317317

318318
Necesitamos una manera de detener el proceso si el usuario cancela la entrada.
319319

320-
El `break` ordinario después de `input` solo nos sacaría de el bucle interno. Eso no es suficiente--etiquetas, vienen al rescate!
320+
El `break` ordinario después de `input` solo nos sacaría del bucle interno. Eso no es suficiente--etiquetas, vengan al rescate!
321321

322322
Una *etiqueta* es un identificar con dos puntos antes de un bucle:
323323
```js
@@ -335,7 +335,7 @@ La declaración `break <labelName>` en el bucle debajo nos saca hacia la etiquet
335335

336336
let input = prompt(`Value at coords (${i},${j})`, '');
337337

338-
// Si es una cadena de texto vacía o es cancelada, entonces salir de ambos bucles
338+
// Si es una cadena de texto vacía o se canceló, entonces salir de ambos bucles
339339
if (!input) *!*break outer*/!*; // (*)
340340

341341
// hacer algo con el valor...
@@ -344,23 +344,23 @@ La declaración `break <labelName>` en el bucle debajo nos saca hacia la etiquet
344344
alert('Listo!');
345345
```
346346

347-
En el codigo de arriba, `break outer` mira hacia arriba por la etiquieta llamada `outer` y nos saca de dicho bucle.
347+
En el código de arriba, `break outer` mira hacia arriba por la etiquieta llamada `outer` y nos saca de dicho bucle.
348348

349-
Asi que el control va directamente de `(*)` a `alert('Listo!')`.
349+
Así que el control va directamente de `(*)` a `alert('Listo!')`.
350350

351-
Tambien podemos mover la etiqueta a una línea separada:
351+
También podemos mover la etiqueta a una línea separada:
352352

353353
```js no-beautify
354354
outer:
355355
for (let i = 0; i < 3; i++) { ... }
356356
```
357357

358-
La directiva `continue` también puede usar usada con una etiqueta. En este caso, la ejecución de el código salta a la siguiente iteración de el bucle etiquetado.
358+
La directiva `continue` también puede usar usada con una etiqueta. En este caso, la ejecución del código salta a la siguiente iteración del bucle etiquetado.
359359

360360
````warn header="Las etiquetas no son \"goto\""
361361
Las etiquetas no nos permiten saltar a un lugar arbitrario en el código.
362362
363-
Por ejemplo, es imposible de hacer esto:
363+
Por ejemplo, es imposible hacer esto:
364364
```js
365365
break label; // saltar a label? No.
366366
@@ -382,4 +382,4 @@ Para crear un bucle "infinito", usualmente se usa `while(true)`. Un bucle como e
382382

383383
Si no queremos hacer nada con la iteración actual y queremos adelantarnos a la siguiente, podemos usar la directiva `continue`.
384384

385-
`break/continue` soportan etiquetas antes del bucle. Una etiqueta es la única forma de usar `break/continue` para escapar de un bucle anidado para ir a uno exterior.
385+
`break/continue` soportan etiquetas antes del bucle. Una etiqueta es la única forma de usar `break/continue` para escapar de un bucle anidado para ir a uno exterior.

0 commit comments

Comments
 (0)