в чем разница между while и for
FOR, DURING, WHILE: большая разница
Слова for, during и while очень схожи в переводе на русский язык, что приводит к ошибкам при их употреблении. Сегодня мы раз и навсегда разберемся, в чем же разница между for, during и while и как грамотно их употреблять.
Разница между DURING и FOR
Предлог during используется в ситуациях, когда одно действие произошло во время какого-то другого события. Он так и переводится на русский язык – «в течение, во время». После during мы ставим существительное, которое обозначает какое-то событие, какой-то специфический промежуток времени. Давайте рассмотрим на примерах:
I ate two buckets of popcorn during the movie session.
Я съел два ведерка попкорна за время сеанса кино.
During the winter I always gain a couple of extra pounds.
В течение зимы я всегда набираю пару лишних килограммов.
Предлог for также значит «в течение» чего-либо. Но с помощью него мы делаем акцент на том, как долго длилось действие. После for обычно указывается промежуток времени, который можно измерить (минуты, часы, дни, недели, сезоны, года и т.п.). Сравните с примерами:
My sister has been learning to play drums for three years.
Моя сестра учится играть на барабанах в течение трех лет.
Alice will be in the mountains for a month.
Элис будет в горах в течение месяца.
Главное для предлога for – сколько по времени длилось действие
Разница между during и for заключается в том, что, когда мы используем during, нам важно только то, когда именно произошло событие. Мы говорим, что во время какого-то события случилось еще какое-то действие, и это действие необязательно занимало весь этот период.
Но когда мы используем for, нам важно то, как долго длилось действие. С предлогом for мы имеем в виду, что действие длилось весь указанный промежуток времени. Давайте с помощью схожих примеров разберемся, в чем конкретно выражается разница между ними.
They went to Moscow during the summer.
Они ездили в Москву в течение лета. (Имеется ввиду один раз за все лето.)
They went to Moscow for the summer.
Они ездили в Москву на лето. (Все лето провели в Москве.)
Разница между DURING и WHILE
During является предлогом, а это значит, что после него всегда ставится существительное (или прилагательное + существительное). Например:
During the exam I realized that I forgot to have breakfast.
Во время экзамена я осознал, что забыл позавтракать.
During the trip we met our old friends.
Во время поездки мы встретили старых друзей.
А вот while является союзом, а значит, он соединяет между собой два предложения. Он означает «во время того, как; когда; в то время, как».
I planted tomatoes while my wife was cleaning the house.
Я посадил помидоры во время того, как моя жена убиралась по дому.
She left me a message while I was at the seminar.
Она оставила мне сообщение в то время, как я был на семинаре.
Посмотрите на эти примеры, чтобы увидеть разницу:
My wife called me during the show.
Моя жена позвонила во время спектакля.
My wife called me while the show was on.
Моя жена позвонила мне, когда шел спектакль.
Сравнительная таблица употребления FOR, DURING и WHILE
Наглядно различия этих слов можно увидеть в таблице ниже:
Предлог / союз | Значение и грамматика | Примеры |
FOR | «в течение» (показывает, как долго что-то происходило, употребляется в указанием промежутка времени) | I’ve been playing piano for three years. |
DURING | «в течение, во время» (употребляется в сочетании с существительным; акцент на том, когда что-то случилось) | My bag was lost during the flight. |
WHILE | «пока; в то время, как» (соединяет два предложения) | Mary found 100 euro while she was walking. |
А на моем YouTube-канале есть видео, которое поможет еще лучше понять и закрепить тему:
Как мы выяснили, слова for, during и while действительно схожи в значениях, но если начать разбираться, в чем конкретно выражаются их отличия, то запомнить разницу не так-то и сложно.
Главное в изучении языка – больше практики, и тогда слова и правила будут запоминаться сами собой. Кстати, на моем комплексном курсе английского Will Speak нет скучных лекций. Всю теорию мы сразу отрабатываем на практике, поэтому учить английский в моей школе так легко и интересно. Записаться можно уже сейчас!
Ваша Полина Червова,
основатель школы Will Speak
Цикл for
1. Сравнение циклов: for vs while
Цикл while можно использовать во всех случаях, когда команду или группу команд нужно выполнить несколько раз. Но из всех случаев один случай стоит выделить особо.
Вроде бы все работает как надо, но не очень удобно. Перед циклом мы задаем стартовое значение переменной-счетчика, затем в условии проверяем, не достигла ли она уже финального значения. А вот меняем ее обычно в самом конце тела цикла.
Если у цикла while в круглых скобках было только условие, тут еще добавились две команды, разделенные точкой с запятой.
Все на самом деле проще, чем кажется: компилятор превращает цикл for в обычный цикл while таким образом:
Или лучше продемонстрируем на примере: два примера ниже идентичны.
Вариант 1 | Вариант 2 |
---|
команда1 в цикле for выполняется только один раз перед самим циклом (это видно на втором примере)
команда2 выполняется столько же раз, сколько и тело цикла, но будет выполняться каждый раз уже после того, как выполнится все тело цикла
2. Где используется цикл for
Цикл while | Цикл for |
---|
Обратите внимание на последний пример. Там пропущены команды работы со счетчиком цикла. Нет счетчика — нет команд.
Java разрешает не писать в цикле for «команду по инициализации счетчика» и «команду по изменению счетчика». И даже выражение-условие цикла можно не писать.
Циклы while и for
При написании скриптов зачастую встаёт задача сделать однотипное действие много раз.
Например, вывести товары из списка один за другим. Или просто перебрать все числа от 1 до 10 и для каждого выполнить одинаковый код.
Для многократного повторения одного участка кода предусмотрены циклы.
Цикл «while»
Цикл while имеет следующий синтаксис:
Код из тела цикла выполняется, пока условие condition истинно.
Одно выполнение тела цикла по-научному называется итерация. Цикл в примере выше совершает три итерации.
Если бы строка i++ отсутствовала в примере выше, то цикл бы повторялся (в теории) вечно. На практике, конечно, браузер не позволит такому случиться, он предоставит пользователю возможность остановить «подвисший» скрипт, а JavaScript на стороне сервера придётся «убить» процесс.
Любое выражение или переменная может быть условием цикла, а не только сравнение: условие while вычисляется и преобразуется в логическое значение.
Если тело цикла состоит лишь из одной инструкции, мы можем опустить фигурные скобки <…>:
Цикл «do…while»
Проверку условия можно разместить под телом цикла, используя специальный синтаксис do..while :
Такая форма синтаксиса оправдана, если вы хотите, чтобы тело цикла выполнилось хотя бы один раз, даже если условие окажется ложным. На практике чаще используется форма с предусловием: while(…) <…>.
Цикл «for»
Давайте разберёмся, что означает каждая часть, на примере. Цикл ниже выполняет alert(i) для i от 0 до (но не включая) 3 :
Рассмотрим конструкцию for подробней:
В целом, алгоритм работы цикла выглядит следующим образом:
То есть, начало выполняется один раз, а затем каждая итерация заключается в проверке условия, после которой выполняется тело и шаг.
Если тема циклов для вас нова, может быть полезным вернуться к примеру выше и воспроизвести его работу на листе бумаги, шаг за шагом.
Вот в точности то, что происходит в нашем случае:
В примере переменная счётчика i была объявлена прямо в цикле. Это так называемое «встроенное» объявление переменной. Такие переменные существуют только внутри цикла.
Вместо объявления новой переменной мы можем использовать уже существующую:
Пропуск частей «for»
Любая часть for может быть пропущена.
Для примера, мы можем пропустить начало если нам ничего не нужно делать перед стартом цикла.
Можно убрать и шаг :
А можно и вообще убрать всё, получив бесконечный цикл:
При этом сами точки с запятой ; обязательно должны присутствовать, иначе будет ошибка синтаксиса.
Прерывание цикла: «break»
Например, следующий код подсчитывает сумму вводимых чисел до тех пор, пока посетитель их вводит, а затем – выдаёт:
Вообще, сочетание «бесконечный цикл + break » – отличная штука для тех ситуаций, когда условие, по которому нужно прерваться, находится не в начале или конце цикла, а посередине.
Переход к следующей итерации: continue
Её используют, если понятно, что на текущем повторе цикла делать больше нечего.
Цикл, который обрабатывает только нечётные значения, мог бы выглядеть так:
Например, если мы возьмём этот код:
…и перепишем его, используя вопросительный знак:
…то будет синтаксическая ошибка.
Метки для break/continue
Бывает, нужно выйти одновременно из нескольких уровней цикла сразу.
Нам нужен способ остановить выполнение если пользователь отменит ввод.
Обычный break после input лишь прервёт внутренний цикл, но этого недостаточно. Достичь желаемого поведения можно с помощью меток.
Метка имеет вид идентификатора с двоеточием перед циклом:
Вызов break в цикле ниже ищет ближайший внешний цикл с такой меткой и переходит в его конец.
Можно размещать метку на отдельной строке:
Директива continue также может быть использована с меткой. В этом случае управление перейдёт на следующую итерацию цикла с меткой.
Метки не дают возможности передавать управление в произвольное место кода.
Например, нет возможности сделать следующее:
Вызов break/continue возможен только внутри цикла, и метка должна находиться где-то выше этой директивы.
Итого
Мы рассмотрели 3 вида циклов:
Обе этих директивы поддерживают метки, которые ставятся перед циклом. Метки – единственный способ для break/continue выйти за пределы текущего цикла, повлиять на выполнение внешнего.
Заметим, что метки не позволяют прыгнуть в произвольное место кода, в JavaScript нет такой возможности.
Циклы. While, do while, for, чем отличаются?
Простой 7 комментариев
Прошу объяснить понятными определениями..
While — сначала проверь, потом сделай, и так по кругу.
Do — сначала сделай, потом проверь, и так по кругу.
Отличаются они только случаем, когда условие не выполняется: while не пройдёт, а do пройдёт один раз.
Циклы for, foreach и прочие — это разновидность цикла while (не do!!), сделанная для специального сценария: пройти некий набор объектов.
Слишком очевидный ответ, если посмотреть на примеры: www.php.su/learnphp/cs/?cycles
Вообще, эти три цикла взаимозаменяемы, т.е. если есть программа, написана с помощью одного из них, то она всегда может быть переписана с помощью любого другого. Но по правилам хорошего стиля и для удобства рекомендации следующие:
for используется, когда число итераций известно (есть переменная или константа, которая определяет это количество).
while и do-while используются, когда число итераций заранее неизвестно.
while используется, когда существует возможность, что цикл не выполнится ни разу, а do-while следует использовать, если известно, что как минимум одна итерация всегда требуется.
for. Чаще всего этот оператор описывает цикл с фиксированным количеством повторений. Вот так он может выглядеть, например, для php:
Какова реальная разница между циклами for и while?
В чем разница между for петля и while цикл?
Я не спрашиваю о синтаксисе или о том, как работает или работает каждый цикл, в то время как это цикл с контролем выхода.
Что мне нужно знать, так это должна быть причина для создания цикла for и цикла while, если процесс выполняется так же, то нет необходимости в другом, Я ищу по этой причине.
И не включать do while Я говорю о while хотя do while является частью времени.
Решение
for это просто синтаксический сахар на некоторое время, если не сказать, что оба могут быть реализованы с goto заявление, а также многие другие языковые конструкции.
Историческая причина состояла в том, чтобы сделать ваш программный код более читабельным.
Другие решения
Специально для языка C ++:
может быть написано как это, что строго эквивалентно, но может быть несколько менее читабельным:
Но переменная управления цикла может быть объявлена в for утверждение, которое дает довольно компактный код:
Но с while вы не можете иметь эквивалент этого, когда область действия переменной цикла ограничена самим циклом:
Это было бы что-то вроде этого, что является недопустимым C ++:
Вы могли бы написать это вместо этого:
но, как вы можете видеть, это громоздко и не очень читабельно.
Кстати, вы могли бы написать то же самое for такой цикл, который действительно ужасен: