- Notifications
You must be signed in to change notification settings - Fork179
Loops: while, for#77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,54 @@ | ||
#Цикли: whileі for | ||
При написанні скриптів часто постає завдання зробити однотипні дії багато разів. | ||
Наприклад, вивести товари зі списку один за одним чи просто запустити один і той же код для кожного числа від 1 до 10. | ||
*Цикл* - це спосіб повторити один і той же код кілька разів. | ||
##Цикл "while" | ||
Цикл `while`має такий синтаксис: | ||
```js | ||
while (умова) { | ||
//код | ||
//так зване "тіло циклу" | ||
} | ||
``` | ||
Доки умова є `вірною`, виконується `код` із тіла циклу. | ||
Наприклад, цикл нижче виводить`i`поки `i < 3`: | ||
```js run | ||
let i = 0; | ||
while (i < 3) { //показується 0,далі 1,потім 2 | ||
alert( i ); | ||
i++; | ||
} | ||
``` | ||
Одне виконання циклу називається *ітерацією*.Цикл в зразку вище робить три ітерації. | ||
Якщо `i++`пропустити в коді вище, то цикл виконувався б (в теорії) вічно. На практикі, браузери надають способи зупинити такі цикли, і на серверному JavaScript(Node.js), ми можемо знищити цей процес | ||
dDenysS marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
Будь-який вираз або змінна може бути умовою циклу, а не тільки порівняння (`a < 5` чи `b !== 10`). Умова виконується і конвертується у логічне значення. | ||
dDenysS marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
Наприклад, коротший спосіб написання`while (i != 0)`відповідає `while (i)`: | ||
```js run | ||
let i = 3; | ||
*!* | ||
while (i) { //коли iбуде 0,умова стане невірною, і цикл зупиниться | ||
*/!* | ||
alert( i ); | ||
i--; | ||
} | ||
``` | ||
````smart header="Curly braces are not required for a single-line body" | ||
Якщо тіло цикла має один операцію, ми можемо опустити фігурні дужки `{…}`: | ||
dDenysS marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
```js run | ||
let i = 3; | ||
@@ -58,19 +58,19 @@ while (i) alert(i--); | ||
``` | ||
```` | ||
##Цикл "do..while" | ||
Перевірка умови може бути переміщена *нижче* тіла циклу використовуючи`do..while`синтаксис: | ||
dDenysS marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
```js | ||
do { | ||
//тіло циклу | ||
} while (умова); | ||
``` | ||
Цикл спочатку виконує тіло, а потім перевіряє умову, і поки умова є `true`, цикл виконується знову і знову. | ||
Наприклад: | ||
```js run | ||
let i = 0; | ||
@@ -80,65 +80,64 @@ do { | ||
} while (i < 3); | ||
``` | ||
Цю форму синтаксису слід використовувати лише тоді, коли ви хочете, щоб тіло циклу виконалось **хоча б один раз**, незалежно від умови. Зазвичай, інша форма є більш бажаною `while(…) {…}` | ||
dDenysS marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
##Цикл "for" | ||
Цикл `for`є більш складним, але також є часто використовуваним циклом. | ||
Виглядає він так: | ||
```js | ||
for (початок; умова; крок) { | ||
// ...тіло циклу ... | ||
} | ||
``` | ||
Давайте дізнаємовь про значення цих трьох частин за зразком. Цикл нижче виконує`alert(i)`для `i`від `0`до `3` (але не включаючи це число`3`) | ||
dDenysS marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
```js run | ||
for (let i = 0; i < 3; i++) { //показується 0,далі 1,потім 2 | ||
alert(i); | ||
} | ||
``` | ||
Давайте розглянемо цикл `for`по частинах: | ||
|Назва частини | | | | ||
|-------|----------|----------------------------------------------------------------------------| | ||
| початок | `i = 0` | Виконується один раз, при вході в цикл. | | ||
| умова | `i < 3`| Перевіряється перед кожною ітерацією циклу. Якщо умова невірна, цикл зупиняєтья. | | ||
| тіло | `alert(i)`| Виконується знову і знову, поки умова є правдивою (`true`). | | ||
| крок| `i++` | Виконується після тіла на кожній ітерації, але перед перевіркою умови. | | ||
Загальний алгоритм циклу працює так: | ||
``` | ||
Початок виконання | ||
→ (ifумова →виконати тіло і виконати крок) | ||
→ (ifумова →виконати тіло і виконати крок) | ||
→ (ifумова →виконати тіло і виконати крок) | ||
→ ... | ||
``` | ||
That is, `begin` executes once, and then it iterates: after each `condition` test, `body` and `step` are executed. | ||
If you are new to loops, it could help to go back to the example and reproduce how it runs step-by-step on a piece of paper. | ||
Ось що відбувається у нашому випадку: | ||
```js | ||
// for (let i = 0; i < 3; i++) alert(i) | ||
//Початок виконання | ||
let i = 0 | ||
// ifумова →виконати тіло і виконати крок | ||
if (i < 3) { alert(i); i++ } | ||
// ifумова →виконати тіло і виконати крок | ||
if (i < 3) { alert(i); i++ } | ||
// ifумова →виконати тіло і виконати крок | ||
if (i < 3) { alert(i); i++ } | ||
// ...кінець, тому що зараз i == 3 | ||
``` | ||
````smart header="Inline variable declaration" | ||