Skip to content

Commit 462d9e3

Browse files
authored
Translated article.md
1 parent 7c973da commit 462d9e3

File tree

1 file changed

+50
-50
lines changed

1 file changed

+50
-50
lines changed

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

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ Mes dažnai turime pakartoti veiksmus.
44

55
Pavyzdžiui, įvairių prekių išbraukimas viena paskui kitą iš sąrašo, arba paprasčiausiai to paties kodo paleidimas kiekvienam numeriui nuo 1 iki 10.
66

7-
*Cilkai* (ang. *Loops*) yra būdas pakartoti daug kartų tą patį kodą.
7+
*Ciklai* (ang. *Loops*) yra būdas pakartoti daug kartų tą patį kodą.
88

99
## Ciklas "while"
1010

1111
Ciklas `while` turi sekančią sintaksę:
1212

1313
```js
14-
while (condition) {
14+
while (sąlyga) {
1515
// kodas
1616
// taip vadinamas "ciklo korpusas" (ang. "loop body")
1717
}
@@ -31,9 +31,9 @@ while (i < 3) { // parodo 0, tada 1, tada 2
3131

3232
Vienas ciklo rinkinio įvykdymas vadinamas *iteracija* (ang. *an iteration*). Ciklas pavyzdyje aukščiau padaro tris iteracijas.
3333

34-
Jeigu kodo pavyzdyje viršuje nebūtų `i++`, ciklas (teoriškai) kartotųsi amžinai. Praktiškai, naršyklė suteikia būdų sustabdyti tokį ciklą ir procesas gali būti užbaigtas serverio pusės JavaScript.
34+
Jeigu kodo pavyzdyje viršuje nebūtų `i++`, ciklas (teoriškai) kartotųsi amžinai. Praktikoje naršyklė suteikia būdų sustabdyti tokį ciklą ir procesas gali būti užbaigtas JavaScript serverio pusėje.
3535

36-
Bet kokia išraiška arba kintamasis gali būti ciklo sąlyga, ne tik palyginimas: sąlyga yra įvertinama ir `while` paverčiama į loginį sprendimą.
36+
Bet kokia išraiška arba kintamasis gali būti ciklo sąlyga, ne tik palyginimas: sąlyga yra įvertinama ir `while` ciklo paverčiama į loginį sprendimą.
3737

3838
Pavyzdžiui, trumpesnis būdas parašyti `while (i != 0)` yra `while (i)`:
3939

@@ -84,7 +84,7 @@ Tokia sintaksė turėtų būti naudojama kai norite, kad ciklo korpusas būtų
8484

8585
## Ciklas "for"
8686

87-
Ciklas `for` yra kiek sudėtingesnis, bet jis taip pat yra dažniausiai naudojamas ciklas.
87+
Ciklas `for` yra kiek sudėtingesnis, bet jis tuo pačiu yra dažniausiai naudojamas ciklas.
8888

8989
Jis atrodo taip:
9090

@@ -94,7 +94,7 @@ for (begin; condition; step) { // pradžia; sąlyga; žingsnis
9494
}
9595
```
9696

97-
Išmokime šių dalių reikšmę su pavyzdžiais. Ciklas žemiau paleidžia `alert(i)` dėl `i` nuo `0` iki (bet neįskaitant) `3`:
97+
Išmokime šių dalių reikšmę su pavyzdžiais. Ciklas žemiau paleidžia `alert(i)` kol `i` yra nuo `0` iki (bet neįskaitant) `3`:
9898

9999
```js run
100100
for (let i = 0; i < 3; i++) { // parodo 0, tada 1, tada 2
@@ -121,7 +121,7 @@ Pradedamas vykdymas
121121
→ ...
122122
```
123123

124-
Tai yra, `begin` įvykdomas vieną kartą ir tada jis kartojasi (ang. iterates): po kiekvieno `sąlygos` testo, įvykdomi `korpusas` ir `žingsnis`.
124+
Tai yra, `begin` įvykdomas vieną kartą ir tada jis kartojasi (ang. iterates): po kiekvieno `sąlygos` testo įvykdomi `korpusas` ir `žingsnis`.
125125

126126
Jeigu ciklai jums naujiena, juos geriau suprasti padėtų , jeigu sugrįžtumėte prie pavyzdžio ir žingsnis po žingsnio atkurtumėte kaip jis veikia ant popieriaus lapo.
127127

@@ -141,8 +141,8 @@ if (i < 3) { alert(i); i++ }
141141
// ...pabaiga, nes dabar i == 3
142142
```
143143

144-
````smart header="Įterptojo kintamojo deklaracija"
145-
Čia "skaičiuojantis" (ang. "counter") kintamasis `i` yra deklaruotas tiesiai cikle. Tai vadinama "įterptojo" (ang. "inline") kintamojo deklaracija. Toks kintamasis yra matomas tik ciklo viduje.
144+
````smart header="Vidinio kintamojo deklaracija"
145+
Čia "skaičiuojantis" (ang. "counter") kintamasis `i` yra deklaruotas tiesiai cikle. Tai vadinama "vidinio" (ang. "inline") kintamojo deklaracija. Toks kintamasis yra matomas tik ciklo viduje.
146146
147147
```js run
148148
for (*!*let*/!* i = 0; i < 3; i++) {
@@ -160,7 +160,7 @@ for (i = 0; i < 3; i++) { // naudojamas jau egzituojantis kintamasis
160160
alert(i); // 0, 1, 2
161161
}
162162
163-
alert(i); // 3, matomas, nes deklaruotas už ciklo ribų
163+
alert(i); // 3, matomas, nes buvo deklaruotas už ciklo ribų
164164
```
165165
166166
````
@@ -202,7 +202,7 @@ for (;;) {
202202
}
203203
```
204204

205-
Atkreipkite dėmesį, kad du `for` kabliataškiai `;` myra privalomi. Kitu atveju bus sintaksės klaida.
205+
Atkreipkite dėmesį, kad du `for` kabliataškiai `;` yra privalomi. Kitu atveju bus sintaksės klaida.
206206

207207
## Ciklo nutraukimas
208208

@@ -254,7 +254,7 @@ for (let i = 0; i < 10; i++) {
254254
Lyginėms `i` vertėms, direktyva `continue` nustoja vykdyti korpusą ir perleidžia kontrolę sekančiai `for` iteracijai (su sekančiu skaičiumi). Tad `alert` yra iškviečiamas tik nelyginėms vertėms.
255255

256256
````smart header="Direktyva `continue` sumažina matrioškinį kodą (ang. nesting)"
257-
Ciklas, kuris parodo nelygines vertes gali atrodyti taip:
257+
Ciklas, kuris parodo nelygines vertes gali atrodyti ir taip:
258258

259259
```js
260260
for (let i = 0; i < 10; i++) {
@@ -266,7 +266,7 @@ for (let i = 0; i < 10; i++) {
266266
}
267267
```
268268

269-
Iš techninės perspektyvos tai yra visiškai identiškas kodas pavyzdžiui aukšąiau. Žinoma, mes galime tiesiog apgobti `if` rinkinį vietoje to, kad naudotume `continue`.
269+
Iš techninės perspektyvos tai yra visiškai identiškas kodas aukščiau esančiam pavyzdžiui. Žinoma, mes galime tiesiog apgobti `if` rinkinį vietoje to, kad naudotume `continue`.
270270

271271
Bet to pašalinis efektas yra papildomas matrioškinis lygis (šaukimas `alert` viduje riestinių skliaustų). O jeigu kodas `if` viduje yra ilgesnis nei kelios eilės, tai apsunkina skaitomumą.
272272
````
@@ -288,99 +288,99 @@ if (i > 5) {
288288
289289
290290
```js no-beautify
291-
(i > 5) ? alert(i) : *!*continue*/!*; // continue nėra čią leidžiamas
291+
(i > 5) ? alert(i) : *!*continue*/!*; // continue nėra leidžiamas
292292
```
293293
294-
...jis nustoja veikti: tai yra sintaksinė klaida.
294+
...jis nustoja veikti: tai yra sintaksės klaida.
295295
296296
Tai tik dar viena priežastis nenaudoti klaustuko operatoriaus `?` vietoje`if`.
297297
````
298298

299299
## Etiketės break/continue
300300

301-
Sometimes we need to break out from multiple nested loops at once.
301+
Kartais mums reikia ištrūkti iš daugybinių matrioškinių ciklų tuo pačiu metu.
302302

303-
For example, in the code below we loop over `i` and `j`, prompting for the coordinates `(i, j)` from `(0,0)` to `(2,2)`:
303+
Pavyzdžiui, kode žemiau mes paleidžiame ciklą per `i` ir `j`, klausdami koordinačių `(i, j)` nuo `(0,0)` iki `(2,2)`:
304304

305305
```js run no-beautify
306306
for (let i = 0; i < 3; i++) {
307307

308308
for (let j = 0; j < 3; j++) {
309309

310-
let input = prompt(`Value at coords (${i},${j})`, '');
310+
let input = prompt(`Vertė koordinatėse (${i},${j})`, '');
311311

312-
// what if we want to exit from here to Done (below)?
312+
// kas nutinka jeigu norime išeiti šiuo momentu iki Baigta (žemiau)?
313313
}
314314
}
315315

316-
alert('Done!');
316+
alert('Baigta!');
317317
```
318318

319-
We need a way to stop the process if the user cancels the input.
319+
Mums reikia tokio būdo, kuris sustabdytų procesą, jeigu lankytojas atšaukia įvedimą.
320320

321-
The ordinary `break` after `input` would only break the inner loop. That's not sufficient--labels, come to the rescue!
321+
Įprastinis `break` sekantis po `input` sustabdytų tik vidinį ciklą. To neužtenka--į pagalba ateina etiketės!
322322

323-
A *label* is an identifier with a colon before a loop:
323+
*Etikėtė* tai toks identifikatorius su dvitaškiu prieš ciklą:
324324
```js
325-
labelName: for (...) {
325+
etiketėsPavadinimas: for (...) {
326326
...
327327
}
328328
```
329329

330-
The `break <labelName>` statement in the loop below breaks out to the label:
330+
Teiginys `break <etiketėsPavadinimas>` cikle žemiau nutraukia procesą iki etiketės:
331331

332332
```js run no-beautify
333-
*!*outer:*/!* for (let i = 0; i < 3; i++) {
333+
*!*išorinis:*/!* for (let i = 0; i < 3; i++) {
334334

335335
for (let j = 0; j < 3; j++) {
336336

337-
let input = prompt(`Value at coords (${i},${j})`, '');
337+
let input = prompt(`Vertė koordinatėse (${i},${j})`, '');
338338

339-
// if an empty string or canceled, then break out of both loops
340-
if (!input) *!*break outer*/!*; // (*)
339+
// jeigu eilutė tuščia arba buvo atšaukta, nutraukti procesą iš abiejų ciklų
340+
if (!input) *!*break išorinis*/!*; // (*)
341341

342-
// do something with the value...
342+
// darykite kažką su verte...
343343
}
344344
}
345-
alert('Done!');
345+
alert('Baigta!');
346346
```
347347

348-
In the code above, `break outer` looks upwards for the label named `outer` and breaks out of that loop.
348+
Kodas viršuje `break išorinis` suranda viršuje etiketę su pavadinimu `išorinis` ir nutraukia tą ciklą.
349349

350-
So the control goes straight from `(*)` to `alert('Done!')`.
350+
Tad kontrolė pereina tiesiai nuo `(*)` iki `alert('Baigta!')`.
351351

352-
We can also move the label onto a separate line:
352+
Mes taip pat galime perkelti etiketę į atskirą eilę:
353353

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

359-
The `continue` directive can also be used with a label. In this case, code execution jumps to the next iteration of the labeled loop.
359+
Direktyva `continue` taip pat gali būti naudojama su etiketėmis. Šiuo atveju kodo įvykdymas peršoka prie sekančios ciklo su etikete iteracijos.
360360

361-
````warn header="Labels do not allow to \"jump\" anywhere"
362-
Labels do not allow us to jump into an arbitrary place in the code.
361+
````warn header="Etiketės neleidžia \"peršokti\" bet kur"
362+
Etiketės negali leisti peršokti į bet kurią arbitrišką kodo vietą.
363363
364-
For example, it is impossible to do this:
364+
Pavyzdžiui tai nėra įmanoma:
365365
```js
366-
break label; // doesn't jumps to the label below
366+
break etiketė; // neperšoka į etiketę žemiau
367367
368-
label: for (...)
368+
etiketė: for (...)
369369
```
370370
371-
A call to `break/continue` is only possible from inside a loop and the label must be somewhere above the directive.
371+
Šaukimas `break/continue` įmanoma tik iš ciklo vidaus ir etiketė turi būti kažkur virš direktyvos.
372372
````
373373

374-
## Summary
374+
## Santrauka
375375

376-
We covered 3 types of loops:
376+
Mes aptarėme 3 ciklų tipus:
377377

378-
- `while` -- The condition is checked before each iteration.
379-
- `do..while` -- The condition is checked after each iteration.
380-
- `for (;;)` -- The condition is checked before each iteration, additional settings available.
378+
- `while` -- Sąlyga patikrinima prieš kiekvieną iteraciją.
379+
- `do..while` -- Sąlyga patikrinama po kiekvienos iteracijos.
380+
- `for (;;)` -- Sąlyga patikrinama prieš kiekvieną iteraciją, įmanomi papildomi nustatymai.
381381

382-
To make an "infinite" loop, usually the `while(true)` construct is used. Such a loop, just like any other, can be stopped with the `break` directive.
382+
Kad padarytume "begalinį" ciklą, naudojamas konstruktas `while(true)`. Toks ciklas, kaip ir bet kuris kitas, gali būti sustabdytas naudojant direktyvą `break`.
383383

384-
If we don't want to do anything in the current iteration and would like to forward to the next one, we can use the `continue` directive.
384+
Jeigu nenorime nieko daryti esamoje iteracijoje, bet norime pereiti prie sekančios, galime naudoti `continue` direktyvą.
385385

386-
`break/continue` support labels before the loop. A label is the only way for `break/continue` to escape a nested loop to go to an outer one.
386+
`break/continue` palaiko etiketes prieš ciklą. Etiketė yra vienintelis kelias tam, kad `break/continue` išeitų iš matrioškinio vidinio ciklo į išorinį.

0 commit comments

Comments
 (0)