цикл while
Автор * * задал вопрос в разделе Другие языки и технологии
С++, Чем отличаеться цикл for, от while? и получил лучший ответ
Ответ от ?????? Зелёный змий ??????[гуру]
По сути своей мало чем отличаются, нюансами - сильно отличаются.
while (условное выражение)
{
тело цикла
}
for (выражение инициализации; условное выражение; выражение завершения тела цикла)
{
тело цикла
}
Суть - цикл с предусловием. Сначала вычисляется условное выражение, если оно истинно, то выполняется тело цикла.
в for выражение инициализации, условное выражение и выражение завершения тела цикла могут отсутствовать
в while условное выражение не может отсутствовать
for(;;) - допустимая форма for
{
тело цикла
}
while() - бред
{
тело цикла
}
for содержит выражение инициализации
для while выражение инициализации может быть определено до самого цикла
Но (C++) в выражение инициализации for можно объявить переменную. Она будет видна только в теле цикла
for (int i = 0; i < 100; i++)
{
// i - доступна только в теле цикла
}
// здесь i - не доступна
for содержит выражение завершения тела цикла
для while выражение завершения тела цикла можно вставить в конец тела
while (условное выражение)
{
тело цикла
выражение завершения тела цикла
}
нюансы возникают с оператором continue.
Если в теле цикла for есть оператор continue, то он прыгнет на выражение завершения тела цикла, отуда на условное выражение.
Если в теле цикла while есть оператор continue, то он прыгнет сразу на условное выражение.
2 Ivantrs
"в принципе, внешним видом :)" - не дай Бог Вам преподавать
2 u3IOM4uk
Если Вам знаком Pascal, то Вы поймете меня: не нужно рассказывать про repeat until, когда спрашивают про while. Цикл с предусловием и цикл с постусловием - это крайне важные отличия
2 Ixer
"Тоесть в цыкл фор устроен счетчик, и он сам добавляет 1 к переменной, или отнимает) "
Вам лучше пойти и самому почитать про for, чтобы не объяснять кому-нибудь, что приращение идет на +1 или -1.
i++ и i-- -это да, но что разве не бывает i+=2, например?
2 V Vga
отличное объяснение, отличное
2 Виктор Харченко
"while может быть приведен к for и наоборот" - наоборот - это хорошо, да, пару-тройку операторов дописать и будет наоборот, да. Интересно-то как. Нет конечно в каких-то случаях... но чтобы так писать 🙂
P.S. общую картину из всего этого получить можно конечно. Но советую всем (и тому, кто спрашивал, и тем, кто отвечал) почитать еще и документацию 🙂
for - цикл с параметром, кот. инициализируется, модифицируется и проверяется в заголовке цикла.
while - цикл с предусловием. изменяемая или неизменяемая (для бесконечного цикла, иногда нужно) переменная д/б объявлена до цикла и модифицироваться в теле цикла.
while может быть приведен к for и наоборот.
Как бы for выполняет действия для каждого значениия, а while исполняет действия до определенного условия.
в принципе, внешним видом 🙂
for ( оператор_1 выражение_1; выражение_2 ) оператор_2
анологично следующему:
оператор_1
while ( выражение_1 ) {
оператор_2
выражение_2;
}
Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий вид:
do тело while (выражение) ;
Схема выполнения оператора do while :
1. Выполняется тело цикла (которое может быть составным оператором) .
2. Вычисляется выражение.
3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.
Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.
Операторы while и do while могут быть вложенными.
Пример:
int i,j,k; ...i=0; j=0; k=0; do { i++; j--; while (a[k] < i) k++; } while (i<30 && j<-30);
В цыкле for ты устанавливаеш количество повторов. Цикл while виполняется до тех пор пока не выполнится какоето условие.
Тоесть в цыкл фор устроен счетчик, и он сам добавляет 1 к переменной, или отнимает). В цыкл while ты можешь устоновить любое условие, например ждать нажатия клавишы, питаться подключится к серверу, что угодно.
один цикл в другой переделываются без особого труда.
но читать код с while-циклом реализованным как for-цикл (или наоборот) не доставляет особого удовольствия, структура программы становится запутанной.
если алгоритм гласит "для каждого... выполнить... ", то и делаете for-цикл.
если же алгоритм гласит "пока... выполнить... " или "выполниять... пока.... " , то и делаете while или do-while циклы.
и не выёживаетесь...
for - цикл со счетчиком
while - с предусловием.
do-while (или repeat-until в паскале) - с постусловием.
примеры
for (си)
int i;
int a;
a = 0;
for (i = 0; i < 10; i++)
a += i;
while (предусловие, си)
int a = 1;
int b = 5;
while (a < b)
a++
while (постусловие, си)
int a = 1;
int b = 5;
do {
a++
} while (a < b);
for (x86-ассемблер)
xor ax,ax
mov cx,10
do_for:
inc ax
dec cx
jnz do_for
while (предусловие, x86-ассемблер)
mov ax, 2
mov bx, 10
do_while:
cmp ax,bx
ja end_while
inc ax
jmp do_while
end_while:
while (постусловние, x86-ассемблер)
mov ax, 2
mov bx, 10
do_while:
inc ax
cmp ax,bx
jb do_while
в чем различие циклов while и do в delphi
Может while и do while? While цикл с предусловием, а do while с
подробнее...
Почему пишется 1 в While (1) C++?
в данном случае 1 воспринимается как TRUE и пока там ИСТИНА, цикл while будет
подробнее...
Чем отличаются циклы For, While и Repeat....Until в Delphi 7?
Цикл For может задать с какого значения начинать и на каком остановиться. Цикл с счетчиком
подробнее...
Что такое цикл(программирование)?
Доброго времени суток.
Если будете читать дальше, то обязательно встретите цикл "while
подробнее...
расскажите про цикл с постусловием в паскале(с примером)
Примерно так:
repeat
<блок операторов>
until <условие>;
Цикл
подробнее...
PHP: цикл WHILE, как задать 2 условия для выполнения?
Что за тарабарщину написал? Можно только догадываться о чём речь. Мало того, что мысль не можешь
подробнее...
PHP mysql_fetch_array(); вывод всех данных.
бред.... $a - массив, а $a['поле таблицы']
В данном случае выводится все в цикле
подробнее...
EXCEL VBA Как задать 2 условия для одного цикла while?
Возможно вот так:
do while cells(i,j).value <> " " or cells(i,j).value = "0"
подробнее...
Как конвертировать String в int (Java)
Тебе нужно найти в этой строке каждую отдельную последовательность цифр и преобразовать ее в
подробнее...
Help с Python и циклом while
Ну так, ты внимательно посмотри что ты написал.
Ты задаешь условие вне цикла. То есть когда
подробнее...
C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся
Ваш next, последнего элемента в списке указывает на NULL, а новый элемент списка вы создаёте по
подробнее...
Объясните пожалуйста на примере как в турбо паскале писать программы "до тех пор, пока"?
В ТП есть 2 условных цикла: While и Repeat. Первый из них выполняется, пока условие, указанное
подробнее...
паскаль. Почему в некоторых местах мы ставим бегин и энд,а некоторых нет
Бегин/Енд заключают в себя составной оператор.
Составной оператор - это набор команд, в
подробнее...