Skip to content

Практическая работа №3

Цель работы: научиться разрабатывать программы на JavaScript с использованием циклов for, while, do...while и for...of, применять счётчики и накопители, а также управлять выполнением циклов с помощью break и continue.

Основные теоретические положения

Section titled “Основные теоретические положения”

1. Цикл for

Цикл for удобно использовать, когда количество повторений известно заранее.

for (let i = 1; i <= 5; i++) {
console.log(i);
}

Результат:

1
2
3
4
5

Общая форма:

for (начальное_значение; условие; изменение) {
// действия
}

Например, обратный отсчёт:

for (let i = 5; i >= 1; i--) {
console.log(i);
}

2. Счётчики и накопители

При обработке последовательностей часто необходимо подсчитывать количество значений или накапливать сумму.

Счётчик:

let count = 0;
for (let i = 1; i <= 10; i++) {
if (i % 2 === 0) {
count++;
}
}
console.log(count);

Накопитель:

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

Начальное значение накопителя зависит от выполняемой операции.

Для суммы обычно используется:

let sum = 0;

Для произведения:

let product = 1;

Если начать произведение с 0, результат всегда будет равен нулю.


3. Цикл while

Цикл while используется, когда заранее неизвестно точное количество повторений.

let value = 1;
while (value <= 5) {
console.log(value);
value++;
}

Условие проверяется до выполнения тела цикла.

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

Важно следить за тем, чтобы условие цикла когда-либо стало ложным. Иначе возникнет бесконечный цикл.

Например:

let i = 1;
while (i <= 10) {
console.log(i);
i++;
}

Если удалить:

i++;

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


4. Цикл do...while

В цикле do...while сначала выполняется тело, а затем проверяется условие.

let value;
do {
value = Number(
prompt("Введите положительное число:")
);
} while (value <= 0);

Поэтому тело такого цикла выполняется как минимум один раз.

do...while удобно использовать для повторного запроса пользовательских данных.


5. Перебор строки с помощью for...of

Цикл for...of позволяет последовательно получать элементы перебираемого значения.

Например, можно перебрать символы строки:

const text = "JavaScript";
for (const symbol of text) {
console.log(symbol);
}

На каждой итерации переменная symbol содержит один символ строки.


6. Оператор break

break немедленно завершает выполнение цикла.

while (true) {
const value = Number(
prompt("Введите число. 0 — выход:")
);
if (value === 0) {
break;
}
console.log(value);
}

7. Оператор continue

continue прекращает выполнение текущей итерации и переходит к следующей.

for (let i = 1; i <= 10; i++) {
if (i % 2 !== 0) {
continue;
}
console.log(i);
}

В результате будут выведены только чётные числа.


8. Получение чисел через prompt()

Функция prompt() возвращает строку.

Поэтому числовые значения необходимо преобразовывать:

const n = Number(
prompt("Введите число:")
);

Некорректный ввод можно проверить с помощью:

Number.isNaN(n)

Например:

if (Number.isNaN(n)) {
alert("Введено не число");
}

Задания для выполнения

Section titled “Задания для выполнения”

Все программы должны выполняться в браузере.

Для получения данных используйте prompt() и confirm(), для вывода результатов — alert() или console.log() в зависимости от условия задания.


Задание 1. Вывод числовых последовательностей

Получите от пользователя положительное целое число N.

const n = Number(
prompt("Введите N:")
);

С помощью циклов for последовательно:

  1. выведите все числа от 1 до N;
  2. выведите все чётные числа от 1 до N;
  3. выведите все числа от N до 1 в обратном порядке.

Например, для N = 6:

Числа от 1 до N:
1
2
3
4
5
6
Чётные числа:
2
4
6
Обратный порядок:
6
5
4
3
2
1

Проверьте программу для N = 1, N = 6 и N = 15.

Если введено число меньше 1, программа должна сообщить о некорректном значении.


Задание 2. Таблица квадратов и кубов

Пользователь вводит положительное целое число N.

Для каждого числа от 1 до N выведите:

  • само число;
  • его квадрат;
  • его куб.

Например, для N = 5:

1 | квадрат: 1 | куб: 1
2 | квадрат: 4 | куб: 8
3 | квадрат: 9 | куб: 27
4 | квадрат: 16 | куб: 64
5 | квадрат: 25 | куб: 125

Одновременно вычислите сумму квадратов всех чисел.

Для приведённого примера:

Сумма квадратов: 55

Используйте один цикл for.

Проверьте программу для N = 1, N = 5 и N = 10.


Задание 3. Статистика числового диапазона

Получите от пользователя начало и конец диапазона:

const start = Number(
prompt("Введите начало диапазона:")
);
const end = Number(
prompt("Введите конец диапазона:")
);

Если start > end, программа должна вывести:

Начало диапазона не может быть больше конца диапазона.

В противном случае за один проход цикла for определите:

  • сумму всех чисел диапазона;
  • количество чётных чисел;
  • количество нечётных чисел;
  • количество чисел, кратных 3;
  • количество чисел, кратных 5;
  • сумму чисел, которые одновременно делятся на 3 и 5.

Пример для диапазона от 1 до 30:

Диапазон: 1–30
Сумма всех чисел: 465
Чётных чисел: 15
Нечётных чисел: 15
Кратных 3: 10
Кратных 5: 6
Сумма чисел, кратных одновременно 3 и 5: 45

Проверьте программу для диапазонов:

1–10
1–30
10–20
15–15

Задание 4. Вычисление произведения чисел

Получите от пользователя положительное целое число N.

Необходимо вычислить произведение:

1 × 2 × 3 × ... × N

Используйте цикл for.

Например, для:

N = 5

результат:

1 × 2 × 3 × 4 × 5 = 120

Для:

N = 6

результат:

1 × 2 × 3 × 4 × 5 × 6 = 720

При вычислении используйте накопитель:

let product = 1;

Проверьте программу для:

1
3
5
6

Будьте готовы объяснить на защите, почему начальное значение произведения должно быть равно 1, а не 0.


Задание 5. Анализ цифр числа

Пользователь вводит положительное целое число.

Например:

58372

Не преобразовывая число в строку, с помощью цикла while определите:

  • количество цифр;
  • сумму всех цифр;
  • максимальную цифру;
  • количество чётных цифр.

Для получения последней цифры числа можно использовать:

const digit = number % 10;

Для удаления последней цифры:

number = Math.floor(number / 10);

Для числа:

58372

программа должна вывести:

Количество цифр: 5
Сумма цифр: 25
Максимальная цифра: 8
Чётных цифр: 2

Проверьте программу для:

7
12345
58372
8888
10000

Учтите особый случай числа 0.


Задание 6. Накопление до финансовой цели

Разработайте программу расчёта срока накопления необходимой суммы.

Получите через prompt():

  • текущую сумму накоплений;
  • размер ежемесячного пополнения;
  • финансовую цель.

Например:

Текущая сумма: 15000
Ежемесячное пополнение: 7000
Цель: 50000

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

Месяц 1: 22000 руб.
Месяц 2: 29000 руб.
Месяц 3: 36000 руб.
Месяц 4: 43000 руб.
Месяц 5: 50000 руб.

После завершения:

Цель достигнута через 5 месяцев.
Итоговая сумма: 50000 руб.

Если текущая сумма уже равна цели или превышает её:

Цель уже достигнута.

Если ежемесячное пополнение равно 0 или является отрицательным числом, дальнейший расчёт выполнять нельзя:

При таком размере пополнения достижение цели невозможно.

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


Задание 7. Проверка PIN-кода

Правильный PIN-код:

const correctPin = "2468";

Пользователю предоставляется не более трёх попыток.

Используйте цикл do...while.

PIN-код получайте через:

prompt("Введите PIN-код:");

После неверного ввода программа должна сообщить:

Неверный PIN-код.
Осталось попыток: 2

При правильном вводе:

Доступ разрешён.

После трёх неправильных попыток:

Количество попыток исчерпано.
Доступ заблокирован.

После правильного ввода PIN-кода программа не должна продолжать запрашивать его повторно.

Проверьте:

  1. правильный PIN с первой попытки;
  2. правильный PIN со второй попытки;
  3. правильный PIN с третьей попытки;
  4. три неправильных PIN-кода.

Задание 8. Проверка пользовательского ввода

Разработайте программу, которая требует от пользователя ввести целое число от 1 до 10.

Используйте do...while.

Например:

Введите целое число от 1 до 10:

Если пользователь вводит:

-3
15

или текст вместо числа:

hello

программа должна вывести:

Некорректное значение. Попробуйте ещё раз.

После корректного ввода:

Принято значение: 7

Для проверки неправильного числового преобразования используйте:

Number.isNaN(value)

Программа должна продолжать запрашивать значение до тех пор, пока пользователь не введёт корректное число.


Задание 9. Анализ строки

Получите от пользователя произвольную строку:

const text = prompt("Введите строку:");

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

Необходимо определить:

  • общее количество символов;
  • количество цифр;
  • количество пробелов;
  • количество дефисов -;
  • количество букв латинского алфавита;
  • количество остальных символов.

Для проверки того, является ли символ цифрой, можно использовать условие:

symbol >= "0" && symbol <= "9"

Для проверки латинской буквы можно учитывать диапазоны:

A–Z
a–z

Например, для:

Order-2026 №153

программа должна вывести статистику строки:

Всего символов: ...
Цифр: ...
Пробелов: ...
Дефисов: ...
Латинских букв: ...
Других символов: ...

Проверьте программу минимум для следующих строк:

JavaScript
Order-2026
Room 15
ID-2026 №153

В этом задании не используйте массивы.


Задание 10. Обработка последовательности заказов

Разработайте программу для последовательной обработки стоимости заказов.

Программа должна многократно запрашивать:

const input = prompt(
"Введите стоимость заказа.\n0 — завершить ввод."
);

Ввод прекращается:

  • если пользователь ввёл 0;
  • если пользователь нажал Cancel.

Для организации работы используйте цикл while.

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

Некорректная стоимость. Значение пропущено.

После этого текущая итерация должна быть прекращена с помощью continue, а программа должна запросить следующее значение.

Для каждого корректного заказа необходимо определить:

  • количество принятых заказов;
  • общую сумму заказов;
  • среднюю стоимость заказа;
  • минимальную стоимость заказа;
  • максимальную стоимость заказа;
  • количество заказов стоимостью от 5000 ₽;
  • общую сумму заказов стоимостью от 5000 ₽.

Для завершения цикла используйте break.

Например, пользователь последовательно вводит:

1200
7500
abc
-300
3100
12000
4500
6000
0

Значения:

abc
-300

не должны учитываться.

После окончания ввода программа должна вывести итоговую статистику:

Обработка завершена.
Количество заказов: 6
Общая сумма: 34300 руб.
Средняя стоимость: 5716.67 руб.
Минимальный заказ: 1200 руб.
Максимальный заказ: 12000 руб.
Заказов от 5000 руб.: 3
Сумма заказов от 5000 руб.: 25500 руб.

Если пользователь завершил ввод, не введя ни одного корректного заказа, программа должна вывести:

Нет данных для расчёта.

Будьте готовы объяснить:

  • где используется break;
  • где используется continue;
  • почему необходим счётчик заказов;
  • каким образом рассчитывается среднее значение;
  • как определяется минимальная и максимальная стоимость.
  1. В каких случаях удобно использовать цикл for?
  2. Чем цикл while отличается от for?
  3. В чём особенность цикла do...while?
  4. В какой ситуации тело while может не выполниться ни одного раза?
  5. Почему тело do...while выполняется как минимум один раз?
  6. Что такое счётчик и накопитель?
  7. Почему при вычислении произведения накопитель обычно начинается с 1?
  8. Что происходит при выполнении break?
  9. Чем continue отличается от break?
  10. Для чего можно использовать for...of при работе со строкой?
  11. Из-за чего может возникнуть бесконечный цикл?
  12. Как определить последнюю цифру целого числа без преобразования его в строку?
  13. Почему при вводе чисел через prompt() необходимо выполнять преобразование типов?
  14. Для чего используется Number.isNaN()?

При защите работы будьте готовы объяснить отдельный цикл, изменить условие его завершения или добавить дополнительное условие по требованию преподавателя.

Рекомендуемая литература

Section titled “Рекомендуемая литература”
  1. MDN Web Docs — for
  2. MDN Web Docs — while
  3. MDN Web Docs — do…while
  4. MDN Web Docs — for…of
  5. MDN Web Docs — break
  6. MDN Web Docs — continue
  7. JavaScript.info — Loops: while and for
  8. MDN Web Docs — Number.isNaN()