Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
rep plz
Заблокирован
#1

Циклы while и for: в чем суть отличия? - C++

12.07.2015, 10:30. Просмотров 2295. Ответов 21
Метки нет (Все метки)

Пытаюсь понять в чем суть отличия между этими циклами. Пишутся по разному, а по сути тоже самое. Можно ли написать цикл while таким образом, чтобы нельзя было сделать аналогичный цикл с for? или наоборот
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2015, 10:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклы while и for: в чем суть отличия? (C++):

Указатели - в чем суть? - C++
Кто нибидь может мне обястнить укасзатели в С++,ато я некак не врубаюсь.

ovefrlow? ошибка в чем суть - C++
#include <iostream> using std::cout; unsigned long long quad(long long num) { long long val = 0; if(num==0) return 1; ...

В чем суть этого задание? - C++
#include <iostream> #include <string> #include <math.h> /* run this program using the console pauser or add your own getch,...

Не могу разобраться в чем суть ошибки - C++
Даны действительные числа x, y. Если они отрицательны, то каждое значение заменить модулем; если отрицательно только одно из них, то оба...

Поразрядные операции - в чем суть и применение? - C++
Давно откладывал эту тему, но все же столкнулся с ней снова. Так вот, не могу понять зачем они, где и как их использовать?

В чем отличия cin.getline от gets? - C++
Напрмер, записи gets(str) от cin.getline(str, 1000) что лучше использовать?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Никита Однороб
108 / 88 / 13
Регистрация: 21.08.2012
Сообщений: 354
12.07.2015, 10:59 #2
Всегда одно можно заменить другим. Просто для каких-то задач удобнее использовать for, для других - while
0
rep plz
Заблокирован
12.07.2015, 11:08  [ТС] #3
Никита Однороб, вот и я про тоже. просто мне интересно, что подвигло создателя с++ на создание 2-х аналогичных циклов. ведь тоже самое можно было сделать и с тем же cout-ом. философия его непонятна, упростить усложнением или усложнить упрощением, так что ли?
0
Никита Однороб
108 / 88 / 13
Регистрация: 21.08.2012
Сообщений: 354
12.07.2015, 11:11 #4
rep plz, для обхода массива например цикл for гораздо удобнее. Вот, например, заполнение массива из 10 элементов с клавиатуры
C++
1
2
3
4
5
6
//for
for (int i = 0; i < 10; i++) cin >> a[i];
 
//while
int i = 0;
while (i < 10) { cin >> a[i]; i++; }
В цикле for не надо самому задавать начальное значение и изменять счетчик
0
rep plz
Заблокирован
12.07.2015, 13:54  [ТС] #5
Никита Однороб, не надо?
а это тогда что:
Цитата Сообщение от Никита Однороб Посмотреть сообщение
int i = 0
и
Цитата Сообщение от Никита Однороб Посмотреть сообщение
i++
0
Никита Однороб
108 / 88 / 13
Регистрация: 21.08.2012
Сообщений: 354
12.07.2015, 14:27 #6
rep plz, я имею ввиду в теле цикла вручную это делать не надо
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
12.07.2015, 15:17 #7
Цитата Сообщение от rep plz Посмотреть сообщение
просто мне интересно, что подвигло создателя с++ на создание 2-х аналогичных циклов
Если взять две операции "x + x + x + x + x + x + x + x + x + x" и "x * 10", то их результат будет одинаковым. Но вторая запись более удобнее и читабельнее. Примерно то же самое и с циклами "do while", "while" и "for". Они все делают по сути дела одно и то же, но в разных условиях удобно использовать разные виды цикла. При построении кода компилятор по возможности все циклы сводит к виду "do while", потому что они более эффективно исполняются
2
Deno95
9 / 9 / 3
Регистрация: 16.12.2013
Сообщений: 108
12.07.2015, 23:57 #8
for используют в том случаи если ты знаешь сколько будет итераций (проходов цикла)
while когда не знаешь количество итераций (проходов цикла)

C++
1
for(int i = 0; i <= 6; i++)
i должно сделать 6 проходов что бы закончить цикл (тут мы знаем сколько раз должно это произойти)

C++
1
2
3
4
while(i != 6)
{
    i += 2;
}
тут мы не знаем сколько надо сделать проходов что бы получить 6
2
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
13.07.2015, 00:12 #9
Цитата Сообщение от Deno95 Посмотреть сообщение
for используют в том случаи если ты знаешь сколько будет итераций (проходов цикла)
Не обязательно. Просто многие думают, что оно так. Но for'ом удобно обходить, например, список. Многие поисковые интерфейсы сделаны так, что ими удобно пользоваться для for'а, но люди по незнанию корячатся с while'ами (например Копирование их под каталогов.)
0
Deno95
9 / 9 / 3
Регистрация: 16.12.2013
Сообщений: 108
13.07.2015, 00:18 #10
Evg, бесконечный цикл можно и в for конечно задать for(; если не путаю
0
Renji
1916 / 1314 / 298
Регистрация: 05.06.2014
Сообщений: 3,757
13.07.2015, 00:28 #11
Цитата Сообщение от rep plz Посмотреть сообщение
Можно ли написать цикл while таким образом, чтобы нельзя было сделать аналогичный цикл с for? или наоборот
Вот так можно:
C++
1
2
3
for(int i=0;i<10;++i)//i существует лишь внутри цикла
    cout<<i<<endl;
double i=3;//поэтому, после цикла можно объявить i еще разок
Вот так нельзя, да и банально неудобно.
C++
1
2
3
4
5
6
7
int i=0;
while(i<10)
{
    cout<<i<<endl;
    ++i;
}
double i=3;//а здесь компилятор матюкнется
1
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
13.07.2015, 09:00 #12
Цитата Сообщение от Deno95 Посмотреть сообщение
Evg, бесконечный цикл можно и в for конечно задать for
Можно

Цитата Сообщение от Renji Посмотреть сообщение
Вот так нельзя
Дык если пишешь аналог, то писать надо правильно

C++
{
  int i=0;
  while(i<10)
  {
    cout<<i<<endl;
    ++i;
  }
}
double i=3;//всё хорошо
0
mporro
256 / 102 / 14
Регистрация: 04.07.2014
Сообщений: 571
13.07.2015, 09:35 #13
rep plz, я бы сказал, что цикл for специальная компактная запись цикла c "явными итерациями", когда вариант цикла легко локализовать в одном простом выражении. Хорошо очень видно на приведённых примерах перевода for в while.
Отдельно нужно выписать инициализацию и приходится разрывать пару проверка условия -- изменение варианта (проверка вначале цикла, а где-то уже после основного тела выражение итерации). Для for всё записано компактно, рядом, нет необходимости "бегать" по коду и искать нужные выражения.


P.S. Лично у меня сложились исторически такие ассоциации: for -- цикл в пространстве, я его использую (если не использую for_each -- функцию), когда для действий порядок выполнения не имеет значения, while -- цикл во времени, когда алгоритм предполагает некоторые действия, выполняемые строго в определённом порядке. Но это никак не правило для циклов, а удобное мнемоническое разделение разных типов итераций.
1
rep plz
Заблокирован
20.07.2015, 10:24  [ТС] #14
Evg, учились по Дейтелу?
0
SmittWesson
120 / 169 / 17
Регистрация: 04.06.2014
Сообщений: 1,291
20.07.2015, 10:33 #15
Цитата Сообщение от rep plz Посмотреть сообщение
Пытаюсь понять в чем суть отличия между этими циклами. Пишутся по разному, а по сути тоже самое. Можно ли написать цикл while таким образом, чтобы нельзя было сделать аналогичный цикл с for? или наоборот
Отличие в том, что цикл for предопределён, априори. Окончание цикла while, зарание не известно. Оно может быть вычислено в ходе процесса, напримр, при заданной точности вычислений.
В принципе, циклом while, можно заменить for. Если наоборот, столкнётесь с трудностями определения диапазона.
Кликните здесь для просмотра всего текста
В качестве шутки.
Код
bool i;
while(i == true)
{
  i = false;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2015, 10:33
Привет! Вот еще темы с ответами:

В чем отличия wchar_t от char16_t? - C++
Дарова, сабж ясен из заголовка

В чем отличия классов и структур? - C++
Всем доброго времени суток. Уважаемые программисты, обьясните мне в чем отличия классов и структур. Учусь сам по книжкам и прочей лабуде...

Алгоритмы поиска. Подскажите, в чем суть алгоритма? - C++
нужно написать алгоритм поиска прямым методом (С.Чарас), а я понятия не имею, что это за метод и в и-нэте найти не могу(

В чем существенные отличия Array и Vector - C++
В чем существенные отличия, что и когда предпочтительно использовать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.07.2015, 10:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru