Статистика использования. Отключена, пока вы её не разрешите.
Реклама и измерение рекламы. Отключены, пока вы их не разрешите.
О САЙТЕ
Все открытые вкладки сайта
JavaScript · Синтаксис · Начальный уровень
Цикл while
14 задач
Упражнения по циклу while в JavaScript: повторение действий, счётчики, суммы чисел, ввод до нужного условия, break, перебор строк и базовая обработка символов.
Краткое введение в тему и пояснения перед упражнениями (упражнения ниже):
Цикл while продолжает выполнять тело, пока условие остаётся true. В отличие от for, который обходит элементы последовательности, while продолжается, пока что-то не сделает условие false.
```javascript
let i = 1;
while (i <= 10) {
console.log(i);
i++;
}
```
i++ — стандартный инкремент, добавляет 1 к i. Вы также увидите i += 1 — означает то же самое. В JavaScript обе формы одинаково распространены.
JavaScript проверяет условие перед каждой итерацией, включая первую. Если условие false с самого начала — тело не выполнится ни разу.
Самая распространённая ошибка: забыть обновить переменную, от которой зависит условие. Если i никогда не меняется — цикл выполняется вечно. Всегда убеждайтесь, что что-то внутри приближает вас к условию выхода.
break выходит из цикла немедленно. Полезен, когда точка выхода находится в середине тела:
```javascript
while (true) {
const password = prompt("Введите пароль: ");
if (password === "secret") {
break;
}
console.log("Неверно, попробуйте ещё раз");
}
```
while (true) — намеренный бесконечный цикл, полностью полагающийся на break. Стандартный паттерн для "продолжать спрашивать, пока не получим корректный ввод".
Счётчики, накопители и паттерн «сторожевого значения»
Три паттерна встречаются почти во всех задачах с while.
Счётчик: начинаем с некоторого значения, увеличиваем или уменьшаем каждую итерацию, останавливаемся на границе.
```javascript
let i = 1;
while (i <= 10) {
console.log(i);
i++;
}
```
Накопитель: начинаем сумму с нуля, добавляем каждое значение внутри цикла.
```javascript
let i = 1;
let total = 0;
while (i <= 100) {
total += i;
i++;
}
console.log(total);
```
Сторожевое значение: продолжаем читать ввод, пока пользователь не введёт сигнал остановки (например, 0). В этих задачах условие остановки обычно передаётся напрямую как часть задачи.
```javascript
let total = 0;
let num = parseInt(prompt("Введите число (0 для остановки): "));
while (num !== 0) {
total += num;
num = parseInt(prompt("Введите число (0 для остановки): "));
}
console.log(total);
```
Эти три паттерна комбинируются. Таблица умножения использует счётчик. Подсчёт цифр использует счётчик и Math.floor(n / 10) для отрезания цифр по одной (аналог целочисленного деления в Python).
Цикл while хорошо подходит для обхода строк по индексу, когда нужно больше контроля, чем даёт for...of — движение в обратном направлении, построение результата символ за символом.
Вывод строки в обратном порядке:
```javascript
const word = "JavaScript";
let i = word.length - 1;
while (i >= 0) {
process.stdout.write(word[i]);
i--;
}
```
i начинается с индекса последнего символа и уменьшается до 0. process.stdout.write не добавляет перенос строки после каждого символа (аналог Python's end="").
Построение отфильтрованной строки — оставляем только символы, не входящие в набор:
```javascript
const punctuation = "!@#$%^&./,?|";
const text = "Hello, world!";
let result = "";
let i = 0;
while (i < text.length) {
if (!punctuation.includes(text[i])) {
result += text[i];
}
i++;
}
console.log(result);
```
punctuation.includes(text[i]) проверяет, есть ли символ в строке знаков пунктуации. ! отрицает результат, поэтому в result добавляются только символы без пунктуации.
Выведите на печать (console.log) числа от 1 до 10 с помощью цикла while .
let i = 1;
Решение
let i = 1;
while (i <= 10) {
console.log(i);
i += 1;
}
// или так можно: условие остановки поставить внутри цикла
let i = 1;
while (true) {
if (i > 10) {
break;
}
console.log(i);
i += 1;
}
let i = 10;
while (i >= 1) {
console.log(i);
i -= 1;
}
// или так можно: использовать условие больше нуля
let i = 10;
while (i > 0) {
console.log(i);
i -= 1;
}
Пользователь вводит число.
Выведите только чётные числа от 1 до этого числа.
let n = 5;
let i = 1;
Решение
let n = 5;
let i = 1;
while (i <= n) {
if (i % 2 === 0) {
console.log(i);
}
i += 1;
}
// второй вариант: сразу идти только по чётным числам
let n = 10;
let i = 2;
while (i <= n) {
console.log(i);
i += 2;
}
Найдите сумму всех чисел от 1 до 100 с помощью цикла while .
let i = 1;
let total = 0;
Решение
let i = 1;
let total = 0;
while (i <= 100) {
total += i;
i += 1;
}
console.log("Сумма:", total);
// или так можно через формулу суммы от 1 до n
let total = (100 * 101) / 2;
console.log("Сумма:", total);
Пользователь вводит число.
Выведите таблицу умножения для этого числа от 1 до 10.
let n = 5;
let i = 1;
Решение
let n = 5;
let i = 1;
while (i <= 10) {
console.log(`${n} x ${i} = ${n * i}`);
i += 1;
}
// или так можно: сначала посчитать произведение
let n = 5;
let i = 1;
while (i <= 10) {
let result = n * i;
console.log(`${n} x ${i} = ${result}`);
i += 1;
}
Пользователь вводит числа.
Программа должна считать сумму введённых чисел,
пока пользователь не введёт 0 .
let total = 0;
let num = 5;
Решение
let total = 0;
let num = 5;
while (num !== 0) {
total += num;
// В реальной программе здесь можно получить следующее значение.
// Для примера завершим цикл.
num = 0;
}
console.log("Сумма:", total);
let word = "иладеп";
console.log(word.split('').reverse().join(''));
// или:
word = "иладеп";
let drow = "";
let index = word.length - 1;
while (index > -1) {
drow += word[index];
index -= 1;
}
console.log(drow);
Тут я наверно заигрался и это задание наверно не простое. Но не страшно,
давайте попробуем не спеша пошагово продумать что нужно делать. Условие: Есть строка с любой информацией, например: 'Компания ООО "Рога и Копыта" выиграли тындырындын по закупке чего-то.' Нужно из нее вырезать кусок между какими-то одинаковыми символами. Например в данном
случае чтоб получить название компании, нужно вырезать вежду кавычками. Метод строк split не использовать. Нужно использовать только метод index!! Можете поэкспериментировать и решить задание без цикла и с циклом, как хотите. P.S. Понадобятся срезы, и сделайте запрос текста и запрос символа между повторением
которого вырезать через input. P.P.S См. таблицу методов строк. Метод index возвращает индекс ПЕРВОГО вхождения
символа в строке (второго не возвращает (если не "намутить" что он станет первым в какой-то промежуточной строке") ).
let text = "JavaScript";
let symbol = "a";
Решение
let text = 'Компания ООО "Рога и Копыта" выиграла тендер';
let symbol = '"';
let startIndex = text.indexOf(symbol);
if (startIndex === -1) {
console.log("Символ не найден");
} else {
startIndex += 1;
let newText = "";
while (startIndex < text.length) {
let char = text[startIndex];
if (char === symbol) {
break;
}
newText += char;
startIndex += 1;
}
console.log(newText);
}
Есть перечень знаков пунктуации и спец. символов: punctuation = "!@#$%^&./,?|" И есть строка текста, в котрой они могут присутствовать. Сформируйте новую строку без знаков пунктуации, оставив только текст, пробелы сохранить.
Так нужно вот и всё.
let punctuation = "!@#$%^&./,?|";
let text = "Наверно на этом упражнении закончим. Хватит! Мы хотим отдыхать! #@&#@&!!!";
Решение
let punctuation = "!@#$%^&./,?|";
let text = "Наверно на этом упражнении закончим. Хватит! Мы хотим отдыхать! #@&#@&!!!";
let newText = "";
let idx = 0;
while (idx < text.length) {
let char = text[idx];
if (!punctuation.includes(char)) {
newText += char;
}
idx += 1;
}
console.log(newText);
No split tab
Настройки cookies
Мы используем необходимые cookies для работы сайта. С вашего разрешения мы также можем сохранять настройки сайта и использовать аналитические и рекламные cookies, чтобы понимать использование сайта и поддерживать развитие проекта.
* Вы всегда можете изменить свой выбор в настройках сайта.
Выберите категории cookies
Настройки аналитики
Можно отключить аналитику использования платформы. Также можно отправить в Google Analytics запрос на удаление данных об использовании этого сайта, связанных с этим браузером.
Учебный workspace
Учитесь, читая, запуская код и решая задачи.
Практикуйте программирование с пояснениями тем, упражнениями, инструментами browser IDE, проверкой regex и тренировкой печати кода в одном workspace.
Открывайте инструменты во вкладках.Упражнения, IDE-инструменты и тренажеры остаются доступными как вкладки сайта.
Переключайтесь без потери контекста.Переходите между пояснениями, кодом и утилитами, сохраняя свое место.
Используйте sidebar как карту.Левые панели содержат навигацию, настройки, файлы, libraries и управление инструментами.
PythonJavaScriptSQLite
Одна IDE, три практичных режима
Python в браузере.Запускайте небольшие скрипты, пробуйте библиотеки и тренируйте API-запросы без установки.
JavaScript для быстрых экспериментов.Проверяйте код для браузера и сравнивайте идеи рядом с учебными материалами.
SQLite для практики с данными.Открывайте обозреватель базы данных, изучайте таблицы, пишите запросы и учитесь SQL локально.
ТемаIDE
Работайте рядом в split tabs
Держите инструкции перед глазами.Откройте упражнение или справочную страницу рядом с IDE, вместо постоянных переключений.
Сравнивайте инструменты во время обучения.Размещайте проверки regex, пояснения и эксперименты с кодом рядом, когда это нужно для задачи.
Закройте split, когда закончите.Workspace вернётся к одной сфокусированной вкладке, а открытые вкладки сайта останутся доступны.
Тренажер слепой печати кода
Или просто текста
Тренажер рассчитан на физическую клавиатуру.Откройте этот раздел на ноутбуке или компьютере с широким экраном. На телефоне тренировка слепой печати не будет корректной.
Скорость: 0 зн/мин
0 слов/мин
Лучшая скорость (60с): 0 зн/мин
0 слов/мин
Ошибки: 0
Общее время: 0.0 с
Для активации режима слепого набора не подсматривайте на физическую клавиатуру.