Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2021, 11:28   #1
Fialay
Новичок
Джуниор
 
Регистрация: 08.06.2021
Сообщений: 1
Сообщение Чем отличаются for от while?

Чем отличаются for и while?
Fialay вне форума Ответить с цитированием
Старый 08.06.2021, 12:31   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Фактически ничем. Практически только записью.
ForenLi вне форума Ответить с цитированием
Старый 08.06.2021, 12:32   #3
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Цикл for выполнит столько итераций сколько было указано в условии.
Цикл while будет выполнятся пока условие истинно.

P. S.
Есть еще do while - где будет выполнена одна итерация не зависимо от истинности условия.
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 08.06.2021 в 12:40. Причина: Добавил P. S.
Desc вне форума Ответить с цитированием
Старый 08.06.2021, 17:02   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

for, да, выполнит столько раз, сколько ему задали.
Код:
for(int n = 0; n <= 5; n++)
{
}
- будет работать при n = от 0 до 5 включительно.
Код:
while(условие)
{
}
будет выполняться пока условие истинно. Это цикл с предусловием.
Цикл с постусловием выглядит так
Код:
do
{
}
while(условие);
Cuprum5 вне форума Ответить с цитированием
Старый 09.06.2021, 23:57   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

А чё это все кинулись отвечать с подтекстом, что это Си?
А если это Python?
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 10.06.2021, 11:00   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Телепатия, однако. Я-то точно знаю, что речь идёт за PL-I
digitalis вне форума Ответить с цитированием
Старый 11.06.2021, 09:09   #7
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

в цикле FOR количество шагов обычно чётко задано, не зависимо от условий.
а WHILE ждёт выполнения условия, не считаясь с количеством шагов.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 12.06.2021, 11:44   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Цитата:
в цикле FOR количество шагов обычно чётко задано, не зависимо от условий.
а WHILE ждёт выполнения условия, не считаясь с количеством шагов.
Каких условий? Во многих языках есть команда break, которая позволяет завершить цикл в независимости от условия, которое контролируется циклом.

Полагаю, что существенных отличий между этими циклами нет.
По пунктам:
1. Условие вхождения в цикл
for - если переменная цикла больше (меньше - при отрицательном шаге) конечного значения, то тело цикла не исполняется.
while - если условие начала цикла false, то тело цикла не исполняется.

2. Число операций с телом цикла
for - определяется параметром цикла
while - можно определит в условии:
Код:
n = 10
while n > 0:
    ...
    n = n - 1
Тут операторы тела цикла сдвинуты (begin ... end или {...}).

3. Любой из циклов может быть завершён досрочно вложенным условным оператором и командой break.

4. Условие завершения цикла
А вот и отличие: Цикл for всегда завершается, а цикл while может быть бесконечным.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.06.2021, 13:47   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
А вот и отличие: Цикл for всегда завершается, а цикл while может быть бесконечным.
Зациклить for - как два байта об асфальт.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer ;

function D (var arg: integer): integer ;
begin
   if arg > 4 then
     Begin
       Result := arg * 2 ;
       arg := 1
    end;
end;

begin
   for i := 0 to 10 do
     begin
       j := D(i) ;
       S.Lines.Add(IntToStr(i))
     end ;  
end;
Дурное дело не хитро. Напрямую модифицировать счётчик цикла компилятор не позволит. Но чтоб найти приключения на свои вторые 90 - всегда можно придумать.
digitalis вне форума Ответить с цитированием
Старый 12.06.2021, 22:54   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Мой Free Pascal v.3.0.4 на такую конструкцию ругнулся:
Цитата:
Error: Illegal assignment to for-loop variable "i"
- Ошибка: недопустимое присвоение переменной цикла for "i".
и показал на строку: j = D(i).

Я допускаю, что в каких то трансляторах подобная пытка "взлома" может привести к "успеху", но это уж совсем неявно.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличаются циклы Pe/lMeLLl Python 0 13.01.2017 01:28
Чем отличаются С++ от С# Vallerik Общие вопросы C/C++ 15 07.01.2013 21:06
Чем отличаются файлы??? Filimoon Безопасность, Шифрование 1 17.11.2011 15:59
Чем отличаются C,C# и C++? Repy Софт 9 04.06.2011 19:51
Чем отличаются JavaSerlet и JSP? ibnabbas Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 1 14.12.2009 15:55