Цикл While
Часть раздела Основы путешествия по R на Coddy. Урок 39 из 78.
В то время как цикл for перебирает заранее определённую последовательность, цикл while продолжает выполняться, пока условие остаётся TRUE. Это полезно, когда вы заранее не знаете, сколько раз нужно что-либо повторить.
count <- 1
while (count <= 3) {
print(count)
count <- count + 1
}Вывод:
[1] 1
[1] 2
[1] 3Цикл проверяет условие count <= 3 перед каждой итерацией. Когда значение count становится равным 4, условие принимает значение FALSE, и цикл останавливается.
Важно: необходимо обновлять переменную внутри цикла. Без count <- count + 1 условие всегда было бы TRUE, создавая бесконечный цикл, который никогда не заканчивается.
total <- 0
num <- 1
while (num <= 5) {
total <- total + num
num <- num + 1
}
print(total)Вывод:
[1] 15В этом примере складываются числа от 1 до 5, в результате получается 15. Цикл while идеально подходит, когда точка остановки зависит от условия, а не от фиксированной последовательности.
Задание
ЛегкоПрочитайте число n из input. Используйте цикл while, чтобы вычислить и вывести sum всех чисел от 1 до n.
Начните с переменной для отслеживания текущего total и другой переменной в качестве counter. Продолжайте добавлять к total, пока counter меньше или равен n, увеличивая counter на каждой итерации.
После завершения цикла выведите итоговый sum с помощью print().
Например, если input равен 5, результатом должен быть:
[1] 15Это объясняется тем, что 1 + 2 + 3 + 4 + 5 = 15.
Попробуйте сами
# Читать ввод
con <- file("stdin", "r")
n <- as.integer(suppressWarnings(readLines(con, n = 1)))
# Инициализировать переменные
total <- 0
counter <- 1
# TODO: Напишите ваш цикл while ниже, чтобы вычислить сумму от 1 до n
# Вывести результат
print(total)В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы (AND, OR)Логические операторы. Часть 2 (NOT)Повторение: простая логикаВекторизованная логика. Часть 1Векторизованная логика. Часть 27Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Векторы: продвинутый уровень
Срезы и индексация векторовЛогическая индексацияАрифметика и ресайклинг векторовОператор %in%2Переменные и типы данных
Числовой тип данныхЦелочисленный тип данныхСимвольный тип данныхЛогический тип данныхПроверка типов данныхПравила именованияПропущенные значения: NAИтоги — создание переменных5Принятие решений
Оператор ifКонструкция if - elseПовторение: Простой калькуляторВложенные конструкции if - else8Циклы
Цикл ForЦикл WhileBreakNext (Continue)Повторение: ФакториалГенерация последовательностей (seq, :)Вложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыЦелочисленное деление и остаток от деленияОператоры присваиванияПовторение: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод через printКоманда cat для выводаВывод с переменнымиЧтение ввода через readline()Основы преобразования типовПовторение — Калькулятор возрастаПовторение — Истина или ложь9Функции
Объявление функцииАргументы функцииВозвращаемые значенияПовторение — функция SigmaПовторение — функция валидацииЗначения параметров по умолчанию12Итерация по последовательностям
Итерация по элементам вектораИспользование seq_along()Итерация по символам (strsplit)Функции для работы со строкамиПотренируйтесь самостоятельно: Онлайн-компилятор R