Статьи

Изучите информатику с помощью JavaScript: часть 3, циклы

Предположим, вам дали задание написать программу, которая отображает числа 1–100. Один из способов сделать это — написать 100 операторов console.log. Но я уверен, что вы этого не сделаете, потому что вы бы сыт по горло 9-й или 10-й линии.

Единственная часть, которая изменяется в каждом утверждении, это число, поэтому должен быть способ написать только одно утверждение. И есть с петлями. Циклы позволяют нам выполнять множество шагов в блоке кода повторно.

  • Пока петли
  • Циклы Do-while
  • Для петель
  • Массивы
  • Петли
  • Для петель
  • Рассмотрение
  • Ресурсы

Циклы while будут выполнять множество операторов несколько раз, пока выполняется некоторое условие. Когда условие ложно, программа выйдет из цикла. Этот вид цикла проверяет условие перед выполнением итерации. Итерация — это выполнение тела цикла. В следующем примере ничего не отобразится, потому что наше условие ложно.

1
2
3
4
5
let hungry = false;
 
while (hungry) {
    console.log(«eat»);
}

Это общая форма цикла while:

1
2
3
4
5
while (condition) {
    statement;
    statement;
    etc.
}

При использовании циклов while нужно быть осторожным, создавая циклы, которые никогда не заканчиваются. Это происходит потому, что условие никогда не становится ложным. Если это случится с вами, ваша программа потерпит крах. Пример:

1
2
3
4
5
let hungry = true;
 
while (hungry) {
    console.log(«eat»);
}

Сколько раз будет выполнено тело этого цикла:

1
2
3
4
5
6
let i = 0;
 
while (i < 10) {
    console.log(«Hello, World»);
    i += 1;
}

Цикл do-while сначала выполнит тело операторов, а затем проверит условие. Этот вид цикла полезен, когда вы знаете, что хотите запустить код хотя бы один раз. Следующий пример покажет «есть» один раз, даже если условие ложно.

1
2
3
4
5
let hungry = false;
 
do {
    console.log(«eat»);
} while (hungry);

Это общая форма для цикла do while:

1
2
3
4
5
do {
    statement;
    statement;
    etc.
} while (condition);

Напишите цикл выполнения, который будет отображать числа 1–10.

Цикл for будет повторять выполнение блока кода определенное количество раз. В следующем примере отображаются цифры 1–10:

1
2
3
for (let i = 1; i <= 10; i++) {
    console.log(i);
}

Это общая форма цикла for:

1
2
3
4
5
for (initial; condition; step) {
    statement;
    statement;
    etc.
}

Initial — это выражение, которое устанавливает значение нашей переменной. Условие — это выражение, которое должно быть истинным для выполнения операторов. И шаг — это выражение, которое увеличивает значение нашей переменной.

Один из паттернов программирования — использовать цикл for для обновления значения переменной самим собой и нового значения. Этот пример суммирует числа 1–10:

1
2
3
4
5
6
7
let x = 0;
 
for (let i = 1; i <= 10; i++) {
    x += i;
}
 
console.log(x) //55

+= Является оператором присваивания, который добавляет значение обратно в переменную. Это список всех операторов присваивания:

оператор пример эквивалент
+ = х + = 2 х = х + 2
знак равно х — = 2 х = х — 2
знак равно х * = 2 х = х * 2
знак равно х / = 2 х = х / 2
знак равно х% = 2 х = х% 2

Напишите цикл for, который вычисляет факториал числа. Коэффициент числа n является произведением всех целых чисел от 1 до n . Например, 4! (4 факториал) равен 1 x 2 x 3 x 4, что равно 24.

Массив — это объект, который содержит список элементов, называемых элементами, доступ к которым осуществляется по их индексу. Индекс — это позиция элемента в массиве. Первый элемент имеет индекс 0. Ниже приведены некоторые общие операции с массивами.

Создайте пустой массив:

1
let arr = [ ];

Инициализируйте массив со значениями:

1
let arr = [1, 2, «Hello», «World»];

Получить элемент из массива:

1
2
3
let arr = [1, 2, «Hello», «World»];
arr[0] //1
arr[2] //»Hello»

Обновите элемент в массиве:

1
2
let arr = [1, 2, «Hello», «World»];
arr[2] = 3;

Цикл над массивом:

1
2
3
4
5
let arr = [1, 2, «Hello», «World»];
 
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

Двумерный массив — это массив, элементы которого являются массивами. Пример:

1
2
3
4
5
6
let arr = [
    [1, 2],
    [«Hello», «World»]
];
 
console.log(arr[ 0 ][ 1 ]);

Вот как вы можете перебрать массив и отобразить каждый элемент:

1
2
3
4
5
for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
        console.log(arr[ i ][ j ]);
    }
}

Какой элемент отображается при i = 1 и j = 0 в приведенном выше цикле for?

Этот вид цикла позволяет нам проходить через ключи в объекте. Объект — это структура данных, ключи которой сопоставлены со значениями. Вот некоторые общие операции, которые можно выполнить над объектом.

Создайте пустой объект:

1
let obj = { };

Инициализируйте объект со значениями:

1
2
3
4
let obj = {
    foo: «Hello»,
    bar: «World»
};

Получить свойство от объекта:

1
2
3
4
5
6
7
let obj = {
    foo: «Hello»,
    bar: «World»
};
 
obj.foo;
obj[«foo»];

Обновите свойство в объекте:

1
2
3
4
5
6
7
let obj = {
    foo: «Hello»,
    bar: «World»
};
 
obj.foo = «hi»
obj[«foo»] = «hi»

Цикл по клавишам объекта:

1
2
3
for (let key in obj) {
    console.log(key);
}

Что говорит вышеприведенное для отображения цикла obj = {foo: «Hello», bar: «World»}?

Этот вид цикла позволяет нам зацикливать значения итерируемых объектов. Примерами итерируемых объектов являются массивы и строки.

Цикл над массивом:

1
2
3
4
5
6
7
let arr = [«foo», «bar», «baz»];
 
for (let elem of arr) {
    console.log(elem);
}
 
// foo bar baz

Зациклить строку:

1
2
3
4
5
6
7
let str = «Hello»;
 
for (let char of str) {
    console.log(char);
}
 
//’H’ ‘e’ ‘l’ ‘l’ ‘o’

Используя любой из циклов, напишите программу, которая будет отображать этот шаблон лестницы:

1
2
3
4
5
#
 #
   #
     #
       #

Циклы позволяют уменьшить дублирование в нашем коде. Циклы while повторяют действие до тех пор, пока условие не станет ложным. Цикл do-while будет выполнен хотя бы один раз. Для циклов давайте повторим действие, пока не достигнем конца счета. Цикл for-in разработан таким образом, чтобы мы могли получить доступ к ключам в объекте. Цикл for-of разработан таким образом, чтобы мы могли получить значение повторяемого объекта.

Далее в части 4 мы узнаем о функциях.