Практическая работа №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);}Результат:
12345Общая форма:
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доN; - выведите все чётные числа от
1доN; - выведите все числа от
Nдо1в обратном порядке.
Например, для N = 6:
Числа от 1 до N:123456
Чётные числа:246
Обратный порядок:654321Проверьте программу для N = 1, N = 6 и N = 15.
Если введено число меньше 1, программа должна сообщить о некорректном значении.
Задание 2. Таблица квадратов и кубов
Пользователь вводит положительное целое число N.
Для каждого числа от 1 до N выведите:
- само число;
- его квадрат;
- его куб.
Например, для N = 5:
1 | квадрат: 1 | куб: 12 | квадрат: 4 | куб: 83 | квадрат: 9 | куб: 274 | квадрат: 16 | куб: 645 | квадрат: 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–101–3010–2015–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;Проверьте программу для:
1356Будьте готовы объяснить на защите, почему начальное значение произведения должно быть равно 1, а не 0.
Задание 5. Анализ цифр числа
Пользователь вводит положительное целое число.
Например:
58372Не преобразовывая число в строку, с помощью цикла while определите:
- количество цифр;
- сумму всех цифр;
- максимальную цифру;
- количество чётных цифр.
Для получения последней цифры числа можно использовать:
const digit = number % 10;Для удаления последней цифры:
number = Math.floor(number / 10);Для числа:
58372программа должна вывести:
Количество цифр: 5Сумма цифр: 25Максимальная цифра: 8Чётных цифр: 2Проверьте программу для:
71234558372888810000Учтите особый случай числа 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-кода программа не должна продолжать запрашивать его повторно.
Проверьте:
- правильный PIN с первой попытки;
- правильный PIN со второй попытки;
- правильный PIN с третьей попытки;
- три неправильных PIN-кода.
Задание 8. Проверка пользовательского ввода
Разработайте программу, которая требует от пользователя ввести целое число от 1 до 10.
Используйте do...while.
Например:
Введите целое число от 1 до 10:Если пользователь вводит:
-315или текст вместо числа:
helloпрограмма должна вывести:
Некорректное значение. Попробуйте ещё раз.После корректного ввода:
Принято значение: 7Для проверки неправильного числового преобразования используйте:
Number.isNaN(value)Программа должна продолжать запрашивать значение до тех пор, пока пользователь не введёт корректное число.
Задание 9. Анализ строки
Получите от пользователя произвольную строку:
const text = prompt("Введите строку:");Используя цикл for...of, последовательно обработайте каждый символ.
Необходимо определить:
- общее количество символов;
- количество цифр;
- количество пробелов;
- количество дефисов
-; - количество букв латинского алфавита;
- количество остальных символов.
Для проверки того, является ли символ цифрой, можно использовать условие:
symbol >= "0" && symbol <= "9"Для проверки латинской буквы можно учитывать диапазоны:
A–Za–zНапример, для:
Order-2026 №153программа должна вывести статистику строки:
Всего символов: ...Цифр: ...Пробелов: ...Дефисов: ...Латинских букв: ...Других символов: ...Проверьте программу минимум для следующих строк:
JavaScriptOrder-2026Room 15ID-2026 №153В этом задании не используйте массивы.
Задание 10. Обработка последовательности заказов
Разработайте программу для последовательной обработки стоимости заказов.
Программа должна многократно запрашивать:
const input = prompt( "Введите стоимость заказа.\n0 — завершить ввод.");Ввод прекращается:
- если пользователь ввёл
0; - если пользователь нажал Cancel.
Для организации работы используйте цикл while.
Если введено отрицательное значение или строку невозможно преобразовать в число, программа должна вывести:
Некорректная стоимость. Значение пропущено.После этого текущая итерация должна быть прекращена с помощью continue, а программа должна запросить следующее значение.
Для каждого корректного заказа необходимо определить:
- количество принятых заказов;
- общую сумму заказов;
- среднюю стоимость заказа;
- минимальную стоимость заказа;
- максимальную стоимость заказа;
- количество заказов стоимостью от
5000₽; - общую сумму заказов стоимостью от
5000₽.
Для завершения цикла используйте break.
Например, пользователь последовательно вводит:
12007500abc-300310012000450060000Значения:
abc-300не должны учитываться.
После окончания ввода программа должна вывести итоговую статистику:
Обработка завершена.
Количество заказов: 6Общая сумма: 34300 руб.Средняя стоимость: 5716.67 руб.Минимальный заказ: 1200 руб.Максимальный заказ: 12000 руб.Заказов от 5000 руб.: 3Сумма заказов от 5000 руб.: 25500 руб.Если пользователь завершил ввод, не введя ни одного корректного заказа, программа должна вывести:
Нет данных для расчёта.Будьте готовы объяснить:
- где используется
break; - где используется
continue; - почему необходим счётчик заказов;
- каким образом рассчитывается среднее значение;
- как определяется минимальная и максимальная стоимость.
Контрольные вопросы
Section titled “Контрольные вопросы”- В каких случаях удобно использовать цикл
for? - Чем цикл
whileотличается отfor? - В чём особенность цикла
do...while? - В какой ситуации тело
whileможет не выполниться ни одного раза? - Почему тело
do...whileвыполняется как минимум один раз? - Что такое счётчик и накопитель?
- Почему при вычислении произведения накопитель обычно начинается с
1? - Что происходит при выполнении
break? - Чем
continueотличается отbreak? - Для чего можно использовать
for...ofпри работе со строкой? - Из-за чего может возникнуть бесконечный цикл?
- Как определить последнюю цифру целого числа без преобразования его в строку?
- Почему при вводе чисел через
prompt()необходимо выполнять преобразование типов? - Для чего используется
Number.isNaN()?
При защите работы будьте готовы объяснить отдельный цикл, изменить условие его завершения или добавить дополнительное условие по требованию преподавателя.