while цикл



цикл 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, то он прыгнет сразу на условное выражение.

Ответ от Aleksey Denisov[гуру]
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 и наоборот.

Ответ от V Vga[новичек]
Как бы for выполняет действия для каждого значениия, а while исполняет действия до определенного условия.

Ответ от Ivantrs[гуру]
в принципе, внешним видом 🙂
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);

Ответ от Ixer Romanchyk[активный]
В цыкле 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

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: С++, Чем отличаеться цикл for, от while?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*