Цикл 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 из входных данных. Используйте цикл while для вычисления и вывода суммы всех чисел от 1 до n.
Начните с переменной для отслеживания текущей суммы и другой переменной в качестве счетчика. Продолжайте прибавлять к общей сумме, пока ваш счетчик меньше или равен n, увеличивая счетчик на каждой итерации.
После завершения цикла выведите итоговую сумму с помощью print().
Например, если на входе подано 5, результат должен быть:
[1] 15Это связано с тем, что 1 + 2 + 3 + 4 + 5 = 15.
Шпаргалка
Цикл while выполняется до тех пор, пока условие остается TRUE:
count <- 1
while (count <= 3) {
print(count)
count <- count + 1
}Цикл проверяет условие перед каждой итерацией. Когда условие становится FALSE, цикл останавливается.
Важно: Всегда обновляйте переменную внутри цикла, чтобы избежать бесконечных циклов:
total <- 0
num <- 1
while (num <= 5) {
total <- total + num
num <- num + 1
}
print(total) # Вывод: [1] 15Циклы while идеальны в тех случаях, когда точка остановки зависит от условия, а не от фиксированной последовательности.
Попробуйте сами
# Чтение входных данных
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)Функции для работы со строками