Skip to content

Latest commit

 

History

History
131 lines (85 loc) · 9.43 KB

File metadata and controls

131 lines (85 loc) · 9.43 KB

Задание повышенной сложности к лекции «Интернет — большая библиотека»

Циклы. Подробнее

Для работы цикла необходима переменная-счётчик. Она используется для подсчёта количества итераций — витков цикла. Переменную-счётчик принято называть одной буквой i.

При создании нового цикла есть 3 важных компонента:

  • Начало — с какими данными цикл запустится в первый раз; отправная точка.
  • Условие — пока условие возвращает true, цикл продолжает работу. Как только условие возвращает false, цикл прекращает свою работу.
  • Шаг — как меняется переменная-счётчик на каждой итерации. Она может уменьшаться или увеличиваться.

Самый часто встречающийся цикл:

for (let i = 0; i < variable; i++) {
 // тело цикла
}

В примере выше началом является часть let i = 0. Мы объявляем переменную-счётчик и «говорим», что она будет равна 0 на старте.

Условие i < variable указывает, что цикл будет работать, пока i меньше значения, хранящегося в переменной variable.

На каждой итерации цикла переменная-счётчик будет увеличиваться на 1 — i++.

Таким образом, на первом витке i будет равна 0, на втором — 1, на третьем — 2 и так далее.

Подробнее о циклах в справочнике по JavaScript.

Инкремент

Увеличение значения переменной на 1 — одна из самых частых операций в программировании. Чтобы каждый раз не писать i = i + 1 была придумана сокращённая запись i++.

Подробнее про инкремент в справочнике JavaScript.

Заполняем массив

Переменная-счётчик может использоваться не только для работы цикла. Например, она очень удобна при работе с массивами.

Поскольку счётчик начинается с 0, как и отсчёт элементов в массиве, и увеличивается постепенно, как и индексы в массиве, то мы можем перебрать элементы массива один за другим всего в одну строку.

let arr = ["один", "два", "три", "четыре", "пять"];

for (let i = 0; i < arr.length; i++) {
 console.log(arr[i]);
}

Результат:

> "один" 
> "два" 
> "три" 
> "четыре" 
> "пять"

В условии цикла мы указали, что цикл должен работать до тех пор, пока i не сравняется с длиной массива.

Поскольку на каждой итерации i будет увеличиваться на 1, то в голове мы можем представить следующий порядок действий:

  • Итерация 1: i равна 0, строка console.log(arr[i]) преобразуется в console.log(arr[0]);
  • Итерация 2: i равна 1, строка console.log(arr[i]) преобразуется в console.log(arr[1]);
  • Итерация 3: i равна 2, строка console.log(arr[i]) преобразуется в console.log(arr[2]);

И так далее.

Таким образом мы можем не только «прочитать» элементы массива, но и записать значения в массив. На каждой итерации цикла новый элемент будет записываться на свой индекс, отличающийся от предыдущего на 1.

Запись элементов в массив

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

Для записи элементов в массив чаще всего используются два метода.

Запись по индексу

Если мы знаем конкретный индекс, на который нужно записать элемент, то можем просто присвоить значение:

let arr = [];

arr[0] = "номер 1";
arr[1] = "номер 2";

console.log(arr); // <-- ["номер 1", "номер 2"]

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

Но, например, внутри цикла, такая запись может быть очень удобна.

push()

Метод push() помещает новый элемент в конец массива.

let arr = [];

arr.push("первый элемент");
arr.push("второй элемент");

console.log(arr); // <-- ["первый элемент", "второй элемент"]

Этот способ максимально безопасен при работе с большими массивами. Новый элемент точно будет добавлен на новый индекс в конце массива, и никакие данные не будут потеряны.

Подробнее о методе push() в справочнике по JavaScript.


Легенда

Apple опять выпускает новый iPhone. Вы пытаетесь убедить себя, что он вам не нужен, но соблазн очень велик. Вы решаете пойти рациональным путём и написать небольшую программу, которая наглядно покажет, сколько условных дошираков можно купить за цену нового iPhone.

Возможно, так ваш мозг согласится, что это бесполезная и дорогая покупка =)

Задача

  1. Цена нового iPhone 99 990 рублей. Запишите цену в качестве значения одной из констант. Которой из двух решите самостоятельно, ориентируясь на название переменной и код, написанный ниже.
  2. Усреднённая цена лапши быстрого приготовления — 18 рублей. Запишите эту цену в качестве значения второй константы.
  3. Рассчитайте, сколько упаковок лапши можно купить за цену iPhone. Запишите получившийся результат в переменную howMuchNoodles. Помните, что мы можем купить только целые упаковки.
  4. Посчитайте, какая сдача останется. Запишите результат в переменную change.
  5. Напишите управляющую конструкцию так, чтобы строка о сдаче выводилась в консоль только если после покупки остаётся сдача.
  6. Напишите цикл, который будет заполнять массив символами #. Переменная-счётчик на старте равна нулю, увеличивается на каждой итерации на 1 и не должна быть больше, чем количество купленных упаковок.
  7. Внутри цикла напишите операцию присвоения. В левой части будет noodlesArray[i], в правой — символ #.
  8. После цикла выведите в консоль склейку элементов массива noodlesArray.

Склеивать массив мы учились в прошлом задании повышенной сложности.

Ссылка на исходный код

https://repl.it/@netologySD/loopsandif